запись sbkey в реестре в vb.net - PullRequest
1 голос
/ 08 октября 2010

Я использую следующий код, чтобы открыть, а затем написать подраздел в реестре

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 Ответ

1 голос
/ 08 октября 2010

Большое спасибо всем, кто пытается отправить ответ. Но я нашел решение сам. Так что я положил это здесь на случай, если кто-то еще захочет это увидеть. Решение заключается в менталитете работы с реестром 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...