O registro é um banco de dados hierárquico no Windows que armazena informações importantes sobre hardware do sistema, programas instalados e configurações, alé de perfis de cada uma das contas de usuário no computador.
Os dados do registro são armazenados em chaves (compartimentos, como se fossem "pastinhas"), e dentro deles tem subchaves, que funcionam da mesma forma. As configurações que aparecem do lado direito são chamados de valores. Os valores sempre possuem um nome, o tipo de dados e o conteúdo dos dados (como se fossem variáveis). Tudo isso são parâmetros que ficam armazenados dentro das chaves, e os valores são itens de configurações.
Para inserir uma chave de registro (chave é como as pastas), editamos um arquivo REG com os dados dessa forma:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=hex:00,00,00
Para editar o valor dentro da chave, basta colocar como se ela fosse adicionada, com o conteúdo alterado, por exemplo:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=hex:00,00,01
Para adicionar um novo valor dentro de uma chave existente, basta colocar o caminho da chave com o novo valor, por exemplo:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NovoValor"="Novos Dados"
Para excluir um valor de uma chave, atribua o valor à ela com um -
assim:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=-
Para deletar uma chave, a mesma coisa, só colocando um -
na frente, dentro dos colchetes:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=hex:00,00,01
Para colocar mais de uma chave no mesmo arquivo REG, dê espacamento de uma linha entre eles, e mais de um valor numa mesma chave, coloque um abaixo do outro, por exemplo:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\NomeDaChave]
"NomeDoValor"=hex:00,00,01
"NomeDoValor2"=hex:00,01,00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=hex:00,00,01
"NomeDoValor2"=hex:00,01,00
Da mesma forma para excluir várias chaves e/ou valores:
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\SOFTWARE\NomeDaChave]
"NomeDoValor"=-
"NomeDoValor2"=-
[-HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoValor"=-
"NomeDoValor2"=-
No caso de valores em texto, como caminhos de programas, colocarmos entre aspas, e se necessário, aspas com sequências de escape, assim:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
"NomeDoCaminho"="\"C:\\Windows\\executavel.exe\""
Caso deseje inserir algum dado no valor padrão da chave, basta fazer algo assim, usando um @, no exemplo inserimos um dado em branco:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\NomeDaChave]
@=""
Para voltar ao valor não-definido do valor padrão, basta excluir o valor com um menos na frente do igual normalmente (no caso @=-
).
PS: Lembrando que é necessário colocar "Windows Registry Editor Version 5.00" para o arquivo reg funcionar. No lugar dele pode ser usado "REGEDIT4", mas pode não funcionar no Windows 8, 8.1 e 10.
Esses são os tipos de dados mais comuns em entradas de registro, que são utilizados para configurar os valores que guardamos dentro das chaves:
ID do tipo | Nome Simbólico | Significado |
---|---|---|
0 | REG_NONE | Sem tipo definido |
1 | REG_SZ | Valor de cadeia de caracteres UTF-16 |
2 | REG_EXPAND_SZ | Valor de cadeia de caracteres expansível |
3 | REG_BINARY | Dados binários |
4 | REG_DWORD | Valor DWORD, inteiro sem sinal de 32 bits |
7 | REG_MULTI_SZ | Cadeia de caracteres múltipla (lista ordenada) |
11 | REG_QWORD | Valor QWORD, inteiro de 64 bits |
O registro tem cinco chaves principais (chaves raiz ou de alto nível):
A chave HKEY_CLASSES_ROOT
contém informações relativas a associações de nomes de arquivos, objetos OLE, associações com objetos COM, e associações de arquivos de classe. Parâmetros contidos nessa chave são na verdade um link (atalho) para a chave HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Abreviada normalmente como HKCR.
A chave HKEY_CURRENT_USER
contém as configurações do usuário logado no sistema no momento, incluindo variáveis de ambiente, configurações de desktop, de redes e de aplicações. É um link para HKEY_USERS\<SID-DO-USUÁRIO-ATUAL>. Abreviada normalmente como HKCU.
A chave HKEY_LOCAL_MACHINE
contém todas as informações globais de hardware e sistema operacional. A informação nessa chave é aplicável a todos os usuários que se logam no sistema local. Abreviada normalmente como HKLM.
A chave HKEY_USERS
contém dados de todos os perfis de usuários no sistema, incluindo HKEY_CURRENT_USER e o perfil de usuário padrão. No geral, usamos a chave HKCU para configuração do usuário atual. Abreviada normalmente como HKU.
A chave HKEY_CURRENT_CONFIG
armezena todos os dados sobre a configuração atual de hadware da máquina. É um link para HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current. Não é muito utilizada no geral. Abreviada normalmente como HKCC.
Uma coisa que podemos fazer, por exemplo, é criar uma entrada de registro onde um comando, BAT ou programa é executado ao inicializar (não funciona com aplicações Java), para isso, procure a chave RUN em HKCU ou HKLM (essa última é para todos os usuários), localizadas em HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
e HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
. Veja um exemplo prático disso:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Inicializando"="\"C:\\Windows\\executavel.exe\""
PS: Pode ser necessário usar sequências de escape, caso tenha algum comando com barras invertidas ou aspas.
Para verificar se a chave realmente foi adicionada, basta abrir o regedit ou olhar pelo CMD com o comando reg query.
E para apagar, da mesma forma, colocando o menos na frente do nome do valor:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Inicializando"=-
Sabendo disso, podemos também usar isso para excluir programas que inicializam com o sistema, principalmente malwares e semelhantes, cujas entradas são colocadas justamente em run.
PS: Variáveis do sistema não funcionam para adicionar chaves por esse método, só são possíveis utilizando o CMD ou BAT pra isso.
Uma coisa que dá pra fazer no registro é remover programas padrões de determinadas extensões, indo em HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
.
Outro macete que podemos utilizar é a retirada de modo somente leitura de cartões SD, com esse código:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies]
"Proteção contra Gravação"=dword:00000000