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 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 para a 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 Segurança de chave do Registro e Direitos de Acesso.

[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 do Registro predefinidas, chame a função RegCloseKey depois de terminar de usar o identificador.

Retornar valor

Se a função obtiver êxito, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor de retorno será o 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.

Observação

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

Comentários

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 direito de acesso KEY_SET_VALUE.

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 Virtualização do Registro e Dados do 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.

Observação

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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

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

Confira também

Regclosekey

RegCreateKeyEx

RegDeleteKey

RegOpenKeyTransacted

Funções do Registro

Visão geral do Registro