Uma configuração que o programa guarda e que não aparece em nenhum arquivo, um sistema que mantém as preferências de um usuário e esquece as de outro e um procedimento que manda conferir uma chave costumam envolver o registro do Windows. O registro é o banco de configurações do sistema e de muitos programas, e uma alteração errada nele pode impedir um programa, ou o próprio Windows, de iniciar.
Chaves e valores
O registro se organiza como as pastas e os arquivos de um disco:
- Chave: o equivalente a uma pasta, que pode conter outras chaves e valores;
- Valor: a configuração em si, com um nome, um tipo e um dado;
- Tipo: o formato do dado, como REG_SZ, para um texto, REG_DWORD, para um número, e REG_MULTI_SZ, para uma lista de textos.
As chaves principais, chamadas de raízes, separam as configurações do computador e as de cada usuário:
- HKEY_LOCAL_MACHINE, abreviada como HKLM: as configurações do computador, válidas para todos os usuários;
- HKEY_CURRENT_USER, abreviada como HKCU: as configurações do usuário conectado;
- HKEY_USERS: as configurações de todos os perfis carregados, inclusive os das contas dos serviços;
- HKEY_CLASSES_ROOT: as associações de arquivos e os registros dos componentes COM.
A parte de cada usuário fica guardada no arquivo NTUSER.DAT do perfil, e por isso uma configuração gravada em HKCU vale só para aquela conta. Os serviços que rodam como Sistema Local usam outra área do registro e não enxergam o HKCU do usuário conectado.
As chaves que mais aparecem no suporte
Algumas chaves concentram as configurações consultadas com mais frequência:
HKLM\SOFTWARE\Fabricante\Programa: a configuração geral de um programa, organizada pelo nome do fabricante e do programa;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall: a lista de programas instalados, usada pela tela Programas e Recursos;HKLM\SYSTEM\CurrentControlSet\Services\MySQL: a configuração do serviço MySQL, com o caminho do executável no valor ImagePath e o tipo de inicialização no valor Start;HKCU\Software\Microsoft\Windows\CurrentVersion\Run: os programas que abrem quando o usuário entra no Windows, e a mesma chave em HKLM vale para todos os usuários;HKCU\Control Panel\International: as configurações regionais do usuário, como o separador decimal.
No valor Start de um serviço, o número 2 indica o início automático, o 3 indica o manual, e o 4 indica o serviço desativado.
A visão de 32 bits
No Windows de 64 bits, um programa de 32 bits que lê ou grava em HKLM\SOFTWARE é desviado para HKLM\SOFTWARE\WOW6432Node. O Editor do Registro mostra as duas áreas, e uma configuração procurada em SOFTWARE e gravada por um programa de 32 bits está em WOW6432Node. A lista dos programas de 32 bits instalados também fica nessa área, em HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall.
Programas antigos de 32 bits, abertos sem a permissão de administrador, que tentam gravar em HKLM\SOFTWARE, são desviados para uma cópia particular do usuário, em HKCU\Software\Classes\VirtualStore\MACHINE\SOFTWARE. O programa encontra a configuração alterada, mas os outros usuários continuam vendo a configuração original.
As ferramentas
O registro é consultado e alterado com estas ferramentas:
regedit: abre o Editor do Registro, com a navegação pelas chaves, a busca e a exportação;reg query HKLM\SYSTEM\CurrentControlSet\Services\MySQL /v ImagePath: mostra um valor pelo prompt de comando;reg query HKLM\SOFTWARE\Fabricante /reg:32: consulta a visão de 32 bits do registro, a mesma usada pelos programas de 32 bits;reg export HKLM\SOFTWARE\Fabricante C:\Temp\fabricante.reg: grava uma cópia da chave em um arquivo;reg import C:\Temp\fabricante.reg: grava no registro o conteúdo do arquivo.
No PowerShell, o registro aparece como uma unidade, e o comando Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | Select-Object DisplayName, DisplayVersion lista os programas instalados e as versões.
Os cuidados antes de alterar
Uma alteração no registro vale na hora, sem um botão de salvar e sem a opção de desfazer. Antes de alterar uma chave, a exportação guarda o estado anterior em um arquivo .reg, e a importação desse arquivo devolve os valores exportados. A importação acrescenta e substitui valores, mas não apaga os valores criados depois da exportação.
Um arquivo .reg é um texto que altera o registro quando é aberto com um duplo clique. O conteúdo de um arquivo recebido de terceiros pode ser lido no Bloco de Notas antes da importação.
Muitas configurações só passam a valer quando o programa é aberto de novo, quando o serviço é reiniciado ou quando o usuário entra de novo no Windows.
Os programas de limpeza do registro apagam entradas que parecem sobras de programas antigos. A Microsoft não oferece suporte a esses programas, porque uma entrada apagada por engano pode impedir um programa ou o Windows de funcionar.
No suporte
Antes de alterar o registro, convém exportar a chave, registrar o valor antigo e seguir o procedimento do fabricante. Uma chave que não aparece em SOFTWARE pode estar em WOW6432Node, quando o programa é de 32 bits, e uma configuração que vale para um usuário e não para outro costuma estar em HKCU.
Para guardar
- O registro guarda as configurações em chaves e valores, como pastas e arquivos.
- HKLM vale para o computador, e HKCU vale para o usuário conectado.
- No Windows de 64 bits, os programas de 32 bits usam a área WOW6432Node.
- A exportação de uma chave para um arquivo .reg guarda o estado anterior a uma alteração.
- Uma alteração no registro vale na hora e não tem desfazer.
O procedimento do fabricante manda conferir a chave HKLM\SOFTWARE\Fabricante, mas ela não aparece no Editor do Registro de um Windows de 64 bits. O programa está mal instalado?
Não necessariamente. Se o programa é de 32 bits, a chave fica em HKLM\SOFTWARE\WOW6432Node\Fabricante, porque o Windows desvia para essa área as gravações dos programas de 32 bits.
Depois da importação de um arquivo .reg com a configuração antiga, o programa continua com um comportamento que surgiu depois da alteração. Por quê?
A importação acrescenta e substitui os valores do arquivo, mas não apaga os valores criados depois da exportação. Um valor novo, criado na alteração, continua na chave e precisa ser removido conforme o procedimento.