REG ДОБАВЬТЕ значение многострочного реестра REG_MULTI_SZ - PullRequest
3 голосов
/ 13 января 2012

Чтобы добавить многострочное значение реестра REG_MULTI_SZ, я могу сделать

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0def\0"

, который бы добавил ("abc", "def").

Но что, если мне нужноadd ("abc", "", "def"), т. е. пустой элемент между?

Выполнение

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0\0def\0"

дает мне ошибку "недопустимый параметр".

Ответы [ 4 ]

10 голосов
/ 27 сентября 2012

Это сработало для меня:

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
4 голосов
/ 16 января 2012

Это, вероятно, невозможно при использовании 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
2 голосов
/ 21 мая 2012

Попробуйте это:

@reg.exe add "HKCU\Software\Wirkomatron" /v "MySoftware" /d "Software1"\0"Software2"\0"Software3"\0 /t REG_MULTI_SZ /f

И теперь вы можете сделать это с помощью Batch-скрипта правильно.

0 голосов
/ 27 июля 2013

Только для справки.

Если вы просто хотите вставить новую строку, вам нужно смоделировать ее с пробелом в пустой строке. Если место будет иметь нежелательное влияние на то, что вы пытаетесь достичь, то этот пост вам не нужен.

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0 \0def\0"

...