櫻子
我們知道,Windows服務在何時運行通常有兩種選擇:計算機啟動時啟動(“自動”),或僅在用戶或程序明確需要啟動時運行(“手動”)。啟動了的服務往往會一直在后臺運行并占用寶貴的系統(tǒng)資源,只有在需要發(fā)生作用時才能派上用場。為了改善這種情況,早在Windows 7和Windows Server 2008 R2時期,微軟就明智地將“事件機制”直接集成到了Windows服務體系結(jié)構(gòu)中,它可以在滿足某些條件時才啟動或停止Windows服務,這樣服務觸發(fā)器就誕生了。
常見的使用服務觸發(fā)器的情況有:
·設備接入時或在系統(tǒng)啟動時設備就已經(jīng)存在;
·計算機加入或離開一個域;
·防火墻端口打開或關(guān)閉;
·計算機策略或用戶策略更改;
·TCP/IP網(wǎng)絡堆棧上的第一個IP地址變?yōu)榭捎茫蚨褩I系淖詈笠粋€IP地址變?yōu)椴豢捎?
·發(fā)生自定義事件或系統(tǒng)狀態(tài)更改
我們使用服務觸發(fā)器的情況可能不限于上述所列條目,Windows 8附帶47個觸發(fā)器功能,而Windows 10則至少有75個這方面的功能。服務觸發(fā)器在Windows中的使用一直在穩(wěn)步增長。毫無疑問,微軟將在未來的Windows版本中還會添加更多其他有用的觸發(fā)器。
要用服務觸發(fā)器啟動或停止服務,我們可以利用Service Trigger Editor免費實用程序來完成。該程序不需要安裝,下載可執(zhí)行文件并雙擊它即可啟動該程序(下載地址:ht tps://www.coretechnologies.com/products/ServiceTriggerEditor/)。
當Service Trigger Editor啟動時,我們將會看到主窗口上部的窗格中顯示安裝在電腦中的所有服務。運行的服務將在其左側(cè)有一個綠色圓圈,而具有觸發(fā)器的服務將以藍色拼圖(觸發(fā)器的符號)為特征(圖1)。
點擊“Service”(服務)菜單,我們可以啟動或停止服務。從“View”(查看)菜單中選擇“Only Ser vicesWith Triggers”,則可以隱藏沒有觸發(fā)器的服務。
屏幕的底部的窗格顯示所選服務的觸發(fā)器(如果有的話)。其中Descr iption一欄顯示觸發(fā)器的描述信息,Additional Details則顯示附加的描述信息。
我們可以使用“Trigger”菜單添加、編輯或刪除觸發(fā)器。
如果要為服務添加新觸發(fā)器,依次點擊菜單“Trigger→Add...”進行添加。隨后會呼出“ AddTri gger”(添加觸發(fā)器)對話框,在左右兩個選擇框中分別指定要執(zhí)行的操作和將觸發(fā)該操作的事件。例如,選擇“Start the service whenThe computer joins a domain”表示當計算機加入域時啟動服務(圖2)。
一些觸發(fā)器事件具有特殊的配置,除了選擇類型外,還需要輸入額外的數(shù)據(jù)。例如,當我們選擇了“Aspecificdevicearrives”(特定設備已連接),還需要選擇相應的設備,在下拉列表中就包含所有可供選擇的設備(圖3)。如果需要,還可以輸入自己的GUID來指定,格式如:{53f56307-b6bf-11d0-94f2-00a0c91efb8b}。注意GUID輸入要用大括號括起來(下同)。另外,如下的幾個主要的常見事件類型也需要輸入額外的數(shù)據(jù)。
Afirewallportisopened/closed(防火墻端口已打開/關(guān)閉):必須輸入一個或多個要監(jiān)視的端口。根據(jù)Microsoft的技術(shù)文檔,數(shù)據(jù)應使用此格式(某些部分是可選的):;;;。
Acustom event occurs(發(fā)生自定義事件):必須輸入事件提供程序的GUID。
Apacket/requestarrivesonanetworkprotocol(網(wǎng)絡協(xié)議數(shù)據(jù)包/請求到達):必須選擇網(wǎng)絡協(xié)議(或輸入未列出的協(xié)議的GUID)以及端點或接口GUID。注意:此事件僅在Windows8或WindowsServer2012及更高版本上可用。
Acustomsystemstatechangeoccurs(發(fā)生自定義系統(tǒng)狀態(tài)更改):必須輸入事件提供程序的GUID。同樣,此事件僅在Windows8或WindowsServer2012及更高版本上可用。
當我們希望對現(xiàn)有的觸發(fā)器進行編輯或查看時,只需在主窗口底部的窗格中點選該觸發(fā)器,然后從“Trigger”菜單中選擇“Edit/View…”,即可打開“Edit/ViewTrigger”對話框進行設置,它實際上與添加觸發(fā)器的對話框相同(圖4)。
如果需要刪除現(xiàn)有的觸發(fā)器,先在主窗口下部的窗格中選擇該觸發(fā)器,然后依次選擇“Trigger→Remove”菜單命令,系統(tǒng)將要求確認刪除,確認后將從列表中刪除觸發(fā)器。我們也可以從“Trigger”菜單中選擇“Removeall”刪除所選服務的所有觸發(fā)器。上述操作也可以通過右鍵菜單命令來執(zhí)行(圖5)。