C # Winforms получить значение из реестра - PullRequest
0 голосов
/ 21 сентября 2018
private void button1_Click(object sender, EventArgs e)
{
      int i = (Int32)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Beerbaum", "TCP_Listening_Delay", null);
      MessageBox.Show(i.ToString());
}

В реестре есть QWORD-значение (64-разрядное) , называемое TCP_Listening_Delay , и его значение равно dec: 5000

Когда я нажимаю кнопку, она должна открыть MessageBox, который должен отображать 5000, но это не так.Все, что он делает, это дает мне,

«NullReferenceException не обработано».

1 Ответ

0 голосов
/ 21 сентября 2018

Registry.GetValue (String, String, Object) Метод

Извлекает значение, связанное с указанным именем, в указанном разделе реестра.Если имя не найдено в указанном ключе, возвращает заданное вами значение по умолчанию или ноль, если указанный ключ не существует.

Возвращает

null, если подключ, указанный в keyName, не существует;в противном случае значение, связанное с valueName, или defaultValue, если valueName не найдено.

Однако я думаю, что ваша проблема в том, что вы, вероятно, пытаетесь прочитать 64/ 32-битный куст реестра из 32/64-битного приложения

Перечисление RegistryView: В 64-битной версии Windows части реестра хранятся отдельно для 32-битных и 64-битных приложений.Существует 32-разрядное представление для 32-разрядных приложений и 64-разрядное представление для 64-разрядных приложений.

Вы можете указать представление реестра при использовании OpenBaseKey и OpenRemoteBaseKey (RegistryHive, String, RegistryView)методы и свойство FromHandle объекта RegistryKey.

using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
   using (var subKey = baseKey.OpenSubKey("blah", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl))
   {
      if (subKey != null)
      {
         var value =  subKey.GetValue("Somekey");
      }
   }
}

64-битный ключ реестра не обновляется 32-битным приложением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...