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
Lepaskan: 2025-01-16 19:16:10
asal
790 orang telah melayarinya

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

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

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

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

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!

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