Як я можу вказати записи REG_EXPAND_SZ у файлі .REG?


9

Я намагаюся використовувати пакетний скрипт і .regфайл для налаштування деяких користувацьких служб. Більшість клавіш налаштовані належним чином, але мені потрібно встановити DependOnServiceключ для деяких служб, який, як правило, є багатопоточним. Чи можна встановити цей ключ з .regфайлу, чи буде потрібно ввести вручну?

Відповіді:


13

REG_MULTI_SZдані у .regфайлах повинні бути закодовані у шістнадцятковий розмір. Якщо вміст ніколи не змінюється, ви можете створити фіктивний елемент у своєму реєстрі з даними, експортувати його та підлаштувати його під свої потреби.

Якщо це зміниться, можливо, буде набагато простіше використовувати regпрограму, що додається до Windows, щоб додати її. Для цього зателефонуйте regу такому форматі:

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

Перемикач сеператора необов’язковий. Якщо не використовується, рядки, які потрібно записати, повинні бути відокремлені послідовністю відходу для нульового символу ( \0). Наприклад, щоб додати елемент з ім'ям Flairдо HKLM\SOFTWARE\WhizBang\Excite-O-Ramaструнах foo, barі bazви б працювати:

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

Щоб розділити дані комами замість цього, слід виконати:

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

Для отримання додаткової інформації зверніться до Документів Microsoft щодо Regкоманди.


4
Чудова відповідь (використання .batфайлу з regкомандою замість .regфайлу), але чому це говорить про REG_MULTI_SZ, коли питання стосується REG_EXPAND_SZ?
Norswap

1
  • dword: = DWORD
  • hex(2): = Розгортання-String
  • hex(7): = Багатострунна

A DWORD- це 32-розрядне ціле число, яке не підписується (десятковий діапазон: 0- 4294967295), а в реєстрі DWORDзавжди починається з 0xі має 8 цифр, які слідують за цим 0x. Це може бути у десятковому чи шістнадцятковому форматі; наприклад, 1000можна записати як 0x00001000або 0x000003e8.

DWORDSможе використовувати лише цифри 0- 9. Рядки будь-якого типу завжди використовують ASCII, а в ACSII 1000можна записати лише як 31,30,30,30. Для типу даних String ASCII працює у фоновому режимі, навіть не знаючи, оскільки комп'ютер розуміє лише 1 та 0.

Для типів даних Expandable-String і Multi-String вони зберігають ваші записи у вигляді серії ASCII-кодів у шістнадцятковому форматі, розділених комами та шістнадцятковими нулями; так Розширюваний-Нитка 1000будеhex(2):31,00,30,00,30,00,30,00

Перетворимо %PROGRAMFILES%в рядок, що розширюється:

  1. Використовуйте інструмент перетворення ASCII в Hex , введіть %PROGRAMFILES%у текстове поле, Розмежувач виводу, визначений користувачем:, %виберіть Перетворити, і він отримає:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Скопіюйте / вставте цей результат у текстовий редактор: Перемістіть перший %до кінця, Знайдіть / Замініть все %на ,00,та видаліть кому в самому кінці рядка. Ви повинні отримати:
    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. Нарешті:
    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

Цей урок містить усі знання, необхідні для зворотного інженеру будь-якої шістнадцяткової записи реєстру, яка не зашифрована.


1
Посилання на гарячі файли - це лише 7z архів із html-сторінкою (яка містить перетворювач), що зберігається всередині. Чому б не просто посилання на саму веб-сторінку?
Джон Бенсін

1
Щоб уникнути гниття посилань, будь ласка, опублікуйте всю відповідну інформацію у своїй відповіді. для отримання додаткової інформації про відповіді на запитання, див. Як відповісти
50-3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.