Come posso specificare le voci REG_EXPAND_SZ in un file .REG?


9

Sto cercando di utilizzare uno script batch e un .regfile per configurare alcuni servizi personalizzati. La maggior parte delle chiavi viene configurata correttamente, ma devo impostare la DependOnServicechiave per alcuni servizi, che è normalmente una multi-stringa. È possibile impostare questa chiave da un .regfile o sarà richiesta l'immissione manuale?

Risposte:


13

REG_MULTI_SZi dati nei .regfile devono essere codificati in esadecimali. Se il contenuto non cambia mai, è possibile creare un elemento fittizio nel registro con i dati, esportarlo e adattarlo alle proprie esigenze.

Se cambia, sarà probabilmente molto più semplice utilizzare il regprogramma incluso con Windows per aggiungerlo. Per fare ciò, chiama regin questo formato:

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

L'interruttore del separatore è opzionale. Se non utilizzato, le stringhe da scrivere devono essere separate dalla sequenza di escape per il carattere null ( \0). Ad esempio, per aggiungere un elemento di nome Flairper HKLM\SOFTWARE\WhizBang\Excite-O-Ramacon le corde foo, bare bazsi dovrebbe eseguire:

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

Per separare invece i dati con virgole, eseguire:

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

Per ulteriori informazioni, consultare Microsoft Docs per il Regcomando.


4
Ottima risposta (utilizzando un .batfile con regcomando anziché un .regfile), ma perché parla di REG_MULTI_SZ quando la domanda riguarda REG_EXPAND_SZ?
Norswap,

0
  • dword: = DWORD
  • hex(2): = String espandibile
  • hex(7): = Multistringa

A DWORDè un numero intero senza segno a 32 bit (intervallo decimale: 0- 4294967295) e, nel registro, a DWORDinizia sempre con 0xe ha 8 cifre che seguono 0x. Questo può essere in formato decimale o esadecimale; per esempio, 1000può essere scritto come 0x00001000o 0x000003e8.

DWORDSpuò solo usare le cifre 0- 9. Le stringhe, di qualsiasi tipo, usano sempre ASCII, e in ACSII, 1000possono essere scritte solo come 31,30,30,30. Per il tipo di dati String, ASCII funziona in background senza nemmeno saperlo perché il computer comprende solo 1 e 0.

Per i tipi di dati Expandable-String e Multi-String, questi salvano le voci come una serie di codici ASCII in un formato esadecimale, separati da virgole e zero esadecimali; così 1000sarebbe una stringa espandibile dihex(2):31,00,30,00,30,00,30,00

Convertiamolo %PROGRAMFILES%in una stringa espandibile:

  1. Utilizza uno strumento di conversione da ASCII a esadecimale , immetti %PROGRAMFILES%nella casella di testo, Delimitatore output definito dall'utente:, %seleziona Converti e ti darà:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Copia / incolla il risultato in un editor di testo: sposta il primo %alla fine, trova / sostituisci tutto %con ,00,e rimuovi la virgola alla fine della stringa. Dovresti ricevere:
    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

Questa lezione contiene tutte le conoscenze necessarie per decodificare qualsiasi voce del registro con codice esadecimale non crittografata.


1
Il collegamento hotfile è solo un archivio 7z con una pagina html (che contiene il convertitore) memorizzata all'interno. Perché non limitarti a collegarti alla stessa pagina web?
John Bensin,

1
Per evitare la putrefazione dei link, inserisci tutte le informazioni pertinenti nella tua risposta. per ulteriori informazioni su come rispondere alle domande, vedere Come rispondere
50-3
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.