原谅我,我是超级菜鸟,所以写了个这么菜鸟的注册表模板。
当然,到处是注册表的强大模板下载,不过我看着头晕。
我想实现这个效果,调用的时候,第一个参数是注册表键名,第二个参数是键值。
就像这样: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

解决方案 »

  1.   

    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkresult As Long) As Long
    Declare 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 Long
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Const HKEY_CLASSES_ROOT = &H80000000
    Private 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
    以上代码在我的机器上编译通过