SelfReg 테이블
SelfReg 테이블에는 자체 등록해야 하는 모듈에 대한 정보가 포함되어 있습니다. 설치 관리자는 모듈을 설치하는 동안 DllRegisterServer 함수를 호출합니다. 모듈을 제거하는 동안 DllUnregisterServer 호출합니다. 설치 관리자가 EXE 파일을 자체 등록하지 않습니다.
SelfReg 테이블에는 다음 열이 있습니다.
열 | 형 | 열쇠 | Nullable |
---|---|---|---|
파일_ | 식별자 | Y | N |
비용 | 정수 | N | Y |
열
-
File_
-
비용
-
모듈을 바이트 단위로 등록하는 비용입니다. 음수가 아닌 숫자여야 합니다.
발언
설치 패키지 작성자는 자체 등록을 사용하지 않는 것이 좋습니다. 대신 이 목적을 위해 설치 관리자가 제공하는 하나 이상의 테이블을 작성하여 모듈을 등록해야 합니다. 자세한 내용은 레지스트리 테이블 그룹참조하세요. 자체 등록 루틴은 중요한 구성 정보를 숨기는 경향이 있기 때문에 중앙 설치 관리자 서비스를 사용하는 경우의 많은 이점은 자체 등록으로 손실됩니다. 자체 등록을 방지하는 이유는 다음과 같습니다.
- 자체 등록 모듈이 있는 설치 롤백은 자체 등록 키가 다른 기능 또는 애플리케이션에서 사용되는지 알 수 없으므로 DllUnregisterServer 사용하여 안전하게 수행할 수 없습니다.
- 자동 등록 루틴 내에서 클래스 또는 확장 서버 등록을 수행하는 경우 보급 알림을 사용할 수 있는 기능이 줄어듭니다.
- 설치 관리자는 사용자별 또는 컴퓨터별 설치 모두에 대해 레지스트리 테이블의 HKCR 키를 자동으로 처리합니다. DllRegisterServer 루틴은 현재 사용자별 HKCR 키의 개념을 지원하지 않습니다.
- 여러 사용자가 동일한 컴퓨터에서 자체 등록 애플리케이션을 사용하는 경우 각 사용자는 애플리케이션을 처음 실행할 때 설치해야 합니다. 그렇지 않으면 설치 관리자가 적절한 HKCU 레지스트리 키가 있는지 쉽게 확인할 수 없습니다.
- 구성 요소가 모두 원본에서 실행으로 지정되고 SelfReg 테이블에 나열된 경우 DllRegisterServer 형식 라이브러리와 같은 네트워크 리소스에 대한 액세스를 거부할 수 있습니다. 이로 인해 관리 설치 중에 구성 요소 설치가 실패할 수 있습니다.
- 자체 등록 DLL은 DllRegisterServer 필요한 새 코드가 각 DLL마다 일반적으로 다르기 때문에 코딩 오류에 더 취약합니다. 대신 데이터베이스의 레지스트리 테이블을 사용하여 설치 관리자가 제공하는 기존 코드를 활용합니다.
- 자체 등록 DLL은 때때로 존재하지 않거나 잘못된 버전인 보조 DLL에 연결할 수 있습니다. 반면, 설치 관리자는 시스템의 현재 상태에 대한 종속성 없이 레지스트리 테이블을 사용하여 DLL을 등록할 수 있습니다.
메모
SelfRegModules 및 SelfUnRegModules 작업을 사용하여 설치 관리자가 자체 등록 DLL을 등록하거나 등록 취소하는 순서를 지정할 수 없습니다. 자체 등록 순서 지정 참조하세요.
유효성 검사