是否有任何快速的方法,给定一个可执行文件,创建一个Windows服务,当启动时,启动它?
当前回答
这些额外的东西证明是有用的。需要以管理员身份执行
sc create <service_name> binpath= "<binary_path>"
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
如果您的服务名称有空格,请用引号括起来。
其他回答
也许你所有的答案都更好,但是——只是为了完整地选择选项——我想提醒一下多年来使用的旧的、类似的方法:
SrvAny(由InstSrv安装)
如下所述: https://learn.microsoft.com/en-us/troubleshoot/windows-client/deployment/create-user-defined-service
要从可执行文件创建Windows服务,您可以使用sc.exe:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
实际的exe路径周围必须有引号,binPath=后面必须有空格。
关于sc命令的更多信息可以在Microsoft KB251192中找到。
注意,它并不适用于任何可执行文件:可执行文件必须是Windows服务(即实现ServiceMain)。当注册一个非服务可执行文件为服务时,你会在试图启动服务时得到以下错误:
错误1053:服务没有及时响应启动或控制请求。
有一些工具可以从任意的、非服务的可执行文件中创建Windows服务,请参阅其他答案以获得此类工具的示例。
延伸(凯文·唐)回答。
步骤1:下载并解压缩nssm-2.24.zip
步骤2:从命令行类型:
C:\> nssm.exe install [servicename]
它将打开如下所示的GUI(示例是UT2003服务器),然后简单地浏览到:yourapplication.exe
更多信息:https://nssm.cc/usage
几年前,我创建了跨平台的服务管理器软件,这样我就可以在Windows、Mac和Linux操作系统上启动PHP和其他脚本语言作为系统服务:
https://github.com/cubiclesoft/service-manager
Service Manager是一组预编译的二进制文件,使用几乎相同的命令行选项在目标操作系统上安装和管理系统服务(源代码也可用)。每个平台确实有细微的差异,但核心功能大多是标准化的。
如果子进程死亡,服务管理器将自动重新启动它。
使用Service Manager启动的进程应该定期观察两个通知文件,以处理重新启动和重新加载请求,但它们不一定要这样做。如果子进程没有及时响应受控的重新启动/重新加载请求,Service Manager将强制重新启动子进程。
这些额外的东西证明是有用的。需要以管理员身份执行
sc create <service_name> binpath= "<binary_path>"
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
如果您的服务名称有空格,请用引号括起来。
推荐文章
- 如何在命令提示符中使用空格?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 命令行从操作系统级配置中删除环境变量
- 在特定的文件夹中打开Cygwin
- 命令行svn for Windows?
- Gulp命令未找到-安装Gulp后错误
- 如何找到并运行keytool
- 我的Windows应用程序的图标应该包括哪些大小?
- 在Windows上设置Python simpleHTTPserver
- 如何从批处理文件运行PowerShell脚本
- 使用“start”命令并将参数传递给已启动的程序
- 无法在打开用户映射区段的文件上执行所请求的操作
- 'MyClass'的类型初始化式抛出异常
- 如何编写多行命令?
- 在安装了Resharper的Visual Studio中,键盘快捷键不活跃