Как я могу получить истинный путь к ключу рег? - PullRequest
0 голосов
/ 06 января 2010

Если вы используете 32-битное приложение на 64-битной машине (я использую windows 7) и вы пишете этот код

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")

он действительно получит ключ от

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX

а не

HKEY_LOCAL_MACHINE\SOFTWARE\XXX

Программно предоставлен RegistryKey, как мне определить истинный путь в реестре?

Ответы [ 2 ]

1 голос
/ 06 января 2010

Это истинный путь, 32-разрядное приложение всегда будет обращаться к разделу реестра в этом подразделе. Получить значение, которое увидит 64-битное приложение, технически возможно, но не в .NET. Вам потребуется P / Invoke RegOpenKeyEx () и др., Чтобы вы могли указать флаг KEY_WOW64_64KEY.


ОБНОВЛЕНИЕ: адресовано в .NET 4.0 с RegistryKey.OpenBaseKey (). Аргумент RegistryView позволяет указать желаемое представление. В этом случае вы бы использовали RegistryView.Registry64.

0 голосов
/ 06 января 2010

Это зависит от того, была ли программа скомпилирована для 32- или 64-битной Windows и работает ли она на 32- или 64-битной Windows. Посмотрите, поможет ли ниже:

http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/92f962d6-7f5e-4e62-ac0a-b8b0c9f552a3

...