Maison > développement back-end > C++ > Pourquoi OpenSubKey() renvoie-t-il Null pour une clé de registre visible dans Regedit ?

Pourquoi OpenSubKey() renvoie-t-il Null pour une clé de registre visible dans Regedit ?

Mary-Kate Olsen
Libérer: 2025-01-05 18:39:40
original
530 Les gens l'ont consulté

Why Does OpenSubKey() Return Null for a Registry Key Visible in Regedit?

OpenSubKey() renvoie Null pour la clé de registre visible dans Regedit.exe

Lors de la tentative de récupération des noms d'affichage de sous-clés dans la clé de registre HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall, les utilisateurs peuvent rencontrer un problème où la méthode OpenSubKey() renvoie null pour une sous-clé spécifique visible dans l'éditeur de registre (regedit.exe).

La cause sous-jacente réside dans la vue de registre par défaut utilisée par les applications 32 bits sur les systèmes d'exploitation 64 bits. Par défaut, ces applications accèdent au nœud HKLMSoftwareWow6432Node, qui contient des clés de registre 32 bits. Pour lire la version 64 bits de la clé, il est nécessaire de spécifier le RegistryView lors de l'ouverture de la clé de base.

Pour résoudre ce problème, utilisez le code suivant :

using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
   // key now points to the 64-bit key
}
Copier après la connexion

Ceci Le code garantit que la clé de registre est ouverte à l'aide de la vue 64 bits, permettant l'accès à la sous-clé souhaitée et à son nom d'affichage.

Alternativement, pour .NET 3.5, il est nécessaire de recourir à P/Invoke pour accéder aux clés 64 bits, comme décrit dans la ressource fournie dans la réponse originale.

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