主要使用下面这几个API:
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByRef phkResult As Integer) As Integer Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal Reserved As Integer, ByVal lpClass As String, ByVal dwOptions As Integer, ByVal samDesired As Integer, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Integer, ByRef lpdwDisposition As Integer) As Integer
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String) As Integer
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA"(ByVal hKey As Integer, ByVal lpValueName As String) As Integer
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByRef phkResult As Integer) As Integer
Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer
我可以给你发个程序:
[email protected]
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByRef phkResult As Integer) As Integer Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal Reserved As Integer, ByVal lpClass As String, ByVal dwOptions As Integer, ByVal samDesired As Integer, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Integer, ByRef lpdwDisposition As Integer) As Integer
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String) As Integer
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA"(ByVal hKey As Integer, ByVal lpValueName As String) As Integer
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByRef phkResult As Integer) As Integer
Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer
我可以给你发个程序:
[email protected]
Mailto:[email protected]
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
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 Const REG_NONE = 0
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const REG_DWORD_BIG_ENDIAN = 5
Private Const REG_DWORD_LITTLE_ENDIAN = 4
Private Const REG_LINK = 6
Private Const REG_MULTI_SZ = 7
Private Const REG_RESOURCE_LIST = 8
Private Const REG_FULL_RESOURCE_DESCRIPTOR = 9
Private Const REG_RESOURCE_REQUIREMENTS_LIST = 10Public Enum RegDataType
RDT_None = REG_NONE
RDT_SZ = REG_SZ
RDT_Expand_SZ = REG_EXPAND_SZ
RDT_Binary = REG_BINARY
RDT_DWord = REG_DWORD
RDT_DWord_Big_Endian = REG_DWORD_BIG_ENDIAN
RDT_Multi_SZ = REG_MULTI_SZ
End Enum
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_USERS = &H80000003
Private Const HKEY_PERFORMANCE_DATA = &H80000004
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const HKEY_DYN_DATA = &H80000006
Private Const HKEY_PERF_ROOT = HKEY_LOCAL_MACHINEPublic Enum RegRootKey
RRK_CLASSES_ROOT = HKEY_CLASSES_ROOT
RRK_CURRENT_USER = HKEY_CURRENT_USER
RRK_LOCAL_MACHINE = HKEY_LOCAL_MACHINE
RRK_USERS = HKEY_USERS
RRK_PERFORMANCE_DATA = HKEY_PERFORMANCE_DATA
RRK_CURRENT_CONFIG = HKEY_CURRENT_CONFIG
RRK_DYN_DATA = HKEY_DYN_DATA
End EnumPrivate Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_LENGTH_MASK = &HFFFF0000Private Const READ_CONTROL = &H20000Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = (KEY_READ)Private Const ERROR_SUCCESS = 0&
Private Const ERROR_MORE_DATA = 234Public Function RegGetStr(MainKey As RegRootKey, SubKey As String, KeyName As String, OutData As String) As Long
Dim hKey As Long
Dim TempStr As String
Dim StrLen As Long
Dim KeyType As Long
Dim Rc As Long
StrLen = 260
TempStr = String$(StrLen, Chr$(0))
Rc = RegOpenKeyEx(MainKey, SubKey, 0, KEY_ALL_ACCESS, hKey)
'Debug.Print "Load1:" & Rc
If Rc = 0 Then
Rc = RegQueryValueEx(hKey, KeyName, 0, KeyType, ByVal TempStr, StrLen)
If KeyType <> REG_SZ Then
RegGetStr = -1
Exit Function
End If
'Debug.Print "Load2: " & Rc
If Rc = 0 Then
OutData = Left$(TempStr, StrLen)
Else
RegGetStr = Rc
End If
RegCloseKey hKey
Else
RegGetStr = Rc
End If
End Function