在Vista 里如何读写注册表?

WM_JAWIN 2008-03-14 11:16:39
RegCreateKeyEx()为什么在VISTA用不了?
RegOpenKeyEx()用这个打开已经存在的键时,再用RegSetValueEx()写数据时又出错了.
请问一下谁知道怎么搞?
我的程序在XP下是没有问题的!

Const HKEY_LOCAL_MACHINE = &H80000002
Dim x As Long, rKey As Long, sBuf As String, ret As Long, rType As Long
'ret = RegOpenKey(HKEY_LOCAL_MACHINE, RP, rKey)

ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, RP, 0, KEY_ALL_ACCESS, rKey)
If ret Then '不存在时
ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, RP, 0, "REG_DWORD", _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, rKey, ByVal 0&)

If ret = 0 Then
MsgBox "打开注册表项:HKEY_LOCAL_MACHINE" & RP & "出错!", vbCritical
Exit Function
End If
End If
If Value = vbNullString Then
ret = RegDeleteValue(rKey, RN)
If ret Then MsgBox "RegDeleteValue Code:" & ret
Else
ret = RegSetValueEx(rKey, RN, 0&, 1&, Value & vbNullChar, LenB(Value))
If ret Then MsgBox "RegSetValueEx Code:" & ret
End If
RegCloseKey rKey
RegSetValue = ret = 0
If ret Then
MsgBox "RegSetValueEx Code:" & ret
End If
...全文
308 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skz 2008-04-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 WM_JAWIN 的回复:]
在UCA开启情况下,应该也有方法可以读/写吧.要不的话,在Vista下,就只能用官方软件了,第三方软件一概免谈了
[/Quote]

在Vista下,一般帐户程序运行中对注册表的写入,都在“HKEY_USERS\登录帐户(一串加密号)_Classes\”路径中。所以,不是不能写入,而是你没找到位置。
也正因为如此,一般帐户程序是无法通过简单的注册表写入启动目录的对应值。
WM_JAWIN 2008-03-26
  • 打赏
  • 举报
回复
在UCA开启情况下,应该也有方法可以读/写吧.要不的话,在Vista下,就只能用官方软件了,第三方软件一概免谈了
鸭梨山大帝 2008-03-18
  • 打赏
  • 举报
回复
Vista... 極度不方便相對安全(相對于XP)的一個系統(相對于初級用戶來說,可能會用得發瘋)
清晨曦月 2008-03-18
  • 打赏
  • 举报
回复
恩恩,VISTA下权限是个非常复杂的问题。。。。。。。前两天手工改个配置文件的内容就修改了无数次权限才搞定。。。。。
东方之珠 2008-03-17
  • 打赏
  • 举报
回复
同意楼上意见!和UAC有关。
supergreenbean 2008-03-17
  • 打赏
  • 举报
回复
UAC的关系吧。你在程序运行时,右键使用 以管理员身份运行 看看是否是这个问题
WM_JAWIN 2008-03-17
  • 打赏
  • 举报
回复
轻轻的我顶一下
WM_JAWIN 2008-03-15
  • 打赏
  • 举报
回复
ding

1,485

社区成员

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

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