Question

Si vous utilisez une application 32 bits sur une machine 64 bits (J'utilise Windows 7) et vous écrivez ce code

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

il va vraiment obtenir la clé de

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX

et non

HKEY_LOCAL_MACHINE\SOFTWARE\XXX

Progromatically donné une RegistryKey comment puis-je travaille sur le vrai chemin dans le registre?

Était-ce utile?

La solution

Il est très bien le vrai chemin, une application 32 bits sera toujours accéder à la clé de Registre dans cette sous-clé. Obtenir la valeur d'une application 64 bits verrait est techniquement possible, mais pas avec .NET. Vous devrez P / Invoke RegOpenKeyEx () et al afin que vous pouvez spécifier le drapeau KEY_WOW64_64KEY.


Mise à jour: adresse dans .NET 4.0 avec RegistryKey.OpenBaseKey (). L'argument RegistryView vous permet de spécifier la vue que vous voulez. Vous utiliseriez RegistryView.Registry64 dans ce cas.

Autres conseils

Il est fonction de si oui ou non le programme a été compilé pour 32 ou 64 bits de Windows et si elle fonctionne sur 32 ou 64 bits de Windows. Voir ci-dessous si aide:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top