vb无法写入xp的注册表???

来源:百度知道 编辑:UC知道 时间:2024/05/02 18:53:45
系统xp:这是一段写入注册表的vb代码,但就是写不进去,同样在这个键下用RegDeleteValue就可以删除值,RegSetValueEx不能写入也无法修改,
是不是我代码写错了,还是别的原因?
请教vb高手给指导一下!!
------------------------
声明部分略
Private Sub Form_Load()
Dim ret As Long
Dim hKey As Long
Dim str2 As Long
str2 = 1

ret = RegOpenKe(HKEY_LOCAL_MACHINE, "SOFTWARE\Ahead\shared", hKey)

'RegDeleteValue hKey, "新值 #1"
RegSetValueEx hKey, "my.exe", 0, REG_DWORD, str2, 4
RegCloseKey hKey
End Sub

Private Sub Form_Load()
Dim hKey As Long, SubKey As String, str2 As Long
SubKey = "SOFTWARE\Ahead\shared"
str2 = 1
RegCreateKey HKEY_LOCAL_MACHINE, SubKey, hKey
RegSetValueEx hKey, "my.exe", 0, REG_DWORD, str2, LenB(StrConv(str2 str2,_
vbFromUnicode)) + 1
End Sub
声明部分我就不写了,
这个绝对可以 测试过!

把防火墙关了,还有杀毒软件也要关了就行了,不是代码的问题。

你提供的代码中"RegOpenKe" 少了一个"y",不会是这种问题吧?
或者你去看一看Windows 下的RegEdit有没有封死!

两个错误

分析:RegSetValueEx hKey, "my.exe", 0, REG_DWORD, str2, 4

第一 你要写入的是字符串 而不是 Dword(4字节整数) 所以应为 REG_SZ
第二 “my.exe”共有5个字节 而不是4个字节 (记住 除英文外 每个字都占2个字节)

所以 修改后应为

RegSetValueEx hKey, "my.exe", 0, 1, str2, 5 'REG_SZ为1