应用场景
有几个应用系统,工作在windows平台上,由金蝶等第三方厂商提供,运行都是stand_alone模式。弊端很明显,每次开机/重启,都必须RDP登录上去,把应用开启,然后断开RDP连接。(不能注销,一注销应用也就跟着shutdown了)
必须将其注册为Windows服务,所幸Microsoft在Resource Kit Tools包中提供了实现方法。
工作原理
开机由某后台用户(可以是系统用户,本地用户和域用户,只要权限足够即可,稳定方面考虑,建议system用户)启动superdaemon进程 srvadny.exe,再由其调用application.exe载入后台进程工作。这一点,可以在任务管理器里确认,srvany.exe和 application.exe是同时存在的。
原理和Linux的Xinet服务机制较像,关于Xinetd的服务机制,鸟哥的Blog有详细描述。
实现步骤
1.安装Resource Kit Tools,下载地址
2.利用instsrv注册一个srvany的实例MyApps
1
2 3 4 5 6 7 8 9 |
C:\Program Files\Windows Resource Kits\Tools>instsrv.exe MyApps "C:\Program File
s\Windows Resource Kits\Tools\srvany.exe" The service was successfuly added! Make sure that you go into the Control Panel and use the Services applet to change the Account Name and Password that this newly installed service will use for its Security Context. |
3.编辑该实例的各项属性
注册表编辑器regedit.exe,进入以下路径,展开以下
“HKEY_LOCAL_MACHINE\SYSTEM\currentcontrolset\services”,找到MyApps项,新建子项,名称为”Parameters”,在里面建立以下键值
1
2 3 |
Application="MyApps.exe程序绝对路径"
Description="该服务描述信息" AppDirectory="程序初始目录,一般指该进程工作所在目录" |
4.打开service.msc,找到MyApps服务,编辑其它属性,如启动用户,开机是否自动启动。
5.在service.msc中启动该服务。
6.重启服务器,确定该service自动启动成功。