2011-11-17 51 views
5

我有使用C#TaskManager對象創建任務的代碼。在Windows 7上,它工作正常,但在Windows XP上(大概是其他Windows),它完全不起作用,因爲該任務的默認用戶是系統,因此沒有用於顯示GUI的會話。如果我在控制面板小部件中手動修改創建的任務以將作業設置爲僅在用戶登錄時才運行,並且僅爲特定用戶運行,則一切正常。但是,儘管搜索了幾個小時,我看不到在C#對象中設置這些選項的選項。任何人都知道現有對象的解決方案?我不想重寫所有的東西來手動運行調度程序EXE,並通過命令行傳遞東西。如何在C#中使用TaskScheduler設置「僅在登錄時運行」和「以...運行」?

Q

+1

任務調度程序接口是基於COM的,您需要例如IScheduledWorkItem :: SetFlags()。沒有「C#TaskManager對象」。也許你應該發佈一個鏈接到你在某處找到的代碼? –

+0

謝謝!我最終自己發現了這一點,但當然你對我的使用第三方包裝是正確的,我沒有意識到這一點!我發佈瞭解決方案。 –

+0

@QuinxyvonBesiex你應該在下面添加你的答案,然後在需要的時間量之後,選擇它作爲答案 - 保持乾淨 – Prescott

回答

4

好的,我想出了答案!

我沒有意識到它,但我一直在使用第三方Task Scheduler Managed Wrapper(自從我編寫代碼的那一部分起,我已經有一段時間了),這就解釋了爲什麼幫助很難找到!我剛纔偶然發現了這個頁面,在他們的例子中就是我所需要的! detailed solution in context can be found here,但關鍵部分是:

// Create a new task definition and assign properties 
TaskDefinition td = ts.NewTask(); 
td.Principal.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
td.Principal.LogonType = TaskLogonType.InteractiveToken; 

感謝您的幫助!

+0

除了在某些情況下設置登錄類型,還有更多。如果這個答案本身並沒有讓你的代碼工作,看到這個問題:http://stackoverflow.com/questions/43599271/how-to-set-run-only-if-logged-in-and-run-as-與-的TaskScheduler-在-C/43767201#43767201 – MadTigger

相關問題