我正在使用以下代码打开然后在注册表中编写一个子项
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未将对象引用设置为对象的实例
我无法理解发生了什么。有没有人帮我这个?
答案 0 :(得分: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