如何使用命令提示符重新启动服务?

问题描述 投票:0回答:7

我想使用 Inno Setup 在

[Icons]
部分使用命令提示符重新启动 Windows 服务。请帮我解决问题。

windows-services installation inno-setup
7个回答
38
投票

您可以使用

sc start [service]
启动服务并使用
sc stop [service]
停止服务。对于某些服务
net start [service]
也在做同样的事情。

但如果你想在同一批中使用它,请注意

sc stop
不会等待服务停止。在这种情况下,您必须使用
net stop [service]
,然后使用
net start [service]
。这将同步执行。


23
投票

您可以创建一个包含以下内容的 .bat 文件:

net stop "my service name"
net start "my service name"

7
投票
net.exe stop "servicename" && net.exe start "servicename"

7
投票

要重新启动正在运行的服务:

net stop "service name" && net start "service name"

但是,如果您一开始不知道该服务是否正在运行并想要重新启动或启动它,请使用以下命令:

net stop "service name" & net start "service name"

无论服务是否已在运行,这都有效。

作为参考,这里是关于条件处理符号的文档


2
投票

这是我的代码,使用

SC
命令启动/停止 Windows 服务。如果服务无法启动/停止,它将打印日志信息。您可以通过 Inno Setup 尝试一下。

{ start a service }
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc start ServiceName:'+SysErrorMessage(ResultCode));
{ stop a service }
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode));

1
投票

您可以使用SC命令启动、停止和查询服务。至于 innosetup 我不确定。


1
投票

PowerShell 具有

Restart-Service
cmdlet,可根据需要启动或重新启动服务。

Restart-Service
cmdlet 向指定服务的 Windows 服务控制器发送一条停止消息,然后发送一条启动消息。如果服务已停止,则会启动该服务而不通知您错误。

您可以通过服务名称或显示名称来指定服务,也可以使用

InputObject
参数传递一个代表您要重新启动的每个服务的对象。

这比运行两个单独的命令更简单。

最简单的使用方法只需直接传递服务名称或显示名称:

Restart-Service "$ServiceName"

可以直接从标准 cmd 提示符使用如下命令:

powershell -Command "Restart-Service '%ServiceName%'"
© www.soinside.com 2019 - 2024. All rights reserved.