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

时间:2011-10-20 05:26:06

标签: windows-services installer inno-setup

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

7 个答案:

答案 0 :(得分:31)

您可以使用sc start [service]启动服务,sc stop [service]停止服务。有些服务net start [service]正在做同样的事情。

但是如果要在同一批次中使用它,请注意sc stop不会等待服务停止。在这种情况下,您必须使用net stop [service]后跟net start [service]。这将同步执行。

答案 1 :(得分:22)

您可以使用以下内容创建.bat文件:

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

答案 2 :(得分:5)

net.exe stop "servicename" && net.exe start "servicename"

答案 3 :(得分:4)

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

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

但是,如果您不知道该服务是否首先运行并想要重新启动或启动它,请使用此命令:

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

如果服务已经运行,则此方法有效。

作为参考,这里是条件处理符号的documentation

答案 4 :(得分: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));

答案 5 :(得分:1)

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

答案 6 :(得分:0)

PowerShell具有Restart-Service cmdlet,该cmdlet可以根据需要启动或重新启动服务。

  

Restart-Service cmdlet向Windows Service Controller发送指定消息的停止消息,然后发送开始消息。如果服务已经停止,则会在不通知您错误的情况下启动它。

     

您可以通过服务名称或显示名称来指定服务,也可以使用InputObject参数传递表示要重新启动的每个服务的对象。

比运行两个单独的命令要简单得多。

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

Restart-Service 'Service Name'

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

powershell -command "Restart-Service 'Service Name'"