櫻子

我們知道,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)。