是否有任何快速的方法,给定一个可执行文件,创建一个Windows服务,当启动时,启动它?


当前回答

我测试了一个很好的产品:AlwaysUp。不是免费的,但是有30天的试用期,所以你可以试一试。

其他回答

延伸(凯文·唐)回答。

步骤1:下载并解压缩nssm-2.24.zip

步骤2:从命令行类型:

C:\> nssm.exe install [servicename]

它将打开如下所示的GUI(示例是UT2003服务器),然后简单地浏览到:yourapplication.exe

更多信息:https://nssm.cc/usage

与Sergii Pozharov的答案相同,但使用PowerShell cmdlet:

New-Service -Name "MyService" -BinaryPathName "C:\Path\to\myservice.exe"

参见New-Service了解更多定制。

这只适用于已经实现Windows服务API的可执行文件。

使用NSSM(非吸吮服务管理器)将. bat或任何. exe文件作为服务运行。

http://nssm.cc/

步骤1:下载NSSM 步骤2:使用nssm.exe Install [serviceName]安装服务 步骤3:这将打开一个GUI,您将使用它来定位您的可执行文件

要从可执行文件创建Windows服务,您可以使用sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

实际的exe路径周围必须有引号,binPath=后面必须有空格。

关于sc命令的更多信息可以在Microsoft KB251192中找到。

注意,它并不适用于任何可执行文件:可执行文件必须是Windows服务(即实现ServiceMain)。当注册一个非服务可执行文件为服务时,你会在试图启动服务时得到以下错误:

错误1053:服务没有及时响应启动或控制请求。

有一些工具可以从任意的、非服务的可执行文件中创建Windows服务,请参阅其他答案以获得此类工具的示例。

这些额外的东西证明是有用的。需要以管理员身份执行

sc create  <service_name> binpath= "<binary_path>"
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

如果您的服务名称有空格,请用引号括起来。