32비트 Windows 애플리케이션에서 64비트 레지스트리에 액세스
도전:
32비트 애플리케이션은 64비트 Windows 시스템에서 64비트 레지스트리에 액세스하는 데 어려움을 겪습니다. 이 문제는 64비트 빌드 서버에서 실행되는 32비트 단위 테스트에서 SQL Express 인스턴스 경로와 같은 64비트 레지스트리에 있는 시스템 정보에 액세스할 때 자주 발생합니다.
해결책:
64비트 레지스트리 액세스:
RegistryView.Registry64
속성은 32비트 애플리케이션에서 64비트 레지스트리에 액세스하기 위한 솔루션을 제공합니다. 다음 코드는 이를 보여줍니다.
<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); RegistryKey sqlServerKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); string sqlExpressKeyName = (string)sqlServerKey.GetValue("SQLEXPRESS");</code>
32비트 레지스트리 액세스:
반대로 32비트 레지스트리에 액세스하려면 RegistryView.Registry32
:
<code class="language-csharp">RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); string sqlExpressKeyName = (string)sqlServerKey32.GetValue("SQLEXPRESS");</code>
중요 고려 사항:
RegistryView.Registry32
을 사용하는 것이 권장되며 보다 직접적인 접근 방식입니다.RegisteredOrganization
값이 "Microsoft"를 잘못 반환할 수 있습니다. 64비트 코드는 올바른 조직을 반환합니다.GetAllRegValueNames()
기능을 사용하면 레지스트리 보기(32비트 또는 64비트)에 관계없이 모든 키 이름과 값을 검색할 수 있습니다.??
)를 활용하여 잠재적인 null 값을 적절하게 처리합니다.위 내용은 32비트 응용 프로그램이 Windows에서 64비트 레지스트리에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!