Как проанализировать значение REG_BINARY для раздела реестра с помощью командного файла? - PullRequest
7 голосов
/ 27 июня 2011

Вот (просто) пример:

reg add HKEY_CURRENT_USER \ Панель управления \ Рабочий стол \ WindowMetrics / v MessageFont / t REG_BINARY / d "hex: f5, ff, ff, ff, 00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00, \ 00,00,00,01,00,00,00,00,54,00,61, 00,68,00,6f, 00,6d, 00,61,00,00,00,00,00,00, \ 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, \ 00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,00,00 "/ f

не работает.

Большое спасибо заранее.

(кстати, какие кодовые теги следует использовать здесь?)

РЕДАКТИРОВАТЬ: Извините за задержку (у меня нет ответа здесь в течение нескольких дней, поэтому я гуглил и пыталсянайти решение самостоятельно) и спасибо за ответ.

Я решил проблему, удалив "hex" и запятые.Двоичные значения должны быть добавлены как длинный ряд числовых символов без пробелов и запятых.

Теперь у меня есть другая проблема.Как я могу изменить только значение записи с помощью команды reg?Например, я должен изменить значение записи реестра «По умолчанию» с чего-то на «значение не установлено» или наоборот.Если я использую для этого команду «reg add», она добавляет другую запись с тем же именем вместо изменения значения существующего.Я не могу использовать метод «удалить старый и добавить новый», потому что невозможно удалить запись «По умолчанию».

Мне нужно сделать это через командный файл, а не через reg-файл.(но в любом случае было бы неплохо узнать, как это можно сделать и с помощью reg-файла)

Большое спасибо

EDIT2: решение для удаления значения записи по умолчанию: regdelete HKLM ... \ Key / ve / f

для изменения значений ввода следует использовать regini.http://support.microsoft.com/kb/264584 (объяснение на этой странице немного расплывчато и, возможно, даже неточно), поместите в командный файл: regini c: \ testregini.txt, где testregini.txt содержит: HKEY_LOCAL_MACHINE ... \ Key EntryXY = somevalue (или"значение не установлено" или что-либо из этого типа данных)

Ответы [ 3 ]

6 голосов
/ 14 августа 2013

просто так:

reg add "HKCU \ Панель управления \ Рабочий стол \ WindowMetrics" / v MessageFont / t REG_BINARY / d f5ffffff0000000000000000000000009001000000000001000000005400610068006f006d00610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 / F

  1. Вы можете сократить HKEY_Current_User до HKCU.
  2. Поместите раздел реестра в кавычки, чтобы избежать ошибок синтаксического анализа из-за обратной косой черты.
  3. Для данных вам придется удалить кавычки, префикс «hex:», запятые и разрывы строк (обратные слэши), чтобы остались только цифры.

Вот и все! Мне просто интересно, почему это никого здесь не интересовало.

1 голос
/ 01 июля 2011

Я не уверен, как это сделать в обычном пакетном файле, но вот как вы можете это сделать с помощью PowerShell, используя пример настройки действий при сбое для службы состояний ASP.NET:

Скажем, вот как выглядит экспорт вашего значения:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\aspnet_state]
"FailureActions"=hex:50,33,01,00,00,00,00,00,00,00,00,00,03,00,00,00,0e,00,00,\
  00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00

Вы помещаете шестнадцатеричные значения в байтовый массив, а затем используете это значение для установки значения реестра:

$failureActionsValue = ([byte[]](80,51,01,00,00,00,00,00,00,00,00,00,03,00,00,00,14,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00))

Set-ItemProperty -Path 'HKLM:\System\ControlSet001\services\aspnet_state' -Name "FailureActions"
    -Value $failureActionsValue
0 голосов
/ 10 мая 2018

Эта статья помогла мне, но чтобы заставить это работать в cmd Мне пришлось изменить строку на что-то вроде этого:

REG ADD "HKEY_CURRENT_USER\Control Panel\Desktop" /v "UserPreferencesMask" /t REG_BINARY /d 9F3E078012000000 /f

/f делает так, чтобы пользователю не предлагалось подтвердить изменение.

...