Comment spécifier les entrées REG_EXPAND_SZ dans un fichier .REG?

9

J'essaie d'utiliser un script de commandes et un .regfichier pour configurer certains services personnalisés. La plupart des clés sont configurées correctement, mais je dois définir la DependOnServiceclé pour certains services, qui sont normalement des chaînes multiples. Est-il possible de définir cette clé à partir d'un .regfichier ou une saisie manuelle sera-t-elle requise?

MBraedley
la source

Réponses:

13

REG_MULTI_SZles données des .regfichiers doivent être encodées en hexadécimal. Si le contenu ne change jamais, vous pouvez créer un élément factice dans votre registre avec les données, l'exporter et l'adapter à vos besoins.

Si cela change, il sera probablement beaucoup plus facile d'utiliser le regprogramme inclus avec Windows pour l'ajouter. Pour ce faire, appelez regdans ce format:

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

L'interrupteur séparateur est facultatif. S'ils ne sont pas utilisés, les chaînes à écrire doivent être séparées par la séquence d'échappement pour le caractère nul ( \0). Par exemple, pour ajouter un élément nommé Flairà HKLM\SOFTWARE\WhizBang\Excite-O-Ramades chaînes foo, baret bazvous courriez:

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

Pour séparer les données avec des virgules à la place, vous devez exécuter:

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

Pour plus d'informations, consultez Microsoft Docs pour la Regcommande.

Patchs
la source
4
Excellente réponse (en utilisant un .batfichier avec une regcommande au lieu d'un .regfichier), mais pourquoi parle-t-il de REG_MULTI_SZ lorsque la question concerne REG_EXPAND_SZ?
Norswap
0
  • dword: = DWORD
  • hex(2): = Chaîne extensible
  • hex(7): = Multi-String

A DWORDest un entier non signé 32 bits (plage décimale: 0- 4294967295) et, dans le registre, a DWORDcommence toujours par 0xet comporte 8 chiffres qui suivent 0x. Cela peut être au format décimal ou hexadécimal; par exemple, 1000peut être écrit comme 0x00001000ou 0x000003e8.

DWORDSne peut utiliser que les chiffres 0- 9. Les chaînes, de toute sorte, utilisent toujours ASCII, et en ACSII, 1000ne peuvent être écrites qu'en 31,30,30,30. Pour le type de données String, ASCII fonctionne en arrière-plan sans même que vous le sachiez car l'ordinateur ne comprend que les 1 et les 0.

Pour les types de données à chaîne extensible et à chaînes multiples, ceux-ci enregistrent vos entrées sous la forme d'une série de codes ASCII au format hexadécimal, séparés par des virgules et des zéros hexadécimaux; donc une chaîne extensible 1000seraithex(2):31,00,30,00,30,00,30,00

Convertissons %PROGRAMFILES%en une chaîne extensible:

  1. Utilisez un outil de conversion ASCII en hexadécimal , entrez %PROGRAMFILES%dans la zone de texte, délimiteur de sortie défini par l'utilisateur:, %sélectionnez Convertir, et cela vous donnera:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Copiez / collez le résultat dans un éditeur de texte: déplacez le premier %à la fin, recherchez / remplacez tout %par ,00,et supprimez la virgule à la fin de la chaîne. Tu devrais obtenir:
    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. Finalement:
    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

Cette leçon contient toutes les connaissances nécessaires pour effectuer une rétro-ingénierie de toute entrée de registre à code hexadécimal non chiffrée.

DarkReverser
la source
1
Le lien hotfile est juste une archive 7z avec une page html (qui contient le convertisseur) stockée à l'intérieur. Pourquoi ne pas simplement créer un lien vers la page Web elle-même?
John Bensin
1
Pour éviter la pourriture des liens, veuillez publier toutes les informations pertinentes dans votre réponse. pour plus d'informations sur la façon de répondre aux questions, veuillez consulter Comment répondre
50-3