
따라서 우리 고객 중 한 명이 레거시 Windows 버전에서 우리 소프트웨어를 사용합니다. 그 이유는 산업용 환경에 있고 Windows XP와 그들에게 작동하는 유일한 오래된 서버가 있기 때문입니다. 그 중 일부는 64비트입니다.
레지스트리 읽기 어떤 경우에는 32비트 앱이 실제로 64비트 창에서 아래 항목을 직접 읽을 수 있다는 점을 확인했습니다. 이는 이론적으로 불가능합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
문자열 값 "Version"에서 버전 번호를 가져옵니다.
그러나 동일한 PC에서 키를 생성하고
HKEY_LOCAL_MACHINE\SOFTWARE\Our Software
"Last Serviced"와 같은 문자열 값을 추가하면 읽을 수 없습니다.
권한과 소유권은 IE 항목에 추가하려고 시도할 때 소용이 없을 때와 동일합니다.
물론 작동 \\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Our Software\Last Service Date
하지만, 다른 항목이 레지스트리의 "일반" 부분에 들어갈 수 있고 읽을 수 있다면 왜 일부는 그렇지 않을까요? 서비스 날짜를 읽기 위해 애플리케이션에서 데이터를 가져올 때 더 쉽고 깔끔할 수 있으며, 부주의로 인해 표준 HKEY_LOCAL_MACHINE에 잘못 추가된 경우 중요합니다.
뭔가 빠졌나요?
답변1
당신은 레지스트리 리디렉터:
레지스트리 리디렉터는 WOW64에서 레지스트리의 특정 부분에 대한 별도의 논리적 보기를 제공하여 32비트 및 64비트 응용 프로그램을 격리합니다. 레지스트리 리디렉터는 해당 논리적 레지스트리 보기에 대한 32비트 및 64비트 레지스트리 호출을 가로채 해당 물리적 레지스트리 위치에 매핑합니다. 리디렉션 프로세스는 애플리케이션에 투명합니다. 따라서 32비트 응용 프로그램은 데이터가 64비트 Windows의 다른 위치에 저장되어 있더라도 마치 32비트 Windows에서 실행 중인 것처럼 레지스트리 데이터에 액세스할 수 있습니다.
HKEY_LOCAL_MACHINE\Software
항상 리디렉션되는 것과 같은 일부 응용 프로그램 레지스트리 키 . 대부분의 레지스트리 하이브는 리디렉션되지 않습니다.
32/64비트 프로그램은 기사에 설명된 대로 요청에 특수 플래그를 포함하여 64/32비트 버전의 레지스트리에 계속 액세스하도록 강제할 수 있습니다. 대체 레지스트리 보기에 액세스. 또한보십시오 WOW64의 레지스트리 리디렉션 예.