首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将双引号字符串传递给sc.exe for binPath

如何将双引号字符串传递给sc.exe for binPath
EN

Stack Overflow用户
提问于 2022-01-20 17:49:00
回答 2查看 691关注 0票数 0

我正在尝试提出一个PowerShell进程来引用包含空格的服务路径。这是因为Qualys 105484

我知道解析引擎很复杂,运行带有嵌入引号的cmd命令至少是很困难的。我希望我是亲密的,另一双眼睛会有帮助。

我试图从PowerShell运行的cmd命令是

代码语言:javascript
复制
sc create OcaLogSvc binpath= "\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""

下面是一些尝试和注释,分别显示了binPath的结果

代码语言:javascript
复制
$serviceName = "OcaLogSvc"
& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""\""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= '"""\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= "\C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\"
# \C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"

我通过运行

代码语言:javascript
复制
sc.exe qc $serviceName | sls "BINARY"

尝试了其他几种组合,但只有上面的组合成功了。

我可能会放弃,转而将一些字符串输送到.bat文件中,然后我可以调用这些文件。或者直接编辑注册表。我只是觉得这是有可能的。

我不能使用停止解析参数,因为当我发现路径名时,我打算为它们使用变量。我也只是大规模的目标命令,没有争论。我将手动或至少以另一种方式解决这些问题,而不是我在这里试图做的事情。

我还试图通过CommandLineToArgvW通过Split-CommandLine检查cmd字符串,但是这些知识并没有很好地转化到上面的例子中。

EN

回答 2

Stack Overflow用户

发布于 2022-01-20 18:32:22

似乎你在寻找:

'"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"' -它将导致字符串"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"

只因为命令中有空格而发出试图补救的命令。另一种选择可能是使用旧的DOS名称c:\progra~1\,或者将应用程序安装到不包含像C:\AppRecovery\Agent\R3LogService\OcaLogSvc这样的空间的文件夹中

票数 1
EN

Stack Overflow用户

发布于 2022-01-20 19:10:09

谢谢你指出这个文档

我试图使用sc.exe命令修改计算机中的一个服务,但未能更新它,尽管该命令已成功运行!然后我想我们可以使用注册表项更新exe路径。

正如您现在可能看到的那样,服务的详细信息存在于注册表以下:

代码语言:javascript
复制
HKLM:\SYSTEM\CurrentControlSet\Services\$service

因此,为了用引号更新服务,只需在注册表中使用命令Set-Itemproperty更新它,如下所示:

代码语言:javascript
复制
$service = "OcaLogSvc"
Set-Itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\$service" -Name 'ImagePath' -value '"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70791040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档