节点js启动和停止windows服务

我有一个nodeJS应用程序与作为Windows服务安装的第三方应用程序通信。 我的nodeJS应用程序需要此服务正在运行,但是如果有些情况下它可能不会。

我试图search一个方法来检查这个Windows服务是否正在运行,如果不启动它。 经过多天的search,我发现运行一个nodeJS应用程序作为一个Windows服务的许多结果,但没有一个提供启动/停止已经安装的Windows服务的能力。

这甚至有可能吗? 我find了像PSEXEC这样的工具,所以我可以让nodeJS运行这样一个脚本,但是如果nodeJS可以在本地执行这个任务,那将是更可取的。

任何有关这方面的信息都将是非常有用的,我很难相信其他人也没有遇到这种情况。

斯蒂芬

在Windows中,您可以从命令行input:

# Start a service net start <servicename> # Stop a service net stop <servicename> # You can also pause and continue 

所以,简单的答案是 – 使用subprocess在服务器启动时启动服务。 像这样的东西:

 var child = require('child_process').exec('net start <service>', function (error, stdout, stderr) { if (error !== null) { console.log('exec error: ' + error); } // Validate stdout / stderr to see if service is already running // perhaps. }); 

编辑:我也发现这个nodejs模块称为“ Windows服务 ”。 看起来很有希望你正在尝试做什么。 它的一些function是用C ++实现的,它试图查询Windows服务pipe理器。