Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef 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_LOCAL_MACHINE As Long = &H80000002'要定义的键 '------------------------------------------------------------------------------- Private Sub Command1_Click() Dim hKey As Long, ret As Long, Name As String, Idx As Long Dim tempName As String Name = String(256, Chr(0)) ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\abcd", hKey)'路径 ret = RegQueryValueEx(hKey, "path", 0, 1, ByVal Name, Len(Name))'读一个值 RegCloseKey hKey MsgBox Name End Sub '根据你的路径就可以读出了
别人都贴了,我也贴吧 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, ByVal lpData As String, lpcbData As Long) As Long Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As LongDeclare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongDeclare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long #If Win32 Then
Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Public Const KEY_ALL_ACCESS = &H3F Public Const REG_OPTION_NON_VOLATILE = 0& Public Const REG_CREATED_NEW_KEY = &H1 Public Const REG_OPENED_EXISTING_KEY = &H2 Public Const ERROR_SUCCESS = 0& Public Const REG_SZ = (1) #End If Type SECURITY_ATTRIBUTES
nLength As Long lpSecurityDescriptor As Long bInheritHandle As BooleanEnd TypePublic Const SREG = "SOFTWARE\Spyder-Net Productions\SpyderPF"Public Function bSetRegValue(ByVal hKey As Long, ByVal lpszSubKey As String, ByVal sSetValue As String, ByVal sValue As String) As Boolean
On Error Resume Next Dim phkResult As Long Dim lResult As Long Dim SA As SECURITY_ATTRIBUTES Dim lCreate As Long RegCreateKeyEx hKey, lpszSubKey, 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, lCreate lResult = RegSetValueEx(phkResult, sSetValue, 0, REG_SZ, sValue, CLng(Len(sValue) + 1)) RegCloseKey phkResult bSetRegValue = (lResult = ERROR_SUCCESS)
End Function Public Function bGetRegValue(ByVal hKey As Long, ByVal sKey As String, ByVal sSubKey As String) As String
Dim lResult As Long Dim phkResult As Long Dim dWReserved As Long Dim szBuffer As String Dim lBuffSize As Long Dim szBuffer2 As String Dim lBuffSize2 As Long Dim lIndex As Long Dim lType As Long Dim sCompKey As String
lIndex = 0 lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult) Do While lResult = ERROR_SUCCESS And Not (bFound) szBuffer = Space(255) lBuffSize = Len(szBuffer) szBuffer2 = Space(255) lBuffSize2 = Len(szBuffer2) lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2) If (lResult = ERROR_SUCCESS) Then sCompKey = Left(szBuffer, lBuffSize) If (sCompKey = sSubKey) Then bGetRegValue = Left(szBuffer2, lBuffSize2 - 1) End If End If lIndex = lIndex + 1
Loop RegCloseKey phkResult End FunctionPublic Function bIndexReg(ByVal hKey As Long, ByVal sKey As String, lstBox As ListBox, val As String) As String
Dim lResult As Long Dim phkResult As Long Dim dWReserved As Long Dim szBuffer As String Dim lBuffSize As Long Dim szBuffer2 As String Dim lBuffSize2 As Long Dim lIndex As Long Dim lType As Long Dim sCompKey As String Dim i As Long Dim r_List
lIndex = 0 lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult) Do While lResult = ERROR_SUCCESS And Not (bFound) szBuffer = Space(255) lBuffSize = Len(szBuffer) szBuffer2 = Space(255) lBuffSize2 = Len(szBuffer2) lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2) If (lResult = ERROR_SUCCESS) Then sCompKey = Left(szBuffer, lBuffSize) If Left(szBuffer2, lBuffSize2 - 1) = val Then lstBox.AddItem sCompKey
End If End If lIndex = lIndex + 1
Loop RegCloseKey phkResult End FunctionFunction DelSetting(hKey As Long, strPath As String, strValue As String) Dim Ret 'Create a new key RegCreateKey hKey, strPath, Ret 'Delete the key's value RegDeleteValue Ret, strValue 'close the key RegCloseKey Ret End Function
注册表目录:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,里边存放 Windows 系统文件夹的位置,例如我的电脑、图片收藏、音乐收藏……
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef 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'------------------------------------------------------------------------------- Private Sub Command1_Click() Dim hKey As Long, ret As Long, Name As String, Idx As Long Dim tempName As String Name = String(256, Chr(0)) ret = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", hKey) ret = RegQueryValueEx(hKey, "Personal", 0, 1, ByVal Name, Len(Name)) RegCloseKey hKey MsgBox Name End Sub
“午夜逛街”:你的程序运行到“HKEY_CURRENT_USER”时提示未声明变量????
Private Const HKEY_CURRENT_USER As Long = &H80000001'已经定义到窗口上了.就是我刚回你的那代码.
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_LOCAL_MACHINE As Long = &H80000002'要定义的键
'-------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim hKey As Long, ret As Long, Name As String, Idx As Long
Dim tempName As String
Name = String(256, Chr(0))
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\abcd", hKey)'路径
ret = RegQueryValueEx(hKey, "path", 0, 1, ByVal Name, Len(Name))'读一个值
RegCloseKey hKey
MsgBox Name
End Sub
'根据你的路径就可以读出了
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, ByVal lpData As String, lpcbData As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As LongDeclare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongDeclare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long #If Win32 Then
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const KEY_ALL_ACCESS = &H3F
Public Const REG_OPTION_NON_VOLATILE = 0&
Public Const REG_CREATED_NEW_KEY = &H1
Public Const REG_OPENED_EXISTING_KEY = &H2
Public Const ERROR_SUCCESS = 0&
Public Const REG_SZ = (1)
#End If
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As BooleanEnd TypePublic Const SREG = "SOFTWARE\Spyder-Net Productions\SpyderPF"Public Function bSetRegValue(ByVal hKey As Long, ByVal lpszSubKey As String, ByVal sSetValue As String, ByVal sValue As String) As Boolean
On Error Resume Next
Dim phkResult As Long
Dim lResult As Long
Dim SA As SECURITY_ATTRIBUTES
Dim lCreate As Long
RegCreateKeyEx hKey, lpszSubKey, 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, lCreate
lResult = RegSetValueEx(phkResult, sSetValue, 0, REG_SZ, sValue, CLng(Len(sValue) + 1))
RegCloseKey phkResult
bSetRegValue = (lResult = ERROR_SUCCESS)
End Function
Public Function bGetRegValue(ByVal hKey As Long, ByVal sKey As String, ByVal sSubKey As String) As String
Dim lResult As Long
Dim phkResult As Long
Dim dWReserved As Long
Dim szBuffer As String
Dim lBuffSize As Long
Dim szBuffer2 As String
Dim lBuffSize2 As Long
Dim lIndex As Long
Dim lType As Long
Dim sCompKey As String
lIndex = 0
lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)
Do While lResult = ERROR_SUCCESS And Not (bFound)
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
szBuffer2 = Space(255)
lBuffSize2 = Len(szBuffer2)
lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)
If (lResult = ERROR_SUCCESS) Then
sCompKey = Left(szBuffer, lBuffSize)
If (sCompKey = sSubKey) Then
bGetRegValue = Left(szBuffer2, lBuffSize2 - 1)
End If
End If
lIndex = lIndex + 1
Loop
RegCloseKey phkResult
End FunctionPublic Function bIndexReg(ByVal hKey As Long, ByVal sKey As String, lstBox As ListBox, val As String) As String
Dim lResult As Long
Dim phkResult As Long
Dim dWReserved As Long
Dim szBuffer As String
Dim lBuffSize As Long
Dim szBuffer2 As String
Dim lBuffSize2 As Long
Dim lIndex As Long
Dim lType As Long
Dim sCompKey As String
Dim i As Long
Dim r_List
lIndex = 0
lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)
Do While lResult = ERROR_SUCCESS And Not (bFound)
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
szBuffer2 = Space(255)
lBuffSize2 = Len(szBuffer2)
lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)
If (lResult = ERROR_SUCCESS) Then
sCompKey = Left(szBuffer, lBuffSize) If Left(szBuffer2, lBuffSize2 - 1) = val Then lstBox.AddItem sCompKey
End If End If
lIndex = lIndex + 1
Loop
RegCloseKey phkResult
End FunctionFunction DelSetting(hKey As Long, strPath As String, strValue As String)
Dim Ret
'Create a new key
RegCreateKey hKey, strPath, Ret
'Delete the key's value
RegDeleteValue Ret, strValue
'close the key
RegCloseKey Ret
End Function
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'-------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim hKey As Long, ret As Long, Name As String, Idx As Long
Dim tempName As String
Name = String(256, Chr(0))
ret = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", hKey)
ret = RegQueryValueEx(hKey, "Personal", 0, 1, ByVal Name, Len(Name))
RegCloseKey hKey
MsgBox Name
End Sub