일부 HKLM 항목을 64비트 PC에서 읽을 수 있지만 일부는 VB6에서 읽을 수 없는 이유는 무엇입니까?

일부 HKLM 항목을 64비트 PC에서 읽을 수 있지만 일부는 VB6에서 읽을 수 없는 이유는 무엇입니까?

따라서 우리 고객 중 한 명이 레거시 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의 레지스트리 리디렉션 예.

관련 정보