[英]c# : Create windows scheduled task as a different user
我正在使用內置的 TaskService 和 TaskDefinition 庫從 c# 動態創建 Windows 計划任務。
但是對於其中一些,我們需要創建然后以不同的用戶(本地服務或網絡服務)運行。 由於任務是動態創建和刪除的,我們無法手動編輯所有任務來更改用戶。 我們需要通過代碼來完成。 有可能嗎?
我嘗試了以下設置:
TaskDefinition.Principal.Id = "NETWORK SERVICE";
TaskDefinition.Principal.LogonType = TaskLogonType.ServiceAccount;
但這在創建任務時給了我一個非常描述性的錯誤:
System.Runtime.InteropServices.COMException: '(52,4):Task:'
如果沒有這兩行,它可以工作,但會以登錄用戶的身份創建它們。
我玩過任務計划程序的東西並復制了您的問題。 我相信我已經找到了一些東西,也許它們可以提供幫助。
1.首先,如果您使用服務帳戶在調試器中創建任務,您需要確保您的 Visual Studio 或其他 IDE 以管理員身份啟動,以確保您擁有執行此任務的正確權限。
2.我不知道,如果你這樣做后面的代碼反而使保存任務並運行了網絡服務,我必須確定Network Service
為NT AUTHORITY\\\\NETWORKSERVICE
中並重的原則,並在RegisterTaskDefinition方法:
TaskService tService = new TaskService();
TaskDefinition tDefinition = tService.NewTask();
tDefinition.Principal.Id = "NT AUTHORITY\\NETWORKSERVICE";
tDefinition.Principal.LogonType = TaskLogonType.ServiceAccount;
tDefinition.RegistrationInfo.Description = "Testing";
tDefinition.Triggers.Add(new DailyTrigger {DaysInterval = 2});
tDefinition.Actions.Add(new ExecAction("notepad.exe"));
tService.RootFolder.RegisterTaskDefinition(@"Test", tDefinition, TaskCreation.CreateOrUpdate,
"NT AUTHORITY\\NETWORKSERVICE", null,
TaskLogonType.ServiceAccount);
我使用上面的代碼制作了一個測試任務,該任務作為Network Service
成功添加到我的調度程序中,如下所示:
我猜以上兩點可能已經阻止了任務的添加,希望有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.