다음을 통해 공유


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

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

레지스트리 필터 드라이버는 애플리케이션 하이브에서 레지스트리 작업을 위해 RegistryCallback 루틴에 대한 호출을 받습니다. 이러한 호출은 애플리케이션 하이브에 대한 레지스트리 작업과 다른 유형의 레지스트리 하이브에 대한 작업을 구분하지 않습니다.

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

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

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

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

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

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

  • 애플리케이션 하이브의 개별 키에 보안 설명자를 설정하려고 시도하면 오류 상태 STATUS_ACCESS_DENIED 실패합니다.
  • 하이브를 로드하는 데 성공한 엔터티는 전체 하이브를 수정할 수 있습니다.

만들기 키 및 오픈 키 작업(RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKeyRegNtPreCreateKey 및 RegNtPreCreateKeyEx 알림 값으로 표시됨)을 처리하는 레지스트리 필터 드라이버는 절대 경로(1부터 시작)를 사용하여 애플리케이션 하이브를 \\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 멤버에 나타납니다.