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 }
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!