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

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

Barbara Streisand
Freigeben: 2025-01-16 19:12:13
Original
662 Leute haben es durchsucht

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

64-Bit-Registrierung aus 32-Bit-Anwendung lesen

Wenn eine 32-Bit-Anwendung auf einem 64-Bit-Windows-System ausgeführt wird, kann sie nur auf den Registrierungsschlüssel unter HKEY_LOCAL_MACHINESoftwareWow6432Node zugreifen. In einigen Fällen ist jedoch Zugriff auf die 64-Bit-Registrierung erforderlich.

Lösung:

Verwendung von .NET Framework 4.x und höher:

.NET Framework 4.x und höher bietet die RegistryView-Enumeration, die den direkten Zugriff auf 64-Bit- und 32-Bit-Registrierungsschlüssel ermöglicht. So geht's:

Zugriff auf die 64-Bit-Registrierung:

<code class="language-csharp">using Microsoft.Win32;

RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
// 对64位注册表执行操作</code>
Nach dem Login kopieren

Zugriff auf die 32-Bit-Registrierung:

<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
// 对32位注册表执行操作</code>
Nach dem Login kopieren

Alternative:

In Situationen, in denen Sie sowohl auf 64-Bit- als auch auf 32-Bit-Registrierungsschlüssel zugreifen müssen, können Sie die folgende Methode verwenden:

<code class="language-csharp">// 获取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());</code>
Nach dem Login kopieren

Hinweis:

  • Das Lesen der 64-Bit-Registrierung ist dank des WOW64-Subsystems von Windows möglich (das 32-Bit-Vorgänge auf 64-Bit-Systemen emuliert).
  • In Windows 7 gibt es einen Fehler, bei dem die 32-Bit-Codeversion unabhängig vom tatsächlichen Wert immer „Microsoft“ für RegisteredOrganization zurückgibt.
  • In 32-Bit-Versionen von Windows ist der WOW6432Node-Unterbaum nicht vorhanden.

Das obige ist der detaillierte Inhalt vonWie kann eine 32-Bit-Anwendung auf die 64-Bit-Windows-Registrierung 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