中国.Rick

IT.Man

将任何应用程序注册为系统服务

将任何应用程序注册成后台服务程序,即:系统启动后该程序可以自动启动,并且在前台不要出现运行窗口。

解决办法如下:
需要使用Windows提供的两个工具:instsrv.exe和Srvany.exe(附件下载).
instsrv:  这个工具是把win32程序变成系统服务。
基本用法: 

instsrv  [服务名]  [应用程序绝对路径]  (增加服务)
instsrv  [服务名]  REMOVE  (删除服务)
但是并不是所有程序都适合做系统服务的,注册成系统服务后就是无法启动的,这时就需要用到srvany。主要原因其实就是下面两种情况引起的:

一、应用程序具有服务功能(能响应服务控制台的查询请求)

第一种方法:使用instsrv.exe(windows 2003资源工具包带有),指令格式:instsrv 服务显示名 应用程序路径

第二种方法:在注册表中手工添加,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\下新建一个项,项名为欲显示的服务名(也可以为任意字符,仅供识别),在这个项下新建如下键值:

"DisplayName"=(字符串值)服务显示名
"Description"=(字符串值)服务描述
"ImagePath"=(可扩充字符串值)应用程序路径
"ObjectName"=(字符串值)"LocalSystem"
"Type"=(dword值)10(16进制)
"Start"=(dword值)2(16进制)
"ErrorControl"=(dword值)1(16进制)

二、应用程序不具有服务功能(不能响应服务控制台的查询请求)

大多数应用程序都不具有服务功能,这样按照上述方法加进去的应用程序在服务刚启动时能够启动,但一当服务控制台无法接收到应用程序的反馈信息,便会终止程序,因此要使用srvany.exe(同样,在win2003资源工具包中)

1、instsrv.exe 服务显示名 srvany.exe

2、在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\下,找到刚添加的服务名,在其下新建项Parameters,再在其下新建字符串值,名Application,值为应用程序路径。

3、在服务中,找到刚添加的服务,在属性-登录中,勾选“允许服务与桌面交互”。
 

srvany:  这个工具就是用来解决上面的工具中的问题,你注册的时候把它当作你要的服务,在用它来启动你的应用程序。
基本用法: 

instsrv  [服务名]  [srvany的绝对路径]
具体步骤如下:
1.              注册服务:  path\instsrv  服务名  path\srvany.exe
2.              regedit打开注册表
3.              进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务名
4.              右键-新建-项  填入  Parameters
5.              打开Parameters,右键-新建-字符串值  Application
6.              双击Application  填入  应用程序的绝对路径,如:  D:\workspace\app\main.exe
7.              右键-新建-字符串值AppDirectory 
8.              双击AppDirectory  填入  应用程序的工作目录,如:  D:\workspace\app\
9.              启动服务。

在Parameters里还可以添加很多键值:
  AppDirectory  工作目录
  AppParameters  你的应用程序的参数。
  AppEnvironment  运行环境变量。
 

« 上一篇 | 下一篇 »
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 and Theme By BokeZhuti.cn

Copyright RickC.cn [浙ICP备09040539] Some Rights Reserved.