Windows创建自定义服务的正确姿势(Instrsrv&Srvany)

By | 2019-09-16

Windows NT工具包(Windows NT Resource Kit)提供了两个小工具,可以让我们创建自定义服务(适合于NT应用和一些16进制应用,批处理除外)。

Instrsrv.exe:从系统安装和移除服务

Srvany.exe:主要作用是将任何应用程序处理成为一个可以作运行的服务

按照以下步骤操作,来创建用户自定义服务:

(为了简化说明,以下示例假设我将两个工具放到了C:\Service文件夹下面)

运行cmd,输入以下命令:

C:\Service\INSTSRV.EXE MyService C:\Service\SRVANY.EXE

在实际操作中,注意将C:\Service替换成你自己的路径
MyService 是要创建的服务名称,可以根据需要自定义

注意: 操作完成后,为了验证是否安装成功,需要到注册表下面检查ImagePath 键:ImagePath 键的注册表路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename

如果ImagePath键的值是SRVANY.EXE的完整路径( C:\Service \Srvany.exe),说明设置正确,否则会报 Event ID 7000 “The service name failed to start.” 错误。

  • 运行注册表编辑器(Regedt、Regedt32.exe),然后找到以下路径:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<MyService>
  • 选中<MyService>,右键选择新建-项,或者点击编辑菜单, 点击编辑-新建-项. 输入以下信息后确认:
    项名称: Parameters
  • 选中刚才新建的Parameters.
  • 在右侧空白处点击鼠标右键,新建-字符串值,输入以下信息后确认:
    名称: Application
    类型: REG_SZ
    数据: <path>\<application.ext>
    其中<path>\<application.ext>是到可执行程序的绝对路径。 (例如:C:\windows\Notepad.exe)

至此完成自定义服务的安装,默认情况下,新创建的服务被配置为自动启动. 如果需要更改,运行服务管理器(services.msc),找到创建的服务,在服务属性中更改为相应的启动类型,打开属性-登录选项卡,勾选:允许服务与桌面交互(一般你要运行的程序都是有界面的吧)

启动服务的几种方法:

– 从服务管理器启动
– 在命令提示符下启动:

NET START <My Service>

– 使用 Sc.exe 命令(早期版本这个命令在windows工具包中存在,Windows7专业版下默认已安装):

<path>\Sc.exe start <My Service>

大功告成!

发表回复

您的电子邮箱地址不会被公开。