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
309 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:

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

Mengakses Pendaftaran 32-bit:

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

<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>
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!

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