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

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

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

    InitializeObjectAttributesRootDirectory 매개 변수로 NULL을 전달하는 경우 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

키를 삭제합니다.

DELETE

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

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

참고ZwCreateKey, ZwOpenKey, IoOpenDeviceRegistryKeyIoOpenDeviceInterfaceRegistryKey에 대한 호출의 경우 제네릭 액세스 권한인 GENERIC_READ 및 GENERIC_WRITE 각각 키별 액세스 권한, KEY_READ 및 KEY_WRITE 의미하며 이러한 키별 액세스 권한 대신 사용할 수 있습니다.