Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- RegCreateKey
- RegEnumKey
- RegOpenKey
- RegQueryValue
- regSetValue