关于注册表的小问题
原谅我,我是超级菜鸟,所以写了个这么菜鸟的注册表模板。
当然,到处是注册表的强大模板下载,不过我看着头晕。
我想实现这个效果,调用的时候,第一个参数是注册表键名,第二个参数是键值。
就像这样:MyReg.WriteReg "HKEY_CURRENT_USER\SOFTWARE\flying\Nam", "ranassa"
但是,当我lResult = RegCreateKey(strMajorName, strMinorName, lKeyHand)的时候,总说类型不对不对,我clng(strMajorName)了还是不对。还是只能改成 lResult = RegCreateKey(HKEY_CURRENT_USER, strMinorName, lKeyHand)
下面是源代码
Sub RegWrite(FullKeyName As String, KeyValue As String)
Dim lKeyHand As Long, lResult As Long, lKeyValue As Long, lDataType As Long
Dim strMajorName As String, strMinorName As String, strKeyName As String
strMajorName = Left(FullKeyName, InStr(FullKeyName, "\") - 1)
strKeyName = Mid(FullKeyName, InStrRev(FullKeyName, "\") + 1)
strMinorName = Mid(FullKeyName, InStr(FullKeyName, "\") + 1, Len(FullKeyName) - Len(strMajorName) - Len(strKeyName) - 2)
lResult = RegCreateKey(HKEY_CURRENT_USER, strMinorName, lKeyHand)
lResult = RegOpenKeyEx(HKEY_CURRENT_USER, strMinorName, 0&, KEY_ALL_ACCESS, lKeyHand)
lResult = RegSetValueEx(lKeyHand, strKeyName, 0&, REG_SZ, ByVal KeyValue, Len(KeyValue) + 1)
End Sub
[解决办法]
- VB code
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkresult As Long) As LongDeclare Function RegSetvalue Lib "advapi32.dll" Alias "RegSetvalueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As LongDeclare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Const HKEY_CLASSES_ROOT = &H80000000Private Const REG_SZ = 1Sub RegWrite(FullKeyName As String, KeyValue As String) Dim lKeyHand As Long, lResult As Long, lKeyValue As Long, lDataType As Long Dim strMajorName As String, strMinorName As String, strKeyName As String strMajorName = Left(FullKeyName, InStr(FullKeyName, "\") - 1) strKeyName = Mid(FullKeyName, InStrRev(FullKeyName, "\") + 1) strMinorName = Mid(FullKeyName, InStr(FullKeyName, "\") + 1, Len(FullKeyName) - Len(strMajorName) - Len(strKeyName) - 2) lResult = RegCreateKey(strMajorName, strMinorName, lKeyHand) lResult = RegOpenKeyEx(HKEY_CURRENT_USER, strMinorName, 0&, KEY_ALL_ACCESS, lKeyHand) lResult = RegSetValueEx(lKeyHand, strKeyName, 0&, REG_SZ, ByVal KeyValue, Len(KeyValue) + 1)End Sub