Como posso especificar entradas REG_EXPAND_SZ em um arquivo .REG?

8

Estou tentando usar um script em lote e um arquivo .REG para configurar alguns serviços personalizados. A maioria das chaves está sendo configurada corretamente, mas eu preciso definir a chave DependOnService para alguns dos serviços, que normalmente é uma string múltipla. É possível definir esta chave a partir de um arquivo .REG, ou a entrada manual será necessária?

    
por MBraedley 01.03.2011 / 15:14

2 respostas

10

Os dados REG_MULTI_SZ nos arquivos .REG devem ser codificados em hexadecimal. Se o conteúdo nunca mudar, você poderá criar um item fictício no seu registro com os dados, exportá-lo e ajustá-lo às suas necessidades.

Se isso mudar, provavelmente será muito mais fácil usar o comando reg incluído no Windows para adicioná-lo. Para fazer isso, chame reg neste formato:

reg add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

O interruptor de separação é opcional. Se não for usado, as strings a serem gravadas deverão ser separadas pela seqüência de escape do caractere nulo ( Flair ). Por exemplo, para adicionar um item chamado HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama a foo com as strings bar , baz e reg , você executaria:

reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo
reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,
bar
reg add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>
baz

Para separar os dados com vírgulas, você executaria:

reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo
reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,
bar%pre%baz

Para obter mais informações, consulte documentação da Microsoft do comando %code% .

    
por 02.03.2011 / 07:36
1

DWORD = dword: Cadeia Expansível = hex (2): Cadeia Múltipla = hex (7):

Um DWORD é um inteiro não assinado de 32 bits (intervalo: 0 a 4294967295 decimal) No registro, um DWORD sempre começa com 0x. No registro, DWORDS sempre tem 8 dígitos que seguem 0x. Isso pode ser em formato decimal ou hexadecimal, 1000 pode ser escrito como: 0x00001000 ou 0x000003e8

DWORDS só pode usar os dígitos 0-9. Strings, de qualquer tipo, sempre usam ASCII, no ACSII 1000 só pode ser escrito como 31,30,30,30 Para o tipo de dados String, o ASCII funciona em segundo plano sem que você saiba. Tem que porque o computador só entende 1s e 0s. Para os tipos de dados Expansível String e Multi String, eles salvam suas entradas como uma série de códigos ASCII em um formato hexadecimal, separados por vírgulas e zeros hexadecimais. Então, uma string expansível de 1000 seria: hex (2): 31,00,30,00,30,00,30,00

Então, vamos converter% PROGRAMFILES% em uma string expansível. Primeiro, faça o download: link

Agora abra isso em qualquer navegador moderno. Coloque% PROGRAMFILES% na caixa ASCII e selecione codificar. Ele te dará% 25% 50% 52% 4F% 47% 52% 41% 4D% 46% 49% 4C% 45% 53% 25 Copie e cole em um editor de texto, mova o primeiro% até o final. Selecione o comando replace, localize todos os "%" e substitua por ", 00". Remova a vírgula no final. Você deve obter: 25,00,50,00,52,00,4F, 00,47,00,52,00,41,00,4D, 00,46,00,49,00,4C, 00,45, 00,53,00,25,00 E finalmente, hex (2): 25,00,50,00,52,00,4F, 00,47,00,52,00,41,00,4D, 00,46,00,49,00,4C, 00,45 , 00,53,00,25,00

Feito.

Você já tentou converter uma entrada de registro hexadecimal curiosa em ASCII e falhou miseravelmente. Esta lição contém todo o conhecimento necessário para fazer engenharia reversa de qualquer entrada de registro com código hexadecimal que não esteja criptografada. Divirta-se!

    
por 08.09.2013 / 23:21