您的位置:首页 > 其它

普通程序作为系统服务在后台运行

2011-12-11 10:09 351 查看

普通程序作为系统服务在后台运行

服务,是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。其实,服务就是一种特殊的应用程序,它从服务启动开始就 一直处于运行状态,而普通应用程序在运行之后就处于休眠状态,直到用户再次对其进行操作;在WinXP里,服务是在系统加载以后就自动启动的,而不需要登 陆,但自动运行的普通应用程序是在WinXP加载并登录以后才执行的,关于手动添加服务需要的情况并不多,但是还是会遇到,我就遇到两次,所以将收集的资 料加自己的经验整理一下。 由于Windows平台下的应用程序并不是每个都可以作为服务正常运行的,因此,对于安装服务,一般分为2种情况:情况1是安装可以作为服务运行的程序成 为WinXP的服务;情况2是安装不可以作为服务运行的程序(即普通的应用程序)成为WinXP的服务。

安装使用的工具:srvinstw.exe和srvany.exe,Win2000资源工具包中提供的工具,可以到网上找。(http://www.21safe.com/editor/UploadFile/2007-1/18/2007118143211264.rar)(http://www.gbdown.com/SoftDown.asp?ID=956)

情况1:安装可以作为服务运行的程序成为WinXP的服务

srvinstw.exe是一个图形界面添加/删除服务的应用程序,添加服务如下:

1.选择"Install a service",点击"下一步"。其中"Install a service"是安装一个服务,"Remove a service"是删除一个服务。

2.选择"Local Machine",点击"下一步"。其中"Local Machine"是本地计算机,"Remote Machine"是远程计算机。

3.在对话框中输入服务名称(任意)。

4.选择可作为服务运行的程序的路径。

5.选择安装服务的类型。其中"Service is its own process"是程序特有的功能作为服务,"File system driver"是文件系统驱动,"Device drive"是设备驱动。

6.选择启动服务的帐户。其中"System Account"是系统帐户,"Other Account"是其他帐户(需要输入帐户名和密码)。

7.选择启动类型。其中"Automatic"是自动,"Manual"是手动,"Disabled"是禁用。

8.点击"完成",服务就安装成功了。

情况2:安装不可以作为服务运行的程序(即普通的应用程序)成为WinXP的服务

很多朋友在用上面的方法把一个应用程序添加为服务后,却不能够正常启动服务。例如,使用上面的方法添加 Windows"system32"mspaint.exe作为WinXP的服务,因为并不是每个应用程序都能够作为WinXP的服务,所以上面的结果是 必然的。实际上大多数应用程序都不能作为WinXP的服务,要使用srvany.exe,用它来实现添加mspaint.exe作为WinXP的服务,方 法如下:

1.按照上文介绍的步骤,添加新的服务(服务名mspaint)在选择程序路径时,应该填写的是srvany.exe的路径,而不是mspaint.exe的路径。

2.在注册表中找到HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"mspaint这个键 值,在其下新建一个项,名称为"Parameters",在这个下面新建一个子键,名称为"Application",类型为"REG_SZ"(即"字符 串值"),该键的键值应为mspaint.exe的具体路径,比如"C:Windowssystem32mspaint.exe"。

建议:一般添加服务的时候习惯将相关的软件放在%systemroot%/system32/目录下面,为了以后维护和检查错误的方便,最好在硬盘上另外 创建目录,比如放在Program Files目录下面,创建一个容易记忆和一看就知道是什么的子目录,将相关的要加为服务的软件放置在该目录之下,然后按照上面的步骤进行。

srvinstw.exe适用用windows界面的服务添加删除服务,昨天在客户处发现新出现的一个msn病毒,通过msn传播,而且变种出现极快,该 病毒运行以后竟然可以封杀注册表程式和任务管理器,试过其他的几个类似的也被封杀,好好郁闷。这个时候可以通过DOS下面的工具来尝试杀掉相关的服务,有 关工具的介绍和使用将在另外的文章里面介绍。在DOS界面下的一个添加删除服务的命令是instsrv.exe。可以通过命令行的方式来添加服务。

下面是手工添加服务的方法,适用用找不到添加工具的时候收工添加服务,

通过修改注册表来添加服务,

在注册表编辑器,展开分支"HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services",在右侧窗格 中显示的就是本机安装的服务项。如果要新建服务,只须点击"编辑→新建→项",然后为此项命名,如"test";然后右击该项,选择"新建→字符串值" 或"新建→Dword值"即可。添加一个服务项目具体需要添加的键值如下:

"DisplayName",字符串值,对应服务名称;

"Description",字符串值,对应服务描述;

"ImagePath",字符串值,对应该服务程序所在的路径;

"ObjectName",字符串值,值为"LocalSystem",表示本地登录;

"ErrorControl",Dword值,值为"1";

"Start",Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;

"Type",Dword值,应用程序对应10,其它对应20。

另外,还要在"test"项下新建一个"Enum"项。如果有些必须通过srvany来加载的还必须添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个路径就需要指到srvany所在的路径。

命令行实例

1、首先在DOS环境下执行该程序,创建一个服务

INSTSRV.EXE oa_service SRVANY.exe

成功后,你可以在“服务”管理中看到已经创建成功,并且默认为“自动”启动方式。——但是还不足使用。

2、可以用文本编辑器创建一个后缀为“.reg”文件,假设为:oa_service.reg。内容如下:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\oa_service\Parameters]

"Application"="c:\\程序\\NewE3Manager.exe"

"AppParameters"="administrator wq 1"

"AppDirectory"="c:\\程序"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: