Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Aplikasi 32-bit Boleh Mengakses Windows Registry 64-bit?

Bagaimanakah Aplikasi 32-bit Boleh Mengakses Windows Registry 64-bit?

Barbara Streisand
Lepaskan: 2025-01-16 19:12:13
asal
661 orang telah melayarinya

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

Baca pendaftaran 64-bit daripada aplikasi 32-bit

Apabila aplikasi 32-bit berjalan pada sistem Windows 64-bit, ia hanya boleh mengakses kekunci pendaftaran di bawah HKEY_LOCAL_MACHINESoftwareWow6432Node. Walau bagaimanapun, dalam beberapa kes, akses kepada pendaftaran 64-bit diperlukan.

Penyelesaian:

Menggunakan .NET Framework 4.x dan ke atas:

.NET Framework 4.x dan lebih baru menyediakan penghitungan RegistryView, membenarkan akses terus kepada kunci pendaftaran 64-bit dan 32-bit. Begini cara melakukannya:

Akses pendaftaran 64-bit:

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

RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
// 对64位注册表执行操作</code>
Salin selepas log masuk

Akses pendaftaran 32-bit:

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

Alternatif:

Untuk situasi di mana anda perlu mengakses kekunci pendaftaran 64-bit dan 32-bit, anda boleh menggunakan kaedah berikut:

<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>
Salin selepas log masuk

Nota:

  • Membaca pendaftaran 64-bit boleh dilakukan terima kasih kepada subsistem WOW64 Windows (yang meniru operasi 32-bit pada sistem 64-bit).
  • Dalam Windows 7, terdapat pepijat di mana versi kod 32-bit sentiasa mengembalikan "Microsoft" untuk RegisteredOrganization tanpa mengira nilai sebenar.
  • Dalam versi 32-bit Windows, subpokok WOW6432Node tidak wujud.

Atas ialah kandungan terperinci Bagaimanakah Aplikasi 32-bit Boleh Mengakses Windows Registry 64-bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan