Перезапись значения реестра с помощью ключа, хранящегося в переменной - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь перезаписать значение реестра для службы, которая продолжает «падать» при первом входе пользователя в систему.После устранения неполадок я понял, что, если я изменю время запуска службы с автоматического на ручное, это решит проблему.Я пытаюсь сделать это с помощью пакетного сценария реестра.

Переменная BomgarService содержит ключ.Причина, по которой я использовал reg query для получения имени ключа, заключается в том, что значение после bomgar-scc-* является случайным значением, которое отличается для всех машин.

Когда я echo значение печатает правильный ключ, так что я знаю, что у меня правильный путь, но у меня проблемы с передачей этой ключевой переменной через Reg Add.

Я попытался передать переменную с помощью следующих попыток, которые все не увенчались успехом.

  • %BomgarService%
  • "\"%%BomgarService%%\""
  • ^"^%BomgarService^%^"

Вот мой код:

@echo off
setlocal

::Get the path of the bomgar service and set it to our variable 
"BomgarService"
set "BomgarService=reg query HKLM\SYSTEM\ControlSet001\Services /K /F 
bomgar-scc /S | find "HKEY_LOCAL_MACHINE""

%BomgarService%

REG ADD ^"^%BomgarService^%^" /v "Start" /t REG_DWORD /d 3 /f

pause

Выход:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\bomgar-scc-5C4F6978
ERROR: Invalid key name.
Type "REG ADD /?" for usage.
Press any key to continue . . .

1 Ответ

0 голосов
/ 29 января 2019

Я считаю, что ваша проблема в том, что вы пытаетесь избежать кавычек и строки.Вам нужно указать строку вместо этого.Ниже приведен пример, приведенный ниже.

Set "Test=HKEY_LOCAL_MACHINE\Software\NewKey"

reg.exe add "%Test%" /v "Start" /t REG_DWORD /d 3 /f

Вывод:

The operation completed successfully.
Press any key to continue . . .

РЕДАКТИРОВАТЬ:

После повторного изучения вашего сценария, вы, похоже, пытаетесь установить фактическую команду в строку.Вы можете использовать цикл for, чтобы извлечь результат этой команды из приведенного ниже.

for /f "tokens=*" %%A in ('reg query HKLM\SYSTEM\ControlSet001\Services /K /F bomgar-scc /S^| find /V "End of search"') do (
    Set "BomgarService=%%A"
)

echo %BomgarService%

Помните, что я не проверял вашу команду reg и не знаю ее результата.Если он делает то, что вам нужно, он должен вывести результат следующей команды и установить результат в виде строки.Пожалуйста, поиграйте с ним, чтобы убедиться, что он отображает то, что вы хотите, прежде чем добавлять рег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...