如何更改 Windows 服务的可执行文件的路径?

sam*_*sam 71 windows services

我想从命令行更改服务的可执行文件的路径。

我怎样才能做到这一点?

我想从该服务的路径运行另一个 .EXE 到可执行文件。

小智 90

您可以使用该sc config命令更改服务指向的路径:

SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"
Run Code Online (Sandbox Code Playgroud)

这将更新所调用的服务YourServiceName并将“可执行文件路径”条目更改为C:\SomeDirectory\YourFile.EXE. 之后您将需要重新启动您的服务,您可以这样做:

NET STOP YourServiceName & NET START YourServiceName
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的是 binpath= 和命令之间需要一个空格。笨蛋,我知道。 (7认同)
  • binPath 中的引号可以用反斜杠转义:\" (5认同)
  • 当“可执行文件的路径”还包含引号和其他参数时怎么办?例如: `"C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"` 遗憾的是我不得不为此使用 regedit 路径一。 (2认同)

小智 20

您需要在注册表中执行此操作:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

导航到服务,然后修改图像名称以反映新路径

与往常一样,请先备份系统。


Mav*_*ont 6

上面提供的答案很好,我无法回复它,但要补充的是,如果您需要在路径中包含引号或其他参数,比如说要修复注册表中未加引号的路径漏洞,例如图像路径,您可以以管理员身份从 CMD执行以下操作:

(例如,对于 C:\Program Files (x86)\YourService\YourProcess.exe)

SC CONFIG YourService binPath= "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Run Code Online (Sandbox Code Playgroud)

您可以以管理员身份从 powershell执行以下操作:

 SC.exe CONFIG YourService binPath= --% "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Run Code Online (Sandbox Code Playgroud)

这些将为您提供以下结果:

"C:\Program Files (x86)\YourService\YourProcess.exe"
Run Code Online (Sandbox Code Playgroud)

...血淋淋的争论和转义参数是一场噩梦!希望这对将来的人有帮助。