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

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

Barbara Streisand
Libérer: 2025-01-16 19:12:13
original
755 Les gens l'ont consulté

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

Lire le registre 64 bits à partir d'une application 32 bits

Lorsqu'une application 32 bits s'exécute sur un système Windows 64 bits, elle ne peut accéder à la clé de registre que sous HKEY_LOCAL_MACHINESoftwareWow6432Node. Cependant, dans certains cas, l'accès au registre 64 bits est requis.

Solution :

Utilisation de .NET Framework 4.x et supérieur :

.NET Framework 4.x et versions ultérieures fournissent l'énumération RegistryView, permettant un accès direct aux clés de registre 64 bits et 32 ​​bits. Voici comment procéder :

Accéder au registre 64 bits :

using Microsoft.Win32;

RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
// 对64位注册表执行操作
Copier après la connexion

Accéder au registre 32 bits :

RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
// 对32位注册表执行操作
Copier après la connexion

Alternative :

Pour les situations où vous devez accéder à des clés de registre 64 bits et 32 ​​bits, vous pouvez utiliser la méthode suivante :

// 获取64位和32位节点的所有注册表值
var mergedValues = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).GetValues()
    .Concat(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).GetValues());

// 获取64位和32位节点的所有注册表项
var mergedKeys = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).GetSubKeyNames()
    .Concat(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).GetSubKeyNames());
Copier après la connexion

Remarque :

  • La lecture du registre 64 bits est possible grâce au sous-système WOW64 de Windows (qui émule les opérations 32 bits sur les systèmes 64 bits).
  • Dans Windows 7, il existe un bug où la version du code 32 bits renvoie toujours « Microsoft » pour RegisteredOrganization, quelle que soit la valeur réelle.
  • Dans les versions 32 bits de Windows, le sous-arbre WOW6432Node n'existe pas.

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!

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