工作的安全性內容

工作會在特定安全性內容下註冊並執行。 用戶可以建立成功註冊、更新、刪除或執行工作的應用程式,但用戶必須在註冊工作時提供正確的認證,而且應用程式必須在具有正確許可權的進程中執行。

指定認證

您可以指定工作的安全性內容,方法是在 ITaskFolder::RegisterTask ITaskFolder::RegisterTaskDefinitionTaskFolder.RegisterTask TaskFolder.RegisterTaskDefinition for scripting) 方法中指定認證,或將主體指派給 ITaskDefinition 的 Principal 属性(TaskDefinition.Principal for scripting)。 如果為工作定義建立主體,然後使用 RegisterTaskDefinition 方法註冊工作定義,且方法參數中指定的不同認證,則 RegisterTaskDefinition 方法中指定的認證將會覆寫主體中的認證。 如果使用 XML 為工作定義建立主體,然後使用在方法參數中指定的不同認證的 RegisterTask 方法註冊工作的 XML,則 RegisterTask 方法中指定的認證將會覆寫主體中的認證。

註冊工作或指定工作的原則時,您可以指定使用者帳戶或群組。 用戶帳戶或群組的安全性內容會用於工作的安全性內容。 在這些方法和屬性中,您也會定義登入類型。 登入類型是由 TASK_LOGON_TYPE 列舉中的其中一個常數所定義。

使用 TASK_LOGON_PASSWORD 或 TASK_LOGON_S4U 旗標註冊的工作,只有在指定的使用者已啟用以 Batch 身分登入許可權時才會啟動。 管理員 istrators 和 Backup Operators 群組使用者預設會啟用此許可權。

當您呼叫 ITaskService::連線 (TaskService.連線 用於腳本)方法時,任何後續對工作排程器服務的方法呼叫都會使用傳遞至 連線 方法的認證。 使用互動式登錄類型註冊工作時,請務必考慮這點。 當您將登入類型等於 TASK_LOGON_INTERACTIVE_TOKEN 的工作註冊,且工作在工作定義的 Principal 屬性中未指定認證、在 RegisterTaskDefinition 的參數指定,或在傳遞至 RegisterTask 的 XML 中指定,則工作將會向呼叫 連線 方法的使用者認證註冊。

工作用戶帳戶控制 (UAC) 安全性

用戶帳戶控制 (UAC) 可讓用戶練習一般功能,例如執行程式,以及儲存和修改數據,而不需要公開系統管理許可權。 根據預設,當 UAC 開啟時,工作會以低階許可權執行。 工作可以藉由 TASK_RUNLEVEL_TYPE IPrincipal 之 RunLevel 屬性的 runLevel 屬性設定許可權等級,以提升許可權或低許可權來執行工作。 RunLevel 屬性的值會決定要執行工作動作的許可權等級。 如果工作的動作必須具有較高的許可權才能執行,則必須將 RunLevel 屬性設定為 TASK_RUNLEVEL_HIGHEST。 如果工作是使用工作安全性內容的 管理員 istrators 群組進行註冊,則如果您想要執行工作,您也必須將 RunLevel 屬性設定為 TASK_RUNLEVEL_HIGHEST。 如果使用 Builtin\管理員 istrator 帳戶或本機系統或本地服務帳戶註冊工作,則會忽略 RunLevel 屬性。 如果用戶帳戶控制 (UAC) 已關閉,也會忽略 屬性值。 RunLevel 屬性的值不會影響執行或刪除工作所需的許可權。

注意

將操作系統從 Windows XP 升級至 Windows Vista 之後,使用 Windows XP 上的 Builtin\管理員 istrator 帳戶註冊的工作,將會將 RunLevel 屬性設定為 TASK_RUNLEVEL_LUA。 這可能會導致某些工作失敗。 您可以手動更新此屬性,以確保所有工作都會執行。

 

從低許可權進程,您無法向 RunLevel 屬性等於 TASK_RUNLEVEL_HIGHEST 註冊工作,但您可以使用 RunLevel 屬性註冊等於TASK_RUNLEVEL_LUA的工作。 工作動作將會以低許可權執行。 您無法將工作註冊為 Builtin/管理員 istrator、Local System 或群組。

您可以從提高的許可權進程,向 RunLevel 屬性註冊等於TASK_RUNLEVEL_HIGHEST或TASK_RUNLEVEL_LUA的工作。 除非您使用 管理員 istrator 帳戶,否則工作將會以 RunLevel 屬性所決定的許可權等級執行,在此情況下,工作會以較高的許可權執行。

從提升許可權的程式,您可以註冊工作排程器 1.0 工作。 工作排程器服務會將工作的執行層級設定為TASK_RUNLEVEL_HIGHEST,而工作將會以較高的許可權執行。

從低許可權程式,您也可以註冊工作排程器 1.0 工作。 工作排程器服務會將工作的執行層級設定為TASK_RUNLEVEL_LUA,而工作會以低許可權執行。 如果從提升許可權的進程更新此工作,工作的執行層級會維持TASK_RUNLEVEL_LUA。

註冊工作的安全性

當您從屬於 管理員 istrators 群組成員的帳戶註冊工作時,您只需要在下列情況下註冊工作時指定密碼:

  • 如果您註冊工作以在帳戶的安全性內容或不同的用戶帳戶下執行,而且您在 RegisterTask RegisterTaskDefinition 方法中使用TASK_LOGON_PASSWORD旗標。
  • 如果您註冊工作以在不同的用戶帳戶的安全性內容下執行,而且您在 RegisterTask RegisterTaskDefinition 方法中使用 TASK_LOGON_S4U 旗標。

當您使用 registerTask 或 RegisterTaskDefinition 方法中的 TASK_LOGON_S4U 旗標或 TASK_LOGON_PASSWORD 旗標註冊工作時,您無法使用使用者群組作為工作的安全性內容。

當您從不是 管理員 istrators 群組成員的使用者帳戶註冊工作時,如果您註冊工作以在帳戶的安全性內容下執行,而且您使用 S4U 或互動式登入類型,則不需要在註冊工作時指定密碼。 否則,您必須在註冊工作時指定密碼。 此外,您無法使用本地服務帳戶或針對工作的安全性內容使用群組來註冊工作。

讀取、更新、刪除和執行工作的安全性

根據預設,建立工作的使用者可以讀取、更新、刪除和執行工作。 用戶必須具有工作檔的檔案寫入許可權,才能更新工作、工作檔案讀取許可權以讀取工作、刪除工作檔案的許可權以刪除工作,以及使用 IRegisteredTask::Run 或 RunEx 方法執行工作的檔案執行許可權,以及使用 IRegisteredTask::Run RunEx 方法執行工作的許可權(RegisteredTask.Run RunEx 進行腳本處理)。 管理員 istrators 群組或 SYSTEM 帳戶的成員可以讀取、更新、刪除和執行任何工作。 Users 群組、LocalService 帳戶和 NetworkService 帳戶的成員只能讀取、更新、刪除及執行他們建立的工作。 當工作檔案的 DACL 變更時,就會變更此預設行為,在此情況下,DACL 會定義哪些使用者具有檔案寫入、讀取、執行和刪除許可權。 若要設定工作檔案的許可權,請使用 IRegisteredTask.SetSecurityDescriptor 方法(RegisteredTask.SetSecurityDescriptor 進行腳本處理),或使用 RegisterTask 或 RegisterTaskDefinition 方法註冊工作時設定安全性描述符。

如果使用者需要變更工作的 DACL,除了讀取/寫入許可權之外,用戶還必須具有 WriteDAC 許可權,才能更新工作。

工作註冊資訊

關於工作排程器

工作安全性強化

TaskFolder.RegisterTaskDefinition

ITaskFolder::RegisterTaskDefinition

ITaskDefinition 的 Principal 屬性

TASK_LOGON_TYPE