Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengakses Kekunci Pendaftaran 64-Bit dan 32-Bit daripada Aplikasi 32-Bit?

Bagaimana untuk Mengakses Kekunci Pendaftaran 64-Bit dan 32-Bit daripada Aplikasi 32-Bit?

Linda Hamilton
Lepaskan: 2025-01-16 19:07:10
asal
642 orang telah melayarinya

How to Access 64-Bit and 32-Bit Registry Keys from a 32-Bit Application?

Mengakses Pendaftaran 64-bit daripada Aplikasi 32-bit

Terima kasih kepada WOW64 (Windows pada Windows 64-bit), aplikasi 32-bit boleh mengakses registri 64-bit. Subsistem ini memudahkan akses 64-bit dalam persekitaran 32-bit.

Mengakses Kunci Pendaftaran 64-Bit

Gunakan RegistryView.Registry64 untuk mengakses pendaftaran 64-bit:

using Microsoft.Win32;

string value64 = string.Empty;
RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
if (localKey != null)
{
    value64 = localKey.GetValue("RegisteredOrganization").ToString();
    localKey.Close();
}
Console.WriteLine($"RegisteredOrganization [64-bit]: {value64}");
Salin selepas log masuk

Mengakses Kunci Pendaftaran 32-Bit

Gunakan RegistryView.Registry32 untuk mengakses pendaftaran 32-bit:

string value32 = string.Empty;
RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
localKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
if (localKey32 != null)
{
    value32 = localKey32.GetValue("RegisteredOrganization").ToString();
    localKey32.Close();
}
Console.WriteLine($"RegisteredOrganization [32-bit]: {value32}");
Salin selepas log masuk

Pertimbangan Penting: WOW64, Laluan Pendaftaran dan Pertanyaan Utama

  • Pada Windows 64-bit, HKEY_LOCAL_MACHINESoftwareWow6432Node memegang nilai yang digunakan oleh apl 32-bit.
  • Kedua-dua aplikasi 32-bit dan 64-bit mengakses HKEY_LOCAL_MACHINESoftware seperti yang dijangkakan disebabkan pengalihan WOW64.
  • HKEY_LOCAL_MACHINESoftwareWow6432Node tiada dalam versi Windows lama dan Windows 7 32-bit.

Untuk mendapatkan semula nilai daripada kedua-dua pendaftaran 64-bit dan 32-bit (berguna untuk senario seperti mendapatkan semula nama contoh SQL), pertanyaan kesatuan disyorkan:

public static IEnumerable<string> GetAllRegValueNames(string regPath, RegistryHive hive = RegistryHive.LocalMachine)
{
    var reg64 = GetRegValueNames(RegistryView.Registry64, regPath, hive);
    var reg32 = GetRegValueNames(RegistryView.Registry32, regPath, hive);
    var result = (reg64 != null && reg32 != null) ? reg64.Union(reg32) : (reg64 ?? reg32);
    return (result ?? new List<string>().AsEnumerable()).OrderBy(x => x);
}
Salin selepas log masuk

Ini memberikan pandangan yang disatukan bagi nilai pendaftaran, tanpa mengira seni bina aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Kekunci Pendaftaran 64-Bit dan 32-Bit daripada Aplikasi 32-Bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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