WOW64(Windows on Windows 64비트) 덕분에 32비트 애플리케이션은 64비트 레지스트리에 액세스할 수 있습니다. 이 하위 시스템은 32비트 환경 내에서 64비트 액세스를 용이하게 합니다.
64비트 레지스트리에 액세스하려면 RegistryView.Registry64
을 사용하세요.
<code class="language-csharp">using Microsoft.Win32; string value64 = string.Empty; RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); if (localKey != null) { value64 = localKey.GetValue("RegisteredOrganization").ToString(); localKey.Close(); } Console.WriteLine($"RegisteredOrganization [64-bit]: {value64}");</code>
32비트 레지스트리에 액세스하려면 RegistryView.Registry32
을 사용하세요.
<code class="language-csharp">string value32 = string.Empty; RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); localKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); if (localKey32 != null) { value32 = localKey32.GetValue("RegisteredOrganization").ToString(); localKey32.Close(); } Console.WriteLine($"RegisteredOrganization [32-bit]: {value32}");</code>
HKEY_LOCAL_MACHINESoftwareWow6432Node
에 32비트 앱에서 사용하는 값이 들어 있습니다.HKEY_LOCAL_MACHINESoftware
예상대로 액세스합니다.HKEY_LOCAL_MACHINESoftwareWow6432Node
은 이전 Windows 버전과 32비트 Windows 7에는 없습니다.64비트 및 32비트 레지스트리 모두에서 값을 검색하려면(SQL 인스턴스 이름 검색과 같은 시나리오에 유용함) 통합 쿼리를 사용하는 것이 좋습니다.
<code class="language-csharp">public static IEnumerable<string> GetAllRegValueNames(string regPath, RegistryHive hive = RegistryHive.LocalMachine) { var reg64 = GetRegValueNames(RegistryView.Registry64, regPath, hive); var reg32 = GetRegValueNames(RegistryView.Registry32, regPath, hive); var result = (reg64 != null && reg32 != null) ? reg64.Union(reg32) : (reg64 ?? reg32); return (result ?? new List<string>().AsEnumerable()).OrderBy(x => x); }</code>
애플리케이션 아키텍처에 관계없이 레지스트리 값에 대한 통합 보기를 제공합니다.
위 내용은 32비트 애플리케이션에서 64비트 및 32비트 레지스트리 키에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!