特定のレジストリキーを変更しようとしていますが、ビルド後ではなくアプリケーションをデバッグするときにのみ機能します。レジストリへの書き込み "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では、問題は不安定になっていますか?) –
さらに詳しい情報が必要です。あなたはデバッグ時とコンパイル時に同じマシンで実行していますか?同じユーザーアカウントですか?どの書き込みまたはオープンが失敗したかは失敗していますか? 'RegOpenKeyEx'と' RegSetValueEx'の呼び出しは、失敗した場合にエラーを記述するエラーコードを返します。それを記録し、メッセージボックスに表示して、何が失敗しているのか、そしてなぜそれが本当にわかるようにする必要があります。 – shf301
'Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ system'という名前の鍵への書き込み権限を持つことはほとんどありません。 'Microsoft \ Windows'の部分は、あなたのアプリに属していない致命的なものです。 –