是否有任何快速的方法,给定一个可执行文件,创建一个Windows服务,当启动时,启动它?
当前回答
许多现有的答案包括安装时的人工干预。这可能是一个容易出错的过程。如果您有许多可执行文件想要作为服务安装,那么您最不想做的事情就是在安装时手动执行它们。
对于上面描述的场景,我创建了serman,这是一个命令行工具,用于将可执行文件作为服务安装。您所需要编写的(只编写一次)是一个简单的服务配置文件以及可执行文件。运行
serman install <path_to_config_file>
将安装服务。Stdout和stderr都记录了日志。欲了解更多信息,请查看项目网站。
工作配置文件非常简单,如下所示。但它也有许多有用的特性,如下面的<env>和<persistent_env>。
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}\hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable to the system.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
其他回答
许多现有的答案包括安装时的人工干预。这可能是一个容易出错的过程。如果您有许多可执行文件想要作为服务安装,那么您最不想做的事情就是在安装时手动执行它们。
对于上面描述的场景,我创建了serman,这是一个命令行工具,用于将可执行文件作为服务安装。您所需要编写的(只编写一次)是一个简单的服务配置文件以及可执行文件。运行
serman install <path_to_config_file>
将安装服务。Stdout和stderr都记录了日志。欲了解更多信息,请查看项目网站。
工作配置文件非常简单,如下所示。但它也有许多有用的特性,如下面的<env>和<persistent_env>。
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}\hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable to the system.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
也许你所有的答案都更好,但是——只是为了完整地选择选项——我想提醒一下多年来使用的旧的、类似的方法:
SrvAny(由InstSrv安装)
如下所述: https://learn.microsoft.com/en-us/troubleshoot/windows-client/deployment/create-user-defined-service
我有另一种方法,使用名为Topshelf的开源库。 我在一个c#项目中使用了它,但它可能在不同的编程语言中可用。
这段视频解释了如何使用它。 https://www.youtube.com/watch?v=y64L-3HKuP0
对很多人来说,这个问题的关键是你不能将任何旧的.exe作为服务安装,除非你使用Tomeg使用的旧方法。我找不到让它工作所需的windows nt工具包。
我被困在角落里,这是我的出路。
延伸(凯文·唐)回答。
步骤1:下载并解压缩nssm-2.24.zip
步骤2:从命令行类型:
C:\> nssm.exe install [servicename]
它将打开如下所示的GUI(示例是UT2003服务器),然后简单地浏览到:yourapplication.exe
更多信息:https://nssm.cc/usage
使用NSSM(非吸吮服务管理器)将. bat或任何. exe文件作为服务运行。
http://nssm.cc/
步骤1:下载NSSM 步骤2:使用nssm.exe Install [serviceName]安装服务 步骤3:这将打开一个GUI,您将使用它来定位您的可执行文件
推荐文章
- 如何在命令提示符中使用空格?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 命令行从操作系统级配置中删除环境变量
- 在特定的文件夹中打开Cygwin
- 命令行svn for Windows?
- Gulp命令未找到-安装Gulp后错误
- 如何找到并运行keytool
- 我的Windows应用程序的图标应该包括哪些大小?
- 在Windows上设置Python simpleHTTPserver
- 如何从批处理文件运行PowerShell脚本
- 使用“start”命令并将参数传递给已启动的程序
- 无法在打开用户映射区段的文件上执行所请求的操作
- 'MyClass'的类型初始化式抛出异常
- 如何编写多行命令?
- 在安装了Resharper的Visual Studio中,键盘快捷键不活跃