Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengakses Kekunci Pendaftaran 64-bit daripada Aplikasi .NET 32-bit?

Bagaimana untuk Mengakses Kekunci Pendaftaran 64-bit daripada Aplikasi .NET 32-bit?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-16 19:16:10791semak imbas

How to Access 64-bit Registry Keys from a 32-bit .NET Application?

Mengakses Entri Pendaftaran 64-bit daripada Aplikasi .NET 32-bit

Mengakses pendaftaran 64-bit daripada aplikasi 32-bit yang dijalankan pada sistem Windows 64-bit memerlukan pendekatan khusus. Nasib baik, .NET Framework 4.x dan versi yang lebih baru menawarkan sokongan terbina dalam untuk ini.

Memanfaatkan RegistryView untuk Akses Pendaftaran 64-bit

Penghitungan RegistryView adalah kunci untuk membezakan antara akses pendaftaran 32-bit dan 64-bit. Begini cara menggunakannya:

<code class="language-csharp">// Access the 64-bit registry
using Microsoft.Win32;

RegistryKey localKey64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey sqlServerKey64 = localKey64.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");

// Access the 32-bit registry
RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");</code>

Mendapatkan Nilai Pendaftaran Tertentu

Untuk mendapatkan nilai tertentu, seperti "SQLEXPRESS" di bawah kekunci "Instance NamesSQL", gunakan:

<code class="language-csharp">string sqlExpressKeyName = (string)sqlServerKey64.GetValue("SQLEXPRESS");</code>

Pendapatan Kunci Komprehensif: Menggabungkan Keputusan 32-bit dan 64-bit

Untuk situasi yang memerlukan data dari kedua-dua lokasi pendaftaran 32-bit dan 64-bit, pertanyaan gabungan adalah berfaedah:

<code class="language-csharp">using System.Linq;

IEnumerable<string> GetAllRegValueNames(string regPath)
{
    var reg64 = GetRegValueNames(RegistryView.Registry64, regPath);
    var reg32 = GetRegValueNames(RegistryView.Registry32, regPath);
    var result = (reg64 != null && reg32 != null) ? reg64.Union(reg32) : (reg64 ?? reg32);
    return (result ?? new List<string>().AsEnumerable()).OrderBy(x => x);
}</code>

Di mana GetRegValueNames ialah fungsi pembantu (tidak ditunjukkan, tetapi mudah dilaksanakan) yang mendapatkan semula nama nilai di bawah kunci yang diberikan. regPath menentukan laluan pendaftaran.

Contoh penggunaan:

<code class="language-csharp">
var sqlRegPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL";
foreach (var keyName in GetAllRegValueNames(sqlRegPath))
{
    Console.WriteLine(keyName);
}
```  This iterates through all found keys, regardless of whether they reside in the 32-bit or 64-bit registry hive.</code>

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

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