用VB访问注册表的疑问

DawnPine 2006-10-15 01:55:49
先看以下代码

Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Private Sub Form_Load()
Dim hKey As Long
Dim strKey As String
Dim hSubkey As Long
hKey = &H80000007
strKey = "TEST"

'这句预期返回0 实测返回0
Debug.Print RegCreateKey(HKEY_CURRENT_USER, _
strKey, hSubkey),
'这句预期返回0 实测返回87 求解
Debug.Print RegCreateKey(HKEY_LOCAL_MACHINE, _
strKey, hSubkey)
End Sub

...全文
184 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DawnPine 2006-10-16
晕死
回去后我也发现了
早知道不去加班了
回复
Dunzip 2006-10-15
的确是这样的,MS对HKEY_LOCAL_MACHINE和HKEY_USERS的第一级设置了保护的。
回复
happy_sea 2006-10-15
在HKEY_LOCAL_MACHINE这个根键下是不允许直接建立一级子键的,只能建立在其一级子键的下面,比如楼主把strKey = "TEST"换成strKey = "SoftWare\TEST"就可以了。就算在注册表编辑器中也是如此,至于楼主说手工用regedit.exe操作注册表一点问题没有好像不大正常。
而HKEY_CURRENT_USER下面可以直接建立一级子键,所以不会出错。
回复
DawnPine 2006-10-15
猜测与权限有关
但手工用regedit.exe操作注册表一点问题没有
求解
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7449

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告