Как мне получить истинный путь к ключу регистрации?
-
18-09-2019 - |
Вопрос
Если вы запускаете 32-битное приложение на 64-битном компьютере (я использую Windows 7) и пишете этот код
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")
он фактически получит ключ от
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX
и не
HKEY_LOCAL_MACHINE\SOFTWARE\XXX
Как программно получить RegistryKey, как мне определить истинный путь в реестре?
Решение
Это во многом истинный путь: 32-разрядное приложение всегда будет иметь доступ к разделу реестра в этом подразделе.Получить ценность, которую увидит 64-битное приложение, технически возможно, но не с помощью .NET.Вам придется P/Invoke RegOpenKeyEx() и др., чтобы вы могли указать KEY_WOW64_64KEY флаг.
ОБНОВЛЯТЬ:в .NET 4.0 рассматривается с помощью RegistryKey.OpenBaseKey().Аргумент RegistryView позволяет указать нужное представление.В этом случае вы должны использовать RegistryView.Registry64.
Другие советы
Это зависит от того, была ли программа скомпилирована для 32- или 64-битной Windows и работает ли она в 32- или 64-битной Windows.Посмотрите, поможет ли следующее:
http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/92f962d6-7f5e-4e62-ac0a-b8b0c9f552a3