本文目录
- 为什么RegQueryValueEx函数调用失败
- 用RegQueryValueEx函数的实例
- RegQueryValueEx 返回值=2 是啥错误
- RegQueryValue函数如何查询注册表 vb
- RegQueryValueEx 返回值=2 是什么错误
为什么RegQueryValueEx函数调用失败
你是不是好几次调用RegQueryValueEx,第一次正确,第二次就不正确了?看一下错误返回值,如果是234的话,应该是最后一个参数(表示长度的),第二次用的时候忘重新赋值了
用RegQueryValueEx函数的实例
Function GetBinaryValue(Entry As String) MainKeyHandle = HKEY_CURRENT_USER SubKey = "Control Panel\desktop\" rtn = RegOpenKeyEx(MainKeyHandle, SubKey, 0, KEY_READ, hKey) If rtn = ERROR_SUCCESS Then ’如果HKEY_CURRENT_USER\Control Panel\desktop键被成功打开 lBufferSize = 1 rtn = RegQueryValueEx(hKey, Entry, 0, REG_BINARY, 0, lBufferSize) ’读取ScreenSave_Data的值 sBuffer = Space(lBufferSize) rtn = RegQueryValueEx(hKey, Entry, 0, REG_BINARY, sBuffer, lBufferSize) If rtn = ERROR_SUCCESS Then ’如果读取ScreenSave_Data的值成功 rtn = RegCloseKey(hKey) GetBinaryValue = sBuffer ’函数返回ScreenSave_Data的值 Else ’如果读取ScreenSave_Data的值不成功 Call ErrorMsg End End If Else ’如果HKEY_CURRENT_USER\Control Panel\desktop键不能打开 Call ErrorMsg ’调用ErrorMsg()过程 End End If End Function
RegQueryValueEx 返回值=2 是啥错误
如果你是用在注册表读取键值的话,RegQueryValueEx返回2代表该项目的键值未设置在注册表器里显示为"数值未设置"
RegQueryValue函数如何查询注册表 vb
再一次帖出这个注册表操作通用函数 如果楼主用到就用 用不到就算了~~~我已经怕了RegQueryValue了 ’==================================================’注册表操作声明Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPublic Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As LongPublic Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPublic Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPublic 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 LongPublic Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As LongPublic Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As LongPublic Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As LongPublic Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As LongPublic Const HKEY_CLASSES_ROOT = &H80000000Public Const HKEY_CURRENT_USER = &H80000001Public Const HKEY_LOCAL_MACHINE = &H80000002Public Const HKEY_USERS = &H80000003Private Const REG_SZ = 1&Private Const REG_EXPAND_SZ = 2&Private Const REG_BINARY = 3&Private Const REG_DWORD = 4&Private Const ERROR_SUCCESS = 0&’==================================================’================================’注册表操作函数’================================’读取注册表字符串键值Public Function GetString(hKey As Long, strPath As String, strValue As String)Dim keyhand As LongDim lResult As LongDim strBuf As StringDim lDataBufSize As LongDim intZeroPos As IntegerDim lValueType As Long ’new addRegOpenKey hKey, strPath, keyhandlResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)If lValueType = REG_SZ Or lValueType = REG_EXPAND_SZ ThenstrBuf = String(lDataBufSize, " ")lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal strBuf, lDataBufSize)If lResult = ERROR_SUCCESS ThenintZeroPos = InStr(strBuf, Chr$(0))If intZeroPos 》 0 ThenGetString = left$(strBuf, intZeroPos - 1)Else: GetString = strBufEnd IfEnd IfEnd IfEnd Function’写入注册表字符串键值Public Sub SetString(hKey As Long, strPath As String, strValue As String, strdata As String)Dim keyhand As LongRegCreateKey hKey, strPath, keyhandRegSetValueEx keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata)RegCloseKey keyhandEnd Sub’读取注册表 DWORD 键值Function GetDword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String) As LongDim lResult As LongDim lValueType As LongDim lBuf As LongDim lDataBufSize As LongDim r As LongDim keyhand As Longr = RegOpenKey(hKey, strPath, keyhand)’ Get length/data typelDataBufSize = 4lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)If lResult = ERROR_SUCCESS ThenIf lValueType = REG_DWORD ThenGetDword = lBufEnd If’Else’ Call errlog("GetDWORD-" & strPath, False)End Ifr = RegCloseKey(keyhand)End Function’写入注册表 DWORD 键值Function SetDword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long)Dim keyhand As LongRegCreateKey hKey, strPath, keyhandRegSetValueEx keyhand, strValueName, 0&, REG_DWORD, lData, 4RegCloseKey keyhandEnd Function’读取注册表二进制键值Function GetBinary(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String) As LongDim lResult As LongDim lValueType As LongDim lBuf As LongDim lDataBufSize As LongDim r As LongDim keyhand As Longr = RegOpenKey(hKey, strPath, keyhand)’ Get length/data typelDataBufSize = 4lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)If lResult = ERROR_SUCCESS ThenIf lValueType = REG_BINARY ThenGetBinary = lBufEnd IfEnd Ifr = RegCloseKey(keyhand)End Function’写入注册表二进制键值Function SetBinary(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long, ByVal BitNumber As Long)Dim keyhand As LongRegCreateKey hKey, strPath, keyhandRegSetValueEx keyhand, strValueName, 0&, REG_BINARY, lData, BitNumberRegCloseKey keyhandEnd Function’删除一个注册表键值Public Function DeleteValue(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String)Dim keyhand As LongRegOpenKey hKey, strPath, keyhandRegDeleteValue keyhand, strValueRegCloseKey keyhandEnd Function’创建一个主键Public Function CreateKey(ByVal hKey As Long, ByVal strKey As String)Dim keyhand&RegCreateKey hKey, strKey, keyhandRegCloseKey keyhand&End Function
RegQueryValueEx 返回值=2 是什么错误
对SYSTEM帐户来说,不存在Shutdown Setting键可以在SYSTEM用户的情况下,遍历一遍,看看都有啥