Изменить значение реестра в VB.NET - PullRequest
1 голос
/ 15 июня 2010

Я много искал, чтобы найти решение своей проблемы, но не могу найти какое-то конкретное решение.

Мне нужно изменить значение, которое хранится в HKEY_LOCAL_MACHINE\SOFTWARE\APP_NAME. Невозможно использовать функции реестра .NET, поскольку они имеют радикальные ограничения.

Следующий фрагмент должен решить мою проблему:

Dim regKey As RegistryKey
Dim ver As Decimal
regKey = My.Computer.Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\SOFTWARE\APP_NAME", True)

regKey.SetValue ("IP", "192.168.10.15:18500") regKey.Close ()

К сожалению, я получаю NullReferenceExeption, когда пытаюсь установить значение.

Что мне делать? Я импортировал Microsoft.Win32, и RegistryKey не принимает конструктор.

Ответы [ 3 ]

5 голосов
/ 15 июня 2010

Удалите «HKEY_LOCAL_MACHINE» из имени ключа, которое уже включено участником LocalMachine в ваш код.

Помните, что этот код не будет работать на обычной машине с Vista или Win7, вы не можете открыть этот ключ для записи с включенным UAC. Вам понадобится манифест, требующий прав администратора. Напишите вместо этого в My.Computer.Registry.CurrentUser.

Еще одним осложнением является виртуализация реестра, если вы запускаете ее в 64-разрядной версии Windows. 32-разрядные программы вместо этого будут читать и записывать ключи HKLM \ Software в / из HKLM \ Software \ Wow6432Node.

2 голосов
/ 15 июня 2010

Я думаю, что вам нужно, вам нужно сделать это:

regKey = My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE",True).OpenSubKey("APP_NAME", True)
2 голосов
/ 15 июня 2010

Существует ли подраздел? Цитата из MSDN : Вместо выдачи исключения возвращается пустая ссылка (Nothing в Visual Basic), если запрошенный ключ не существует. .

...