Windows 레지스트리 리플렉션 제거

플랫폼

클라이언트 - Windows 7
서버 - Windows Server 2008 R2

기능 영향

심각도 - 낮음
빈도 - 낮음

Description

레지스트리 리플렉션 프로세스는 두 레지스트리 뷰 간에 레지스트리 키와 값을 복사하여 동기화된 상태로 유지합니다. Windows 이전 64비트 설치에서 프로세스는 32비트와 64비트 보기 간에 리디렉션된 레지스트리 키의 하위 집합을 반영했습니다. 그러나 이 구현으로 인해 레지스트리 상태가 일부 불일치했습니다. 레지스트리 리플렉션에 대한 자세한 내용은 아래의 다른 리소스에 대한 링크 섹션에서 해당 MSDN 문서를 참조하세요.

Windows 7부터 레지스트리 리플렉션을 완전히 제거하고 반영되는 데 사용된 키를 병합했습니다.

  • HKEY _ LOCAL MACHINE 소프트웨어 _ \ \ 클래스
  • HKEY _ LOCAL _ MACHINE \ Software \ Microsoft \ COM3
  • HKEY _ LOCAL _ MACHINE \ Software \ Microsoft \ EventSystem
  • HKEY _ LOCAL _ MACHINE \ Software \ Microsoft \ Ole
  • HKEY _ LOCAL _ MACHINE \ Software \ Microsoft \ Rpc
  • HKEY _ USERS \ * \ 소프트웨어 \ 클래스
  • HKEY _ 사용자 \ * _ 클래스

실제로 이러한 키에 대한 변경 내용은 32비트 및 64비트 애플리케이션 모두에서 즉시 사용할 수 있기 때문에 동일한 리플렉션 동작을 제공합니다.

조건부로 반영된 키는 분할된 상태로 유지됩니다.

  • HKEY _ LOCAL MACHINE 소프트웨어 클래스 _ \ \ \ CLSID
  • HKEY _ LOCAL MACHINE 소프트웨어 클래스 _ \ \ \ 인터페이스
  • HKEY _ USERS 소프트웨어 클래스 \ * \ \ \ CLSID
  • HKEY _ USERS 소프트웨어 클래스 \ * \ \ \ 인터페이스
  • HKEY _ USERS \ * _ 클래스 \ CLSID
  • HKEY _ USERS \ * _ 클래스 \ 인터페이스

32비트와 64비트 애플리케이션 간에 공유해서는 안 되는 데이터를 유지하는 데 사용됩니다.

형상

위의 목록에서 CLSID 및 인터페이스 키는 여전히 리디렉션되는 동안 더 이상 반영되지 않습니다. 대부분의 경우에서 원하는 동작이지만 애플리케이션이 Vista에서 반영된 동작에 종속될 수 있습니다.

애플리케이션이 리플렉션을 제어할 수 있도록 하는 함수(RegDisableReflectionKey 및 RegEnableReflectionKey)는 Windows 7에서 작동하지 않습니다.

영향 완화

COM은 레지스트리 리플렉션의 주요 소비자입니다. COM 및 기타 소비자는 이 변경에 맞게 업데이트되었습니다. 이 변경 내용은 표준 COM API를 사용하는 애플리케이션에 영향을 주지 않습니다.

해결 방법

레지스트리 리플렉션을 사용하여 32비트 및 64비트 보기를 동기화하는 경우 다음 옵션 중 하나를 적용합니다.

  • 설치하는 동안 두 보기에서 키를 명시적으로 만듭니다.

  • 리플렉스된 키의 범위 밖으로 키 이동

  • 리플렉트된 키를 쿼리할 때 레지스트리의 두 뷰를 모두 확인합니다.

    참고: KEY _ WOW64 _ 32KEY 및 KEY _ WOW64 _ 64KEY 플래그를 결합할 수 없습니다.

RegDisableReflectionKey 함수를 사용하여 레지스트리 리플렉션을 사용하지 않도록 설정하는 경우 다음 옵션 중 하나를 적용합니다.

  • 설치하는 동안 두 보기에서 키를 명시적으로 만듭니다.
  • 리플렉스된 키의 범위 밖으로 키 이동
  • 플랫폼별 하위 키(예: x86, amd64 및 ia64)를 사용하여 비트 수별 데이터를 구분합니다.

참고

일부 언어 및 국가/지역에서는 이러한 리소스를 사용할 수 없습니다.