Abrindo um identificador para um objeto Registry-Key

Para abrir um identificador para um objeto de chave do Registro, execute o seguinte processo em duas etapas:

  1. Crie uma estrutura OBJECT_ATTRIBUTES e inicialize-a chamando InitializeObjectAttributes. Especifique o nome da chave a ser manipulada como o parâmetro ObjectName para InitializeObjectAttributes.

    Se você passar NULL como o parâmetro RootDirectory para InitializeObjectAttributes, ObjectName deverá ser o caminho completo da chave do Registro, começando com \Registry. Caso contrário, RootDirectory deve ser um identificador aberto para uma chave e ObjectName é o caminho relativo a essa chave.

  2. Abra um identificador para o objeto de chave chamando ZwCreateKey ou ZwOpenKey e passe a estrutura OBJECT_ATTRIBUTES para ele. Se a chave ainda não existir, ZwCreateKey criará a chave, enquanto ZwOpenKey retornará STATUS_OBJECT_NAME_NOT_FOUND.

Você passa um parâmetro DesiredAccess para ZwCreateKey ou ZwOpenKey que contém os direitos de acesso que você está solicitando. Você deve especificar os direitos de acesso que permitem as operações que o driver executará. A tabela a seguir lista as operações que você pode executar e os direitos de acesso correspondentes a serem solicitados.

Operação Direito de acesso necessário

Obtenha um valor de chave de registro.

KEY_QUERY_VALUE ou KEY_READ

Defina um valor de chave de registro.

KEY_SET_VALUE ou KEY_WRITE

Passe por todas as subchaves de uma chave.

KEY_ENUMERATE_SUB_KEYS ou KEY_READ

Crie uma subchave.

KEY_CREATE_SUB_KEY ou KEY_WRITE

Excluir uma chave.

Delete (excluir)

Para obter mais informações sobre os valores disponíveis para o parâmetro DesiredAccess , consulte ZwCreateKey.

Você também pode chamar IoOpenDeviceRegistryKey e IoOpenDeviceInterfaceRegistryKey para abrir identificadores para as chaves do Registro específicas do dispositivo e da interface do dispositivo, respectivamente. Para obter mais informações, consulte Plug and Play Rotinas do Registro.

Nota Para chamadas para ZwCreateKey, ZwOpenKey, IoOpenDeviceRegistryKey e IoOpenDeviceInterfaceRegistryKey, os direitos de acesso genéricos, GENERIC_READ e GENERIC_WRITE, são equivalentes ao significado dos direitos de acesso específicos à chave, KEY_READ e KEY_WRITE, respectivamente, e podem ser usados como substitutos para esses direitos de acesso específicos à chave.