我的这个就是从DLL中提出来的Public Function SetValue(RootKey As Long, SubKey As String, Name As String, fbType As Integer, Value As Variant) As Long '设置值 On Error GoTo er Dim i As Integer, tmp As String l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r) If l <> 0 Then GoTo er Select Case fbType Case REG_DWORD SetValue = RegSetValueEx(r, Name, 0&, 4, CLng(Value), 4) Case REG_SZ SetValue = RegSetValueEx(r, Name, 0&, 1, ByVal CStr(Value), Len(CStr(Value))) Case REG_BINARY SetValue = RegSetValueEx(r, Name, 0&, 3, ByVal CStr(Value), Len(CStr(Value))) Case Else SetValue = -1 End Select RegCloseKey r Exit Function er: SetValue = -1 RegCloseKey r End FunctionPublic Function GetValue(RootKey As Long, SubKey As String, Name As String, fbType As Integer) As Variant '读取值 Dim s As Long, sValue As String, tmp As String, i As Integer, bin() As Byte On Error GoTo er tmp = String(1024, 0) s = 1024 l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r) If l <> 0 Then GoTo er Select Case fbType Case REG_DWORD RegQueryValueEx r, Name, 0, 1, ByVal tmp, s tmp = Left(tmp, InStr(tmp, Chr(0)) - 1) for i = Len(tmp) To 1 Step -1 sValue = sValue & Hex(Asc(Mid(tmp, i, 1))) Next i GetValue = Format("&H" & sValue) Case REG_SZ RegQueryValueEx r, Name, 0, 1, ByVal tmp, s tmp = Left(tmp, InStr(tmp, Chr(0)) - 1) GetValue = tmp Case REG_BINARY RegQueryValueEx r, Name, 0, 3, ByVal vbNullString, s sValue = String(s, 0) RegQueryValueEx r, Name, 0, 3, ByVal sValue, s GetValue = sValue Case Else GetValue = "" End Select RegCloseKey r Exit Function er: GetValue = -1 RegCloseKey r End Function
'设置值
On Error GoTo er
Dim i As Integer, tmp As String
l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r)
If l <> 0 Then GoTo er
Select Case fbType
Case REG_DWORD
SetValue = RegSetValueEx(r, Name, 0&, 4, CLng(Value), 4)
Case REG_SZ
SetValue = RegSetValueEx(r, Name, 0&, 1, ByVal CStr(Value), Len(CStr(Value)))
Case REG_BINARY
SetValue = RegSetValueEx(r, Name, 0&, 3, ByVal CStr(Value), Len(CStr(Value)))
Case Else
SetValue = -1
End Select
RegCloseKey r
Exit Function
er:
SetValue = -1
RegCloseKey r
End FunctionPublic Function GetValue(RootKey As Long, SubKey As String, Name As String, fbType As Integer) As Variant
'读取值
Dim s As Long, sValue As String, tmp As String, i As Integer, bin() As Byte
On Error GoTo er
tmp = String(1024, 0)
s = 1024
l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r)
If l <> 0 Then GoTo er
Select Case fbType
Case REG_DWORD
RegQueryValueEx r, Name, 0, 1, ByVal tmp, s
tmp = Left(tmp, InStr(tmp, Chr(0)) - 1)
for i = Len(tmp) To 1 Step -1
sValue = sValue & Hex(Asc(Mid(tmp, i, 1)))
Next i
GetValue = Format("&H" & sValue)
Case REG_SZ
RegQueryValueEx r, Name, 0, 1, ByVal tmp, s
tmp = Left(tmp, InStr(tmp, Chr(0)) - 1)
GetValue = tmp
Case REG_BINARY
RegQueryValueEx r, Name, 0, 3, ByVal vbNullString, s
sValue = String(s, 0)
RegQueryValueEx r, Name, 0, 3, ByVal sValue, s
GetValue = sValue
Case Else
GetValue = ""
End Select
RegCloseKey r
Exit Function
er:
GetValue = -1
RegCloseKey r
End Function