Como posso especificar entradas REG_EXPAND_SZ em um arquivo .REG?

9

Estou tentando usar um script em lotes e um .regarquivo para configurar alguns serviços personalizados. A maioria das chaves está sendo configurada corretamente, mas preciso definir a DependOnServicechave para alguns dos serviços, que normalmente são de várias cadeias. É possível definir essa chave a partir de um .regarquivo ou será necessária a entrada manual?

MBraedley
fonte

Respostas:

13

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

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

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

O interruptor do separador é opcional. Se não for utilizado, as seqüências a serem gravadas devem ser separadas pela sequência de escape para o caractere nulo ( \0). Por exemplo, para adicionar um item chamado Flairpara HKLM\SOFTWARE\WhizBang\Excite-O-Ramacom as cordas foo, bare bazvocê deve executar:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz

Para separar os dados com vírgulas, execute:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,

Para mais informações, consulte o Microsoft Docs para o Regcomando

Patches
fonte
4
Ótima resposta (usando um .batarquivo com regcomando em vez de um .regarquivo), mas por que ele fala sobre REG_MULTI_SZ quando a pergunta é sobre REG_EXPAND_SZ?
Norswap
0
  • dword: = DWORD
  • hex(2): = String expansível
  • hex(7): = Multi-String

A DWORDé um número inteiro não assinado de 32 bits (intervalo decimal: 0- 4294967295) e, no registro, um DWORDsempre começa com 0xe possui 8 dígitos a seguir 0x. Isso pode estar no formato decimal ou hexadecimal; por exemplo, 1000pode ser escrito como 0x00001000ou 0x000003e8.

DWORDSsó pode usar os dígitos 0- 9. Strings, de qualquer tipo, sempre usam ASCII e, no ACSII, 1000só podem ser escritas como 31,30,30,30. Para o tipo de dados String, o ASCII funciona em segundo plano sem que você saiba, porque o computador entende apenas 1s e 0s.

Para os tipos de dados String expansível e String múltipla, eles salvam suas entradas como uma série de códigos ASCII em formato hexadecimal, separados por vírgulas e zeros hexadecimais; então uma String expansível de 1000seriahex(2):31,00,30,00,30,00,30,00

Vamos converter %PROGRAMFILES%em uma string expansível:

  1. Use uma ferramenta de conversão ASCII para Hex , insira %PROGRAMFILES%na caixa de texto Delimitador de saída definido pelo usuário:, %selecione Converter e ele fornecerá:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Copie / cole o resultado em um editor de texto: Mova o primeiro %para o final, Encontre / Substitua tudo %por ,00,e remova a vírgula no final da sequência. Voce deveria pegar:
    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
  3. 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

Esta lição contém todo o conhecimento necessário para fazer engenharia reversa de qualquer entrada de registro codificada em hexadecimal que não esteja criptografada.

DarkReverser
fonte
1
O link hotfile é apenas um arquivo 7z com uma página html (que contém o conversor) armazenada. Por que não apenas criar um link para a própria página da web?
John Bensin 08/09
1
Para evitar a podridão do link, poste todas as informações relevantes em sua resposta. para obter mais informações sobre como responder a perguntas, consulte Como responder
50-3 8/13