Есть ли удобный способ ссылки на произвольные ключи реестра в .net? - PullRequest
0 голосов
/ 21 декабря 2011

Я работаю над приложением .net, которое будет использоваться для аудита конфигурации каждого компьютера, на котором он работает.

Я бы хотел иметь возможность прочитать значение любого ключа реестра, указанного в строке, например: HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram

Чтобы получить ключ к этому ключу в .net, я пишу следующее:

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\MyOrganization\\MyProgram);

Как видите, я ссылаюсь на HKEY_LOCAL_MACHINE, используя Registry.LocalMachine.

Можно ли ссылаться на ключи реестра по имени, не обращаясь к этим полям в объекте Registry?

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Полагаю, вы можете использовать метод Registry.GetValue(...).Первый параметр - это полное имя ключа, включая корень.

1 голос
/ 21 декабря 2011

Возможно, вы все равно захотите разделить настройки конфигурации по типу.В конце концов, если вы не запустите свое приложение в контексте пользователя, который обычно входит в систему на компьютере и проверяет HKEY_CURRENT_USER, это пустая трата времени.Если вместо этого вы указали «Компьютер», «Классы» и «Пользователь», вы можете проверить их в контексте соответствующего пользователя.

В качестве альтернативы, если вы не ищете какой-либо необычной функциональности и согласны со строками Registry.GetValue/Registry.SetValue работа.

0 голосов
/ 21 декабря 2011

Я наконец понял это сам, задав вопрос: -)

Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram", "ValueName", "default value");

Кроме того, в документации сказано, что в случае, если ключ не существует, функция вернет null. Это выглядит полезным при использовании этой функции для обнаружения наличия или отсутствия раздела реестра. (что очень полезно для определения, установлены ли определенные приложения)

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