用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

...全文
229 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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操作注册表一点问题没有
求解

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧