Funções do Registro

Quando usar o Registro

O registro Windows é apropriado para armazenar pequenas quantidades de dados de configuração (configurações, preferências, estado por usuário). Considere alternativas para outros cenários:

Scenario Recommendation
Configurações de aplicativo (aplicativos modernos) Prefira ApplicationData.LocalSettings (UWP/WinUI) ou um arquivo %APPDATA% JSON/XML para aplicativos da área de trabalho. Eles são mais fáceis de fazer backup, migrar e depurar.
Dados grandes ou dados estruturados Use um arquivo (JSON, SQLite etc.) em vez de armazenar blobs grandes em valores do Registro.
Configuração de serviço em todo o computador O Registro em HKEY_LOCAL_MACHINE é apropriado, esse é o mecanismo padrão para serviços de Windows.
Preferências por usuário (aplicativos da área de trabalho) O Registro em HKEY_CURRENT_USER\Software\<Company>\<App> é apropriado e convencional.
Estado compartilhado entre processos Considere memória compartilhada nomeada, pipes nomeados ou um arquivo – o registro não tem nenhuma notificação de alteração incorporada às leituras de valor. Use RegNotifyChangeKeyValue somente para notificação refinada.

Importante

Práticas recomendadas de segurança: abra chaves do Registro com os direitos mínimos de acesso necessários (por exemplo, KEY_READ ou KEY_WRITE) – evite usar KEY_ALL_ACCESS ou MAXIMUM_ALLOWED. Gravar somente em HKEY_LOCAL_MACHINE processos elevados (administrador). Sempre verifique os valores retornados das funções do Registro – eles retornam ERROR_SUCCESS com êxito e um código de erro Win32 em caso de falha (não HRESULT).

Note

Armadilha comum — tipos de cadeia de caracteres: os valores da cadeia de caracteres do Registro (REG_SZ, REG_EXPAND_SZ) devem incluir o terminador nulo na contagem de bytes passada para RegSetValueEx. Ao ler cadeias de caracteres com RegQueryValueEx ou RegGetValue, sempre nulo, encerre o buffer por conta própria se o valor armazenado pode não incluir o terminador – alguns softwares de terceiros gravam cadeias de caracteres sem ele.

Veja a seguir as funções do Registro.

Função Descrição
GetSystemRegistryQuota Recupera o tamanho atual do registro e o tamanho máximo que o registro tem permissão para atingir no sistema.
RegCloseKey Fecha um identificador da chave do Registro especificada.
RegConnectRegistry Estabelece uma conexão com um identificador predefinido do Registro em outro computador.
RegCopyTree Copia a chave do Registro especificada, juntamente com seus valores e subchaves, para a chave de destino especificada.
RegCreateKeyEx Cria a chave do Registro especificada.
RegCreateKeyTransacted Cria a chave do Registro especificada e a associa a uma transação.
RegDeleteKey Exclui uma subchave e seus valores.
RegDeleteKeyEx Exclui uma subchave e seus valores da exibição específica da plataforma especificada do Registro.
RegDeleteKeyTransacted Exclui uma subchave e seus valores da exibição específica da plataforma especificada do registro como uma operação transacionada.
RegDeleteKeyValue Remove o valor especificado da chave e da subchave do Registro especificados.
RegDeleteTree Exclui as subchaves e os valores da chave especificada recursivamente.
RegDeleteValue Remove um valor nomeado da chave do Registro especificada.
RegDisablePredefinedCache Desabilita o cache do identificador de registro predefinido para HKEY_CURRENT_USER para o processo atual.
RegDisablePredefinedCacheEx Desabilita a manipulação de cache para todos os identificadores predefinidos do Registro para o processo atual.
RegDisableReflectionKey Desabilita a reflexão do Registro para a chave especificada.
RegEnableReflectionKey Habilita a reflexão do Registro para a chave desabilitada especificada.
RegEnumKeyEx Enumera as subchaves da chave do Registro aberta especificada.
RegEnumValue Enumera os valores da chave do Registro aberta especificada.
RegFlushKey Grava todos os atributos da chave do Registro aberta especificada no Registro.
RegGetKeySecurity Recupera uma cópia do descritor de segurança que protege a chave do Registro aberta especificada.
RegGetValue Recupera o tipo e os dados do valor do Registro especificado.
RegLoadKey Cria uma subchave em HKEY_USERS ou HKEY_LOCAL_MACHINE e armazena informações de registro de um arquivo especificado nessa subchave.
RegLoadMUIString Carrega a cadeia de caracteres especificada da chave e da subchave especificadas.
RegNotifyChangeKeyValue Notifica o chamador sobre alterações nos atributos ou conteúdo de uma chave do Registro especificada.
RegOpenCurrentUser Recupera um identificador para a chave HKEY_CURRENT_USER para o usuário que o thread atual está representando.
RegOpenKeyEx Abre a chave do Registro especificada.
RegOpenKeyTransacted Abre a chave do Registro especificada e a associa a uma transação.
RegOpenUserClassesRoot Recupera um identificador para a chave HKEY_CLASSES_ROOT para o usuário especificado.
RegOverridePredefKey Mapeia uma chave predefinida do Registro para uma chave do Registro especificada.
RegQueryInfoKey Recupera informações sobre a chave do Registro especificada.
RegQueryMultipleValues Recupera o tipo e os dados de uma lista de nomes de valor associados a uma chave aberta do Registro.
RegQueryReflectionKey Determina se a reflexão foi desabilitada ou habilitada para a chave especificada.
regQueryValueEx Recupera o tipo e os dados de um nome de valor especificado associado a uma chave aberta do Registro.
RegRenameKey Altera o nome da chave do Registro especificada.
RegReplaceKey Substitui o arquivo que faz backup de uma chave do Registro e todas as subchaves por outro arquivo.
RegRestoreKey Lê as informações do Registro em um arquivo especificado e copia-as pela chave especificada.
RegSaveKey Salva a chave especificada e todas as suas subchaves e valores em um novo arquivo.
RegSaveKeyEx Salva a chave especificada e todas as suas subchaves e valores em um novo arquivo. Você pode especificar o formato para a chave salva ou o hive.
RegSetKeyValue Define os dados do valor especificado na chave e na subchave do Registro especificados.
RegSetKeySecurity Define a segurança de uma chave aberta do Registro.
RegSetValueEx Define os dados e o tipo de um valor especificado em uma chave do Registro.
RegUnLoadKey Descarrega a chave do Registro especificada e suas subchaves do registro.

 

As seguintes funções de shell podem ser usadas com o registro:

  • assocCreate
  • AssocQueryKey
  • AssocQueryString
  • AssocQueryStringByKey
  • SHCopyKey
  • SHDeleteEmptyKey
  • SHDeleteKey
  • SHDeleteValue
  • SHEnumKeyEx
  • SHEnumValue
  • SHGetValue
  • SHQueryInfoKey
  • SHQueryValueEx
  • SHRegCloseUSKey
  • SHRegCreateUSKey
  • SHRegDeleteEmptyUSKey
  • SHRegDeleteUSValue
  • SHRegDuplicateHKey
  • SHRegEnumUSKey
  • SHRegEnumUSValue
  • SHRegGetBoolUSValue
  • SHRegGetIntW
  • SHRegGetPath
  • SHRegGetUSValue
  • SHRegOpenUSKey
  • SHRegQueryInfoUSKey
  • SHRegQueryUSValue
  • SHRegSetPath
  • SHRegSetUSValue
  • SHRegWriteUSValue
  • SHSetValue

Veja a seguir as funções de arquivo de inicialização. Eles recuperam informações e copiam informações para um arquivo de inicialização definido pelo sistema ou aplicativo. Essas funções são fornecidas apenas para compatibilidade com versões de 16 bits do Windows. Novos aplicativos devem usar o Registro.

Função Descrição
GetPrivateProfileInt Recupera um inteiro associado a uma chave na seção especificada de um arquivo de inicialização.
getPrivateProfileSection Recupera todas as chaves e valores da seção especificada de um arquivo de inicialização.
GetPrivateProfileSectionNames Recupera os nomes de todas as seções em um arquivo de inicialização.
GetPrivateProfileString Recupera uma cadeia de caracteres da seção especificada em um arquivo de inicialização.
GetPrivateProfileStruct Recupera os dados associados a uma chave na seção especificada de um arquivo de inicialização.
GetProfileInt Recupera um inteiro de uma chave na seção especificada do arquivo Win.ini.
GetProfileSection Recupera todas as chaves e valores da seção especificada do arquivo Win.ini.
GetProfileString Recupera a cadeia de caracteres associada a uma chave na seção especificada do arquivo Win.ini.
writePrivateProfileSection Substitui as chaves e os valores da seção especificada em um arquivo de inicialização.
WritePrivateProfileString Copia uma cadeia de caracteres para a seção especificada de um arquivo de inicialização.
WritePrivateProfileStruct Copia dados em uma chave na seção especificada de um arquivo de inicialização.
WriteProfileSection Substitui o conteúdo da seção especificada no arquivo Win.ini por chaves e valores especificados.
WriteProfileString Copia uma cadeia de caracteres para a seção especificada do arquivo Win.ini.

 

Funções obsoletas

Essas funções são fornecidas apenas para compatibilidade com versões de 16 bits do Windows: