樱子
我们知道,Windows服务在何时运行通常有两种选择:计算机启动时启动(“自动”),或仅在用户或程序明确需要启动时运行(“手动”)。启动了的服务往往会一直在后台运行并占用宝贵的系统资源,只有在需要发生作用时才能派上用场。为了改善这种情况,早在Windows 7和Windows Server 2008 R2时期,微软就明智地将“事件机制”直接集成到了Windows服务体系结构中,它可以在满足某些条件时才启动或停止Windows服务,这样服务触发器就诞生了。
常见的使用服务触发器的情况有:
·设备接入时或在系统启动时设备就已经存在;
·计算机加入或离开一个域;
·防火墙端口打开或关闭;
·计算机策略或用户策略更改;
·TCP/IP网络堆栈上的第一个IP地址变为可用,或堆栈上的最后一个IP地址变为不可用;
·发生自定义事件或系统状态更改
我们使用服务触发器的情况可能不限于上述所列条目,Windows 8附带47个触发器功能,而Windows 10则至少有75个这方面的功能。服务触发器在Windows中的使用一直在稳步增长。毫无疑问,微软将在未来的Windows版本中还会添加更多其他有用的触发器。
要用服务触发器启动或停止服务,我们可以利用Service Trigger Editor免费实用程序来完成。该程序不需要安装,下载可执行文件并双击它即可启动该程序(下载地址:ht tps://www.coretechnologies.com/products/ServiceTriggerEditor/)。
当Service Trigger Editor启动时,我们将会看到主窗口上部的窗格中显示安装在电脑中的所有服务。运行的服务将在其左侧有一个绿色圆圈,而具有触发器的服务将以蓝色拼图(触发器的符号)为特征(图1)。
点击“Service”(服务)菜单,我们可以启动或停止服务。从“View”(查看)菜单中选择“Only Ser vicesWith Triggers”,则可以隐藏没有触发器的服务。
屏幕的底部的窗格显示所选服务的触发器(如果有的话)。其中Descr iption一栏显示触发器的描述信息,Additional Details则显示附加的描述信息。
我们可以使用“Trigger”菜单添加、编辑或删除触发器。
如果要为服务添加新触发器,依次点击菜单“Trigger→Add...”进行添加。随后会呼出“ AddTri gger”(添加触发器)对话框,在左右两个选择框中分别指定要执行的操作和将触发该操作的事件。例如,选择“Start the service whenThe computer joins a domain”表示当计算机加入域时启动服务(图2)。
一些触发器事件具有特殊的配置,除了选择类型外,还需要输入额外的数据。例如,当我们选择了“Aspecificdevicearrives”(特定设备已连接),还需要选择相应的设备,在下拉列表中就包含所有可供选择的设备(图3)。如果需要,还可以输入自己的GUID来指定,格式如:{53f56307-b6bf-11d0-94f2-00a0c91efb8b}。注意GUID输入要用大括号括起来(下同)。另外,如下的几个主要的常见事件类型也需要输入额外的数据。
Afirewallportisopened/closed(防火墙端口已打开/关闭):必须输入一个或多个要监视的端口。根据Microsoft的技术文档,数据应使用此格式(某些部分是可选的):;;;。
Acustom event occurs(发生自定义事件):必须输入事件提供程序的GUID。
Apacket/requestarrivesonanetworkprotocol(网络协议数据包/请求到达):必须选择网络协议(或输入未列出的协议的GUID)以及端点或接口GUID。注意:此事件仅在Windows8或WindowsServer2012及更高版本上可用。
Acustomsystemstatechangeoccurs(發生自定义系统状态更改):必须输入事件提供程序的GUID。同样,此事件仅在Windows8或WindowsServer2012及更高版本上可用。
当我们希望对现有的触发器进行编辑或查看时,只需在主窗口底部的窗格中点选该触发器,然后从“Trigger”菜单中选择“Edit/View…”,即可打开“Edit/ViewTrigger”对话框进行设置,它实际上与添加触发器的对话框相同(图4)。
如果需要删除现有的触发器,先在主窗口下部的窗格中选择该触发器,然后依次选择“Trigger→Remove”菜单命令,系统将要求确认删除,确认后将从列表中删除触发器。我们也可以从“Trigger”菜单中选择“Removeall”删除所选服务的所有触发器。上述操作也可以通过右键菜单命令来执行(图5)。