У меня есть следующий код:Перенаправление реестра не бывает для HKEY_CURRENT_USER
RegistryKey objRegKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);
У меня есть ключ, присутствующий в реестре в разделе: HKEY_CURRENT_USER \ SOFTWARE \ MySettings \ Dwm \ Preferences и так это прекрасно работает.
Когда я изменить приведенный выше код для чтения из локального компьютера, а не текущего пользователя:
RegistryKey objRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);
и создать следующий параметр реестра в разделе: HKEY_LOCAL_MACHINE \ SOFTWARE \ MySettings \ Dwm \ Preferences
Код возвращает null. Я понимаю, что из-за переустановки реестра для 32-разрядных приложений в 64-разрядной ОС он пытается прочитать реестр с: HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432NODE \ MySettings \ Dwm \ Preferences и поскольку реестра не существует, оно возвращает null. Вопрос в том, почему перенаправление происходит только для HKEY_LOCAL_MACHINE, а не для HKEY_CURRENT_USER?
Переадресация реестра на ключи HKLM не является базовым «всегда перенаправляемым» делом. Независимо от того, перенаправлены ли они, отражены или разделены, следует набор [довольно запутанных правил] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384253 (v = vs.85) .aspx). Для HKCU существует только несколько правил, в основном потому, что ключи, которые используются для приложений, отличных от Microsoft, и те приложения уже знают, какой вкус они представляют. Отражены только значения CLSID и AppId. Вы ошибочно написали Wow6432Node btw, буква oh, а не цифра нуль. –
Исправлено. Спасибо, что указали это. –