问题是:写注册表时,只建立项,而没用写其它的(如:用户名及其值)
当手工写入注册表,测试读取时,命名是六个字母,读取出来却告诉是14个
郁闷!!!!!!!!
原代码:
注册表写入
Public Sub WriteandReadReg()
Dim UserName As String, ListName As String
Dim UserName1 As String, ListName1 As String
Dim SubKey As String, KeyName As Long
Dim Result As Long
On Error GoTo err1
SubKey = "Software\WellDrawData"
Result = RegCreateKey(HKEY_CURRENT_USER, SubKey, KeyName)
If Result Then
   UserName = Trim(WriteReg.Text1.Text)
   RegSetValueEx KeyName, "用户名", 0, REG_SZ, ByVal UserName, LenB(StrConv(UserName, vbFromUnicode)) + 1
   ListName = Trim(WriteReg.Text2.Text)
   RegSetValueEx KeyName, "序列号", 0, REG_SZ, ByVal ListName, LenB(StrConv(ListName, vbFromUnicode)) + 1
   RegCloseKey KeyName
End If
      MsgBox "注册后请关闭该程序,重新启动!"
      Unload WriteReg
err1:
End Sub
注册表读取:
Public Function ReadReg(UserName As String, ListName As String) As Boolean
  Dim Result As Long
  Dim SubKey As String
  Dim Reg_phkey As Long
  ReadReg = False
  SubKey = "Software\WellDrawData"
  UserName = Space(20)
  ListName = Space(20)
  Result = RegOpenKeyEx(HKEY_CURRENT_USER, SubKey, 0, KEY_READ, Reg_phkey)
  If Result = ERROR_SUCCESS Then
        RegQueryValueExString Reg_phkey, "用户名", 0&, REG_SZ, UserName, LenB(UserName)
        RegQueryValueExString Reg_phkey, "序列号", 0&, REG_SZ, ListName, LenB(ListName)
        RegCloseKey (Reg_phkey)
  End If
  If Trim(UserName) = "hgy" And Trim(ListName) = "0123456789" Then
          ReadReg = True
  End If
End Function

解决方案 »

  1.   

    读取REG_SZ类型的注册信息的一段代码,供参考参考:
        If (ERROR_SUCCESS <> RegQueryValueEx(hKey, ValueName, 0, lngType, ByVal vbNullString, lngBufferSize)) Then
            Exit Function
        End If
        
        Select Case lngType
               Case REG_SZ
                    Dim strBuffer As String
                    If (lngBufferSize = 0) Then
                        GoTo Finally
                    End If
                    
                    strBuffer = String(lngBufferSize, Chr(0))
                    If (ERROR_SUCCESS <> RegQueryValueEx(hKey, ValueName, 0, 0, ByVal strBuffer, lngBufferSize)) Then
                        GoTo Finally
                    End If
                
                    GetValue = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
      

  2.   

    注册表写入,应该为
    If Result=0 Then
    注册表读取:
    Public Function ReadReg(UserName As String, ListName As String) As Boolean
      Dim Result As Long
      Dim SubKey As String
      Dim Reg_phkey As Long
      ReadReg = False
      SubKey = "Software\WellDrawData"
      UserName = String(20, Chr(0))
      listName = String(20, Chr(0))
      Result = RegOpenKeyEx(HKEY_CURRENT_USER, SubKey, 0, KEY_READ, Reg_phkey)
      If Result = ERROR_SUCCESS Then
            RegQueryValueExString Reg_phkey, "用户名", 0&, REG_SZ, UserName, LenB(UserName)
            RegQueryValueExString Reg_phkey, "序列号", 0&, REG_SZ, ListName, LenB(ListName)
            RegCloseKey (Reg_phkey)
      End If
      UserName = Left(UserName, LenB(UserName) - 1)
      listName = Left(listName, LenB(listName) - 1)
      If Trim(UserName) = "hgy" And Trim(ListName) = "0123456789" Then
              ReadReg = True
      End If
    End Function