XDJM 帮帮忙,关于操作注册表的问题!在线等
我现在用vb对注册表操作遇到一个问题,操作系统的用户不同取的值不一样
代码如下:
Option Explicit
Private Declare Function RegQueryValueEx Lib "advapi32.dll "Alias "RegQueryValueExA " (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll " Alias "RegOpenKeyA " (ByVal hKey As Long, ByVal lpSubKey As String, ByRef phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll " (ByVal hKey As Long) As Long
Private Const HKEY_CURRENT_USER As Long = &H80000001
Function GetRegValue(ByVal ValueName As String) As String
Dim lngRet As Long
Dim lnghKey As Long
Dim lnglenData As Long
Dim lngtypeData As Long
Dim strRegName As String
Dim strkeyValue As String
lngRet = RegOpenKey(HKEY_CURRENT_USER, "software\VB and VBA Program Settings\setUser ", lnghKey)
If lngRet <> 0 Then
GetRegValue = "RegOpenKey "
Exit Function
End If
lngRet = RegQueryValueEx(lnghKey, ValueName, 0, lngtypeData, ByVal vbNullString, lnglenData)
strkeyValue = String(lnglenData, Chr(0))
RegQueryValueEx lnghKey, ValueName, 0, lngtypeData, ByVal strkeyValue, lnglenData
GetRegValue = Left(strkeyValue, InStr(strkeyValue, Chr(0)) - 1)
If lngRet <> 0 Then
GetRegValue = "RegQueryValueEx "
RegCloseKey lnghKey
Exit Function
End If
RegCloseKey lnghKey
End Function
现在操作系统不管用什么用户操作,只能取出 administrator 用户写入的值,我现在要求取出当前用户的值,谢谢啦
[解决办法]
对于software\VB and VBA Program Settings\项下注册表的读写,vb提供了getsetting,savesetting
[解决办法]
你现在的操作系统是什么?
[解决办法]
regopenkey 函数打开注册表项的时候会用系统默认的安全级别
win32应用程序应该使用RegQueryValueEx。lpValue被定义成一个字串,以维持同win16的兼容性(在win16中,值全都是字串)
估计是操作权限不够,或者是函数用得有问题,一般来说,取值应该用regcreatekey先打开。
