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 |
---|---|
|
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 |