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

Bagaimanakah Aplikasi 32-bit Boleh Mengakses Pendaftaran 64-bit dalam Windows?

Mary-Kate Olsen
Lepaskan: 2025-01-16 19:05:10
asal
435 orang telah melayarinya

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

Mengakses Pendaftaran 64-bit daripada Aplikasi Windows 32-bit

Cabaran:

Aplikasi 32-bit menghadapi kesukaran untuk mengakses pendaftaran 64-bit pada sistem Windows 64-bit. Isu ini sering timbul apabila mengakses maklumat sistem yang berada dalam pendaftaran 64-bit, seperti laluan ke contoh SQL Express, daripada ujian unit 32-bit yang dijalankan pada pelayan binaan 64-bit.

Penyelesaian:

Mengakses Pendaftaran 64-bit:

Properti RegistryView.Registry64 menyediakan penyelesaian untuk mengakses pendaftaran 64-bit daripada aplikasi 32-bit. Kod berikut menunjukkan ini:

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

Mengakses Pendaftaran 32-bit:

Sebaliknya, untuk mengakses pendaftaran 32-bit, gunakan RegistryView.Registry32:

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

Pertimbangan Penting:

  • Walaupun pendaftaran 32-bit boleh diakses melalui "Wow6432Node" dalam pendaftaran 64-bit, menggunakan RegistryView.Registry32 ialah pendekatan yang disyorkan dan lebih langsung.
  • Pepijat yang diketahui dalam Windows 7 (64-bit) boleh menyebabkan nilai RegisteredOrganization tersalah mengembalikan "Microsoft" apabila diakses daripada kod 32-bit. Kod 64-bit akan mengembalikan organisasi yang betul.
  • Fungsi GetAllRegValueNames() membenarkan pengambilan semula semua nama dan nilai utama, tanpa mengira paparan pendaftaran (32-bit atau 64-bit).
  • Gunakan pengendali penggabungan nol (??) untuk mengendalikan potensi nilai nol dengan anggun.

Atas ialah kandungan terperinci Bagaimanakah Aplikasi 32-bit Boleh Mengakses Pendaftaran 64-bit dalam Windows?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan