从可执行文件创建Windows服务

从可执行文件创建Windows服务,windows,windows-services,Windows,Windows Services,在给定可执行文件的情况下,是否有任何快速方法可以创建Windows服务,该服务在启动时启动?要从可执行文件创建Windows服务,可以使用sc.exe: sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>" sc.exe create binPath=“” 在实际的exe路径周围必须有引号,在binPath=后面必须有空格 请注意,它不适用于任何可执行文件:可执行文件

在给定可执行文件的情况下,是否有任何快速方法可以创建Windows服务,该服务在启动时启动?

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

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
sc.exe create binPath=“”
在实际的
exe
路径周围必须有引号,在
binPath=
后面必须有空格

请注意,它不适用于任何可执行文件:可执行文件必须是Windows服务()。将非服务可执行文件注册为服务时,尝试启动服务时会出现以下错误:

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

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

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

  • 步骤1:下载NSSM
  • 步骤2:使用
    nssm.exe安装[serviceName]
  • 步骤3:这将打开一个GUI,您将使用该GUI定位可执行文件
延伸(凯文·唐)答案

步骤1:下载并解压缩

步骤2:来自命令行类型:

C:\>nssm.exe安装[servicename]

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


更多信息:

许多现有答案包括安装时的人工干预。这可能是一个容易出错的过程。如果有许多可执行文件希望作为服务安装,那么您最不希望做的就是在安装时手动执行它们

针对上述场景,我创建了一个命令行工具,用于将可执行文件作为服务安装。您只需编写(并且只需编写一次)一个简单的服务配置文件以及可执行文件。跑

serman install <path_to_config_file>

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

sc create  <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>
sc创建binpath=
sc站
sc queryex
sc删除

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

我已经测试了一个好的产品:。不是免费的,但是他们有30天的试用期,所以你可以试一试…

你可以查看我的小型免费实用程序,用于服务创建\编辑\删除操作。以下是创建示例:

转到服务->修改->创建

可执行文件(谷歌驱动器):

源代码:

博文:

服务编辑器类:

与相同,但使用PowerShell cmdlet:

新服务-名称“MyService”-二进制路径名“C:\Path\to\MyService.exe”
有关更多自定义信息,请参见


这只适用于已经实现了的可执行文件。

可能您所有的答案都更好,但是-为了完成选项的选择-我想提醒一下多年来使用的类似的旧方法:

SrvAny(由InstSrv安装)

如下所述:

几年前,我创建了跨平台Service Manager软件,以便在Windows、Mac和Linux操作系统上启动PHP和其他脚本语言作为系统服务:

Service Manager是一组预编译的二进制文件,它们使用几乎相同的命令行选项()在目标操作系统上安装和管理系统服务。每个平台都有细微的差异,但核心功能大多是规范化的

如果子进程死亡,Service Manager将自动重新启动它


使用Service Manager启动的进程应该定期监视两个通知文件以处理重新启动和重新加载请求,但它们不一定要这样做。如果子进程没有及时响应受控的重新启动/重新加载请求,Service Manager将强制重新启动该子进程。

是Microsoft关于如何实现这一点的说明。这是有史以来最好的Service Manager。我甚至设法让PlexWatch使用NSSM作为一项服务安装。这套设备永远是一项服务吗?每次windows启动时,服务都会启动吗?还有,在没有用户交互的情况下,我如何做到这一点?某种脚本或代码?这太棒了,我希望我能接受这个答案,而不是第一个答案:-(我可以在服务器上运行Dropbox作为服务。绝对是一个不吸引人的工具!exe文件必须是windows服务项目,才能与nssm一起工作,还是可以是正常的exe文件?),因为当我使用nssm启动时[servicename]它显示错误,如windows服务无法从命令提示符下运行等。正确语法
nssm.exe安装[servicename]
。此解决方案可以工作,但如果您有GUI应用程序,它将无法在Win Serever2003上工作。如果以后要删除它,请使用
nssm.exe删除[youservicename]
我假设对nginx的引用是因为这是您希望作为服务运行的特定程序?在我看到上面hmd的评论之前,我以为您是想通过暗示nginx是需要安装的依赖项或其他方式来提供帮助……但在GUI中,您似乎没有安装nginx,而是安装了一个不真实的tournament服务器?只是指出该示例不一致,可能会产生误导。一个简单的“假设您想将nginx作为服务安装,那么它将如下所示:”会有帮助。@7 yes
nginx
不是必需的,也不会引起误解。如果您想从命令提示符提供服务名称,则该命令也是可选参数。当我尝试使用nssm时,我的Windows窗体正在运行,但窗体未显示…为什么?它将应用程序作为Windows服务运行,大多数都是f或者后端。也可能是它作为另一个root/admin用户名运行。您必须检查它。您还可以查看更多信息