Windows程序使用服务模式运行

通常一个程序运行后处于前台控制台,不小心关闭窗口或者程序本身的启动者关闭后程序就关闭了,如果想程序一直持续运行,则在Windows下需要注册为服务.

实现方法

脚本实现

要实现这个功能要用到微软提供的两个小工具instsrv.exesrvany.exe

  1. 注册服务

    先下载这两个程序然后放在同一个目录 , 然后命令行下面输入如下命令注册服务:

:: tjserver是服务名
instsrv.exe tjserver srvany.exe  

这个命令是把srvany.exe这个程序注册成了系统服务

  1. 注册表设置启动参数

然后进入注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下找到刚刚注册的服务名tjserver,在tjserver新建一个项,名称为Parameters,单击选中它然后在右侧的窗口新建一个字符串值名称为Application,将其值设置为你针要做为服务运行的程序的路径,例如我的路径为D:\\tools\\tjs.exe
这里特别要注意的是程序路径一定要写得跟前面的例子一样,也是就是中间是用双斜杠隔开,不然服务没办法自动启动。

然后可以再建立一个AppDirectory指定程序运行的初始目录(可选)。

如果你需要把自己注册的服务做得看起来更专业也更好理解的话还可以继续新建一个字符串值名称为Description,在其值里面你可以输入你想显示的服务描述。

  1. 设置登录账号(特殊权限时)
    还有一点特别要注意的是,如果你要做为服务运行的程序是在运行后需要界面的,我们可以在控制面板里面找到管理工具然后打开服务或者直接运行Services.msc命令打开服务,找到刚刚创建的服务右键打开属性,选中登陆选项卡,登陆身份选中本地系统帐户并选中允许服务与桌面交互最后点确定,这样你的服务在启动后就可以看到界面了。

  2. 删除注册的服务时

先停止服务,然后用命令d:\instsrv.exe tjserver remove 删除服务

  1. 网上还有一种和功能和instsrv.exe一样的界面操作的程序, 叫srvinstw.exe, 可自行查找