Compartilhar via


Função RegEnumKeyExA (winreg.h)

Enumera as subchaves da chave do Registro aberta especificada. A função recupera informações sobre uma subchave cada vez que é chamada.

Sintaxe

LSTATUS RegEnumKeyExA(
  [in]                HKEY      hKey,
  [in]                DWORD     dwIndex,
  [out]               LPSTR     lpName,
  [in, out]           LPDWORD   lpcchName,
                      LPDWORD   lpReserved,
  [in, out]           LPSTR     lpClass,
  [in, out, optional] LPDWORD   lpcchClass,
  [out, optional]     PFILETIME lpftLastWriteTime
);

Parâmetros

[in] hKey

Um identificador para uma chave aberta do Registro. A chave deve ter sido aberta com o direito de acesso KEY_ENUMERATE_SUB_KEYS. Para obter mais informações, consulte Segurança de chave do Registro e Direitos de Acesso.

Esse identificador é retornado pela função RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx ou RegOpenKeyTransacted . Ela também pode ser uma das seguintes chaves predefinidas:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS

[in] dwIndex

O índice da subchave a ser recuperada. Esse parâmetro deve ser zero para a primeira chamada para a função RegEnumKeyEx e, em seguida, incrementado para chamadas subsequentes.

Como as subchaves não são ordenadas, qualquer nova subchave terá um índice arbitrário. Isso significa que a função pode retornar subchaves em qualquer ordem.

[out] lpName

Um ponteiro para um buffer que recebe o nome da subchave, incluindo o caractere nulo de terminação. A função copia apenas o nome da subchave, não a hierarquia de chave completa, para o buffer.

Se a função falhar, nenhuma informação será copiada para esse buffer.

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

[in, out] lpcchName

Um ponteiro para uma variável que especifica o tamanho do buffer especificado pelo parâmetro lpName , em caracteres. Esse tamanho deve incluir o caractere nulo de terminação. Se a função for bem-sucedida, a variável apontada por lpcchName conterá o número de caracteres armazenados no buffer, sem incluir o caractere nulo de terminação.

Para determinar o tamanho do buffer necessário, use a função RegQueryInfoKey para determinar o tamanho da maior subchave para a chave identificada pelo parâmetro hKey .

lpReserved

Esse parâmetro é reservado e deve ser NULL.

[in, out] lpClass

Um ponteiro para um buffer que recebe a classe definida pelo usuário da subchave enumerada. Este parâmetro pode ser NULL.

[in, out, optional] lpcchClass

Um ponteiro para uma variável que especifica o tamanho do buffer especificado pelo parâmetro lpClass , em caracteres. O tamanho deve incluir o caractere nulo de terminação. Se a função for bem-sucedida, lpcchClass conterá o número de caracteres armazenados no buffer, sem incluir o caractere nulo de terminação. Esse parâmetro só poderá ser NULL se lpClass for NULL.

[out, optional] lpftLastWriteTime

Um ponteiro para a estrutura FILETIME que recebe a hora em que a subchave enumerada foi gravada pela última vez. Este parâmetro pode ser NULL.

Retornar valor

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

Se a função falhar, o valor retornado será um código de erro do sistema. Se não houver mais subchaves disponíveis, a função retornará ERROR_NO_MORE_ITEMS.

Se o buffer lpName for muito pequeno para receber o nome da chave, a função retornará ERROR_MORE_DATA.

Comentários

Para enumerar subchaves, um aplicativo deve inicialmente chamar a função RegEnumKeyEx com o parâmetro dwIndex definido como zero. Em seguida, o aplicativo deve incrementar o parâmetro dwIndex e chamar RegEnumKeyEx até que não haja mais subchaves (o que significa que a função retorna ERROR_NO_MORE_ITEMS).

O aplicativo também pode definir dwIndex como o índice da última subchave na primeira chamada para a função e decrementar o índice até que a subchave com o índice 0 seja enumerada. Para recuperar o índice da última subchave, use a função RegQueryInfoKey .

Embora um aplicativo esteja usando a função RegEnumKeyEx , ele não deve fazer chamadas para nenhuma função de registro que possa alterar a chave que está sendo enumerada.

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.

Observação

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

Exemplos

Para obter um exemplo, consulte Enumerando subchaves do Registro.

Observação

O cabeçalho winreg.h define RegEnumKeyEx 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

   
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

FILETIME

RegCreateKeyEx

RegDeleteKey

RegOpenKeyEx

RegQueryInfoKey

Funções do Registro

Visão geral do Registro