在任務計劃程式 2.0 中，除了指定時間外，支援多種基於事件的觸發器，用以啟動任務。以下是一些常見的基於事件的觸發器及其實際應用場景：

### 1. 基於事件的觸發器
這些觸發器可以在指定的事件發生時啟動任務，例如：

- **事件記錄的新增**：當特定事件被記錄到 Windows 事件記錄檔時，例如系統事件、安全事件或應用程式事件。
- **同一事件的重複發生**：當特定事件在一定時間內重複發生時，可以配置為觸發任務。
- **特定條件的系統狀態**：如閒置一定時間後啟動特定任務、開機時、登出時等。

### 實際應用場景：
- **系統監控**：當系統記錄到某特定錯誤或警告事件，觸發一個任務來發送通知或執行診斷程式。
- **文件變更檢測**：當某個文件被修改時，可用來觸發備份或通知使用者。
- **定期維護任務**：當系統閒置時自動運行清理或維護任務。

### 如何設定這些觸發條件
以下是設定基於事件的觸發器的步驟：

1. **開啟任務計劃程式**：
   - 點擊「開始」菜單，搜索並開啟「任務計劃程式」。

2. **建立新任務**：
   - 在右側操作面板中，選擇「建立基本任務」或「建立任務」。

3. **設定名稱和描述**：
   - 輸入任務的名稱和描述，以便未來可能的識別。

4. **選擇觸發器類型**：
   - 在觸發器選項中選擇「使用者登錄」、「在計劃的時間」，或選擇「事件」，根據需要。

5. **設定事件觸發器**：
   - 如果選擇事件，將會要求輸入詳細參數，包括事件來源、事件ID、日誌名稱等，這些可以從 Windows 事件檢視器中找到。例如：
     - **事件日誌**：可以選擇「應用程式」、「安全性」或「系統」等日誌。
     - **事件來源**：根據應用程式或服務來選擇。
     - **事件ID**：指定特定事件的 ID 來目標化特定的事件。

6. **設定行動**：
   - 定義當事件發生時要執行的行動，例如啟動程式、發送電子郵件或顯示消息。

7. **設定條件和設定**：
   - 可以在條件和設定選項卡中進一步定制任務的條件和行為，例如執行失敗時的重試設置、是否在時機不合時停止任務等。

8. **確認並儲存任務**：
   - 確認所有設定無誤後，點擊「確定」以儲存該任務。

這些設定方法可幫助使用者針對特定事件進行自動化控制，確保系統在特定情況下自動執行必要的操作，提升效率與安全性。
在任務計劃程式 2.0 中，除了指定時間外，還有哪些基於事件的觸發器可以用來啟動任務，這些觸發器的實際應用場景是什麼？例如，當檔案被修改或事件記錄到事件紀錄檔時，是否能詳細解釋如何設定這些觸發條件？
**任務計劃程式**（英語：**Task Scheduler**），也稱**工作排程器**。這是 Microsoft Windows 中的一個組件，可以預先計劃在特定時間或指定時間後啟動程式或指令碼。它在 Windows 95 的 Microsoft Plus! 中以「系統代理」（System Agent）首次引入，隨後在 Windows 98 中被更名為任務計劃程式。任務計劃程式啟動前，Windows 事件記錄服務必須已在執行。

此服務不應與電腦排程混淆，因其為分配 CPU 資源到記憶體中的處理程序。

## 版本

### 任務計劃 1.0

任務計劃程式 1.0 搭載於 Windows 2000、Windows XP 和 Windows Server 2003。它執行為一個 Windows 服務，任務定義和計劃儲存於二進位的 `.job` 檔案，操作各任務就是直接操作各 `.job` 檔案，每個任務對應一個操作。在 Windows 95、Windows 98 和 Windows Me 中，任務計劃程式使用一個普通的 `mstask.exe` 程式執行。在 Windows 95 和 Windows 98 中，它還在通知區域顯示一個狀態圖示；在 Windows Me 中則是執行為一個隱藏服務，但可以顯示一個托盤圖示。在 Windows 2000、Windows XP 和 Windows Server 2003 中，它被實現為一個 Windows 服務，電腦程式和指令碼可以通過六個 COM 介面存取此服務。微軟還提供了一個計劃助手 DLL、一個例子 VBScript 和一個自動任務計劃程式的設定檔。

任務計劃程式除了控制台中的圖形化使用者介面，Windows 還提供兩個命令列工具來管理工作排程器：`at.exe`（已棄用）和 `schtasks.exe`。但是，`at.exe` 不能存取用控制台或 `schtasks.exe` 建立或修改的任務。另外，使用 `at.exe` 建立的任務預設非互動；互動任務需要被顯式請求。

### 任務計劃 2.0

任務計劃程式 2.0 在 Windows Vista、Windows Server 2008 及之後版本中存在。重新設計的「任務計劃程式」使用者介面基於微軟管理控制台。除了在指定的時間或時間間隔後執行任務，任務計劃程式 2.0 還支援行事曆和基於事件的觸發器，比如在特定紀錄檔被記錄到事件紀錄檔時啟動一個任務，或者在發生一系列事件時啟動任務。另外，同一個事件觸發的多個任務可以組態為同時或者按預先組態的順序以鏈式執行一系列動作，而無須建立多個工作排程器。任務也可組態為基於系統狀態執行，諸如閒置指定時間、啟動時、登出時，或者只是特定周期或指定時間。對 Windows 事件紀錄檔還可以使用 XPath 表達式過濾。任務也可在指定事件發生後延遲指定時間再執行，或者不斷重複直至其他某些事件發生。任務還可組態執行失敗時執行的操作。操作可以回應觸發器，既基於事件又基於時間，不僅包含啟動應用程式，還執行一系列自訂操作。任務計劃程式已包含大量為眾多應用程式準備的內建操作，包括傳送電子郵件、顯示訊息方塊、觸發一個 COM 控制代碼等。使用任務計劃程式 API 還可指定自訂操作。任務計劃程式會在歷史紀錄檔保留所有任務的所有執行詳細資訊。Windows Vista 使用任務計劃程式 2.0 執行各種系統級任務；因此，任務計劃程式服務不再允許被禁用（除非直接修改登錄檔）。

任務計劃程式 2.0 提供了一個 API 以允許電腦程式和指令碼建立任務。它採用 42 個 COM 介面組成。任務計劃程式 2.0 的任務檔案基於 XML 並且人類可讀，遵循「任務計劃程式方案架構」。雖然可以做到，但微軟不建議手動建立任務檔案，而應該使用任務計劃程式 API。

#### 其他功能

* 新的安全功能，包括使用「憑據管理器」為工作群組電腦的任務提供密碼，使用 Active Directory 為加入域的電腦的任務提供憑據，以防止這些資訊被輕易檢索。另外，工作排程器會在其自身的對談執行，而不是使用當前使用者的系統服務對談。
* 可以喚醒遠端電腦，或使用 BIOS 計時器將機器從睡眠或休眠中喚醒，以執行工作排程器或執行剛錯過的工作排程器。
* 可以將任務直接附加到事件檢視器中的事件。

## 任務

任務計劃程式按各項受管理的任務運作。任務會在特定條件下以執行操作回應。定義一個任務可以關聯一系列操作，其中可以包括啟動應用程式或採取其他自訂操作，to a set of triggers, which can either 基於時間或基於事件。此外，一個任務也可以包含定義如何執行操作的元資料，例如任務將在哪個安全上下文執行。任務被序列化為 `.job` 檔案並儲存在名為「任務資料夾」的特殊資料夾中。在編程角度，任務資料夾可以使用 `ITaskFolder` 介面或 `TaskFolder` 指令碼物件存取，單個任務可以使用 `IRegisteredTask` 介面或 `RegisteredTask` 物件存取。

## 軟體缺陷

在 Windows 2000 和 Windows XP 中，當電腦準備使用 `sysprep` 進行磁碟映像時，分配給以系統權限執行的任務不起作用。Sysprep 會更改安全識別碼（SID）以避免重複，但不會更新工作排程器為使用新的 SID。因此，所有 SYSTEM 的工作排程器在映像的電腦上都會執行失敗。沒有適用於此問題的解決方案，但重新計劃該任務可以暫時緩解問題。

在 Windows Vista 和 Windows Server 2008 上，如果未安裝 Service Pack 2，任務計劃程式中的「下次執行時間」可能顯示錯誤。

當使用者在 Windows Vista、7、2008 以及 2008 R2 作業系統上的「微軟管理控制台」執行「任務計劃程式 2.0」版本時會提示使用者當前正在執行「任務計劃程式 1.0」的通知。雖然只是一個不足為慮的小瑕疵，很可能是軟體開發人員在重寫該組件時忘記修復此 Bug。但在後續的 Windows 8 和 Windows Severe 2012 作業系統中已得到糾正。

## 參見

* 計劃工作任務
* cron
* VisualCron
* Windows 工作管理員

## 參考資料

## 外部連結

* Task Scheduler （頁面存檔備份，存於網際網路檔案館） on MSDN
* The Log File in the Task Scheduler May Be Incorrectly Formatted and Difficult to Read （頁面存檔備份，存於網際網路檔案館）
* Unable to Delete Text in the Task Scheduler Log File （頁面存檔備份，存於網際網路檔案館）
* Task Scheduler Service Does Not Start （頁面存檔備份，存於網際網路檔案館）
* Scheduled Program Does Not Start in Task Scheduler （頁面存檔備份，存於網際網路檔案館）
* Cannot Disable Task Scheduler （頁面存檔備份，存於網際網路檔案館）
* Scheduled Tasks for Active Directory Management （頁面存檔備份，存於網際網路檔案館）
* Task Scheduler Managed Wrapper （頁面存檔備份，存於網際網路檔案館）
**斷點**（英語：Breakpoint）是程式中為了除錯而故意停止或者暫停的地方。

除錯設定斷點可以讓程式執行到該行程式時停住，藉此觀察程式到斷點位置時，其變數、暫存器、I/O 等相關的變數內容，有助於深入了解程式運作的機制，發現、排除程式錯誤的根源。

## 觸發條件

由程式設計師指定一條指令，讓程式在執行這條指令前暫停：這樣的斷點最為常見，叫做「指令斷點」。

讀取或者修改某個記憶體位址時也可以觸發斷點，這類斷點由執行時的資料觸發，有「條件斷點」「資料斷點」「觀察點（英語：watchpoint）」等很多叫法。

除此之外，斷點也可以在某個固定的時間點或者在按下某個按鍵時觸發。

## 參見

* 除錯
* 排錯
* 除錯工具
* 程式錯誤
* 白盒測試 ## 概觀

取代傳統上一次等待一個完整的指令然後再做執行的方式，事件驅動程式模型下的系統，基本上的架構是預先設計一個事件迴圈所形成的程式，這個事件迴圈程式不斷地檢查目前要處理的資訊，根據要處理的資訊執行一個**觸發函式**進行必要的處理。其中這個外部資訊可能來自一個目錄夾中的檔案，可能來自鍵盤或滑鼠的動作，或者是一個時間事件。

對一個事件驅動（event driven）系統進行程式設計，因此可以視為改寫系統預設觸發函式的行為，來符合自己需要的一種動作。輸入的事件可以放進事件迴圈或者是經由已經註冊的中斷處理器來與硬體事件互動；而許多的軟體系統使用了混和這兩種技術的處理。預先設計好的演算法確定了一件事，那就是當他們被需要的時候，就會在適當的時機被觸發。也因此提供了一個類比中斷驅動環境（interrupt driven environment）的軟體抽象架構。事件驅動程式設計基本上包含了許多小程式片段，這些小程式片段被稱為事件處理器並且被用來回應外部的事件與分發事件。通常尚未被事件處理器處理的事件，都會被系統放在一個稱為事件佇列的資料結構中，等待被處理。

許多情況下，事件處理器可以自己觸發事件，因此也可能形成一個事件串。
事件驅動程式設計的著重於彈性以及非同步化上面，並且企圖盡可能的 modeless。 圖形化使用者介面這類程式就是典型的事件驅動設計方式。

計算機作業系統是事件驅動程式的典型範例。在作業系統的最底層，中斷處理器的動作就像是硬體事件的直接處理器，搭配著 CPU 執行分配事件規則動作。對軟體處理程式而言，基本上作業系統可視為一個事件分配器，傳送資料和軟體中斷給使用者自己寫的軟體處理程式。 ## 版本

### 任務計劃 1.0

任務計劃程式 1.0 搭載於 Windows 2000、Windows XP 和 Windows Server 2003。它執行為一個 Windows 服務，任務定義和計劃儲存於二進位的 `.job` 檔案，操作各任務就是直接操作各 `.job` 檔案，每個任務對應一個操作。在 Windows 95、Windows 98 和 Windows Me 中，任務計劃程式使用一個普通的 `mstask.exe` 程式執行。在 Windows 95 和 Windows 98 中，它還在通知區域顯示一個狀態圖示；在 Windows Me 中則是執行為一個隱藏服務，但可以顯示一個托盤圖示。在 Windows 2000、Windows XP 和 Windows Server 2003 中，它被實現為一個 Windows 服務，電腦程式和指令碼可以通過六個 COM 介面存取此服務。微軟還提供了一個計劃助手 DLL、一個例子 VBScript 和一個自動任務計劃程式的設定檔。

任務計劃程式除了控制台中的圖形化使用者介面，Windows 還提供兩個命令列工具來管理工作排程器：`at.exe`（已棄用）和 `schtasks.exe`。但是，`at.exe` 不能存取用控制台或 `schtasks.exe` 建立或修改的任務。另外，使用 `at.exe` 建立的任務預設非互動；互動任務需要被顯式請求。 **任務計劃程式**（英語：**Task Scheduler**），也稱**工作排程器**。這是 Microsoft Windows 中的一個組件，可以預先計劃在特定時間或指定時間後啟動程式或指令碼。它在 Windows 95 的 Microsoft Plus! 中以「系統代理」（System Agent）首次引入，隨後在 Windows 98 中被更名為任務計劃程式。任務計劃程式啟動前，Windows 事件記錄服務必須已在執行。

此服務不應與電腦排程混淆，因其為分配 CPU 資源到記憶體中的處理程序。