零贰'Blog

零贰'Blog - 记录日常点点滴滴..........

任意exe程序注册成windows系统服务

软件系统
[阅读原文]()

某软件每次开机都需要手动启动,就算添加成开机启动项,在win8.1下权限的管理更加严格,开机时并不能成功启动软件(无人值守时开机),因此在网上搜索把exe注册成系统服务的办法,找到论坛两个帖子,可将代理程序注册成系统服务开机自动启动而不用每次重启系统都要手动启动程序。本经验非原创,内容来自于以上两个帖子。

工具/原料

Instsrv.exe(可以给系统安装和删除服务)
Srvany.exe(可以让程序以服务的方式运行)

方法/步骤

要实现这个功能要用到微软提供的两个小工具“instsrv.exe”和“srvany.exe”。先下载这两个程序然后放在同一个目录,我是直接放在D盘的,然后进入到DOS命令行下面输入如下命令注册服务:

d:\instsrv.exe tjserver d:\srvany.exe //tjserver是服务名

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

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

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

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

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

删除注册的服务 先停止服务,然后用命令“d:\instsrv.exe tjserver remove”删除服务 网上还有一种和功能和instsrv.exe一样的界面操作的程序,名称为“srvinstw.exe”,只需要点点鼠标就可以完成上面的第一步,详细使用方法就不说了,很简单的。