다음을 통해 공유


Registry-Key 객체에 대한 핸들 열기

레지스트리 키 개체에 대한 핸들을 열려면 다음 2단계 프로세스를 수행합니다.

  1. OBJECT_ATTRIBUTES 구조를 만들고 InitializeObjectAttributes호출하여 초기화합니다. InitializeObjectAttributes ObjectName 매개 변수로 조작할 키의 이름을 지정합니다.

    NULLRootDirectory 매개 변수로 InitializeObjectAttributes에 전달하는 경우, ObjectName\Registry로 시작하는 레지스트리 키의 전체 경로여야 합니다. 그렇지 않으면 RootDirectory 키에 대한 열린 핸들이어야 하며 ObjectName 해당 키를 기준으로 하는 경로입니다.

  2. ZwCreateKey 호출하거나 ZwOpenKey키 개체에 대한 핸들을 열고 OBJECT_ATTRIBUTES 구조를 전달합니다. 키가 아직 없는 경우 ZwCreateKey 키를 만드는 반면 ZwOpenKey STATUS_OBJECT_NAME_NOT_FOUND 반환합니다.

DesiredAccess 매개 변수를 요청하려는 액세스 권한이 포함된 ZwCreateKey 또는 ZwOpenKey 함수에 전달합니다. 드라이버가 수행할 작업을 허용하는 액세스 권한을 지정해야 합니다. 다음 표에서는 수행할 수 있는 작업과 요청할 해당 액세스 권한을 나열합니다.

수술 필요한 액세스 권한

레지스트리 키 값을 가져옵니다.

KEY_QUERY_VALUE 또는 KEY_READ

레지스트리 키 값을 설정합니다.

KEY_SET_VALUE 또는 KEY_WRITE

키의 모든 하위 키를 순회합니다.

KEY_ENUMERATE_SUB_KEYS 또는 KEY_READ

하위 키를 만듭니다.

KEY_CREATE_SUB_KEY 또는 KEY_WRITE

키를 삭제합니다.

삭제

DesiredAccess 매개 변수에 사용할 수 있는 값에 대한 자세한 내용은 ZwCreateKey참조하세요.

IoOpenDeviceRegistryKeyIoOpenDeviceInterfaceRegistryKey 호출하여 각각 디바이스별 및 디바이스 인터페이스별 레지스트리 키에 대한 핸들을 열 수도 있습니다. 자세한 내용은 플러그 앤 플레이 레지스트리 루틴참조하세요.

참고ZwCreateKey, ZwOpenKey, IoOpenDeviceRegistryKeyIoOpenDeviceInterfaceRegistryKey호출의 경우 일반 액세스 권한, GENERIC_READ 및 GENERIC_WRITE 각각 키별 액세스 권한( KEY_READ 및 KEY_WRITE)과 동일하며 이러한 키별 액세스 권한 대신 사용할 수 있습니다.