REG ДОБАВЬТЕ значение многострочного реестра REG_MULTI_SZ
Чтобы добавить многострочное значение реестра REG_MULTI_SZ, я могу сделать
reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0def\0"
который бы добавил ("abc", "def").
Но что, если мне нужно добавить ("abc", "", "def"), то есть пустой элемент между ними?
дела
reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0\0def\0"
выдает ошибку "неверный параметр".
4 ответа
Это, вероятно, невозможно при использовании reg add, потому что данные, которые вы пытаетесь установить, сформированы неправильно. Значения REG_MULTI_SZ заканчиваются пустой строкой, поэтому использование пустой строки в качестве значения не допускается.
Если вам действительно это нужно, и, понимая, что некоторые программы не смогут правильно прочитать ключ, вы можете вместо этого использовать reg import. Например, следующий файл создает значение с пустой строкой в середине:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\software\harrytest]
"test"=hex(7):76,00,61,00,6c,00,75,00,65,00,31,00,00,00,76,00,61,00,6c,00,75,\
00,65,00,32,00,00,00,00,00,76,00,61,00,6c,00,75,00,65,00,34,00,00,00,76,00,\
61,00,6c,00,75,00,65,00,35,00,00,00,00,00
Это сработало для меня:
REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2 /f
или если ваши предметы имеют пробелы:
REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d "item1"\0"item2" /f
Убедитесь, что у вас нет ДВУХ конечных разделителей "\0" (один из них в порядке, с или без завершающего \ 0 вы получите последний символ возврата), как в примере ниже (как я видел в статье TechNet), или вы получит "ОШИБКА: недопустимое значение, указанное для" /d ".":
REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2\0\0 /f
Попробуй это:
@reg.exe add "HKCU\Software\Wirkomatron" /v "MySoftware" /d "Software1"\0"Software2"\0"Software3"\0 /t REG_MULTI_SZ /f
И теперь вы можете сделать это с помощью Batch-скрипта правильно.
Просто для справки.
Если вы просто хотите вставить новую строку, вам нужно будет смоделировать ее с пробелом в пустой строке. Если место будет иметь нежелательное влияние на то, что вы пытаетесь достичь, тогда этот пост не будет полезен для вас.
reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0 \0def\0"