2013-09-21 2 views
0

Почему следующий код возвращает NULL для shellValue?Ключ реестра Получить значения возвращает NULL

 string shellValue; 
     RegistryKey shellKey = Registry.LocalMachine; 
     shellKey = shellKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
     shellValue = shellKey.GetValue("Shell") as string; 

У меня есть права администратора.

+0

отлично работает для меня, проверить, существует ли ключ/значение с помощью 'regedit.exe' –

+0

Оно существует, значение по умолчанию в Windows, это explorer.exe – PnP

ответ

1

Фактически вы получаете этот раздел «HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell". Это связано с тем, что некоторые ключи перенаправляются WOW64. Проверьте this для получения дополнительной информации.

Попробуйте следующее:

string shellValue; 
RegistryKey shellKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);; 
shellKey = shellKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
shellValue = shellKey.GetValue("Shell") as string; 
+0

Как я могу сделать это сделать правильный ключ для каждой соответствующей ОС? – PnP

Смежные вопросы