我正在尝试覆盖服务的注册表值,该服务在用户首次登录时保持“崩溃”。 故障排除后,我发现如果将服务启动时间从自动更改为手动,则可以解决此问题。 我正在尝试通过注册表批处理脚本来完成此任务。
变量BomgarService
拥有键。我使用 reg查询来获取键名的原因是因为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 . . .
答案 0 :(得分:0)
我相信您的问题是您正试图转义引号和字符串。您需要引用字符串。贝娄是我对此进行测试的示例。
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命令,并且不知道其结果。如果它已经完成了您想要的操作,它将输出以下命令的结果并将结果设置为字符串。在添加注册表之前,请先试玩一下以确保它可以显示您想要的内容。