다음을 통해 공유


애플리케이션 하이브에서 레지스트리 작업 필터링

사용자 모드 애플리케이션은 레지스트리 애플리케이션 하이브를 사용하여 앱별 상태 데이터를 저장합니다.

레지스트리 필터 드라이버는 애플리케이션 하이브에 대한 레지스트리 작업에 대한 RegistryCallback 루틴에 대한 호출을 받습니다.

이러한 호출은 애플리케이션 하이브에 대한 레지스트리 작업과 다른 유형의 레지스트리 하이브에 대한 작업을 구분하지 않습니다.

애플리케이션 하이브를 로드하기 위해 앱은 RegLoadAppKey호출합니다.

애플리케이션 하이브는 \\REGISTRY\\A 또는 \\REGISTRY\\MACHINE대신 \\REGISTRY\\USER 아래에 로드됩니다.

\\REGISTRY\\A를 이동할 수 있는 방법은 없습니다. \REGISTRY\A에서 키를 열려는 시도가 실패하고 오류 상태가 STATUS_ACCESS_DENIED.

애플리케이션 하이브의 키에 액세스하기 위해 앱은 RegLoadAppKey호출할 때 수신하는 핸들을 사용합니다.

운영 체제는 하이브에 연결된 모든 핸들이 닫힌 후, 애플리케이션 하이브를 자동으로 언로드합니다.

각 키가 자체 보안 설명자로 보호되는 다른 유형의 레지스트리 하이브와 달리 애플리케이션 하이브의 보안은 hive 파일의 보안 설명자를 기반으로 합니다.

즉, 다음을 의미합니다.

  • 애플리케이션 하이브의 개별 키에 대한 보안 설명자를 설정하려고 시도하면 오류 상태 STATUS_ACCESS_DENIED실패합니다.

  • 하이브를 로딩하는 데 성공한 엔터티는 전체 하이브를 수정할 수 있습니다.

create-key 및 open-key 작업을 처리하는 레지스트리 필터 드라이버(RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKeyRegNtPreCreateKeyEx 알림 값)는 절대 경로(\\REGISTRY\\A\\시작)를 사용하여 애플리케이션 하이브를 열지 않도록 주의해야 합니다. 레지스트리 관리자만 이 작업을 수행할 수 있습니다.

레지스트리 필터 드라이버가 이러한 방식으로 애플리케이션 하이브를 열려고 하면(예: ZwOpenKey 루틴을 호출하여) 오류 상태 STATUS_ACCESS_DENIED작업이 실패합니다.

절대 경로 이름 문자열은 REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION또는 REG_OPEN_KEY_INFORMATION_V1 구조체의 CompleteName 멤버에 나타납니다.