Grâce à WOW64 (Windows sur Windows 64 bits), les applications 32 bits peuvent accéder au registre 64 bits. Ce sous-système facilite l'accès 64 bits dans l'environnement 32 bits.
Utilisez RegistryView.Registry64
pour accéder au registre 64 bits :
<code class="language-csharp">using Microsoft.Win32; string value64 = string.Empty; RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); if (localKey != null) { value64 = localKey.GetValue("RegisteredOrganization").ToString(); localKey.Close(); } Console.WriteLine($"RegisteredOrganization [64-bit]: {value64}");</code>
Utilisez RegistryView.Registry32
pour accéder au registre 32 bits :
<code class="language-csharp">string value32 = string.Empty; RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); localKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); if (localKey32 != null) { value32 = localKey32.GetValue("RegisteredOrganization").ToString(); localKey32.Close(); } Console.WriteLine($"RegisteredOrganization [32-bit]: {value32}");</code>
HKEY_LOCAL_MACHINESoftwareWow6432Node
contient les valeurs utilisées par les applications 32 bits.HKEY_LOCAL_MACHINESoftware
comme prévu en raison de la redirection WOW64.HKEY_LOCAL_MACHINESoftwareWow6432Node
est absent dans les anciennes versions de Windows et dans Windows 7 32 bits.Pour récupérer les valeurs des registres 64 bits et 32 bits (utile pour des scénarios tels que la récupération de noms d'instance SQL), une requête union est recommandée :
<code class="language-csharp">public static IEnumerable<string> GetAllRegValueNames(string regPath, RegistryHive hive = RegistryHive.LocalMachine) { var reg64 = GetRegValueNames(RegistryView.Registry64, regPath, hive); var reg32 = GetRegValueNames(RegistryView.Registry32, regPath, hive); var result = (reg64 != null && reg32 != null) ? reg64.Union(reg32) : (reg64 ?? reg32); return (result ?? new List<string>().AsEnumerable()).OrderBy(x => x); }</code>
Cela fournit une vue consolidée des valeurs de registre, quelle que soit l'architecture de l'application.
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!