我試圖修改特定的註冊表項,但它只會在我構建它時調試應用程序時才起作用。寫入註冊表「RegSetValueEx」只能在調試中工作
我覺得這很奇怪,所以我轉向你們尋求幫助。
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Const BM_CLICK = &HF5
Const REG_DWORD = 4
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const REGKEY = "Software\Microsoft\Windows\CurrentVersion\Policies\system"
Const KEY_WRITE = &H20006
Dim Path As Long
Dim Value As Long
Sub TASK()
On Error GoTo hell:
Value = 1
If RegOpenKeyEx(HKEY_CURRENT_USER, REGKEY, 0, KEY_WRITE, Path) Then Exit Sub
RegSetValueEx Path, NameOfKey, 0, REG_DWORD, Value, Len(Value)
Exit Sub
hell:
MsgBox Err & Error(Err)
End Sub
Sub UAC()
On Error GoTo hell:
Value = 0
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGKEY, 0, KEY_WRITE, Path) Then Exit Sub
RegSetValueEx Path, "ConsentPromptBehaviorAdmin", 0&, REG_DWORD, Value, Len(Value)
Exit Sub
hell:
MsgBox Err & Error(Err)
End Sub
我相信它只是我很想念的東西。
你在使用什麼操作系統? (這個問題在vista/7中是否升高了用戶?)? – 2012-01-08 04:19:24
我們需要更多信息。你在調試還是編譯時運行在同一臺機器上?相同的用戶帳戶?寫或失敗是失敗的?對RegOpenKeyEx和RegSetValueEx的調用將返回描述錯誤的錯誤代碼。你應該記錄下來,並可能在消息框中顯示它,以便你真正知道失敗的原因和原因。 – shf301 2012-01-08 04:24:06
您不可能將權限寫入名爲'Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ system'的密鑰。 「Microsoft \ Windows」部分是一個不屬於你的應用程序的死角。 – 2012-01-08 04:28:44