Проверьте, существует ли ключ в реестре Windows с помощью VB.NET.

В VB.NET я могу создать ключ в реестре Windows следующим образом:

My.Computer.Registry.CurrentUser.CreateSubKey("TestKey")

И я могу проверить, существует ли значение в ключе следующим образом:

If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\MyKey", _
        "TestValue", Nothing) Is Nothing Then
    MsgBox("Value does not exist.")
Else
    MsgBox("Value exist.")
End If

Но как я могу проверить, существует ли в реестре ключ с определенным именем?


person Max    schedule 01.04.2013    source источник


Ответы (2)


Один из способов — использовать метод Registry.OpenSubKey

If Microsoft.Win32.Registry.LocalMachine.OpenSubKey("TestKey") Is Nothing Then
  ' Key doesn't exist
Else
  ' Key existed
End If

Однако я бы посоветовал вам не идти по этому пути. Метод OpenSubKey, возвращающий Nothing, означает, что ключ не существовал в какой-то момент в прошлом. К тому времени, когда метод вернет значение, другая операция в другой программе может привести к созданию ключа.

Вместо того, чтобы проверять наличие ключа и создавать его постфактум, я бы пошел прямо к CreateSubKey.

person JaredPar    schedule 01.04.2013
comment
ЭТО МОЖЕТ НЕ ВСЕГДА РАБОТАТЬ. 32-разрядное приложение в 64-разрядной ОС будет по умолчанию просматривать узел HKLM\Software\Wow6432Node. Чтобы прочитать 64-битную версию ключа, вам нужно указать RegistryView - person John Lamberis; 17.08.2017

Я использую этот код. Это просто, легко и работает на HKEY_CURRENT_USER\Software\YourAppSettings.

Код:

string[]  kyes=Registry.CurrentUser.OpenSubKey(@"Software\YourAppSettings").GetValueNames();
if (!kyes.Contains("keytoknowIfExist"))
      {

      }
person Alonso Trejo Alvarez    schedule 26.11.2020