Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengakses Kekunci Pendaftaran 64-bit daripada Aplikasi .NET 32-bit?
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!