SelfReg 테이블

SelfReg 테이블에는 자체 등록해야 하는 모듈에 대한 정보가 포함되어 있습니다. 설치 관리자는 모듈을 설치하는 동안 DllRegisterServer 함수를 호출하고, 모듈을 제거하는 동안 DllUnregisterServer를 호출합니다. 설치 관리자는 EXE 파일을 자체 등록하지 않습니다.

SelfReg 테이블에는 다음과 같은 열이 있습니다.

Column 형식 Nullable
File_ 식별자 Y N
비용 정수 N Y

 

File_

등록해야 하는 모듈을 나타내는 File 테이블의 첫 번째 열에 있는 외부 키입니다.

Cost

모듈을 등록하는 데 드는 비용(바이트)입니다. 음수가 아닌 숫자여야 합니다.

설명

설치 패키지 작성자는 자체 등록을 사용하지 않는 것이 좋습니다. 대신 이 목적을 위해 설치 관리자가 제공하는 하나 이상의 테이블을 작성하여 모듈을 등록해야 합니다. 자세한 내용은 레지스트리 테이블 그룹을 참조하세요. 자체 등록 루틴은 중요한 구성 정보를 숨기는 경향이 있기 때문에 자체 등록을 하면 중앙 설치 관리자 서비스를 사용할 때의 많은 이점이 사라집니다. 자체 등록을 피하는 이유는 다음과 같습니다.

  • 자체 등록된 키가 다른 기능이나 애플리케이션에서 사용되는지 알 수 없기 때문에 자체 등록된 모듈이 있는 설치를 DllUnregisterServer로 안전하게 롤백할 수 없습니다.
  • 자동 등록 루틴으로 클래스 또는 확장 서버 등록을 수행하는 경우 보급 알림에서 사용할 수 있는 기능이 줄어듭니다.
  • 설치 관리자는 사용자 단위 또는 컴퓨터 단위 설치 모두에 대해 레지스트리 테이블의 HKCR 키를 자동으로 처리합니다. DllRegisterServer 루틴은 현재 사용자 단위 HKCR 키의 개념을 지원하지 않습니다.
  • 여러 사용자가 동일한 컴퓨터에서 자체 등록 애플리케이션을 사용하는 경우 각 사용자는 애플리케이션을 처음 실행할 때 설치해야 합니다. 그렇지 않으면 설치 관리자가 적절한 HKCU 레지스트리 키가 있는지 쉽게 확인할 수 없습니다.
  • 구성 요소가 원본에서 실행하도록 지정되고 SelfReg 테이블에 나열된 경우 DllRegisterServer는 형식 라이브러리 등의 네트워크 리소스에 대한 액세스가 거부될 수 있습니다. 이로 인해 관리 설치 중에 구성 요소 설치가 실패할 수 있습니다.
  • DllRegisterServer에 필요한 새 코드는 일반적으로 각 DLL마다 다르기 때문에 자체 등록 DLL은 코딩 오류에 더 취약합니다. 대신 데이터베이스의 레지스트리 테이블을 사용하여 설치 관리자가 제공하는 기존 코드를 활용합니다.
  • 자체 등록된 DLL은 존재하지 않거나 잘못된 버전인 보조 DLL에 연결될 수 있습니다. 반면, 설치 관리자는 시스템의 현재 상태에 종속되지 않은 레지스트리 테이블을 사용하여 DLL을 등록할 수 있습니다.

참고

SelfRegModulesSelfUnRegModules 작업을 사용하여 설치 관리자가 자체 등록 DLL을 등록하거나 등록 취소하는 순서는 지정할 수 없습니다. 자체 등록 순서 지정을 참조하세요.

 

유효성 검사

ICE03
ICE06
ICE32