Как использовать Microsoft.Win32.Registry.OpenSubKey, чтобы перейти непосредственно к определенному ключу? - PullRequest
4 голосов
/ 18 августа 2011

Теперь это простой вопрос. Это должно быть четко задокументировано в MSDN. Я посмотрел, но не смог найти. Единственное, что я получил, это то, что мне пришлось открывать подраздел после подраздела после подраздела, чтобы получить нужный мне ключ.

Конечно, есть более прямой способ доступа к ключевым 3 уровням. Что это?

Я уже пробовал

RegistryKey reg = Registry.LocalMachine;
reg.OpenSubKey(@"Software\Microsoft", true);  // reg is still HKLM !

и

reg.OpenSubKey(@"Software\Microsoft\", true); // reg is still HKLM !

Ответы [ 3 ]

9 голосов
/ 18 августа 2011

Я думаю, вы ожидаете, что метод OpenSubKey() сделает что-то с reg - как-то, чтобы он указывал на подразделЭто не работает таким образом.OpenSubKey() возвращает новый объект типа RegistryKey, который можно использовать для получения значения или изменения вложенного ключа.Итак, вам нужно:

RegistryKey reg = Registry.LocalMachine;
RegistryKey subKey = reg.OpenSubKey(@"Software\Microsoft", true);  
2 голосов
/ 18 августа 2011

OpenSubKey возвращает новый RegistryKey объект:

reg = reg.OpenSubKey(@"Software\Microsoft", true); // Will work or
var sub = reg.OpenSubKey(@"Software\Microsoft", true);
0 голосов
/ 18 августа 2011

Обязательно укажите полный путь к этому ключу, например:

Registry.CurrentUser.OpenSubKey("the registry full path");
...