是否有任何快速的方法,给定一个可执行文件,创建一个Windows服务,当启动时,启动它?
当前回答
要从可执行文件创建Windows服务,您可以使用sc.exe:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
实际的exe路径周围必须有引号,binPath=后面必须有空格。
关于sc命令的更多信息可以在Microsoft KB251192中找到。
注意,它并不适用于任何可执行文件:可执行文件必须是Windows服务(即实现ServiceMain)。当注册一个非服务可执行文件为服务时,你会在试图启动服务时得到以下错误:
错误1053:服务没有及时响应启动或控制请求。
有一些工具可以从任意的、非服务的可执行文件中创建Windows服务,请参阅其他答案以获得此类工具的示例。
其他回答
也许你所有的答案都更好,但是——只是为了完整地选择选项——我想提醒一下多年来使用的旧的、类似的方法:
SrvAny(由InstSrv安装)
如下所述: https://learn.microsoft.com/en-us/troubleshoot/windows-client/deployment/create-user-defined-service
这些额外的东西证明是有用的。需要以管理员身份执行
sc create <service_name> binpath= "<binary_path>"
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
如果您的服务名称有空格,请用引号括起来。
我有另一种方法,使用名为Topshelf的开源库。 我在一个c#项目中使用了它,但它可能在不同的编程语言中可用。
这段视频解释了如何使用它。 https://www.youtube.com/watch?v=y64L-3HKuP0
对很多人来说,这个问题的关键是你不能将任何旧的.exe作为服务安装,除非你使用Tomeg使用的旧方法。我找不到让它工作所需的windows nt工具包。
我被困在角落里,这是我的出路。
使用NSSM(非吸吮服务管理器)将. bat或任何. exe文件作为服务运行。
http://nssm.cc/
步骤1:下载NSSM 步骤2:使用nssm.exe Install [serviceName]安装服务 步骤3:这将打开一个GUI,您将使用它来定位您的可执行文件
与Sergii Pozharov的答案相同,但使用PowerShell cmdlet:
New-Service -Name "MyService" -BinaryPathName "C:\Path\to\myservice.exe"
参见New-Service了解更多定制。
这只适用于已经实现Windows服务API的可执行文件。
推荐文章
- 如何验证批处理文件中是否存在一个文件?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12
- 为什么git在Windows下记不住我的密码
- Git克隆/拉不断冻结在“存储密钥在缓存?”
- 有没有替换Windows (Visual C)的unistd.h ?
- 从Windows批处理文件设置系统环境变量?
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 最好的轻量级web服务器(只有静态内容)的Windows
- npm犯错!错误:EPERM:操作不允许,重命名
- 崇高的文本从命令行
- 如何将MongoDB作为Windows服务运行?
- 如何保持Python脚本输出窗口打开?
- 使用.bat文件检查文件夹是否存在
- 如何查看Windows库(*.lib)的内容