2012-06-26 51 views
4

我的應用程序我想要監視遠程服務器上特定計劃任務的「狀態」選項卡,並根據該狀態執行操作。即運行一個任務,如果它還沒有運行,等遠程計劃任務狀態

截至目前,我啓動cmd.exe作爲一個進程在C#中,psexec'ing該機器schtasks成文本文件,閱讀該文本文件,然後我執行相應的操作。

有沒有更好的方法來做這個過程(獲得一個schtask的特定狀態),不涉及第三方開放源代碼庫?

+0

請參閱「[堆棧溢出不允許標題中的標籤](http://meta.stackexchange.com/a/130208)」。 –

回答

1

你可以嘗試使用本地TaskService COM API:

//add reference to the 'Task Scheduler 1.1 Type Library' 

using TaskScheduler; 

//... 

TaskSchedulerClass ts = new TaskSchedulerClass(); 
ts.Connect(remotehost, user, domain, password); 
IRunningTaskCollection tasks = ts.GetRunningTasks(1); 
foreach (IRunningTask task in tasks) 
{ 
    Console.WriteLine(task.Name); 
} 

有關安全性的一些任務和權限看到http://msdn.microsoft.com/en-us/library/windows/desktop/aa382140(v=vs.85).aspx

或者,如果powershell是一個可能更容易取決於版本的選項。