Tudo sobre Tecnologia da Informação

Criação de Arquivos REG

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