Compartilhar via


Função RegOpenKeyExA (winreg.h)

Abre a chave do Registro especificada. Observe que os nomes de chave não diferenciam maiúsculas de minúsculas.

Para executar operações de registro transacionadas em uma chave, chame a função RegOpenKeyTransacted .

Sintaxe

LSTATUS RegOpenKeyExA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey,
  [in]           DWORD  ulOptions,
  [in]           REGSAM samDesired,
  [out]          PHKEY  phkResult
);

Parâmetros

[in] hKey

Um identificador para uma chave aberta do Registro. Esse identificador é retornado pela função RegCreateKeyEx ou RegOpenKeyEx ou pode ser uma das seguintes chaves predefinidas :

HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS

[in, optional] lpSubKey

O nome da subchave do Registro a ser aberta.

Os nomes de chave não diferenciam maiúsculas de minúsculas.

Se o parâmetro lpSubKey for NULL ou um ponteiro para uma cadeia de caracteres vazia e se hKey for uma chave predefinida, o sistema atualizará a chave predefinida e phkResult receberá o mesmo identificador hKey passado para a função. Caso contrário, phkResult receberá um novo identificador para a chave aberta.

Para obter mais informações, consulte limites de tamanho do elemento do Registro.

[in] ulOptions

Especifica a opção a ser aplicada ao abrir a chave. Defina esse parâmetro como zero ou o seguinte:

Valor Significado
REG_OPTION_OPEN_LINK
A chave é um link simbólico. Os links simbólicos do Registro só devem ser usados quando absolutamente necessário.

[in] samDesired

Uma máscara que especifica os direitos de acesso desejados à chave a ser aberta. A função falhará se o descritor de segurança da chave não permitir o acesso solicitado para o processo de chamada. Para obter mais informações, consulte de Direitos de Acesso e Segurança de Chave do Registro.

[out] phkResult

Um ponteiro para uma variável que recebe um identificador para a chave aberta. Se a chave não for uma das chaves predefinidas do Registro, chame a função RegCloseKey depois de terminar de usar o identificador.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor retornado será um código de erro diferente de zero definido em Winerror.h. Você pode usar a função FormatMessage com o sinalizador FORMAT_MESSAGE_FROM_SYSTEM para obter uma descrição genérica do erro.

Nota

Em versões herdadas do Windows, essa API também é exposta por kernel32.dll.

Observações

Ao contrário da função RegCreateKeyEx, a função RegOpenKeyEx não criará a chave especificada se a chave não existir no registro.

Determinadas operações do Registro executam verificações de acesso no descritor de segurança da chave, não na máscara de acesso especificada quando o identificador para a chave foi obtido. Por exemplo, mesmo que uma chave seja aberta com um samDesired de KEY_READ, ela poderá ser usada para criar chaves do Registro se o descritor de segurança da chave permitir. Por outro lado, a função RegSetValueEx exige especificamente que a chave seja aberta com o KEY_SET_VALUE direito de acesso.

Se seu serviço ou aplicativo representar usuários diferentes, não use essa função com HKEY_CURRENT_USER. Em vez disso, chame a função RegOpenCurrentUser.

Observe que as operações que acessam determinadas chaves do Registro são redirecionadas. Para obter mais informações, consulte de Virtualização do Registro e dados de aplicativo de 32 bits e 64 bits no Registro.

Exemplos

lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);

if (lResult != ERROR_SUCCESS) 
{
    if (lResult == ERROR_FILE_NOT_FOUND) {
        printf("Key not found.\n");
        return TRUE;
    } 
    else {
        printf("Error opening key.\n");
        return FALSE;
    }
}

Para ver este exemplo no contexto, consulte Excluindo uma chave com subchaves.

Nota

O cabeçalho winreg.h define RegOpenKeyEx como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winreg.h (inclua Windows.h)
biblioteca Advapi32.lib
de DLL Advapi32.dll

Consulte também

RegCloseKey

RegCreateKeyEx

RegDeleteKey

RegOpenKeyTransacted

Funções do Registro

Visão geral do Registro