Pourquoi est-OpenSubKey() pour retourner la valeur null sur mon Windows 7 64-bit du système?

Ne OpenSubKey() et autres Microsoft.Registre Win32 retour des fonctions nulles sur les systèmes 64 bits lorsque les clés de registre 32 bits sont sous Wow6432node dans le registre?

Je travaille sur un framework de test unitaire qui fait un appel à OpenSubKey() de l' .NET-library.

Mon système de développement est un Windows 7 64-bit, de l'environnement avec Visual Studio; 2008 SP1 et Windows 7 SDK installé.

La demande, nous sommes le test unitaire est une application 32 bits, de sorte que le registre est virtualisé sous HKLM\Software\Wow6432node. Lorsque nous appelons:

Registry.LocalMachine.OpenSubKey( @"Software\MyCompany\MyApp\" );

Null est retourné, cependant indiquant explicitement à regarder ici:

Registry.LocalMachine.OpenSubKey( @"Software\Wow6432node\MyCompany\MyApp\" );

Ce que je comprends de cette fonction doit être agnostique à 32-bits ou 64-bits environnements et doit savoir pour sauter vers le nœud virtuel.

Encore plus étrange est le fait que l'exacte même appel à l'intérieur d'un compilé et installé la version de notre application fonctionne très bien sur le même système et obtenir les clés de registre nécessaires à l'exécution; qui sont également placés dans HKLM\Software\Wow6432node.

Que dois-je faire?

InformationsquelleAutor BrMcMullin | 2010-03-17