13 votes

Comment puis-je spécifier des entrées REG_EXPAND_SZ dans un fichier .REG ?

Je suis en train d'essayer d'utiliser un script batch et un fichier .reg pour configurer certains services personnalisés. La plupart des clés sont correctement configurées, mais j'ai besoin de configurer la clé DependOnService pour certains des services, qui est normalement une chaîne multiple. Est-il possible de configurer cette clé à partir d'un fichier .reg, ou une saisie manuelle sera-t-elle requise?

14voto

phlatfish Points 1

REG_MULTI_SZ données dans les fichiers .reg 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 adapter cela à vos besoins.

S'il change, il sera probablement beaucoup plus facile d'utiliser le programme reg inclus avec Windows pour l'ajouter. Pour ce faire, appelez reg dans ce format:

Reg Add  /v  /t REG_MULTI_SZ /d  /s 

L'option de séparateur est facultative. Si elle n'est pas utilisée, 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-Rama avec les chaînes foo, bar et baz, vous exécuteriez:

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 exécuteriez:

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 commande Reg.

4voto

Eli Points 1051
  • dword: = DWORD
  • hex(2): = Chaîne expansible
  • hex(7): = Chaîne multiple

Un DWORD est un entier non signé de 32 bits (plage décimale : 0 - 4294967295), et, dans le registre, un DWORD commence toujours par 0x et est suivi de 8 chiffres. Cela peut être en format décimal ou hexadécimal ; par exemple, 1000 peut être écrit comme 0x00001000 ou 0x000003e8.

Les DWORDS peuvent seulement utiliser les chiffres 0 - 9. Les chaînes, de tout type, utilisent toujours l'ASCII, et en ASCII, 1000 ne peut être écrit que comme 31,30,30,30. Pour le type de données Chaîne, l'ASCII fonctionne en arrière-plan sans que vous le sachiez car l'ordinateur comprend seulement des 1 et des 0.

Pour les types de données Chaîne expansible et Chaîne multiple, ces derniers enregistrent vos entrées sous forme de séries de codes ASCII en format hexadécimal, séparés par des virgules et des zéros hexadécimaux ; donc une Chaîne expansible de 1000 serait hex(2):31,00,30,00,30,00,30,00

Convertissons %PROGRAMFILES% en une Chaîne expansible:

  1. Utilisez un Outil de conversion ASCII en hexadécimal, saisissez %PROGRAMFILES% dans la zone de texte, Délimiteur de sortie défini par l'utilisateur : %, sélectionnez Convertir, et il vous donnera :

    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Copiez/collez ce résultat dans un éditeur de texte : Déplacez le premier % à la fin, Recherche/Remplacement de tous les % par ,00, et retirez la virgule à la toute fin de la chaîne. Vous devriez 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. Enfin :

    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 rétroingénier une entrée de registre codée en hexadécimal qui n'est pas chiffrée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X