Как мне получить истинный путь к ключу регистрации?

StackOverflow https://stackoverflow.com/questions/2010233

Вопрос

Если вы запускаете 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top