Maison > développement back-end > C++ > Comment une application 32 bits peut-elle accéder au registre 64 bits sous Windows ?

Comment une application 32 bits peut-elle accéder au registre 64 bits sous Windows ?

Mary-Kate Olsen
Libérer: 2025-01-16 19:05:10
original
309 Les gens l'ont consulté

How Can a 32-bit Application Access the 64-bit Registry in Windows?

Accès au registre 64 bits à partir d'une application Windows 32 bits

Défi :

Les applications 32 bits rencontrent des difficultés pour accéder au registre 64 bits sur les systèmes Windows 64 bits. Ce problème survient souvent lors de l'accès aux informations système résidant dans le registre 64 bits, telles que le chemin d'accès à une instance SQL Express, à partir d'un test unitaire 32 bits exécuté sur un serveur de build 64 bits.

Solution :

Accès au registre 64 bits :

La propriété RegistryView.Registry64 fournit la solution pour accéder au registre 64 bits à partir d'une application 32 bits. Le code suivant le démontre :

<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey sqlServerKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
string sqlExpressKeyName = (string)sqlServerKey.GetValue("SQLEXPRESS");</code>
Copier après la connexion

Accès au registre 32 bits :

À l'inverse, pour accéder au registre 32 bits, utilisez RegistryView.Registry32 :

<code class="language-csharp">RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
string sqlExpressKeyName = (string)sqlServerKey32.GetValue("SQLEXPRESS");</code>
Copier après la connexion

Considérations importantes :

  • Bien que le registre 32 bits soit accessible via le "Wow6432Node" dans le registre 64 bits, l'utilisation de RegistryView.Registry32 est l'approche recommandée et plus directe.
  • Un bug connu dans Windows 7 (64 bits) peut entraîner le retour incorrect de la valeur RegisteredOrganization « Microsoft » lors d'un accès à partir d'un code 32 bits. Le code 64 bits renverra la bonne organisation.
  • La fonction GetAllRegValueNames() permet de récupérer tous les noms et valeurs de clés, quelle que soit la vue du registre (32 bits ou 64 bits).
  • Utilisez l'opérateur de fusion nulle (??) pour gérer avec élégance les valeurs nulles potentielles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal