
Tidak Dapat Membuka Kunci Pendaftaran dalam OpenSubKey()
Apabila cuba mendapatkan semula nama paparan untuk subkunci dalam kunci pendaftaran HKEY_LOCAL_MACHINESOFTWAREMicrosoft kod:
RegistryKey newKey;
string val;
string KeyPath64Bit = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
RegistryKey mainKey = Registry.LocalMachine.OpenSubKey(KeyPath64Bit);
string[] RegKeys64Bits = Registry.LocalMachine.OpenSubKey(KeyPath64Bit).GetSubKeyNames();
foreach (string s in RegKeys64Bits)
{
newKey = mainKey.OpenSubKey(s);
val = newKey.GetValue("DisplayName", -1, RegistryValueOptions.None).ToString();
if (val != "-1")
file64.WriteLine(val);
}Satu subkunci khusus, {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}, masih sukar difahami. Sebaliknya, GetSubKeyNames() mengembalikan {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}.KB2151757, subkunci yang tidak mempunyai nama paparan.
Punca:
Oleh: Sistem pengendalian 64-bit, a Aplikasi 32-bit secara lalai mengakses kunci pendaftaran HKLMSoftwareWow6432Node. Untuk mendapatkan semula versi 64-bit kunci yang mengandungi subkunci yang diingini, anda perlu menentukan RegistryView.Registry64.Penyelesaian:
Dalam .NET 4.0 dan ke atas, anda boleh membuka kunci pendaftaran 64-bit menggunakan RegistryView property:using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
// key now points to the 64-bit key
}Atas ialah kandungan terperinci Mengapa Aplikasi 32-bit Saya Tidak Boleh Mengakses Kunci Pendaftaran 64-bit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!