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

J'essaie d'utiliser un script batch et un fichier .REG pour configurer certains services personnalisés. La plupart des clés sont configurées correctement, mais je dois configurer la touche DependOnService pour certains services, ce qui est normalement un multi-string. Est-il possible de définir cette clé à partir d'un fichier .REG, ou l'entrée manuelle sera-t-elle nécessaire?

Les données REG_MULTI_SZ dans les fichiers .REG doivent être encodées en hexadécimal. Si le contenu ne change jamais, vous pouvez créer un objet fictif dans votre registre avec les données, l'exporter et l'ajuster à vos besoins.

Si cela change, il sera probablement plus facile d'utiliser la commande reg incluse avec Windows pour l'ajouter. Pour ce faire, appelez reg dans ce format:

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

Le sélecteur est optionnel. 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 appelé Flair à HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama avec les chaînes foo , bar et baz vous exécuteriez:

 reg add HKEY_LOCAL_ MACHINE\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 HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s , 

Pour plus d'informations, consultez la documentation de Microsoft sur la commande reg .

DWORD = dword: extensible String = hex (2): Multi String = hex (7):

Un DWORD est un entier non signé de 32 bits (plage: 0 à 4294967295 décimal) Dans le registre, un DWORD commence toujours avec 0x. Dans le registre, DWORDS a toujours 8 chiffres qui suivent 0x. Cela peut être au format décimal ou hexadécimal, 1000 peuvent être écrits comme: 0x00001000 ou 0x000003e8

DWORDS ne peut utiliser que les chiffres de 0 à 9. Les chaînes, n'importe quel type, utilisent toujours ASCII, dans ACSII 1000 ne peuvent être écrites que 31,30,30,30 Pour le type de données String, ASCII fonctionne en arrière-plan sans que vous ne sachiez même. Il faut que l'ordinateur comprenne seulement 1s et 0s. Pour les types de données Extensible String et Multi String, ceux-ci enregistrent vos entrées comme une série de codes ASCII dans un format hexadécimal, séparés par des virgules et des zéros hexagonaux. Ainsi, une chaîne extensible de 1000 serait: hex (2): 31,00,30,00,30,00,30,00

Nous allons donc convertir% PROGRAMFILES% en une chaîne extensible. D'abord, téléchargez ceci: https://hotfile.com/dl/244097278/55aa086/ASCII_2_HEX_Conversion_Tool.7z.html

Ouvrez maintenant cela dans n'importe quel navigateur moderne. Mettez% PROGRAMFILES% dans la zone ASCII et sélectionnez l'encoder. Cela vous donnera% 25% 50% 52% 4F% 47% 52% 41% 4D% 46% 49% 4C% 45% 53% 25 Copiez le coller dans un éditeur de texte, déplacez le premier% jusqu'à la fin. Sélectionnez la commande de remplacement, trouvez tous les "%" et remplacez par ", 00". Retirez la virgule à la fin. 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 Et 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

Terminé.

Avez-vous déjà essayé de convertir une entrée hexadécimal de registre curieuse en ASCII et a échoué avec misère. Cette leçon contient toutes les connaissances nécessaires à l'ingénierie inverse d'une entrée de registre codée par hexagone qui n'est pas cryptée. S'amuser!