Я добавил раздел реестра, но не могу найти его программно - PullRequest
5 голосов
/ 09 сентября 2011

Поэтому я использовал RegEdit, чтобы добавить следующее в реестр на моей рабочей станции:

HKLM \ Software \ Foo \ Bar

Bar имеет пару kk / v "wtf" / "idk».Я подтвердил, что эти изменения «приняли», закрыв regedit и открыв его заново.Эй, они все еще там!Swell.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

Проблема в том, что ключ равен нулю.

Когда.,.

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()

Вызывается, Foo не появляется среди множества SubKeyNames.

Итак, я явно упускаю что-то глупое.Что конкретно мне не хватает?

Ответы [ 3 ]

11 голосов
/ 09 сентября 2011

Если вы выполняете 32-битный процесс в 64-битной версии Windows, 32-битный процесс (ваше тестовое приложение) не всегда может увидеть ключи, созданные вами с помощью 64-битного regedit.

Попробуйте запуститьваше приложение как 64-битное или используйте regedit, чтобы открыть ключ, используя путь HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

Подробнее о 32-битных и 64-битных данных приложений вы можете прочитать в реестре в MSDN..

4 голосов
/ 09 сентября 2011

Может быть проблема с x64? При чтении из реестра в процессе x86 вы перенаправляетесь на Software \ Wow6432node.

1 голос
/ 09 сентября 2011

Попробуйте открыть его только для чтения Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() возможно, вы получаете только те, в которые можете писать.

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