Heim > Backend-Entwicklung > C++ > Wie kann eine 32-Bit-Anwendung auf die 64-Bit-Registrierung in Windows zugreifen?

Wie kann eine 32-Bit-Anwendung auf die 64-Bit-Registrierung in Windows zugreifen?

Mary-Kate Olsen
Freigeben: 2025-01-16 19:05:10
Original
307 Leute haben es durchsucht

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

Zugriff auf die 64-Bit-Registrierung von einer 32-Bit-Windows-Anwendung aus

Herausforderung:

32-Bit-Anwendungen haben Schwierigkeiten beim Zugriff auf die 64-Bit-Registrierung auf 64-Bit-Windows-Systemen. Dieses Problem tritt häufig auf, wenn über einen 32-Bit-Komponententest, der auf einem 64-Bit-Build-Server ausgeführt wird, auf Systeminformationen zugegriffen wird, die sich in der 64-Bit-Registrierung befinden, z. B. den Pfad zu einer SQL Express-Instanz.

Lösung:

Zugriff auf die 64-Bit-Registrierung:

Die RegistryView.Registry64-Eigenschaft bietet die Lösung für den Zugriff auf die 64-Bit-Registrierung von einer 32-Bit-Anwendung aus. Der folgende Code demonstriert dies:

<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>
Nach dem Login kopieren

Zugriff auf die 32-Bit-Registrierung:

Umgekehrt verwenden Sie RegistryView.Registry32:

, um auf die 32-Bit-Registrierung zuzugreifen
<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>
Nach dem Login kopieren

Wichtige Überlegungen:

  • Während die 32-Bit-Registrierung über den „Wow6432Node“ innerhalb der 64-Bit-Registrierung zugänglich ist, ist die Verwendung von RegistryView.Registry32 der empfohlene und direktere Ansatz.
  • Ein bekannter Fehler in Windows 7 (64-Bit) kann dazu führen, dass der RegisteredOrganization-Wert fälschlicherweise „Microsoft“ zurückgibt, wenn über 32-Bit-Code darauf zugegriffen wird. Der 64-Bit-Code gibt die richtige Organisation zurück.
  • Die Funktion GetAllRegValueNames() ermöglicht den Abruf aller Schlüsselnamen und -werte, unabhängig von der Registrierungsansicht (32-Bit oder 64-Bit).
  • Verwenden Sie den Nullkoaleszenzoperator (??), um potenzielle Nullwerte ordnungsgemäß zu verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann eine 32-Bit-Anwendung auf die 64-Bit-Registrierung in Windows zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage