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>
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>
Considérations importantes :
RegistryView.Registry32
est l'approche recommandée et plus directe.RegisteredOrganization
« Microsoft » lors d'un accès à partir d'un code 32 bits. Le code 64 bits renverra la bonne organisation.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).??
) 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!