2010-10-08 33 views
1

在註冊表中寫入一個sbkey我用下面的代碼打開,然後在註冊表中在vb.net

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對象引用未設置到對象

我不明白是怎麼回事的一個實例。有沒有人可以幫助我呢?

回答

1

非常感謝任何人試圖發送答案。 但我發現我的自我解決方案。 所以我把它放在這裏以防別人想要看到它。 解決方案是使用註冊表配置單元的心態。 需要了解的是,只有在我們將註冊表打開到最後一個存在的子密鑰後,才能逐個創建子密鑰。 新的子密鑰不需要在「子密鑰」之前或之後有任何字符,如 請查看代碼。

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