Я пытаюсь использовать пакетный скрипт и.REG-файл для настройки некоторых пользовательских сервисов. Большинство ключей настраиваются правильно, но мне нужно установить ключ DependOnService для некоторых служб, который обычно является многострочным. Можно ли установить этот ключ из.REG-файл или потребуется ручной ввод?
2 ответа
REG_MULTI_SZ данные в.REG-файлы должны быть закодированы в шестнадцатеричном формате. Если содержимое никогда не меняется, вы можете создать в своем реестре фиктивный элемент с данными, экспортировать его и настроить его в соответствии со своими потребностями.
Если это изменится, вероятно, будет гораздо проще использовать команду reg
включенную в Windows, чтобы добавить его. Для этого вызовите reg в следующем формате:
reg add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>
Сепараторный переключатель не является обязательным. Если не используется, строки для записи должны быть отделены escape-последовательностью для нулевого символа (\0
). Например, чтобы добавить элемент с именем Flair
в HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama
со строками foo
, bar
и baz
вы должны выполнить:
reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz
Чтобы разделить данные запятыми, вы должны выполнить:
reg add HKEY_LOCAL_ MACHINE\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,
Для получения дополнительной информации обратитесь к документации Microsoft по команде reg
.
DWORD = dword: Расширяемая строка = hex(2): Multi String = hex(7):
DWORD - это 32-разрядное целое число без знака (в диапазоне от 0 до 4294967295 десятичное). В реестре DWORD всегда начинается с 0x. В реестре DWORDS всегда имеет 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% в расширяемую строку. Сначала загрузите это: https://hotfile.com/dl/244097278/55aa086/ASCII_2_HEX_Conversion_Tool.7z.html
Теперь откройте это в любом современном браузере. Поместите% PROGRAMFILES% в поле ASCII и выберите кодировать его. Это даст вам% 25% 50% 52% 4F% 47% 52% 41% 4D% 46% 49% 4C% 45% 53% 25 Скопируйте и вставьте это в текстовый редактор, переместите первые% в конец. Выберите команду замены, найдите все "%" и замените на ", 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 И, наконец, 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
Готово.
Вы когда-нибудь пытались преобразовать любопытную шестнадцатеричную запись в реестре в ASCII и потерпели неудачу с треском. Этот урок содержит все знания, необходимые для обратного проектирования любой записи реестра с шестнадцатеричным кодом, которая не зашифрована. Повеселись!