1

我正在使用以下代码打开然后在注册表中写入一个子项

Private Sub RegSubKeyCreates(ByVal sKeyPath As String)
      Dim RegKey As RegistryKey
      Dim SubKeyParam() As String = Nothing

      SubKeyParam = Split(sKeyPath, "\")
      RegKey = Registry.CurrentUser.OpenSubKey(SubKeyParam(0), True).OpenSubKey(SubKeyParam(1), True)
      RegKey.CreateSubKey(SubKeyParam(0)).CreateSubKey(SubKeyParam(1))

End Sub

当我尝试创建子项时出现错误

System.NullReferenceException 对象引用未设置为对象的实例

我不明白发生了什么事。有人可以帮助我吗?

4

1 回答 1

1

非常感谢您尝试发送答案的任何人。但我自己找到了解决方案。所以我把它放在这里以防其他人想看到它。解决方案是使用注册表 Hive 的心态。需要了解的是,子键是一一创建的,只有在我们打开注册表到最后一个存在的子键之后。新的子密钥不需要在“子密钥”之前或之后有任何字符,请看代码。

Private Sub RegSubKeyCreates(ByVal sKeyPath As String)
      Dim RegKey As RegistryKey
      Dim SubKeyParam() As String = Nothing
      Dim UB As Integer
      Dim Bound As Integer
      Dim KeyPath As String

      SubKeyParam = Split(sKeyPath, "\")
      UB = UBound(SubKeyParam)
      For Bound = 0 To UB - 1
           KeyPath = KeyPath + SubKeyParam(Bound) + "\"
      Next
      RegKey = Registry.CurrentUser.OpenSubKey(KeyPath, True)
      RegKey.CreateSubKey(SubKeyParam(UB))

 End Sub

导致这一点的子是:

Select Case RegKeyExists("Software\sKey1")
           Case True
           Case False
                RegSubKeyCreates("Software\skey1")  
                Select Case RegKeyExists("Software\sKey1\sKey2")
                     Case True
                     Case False
                          RegSubKeyCreates("Software\sKey1\sKey2")
                          Select Case RegKeyExists("Software\sKey1\sKey2\sKey3")
                               Case True
                               Case False
                                    RegSubKeyCreates("Software\sKey1\sKey2\sKey3")
                                    Select Case RegKeyExists("Software\skey1\sKey2\sKey3")
                                         Case True
                                              SetRegKeyValue("KeyName", "KeyValue", "TheTotalSubKeyPath")
                                         Case False

                                    End Select
                          End Select
于 2010-10-08T07:26:59.527 回答