다음을 통해 공유


Windows의 DLL/COM 리디렉션

DLL/COM 리디렉션은 Windows XP의 회사 관리자가 사용하는 애플리케이션 격리 전략입니다.

**Windows Server 2008, Windows Vista, Windows Server 2003 및 WINDOWS XP SP2 사용: ** 매니페스트 및 병렬 어셈블리 를 사용하는 격리된 애플리케이션을 업데이트하고 서비스를 더 쉽게 업데이트할 수 있으므로 DLL/COM 리디렉션 전략을 사용하지 않는 것이 좋습니다. 매니페스트가 있는 경우 .local 파일의 존재는 무시됩니다. 애플리케이션에 매니페스트가 없는 경우 .local 파일을 사용하는 DLL/COM 리디렉션 전략이 작동합니다.

DLL/COM 리디렉션은 애플리케이션을 구성 요소의 로컬 버전에 바인딩합니다. 로컬 구성 요소의 파일은 애플리케이션에 비공개인 위치에 있는 시스템 버전의 구성 요소와 별도로 유지할 수 있습니다. 시스템의 구성 요소 버전은 전역적으로 등록되며 해당 구성 요소에 바인딩하는 다른 모든 애플리케이션에서 사용할 수 있습니다. 구성 요소의 로컬 버전은 애플리케이션의 전용 사용을 위해 예약되어 있습니다. 필요한 경우 애플리케이션에서 사용하는 구성 요소 파일을 시스템의 구성 요소 파일과 동시에 메모리에 로드할 수 있습니다.

DLL/COM 리디렉션은 애플리케이션의 실행 파일과 동일한 디렉터리에 로컬 구성 요소 파일의 복사본과 함께 특수 파일을 설치하여 활성화됩니다. 특수 파일은 애플리케이션 실행 파일의 파일 이름을 따서 명명되고 .local이 추가된 빈 파일입니다. 예를 들어 Myapp이라는 애플리케이션에 대해 DLL/COM 리디렉션을 활성화하려면 구성 요소의 로컬 버전과 Myapp.exe.local이라는 빈 파일을 Myapp.exe 포함하는 폴더에 복사해야 합니다. 이렇게 하면 애플리케이션을 전역적으로 공유된 구성 요소 버전이 아닌 구성 요소의 로컬 버전에 바인딩합니다.

애플리케이션이 DLL 또는 .ocx 파일과 같은 구성 요소 파일을 로드하는 경우 Windows는 먼저 애플리케이션의 .local 및 실행 파일이 설치된 폴더에서 해당 파일을 검색합니다. 이 경우 애플리케이션은 애플리케이션 또는 레지스트리에 정의된 디렉터리 검색 경로에 관계없이 해당 구성 요소 파일을 사용합니다. 찾을 수 없는 경우 정의된 검색 경로의 구성 요소 파일이 사용됩니다.

설치 유틸리티는 DLL/COM 리디렉션을 사용하여 애플리케이션을 설치하려면 다음을 수행해야 합니다.

  • 빈 .local 파일을 애플리케이션의 실행 파일과 동일한 폴더에 복사해야 합니다.
  • 애플리케이션에서 사용하는 모든 구성 요소, DLL 및 .ocx 파일을 애플리케이션의 실행 파일과 동일한 폴더에 복사해야 합니다.
  • 격리된 COM 구성 요소는 메모리에 동시에 로드될 때 어셈블리의 다른 버전이 서로 충돌하지 않도록 Windows에 등록해야 합니다. 등록 프로세스에서는 구성 요소의 구현이 버전 간에 변경될 수 있지만 CLSID, ProgID, 형식 라이브러리 및 스레딩 모델과 같은 특정 COM 메타데이터는 변경할 수 없습니다.
  • Windows Installer를 사용하여 애플리케이션을 설치한 경우 LockPermissions 테이블을 사용하여 애플리케이션 디렉터리를 보호합니다. 일반적으로 시스템에 읽기, 쓰기 및 실행 액세스 권한이 부여됩니다. 다른 모든 프로세스는 실행 및 읽기 권한만 부여됩니다.