2011-11-03 120 views
8

我想在c#中編寫一個簡單的表單,它將在一臺計算機上運行一個計劃任務。 磨我至今是:C#啓動一個計劃任務

private void button_Click(object sender, EventArgs e) 
    { 
     try 
     { 

      for (int i = 0; i < num_of_computers; i++) 
      { 
       string line; 
       line = (" /run /tn myTask /s " + _ReplacerObj.MyComputers[i] + " /u user s /p password"); 
       proc.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; 
       proc.FileName = @"C:\WINDOWS\SYSTEM32\schtasks.exe"; 
       proc.Arguments = line; 
       Process.Start(proc); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Error Message!"); 
     } 

出於某種原因,這並不工作(IE - 計劃任務沒有啓動)。我試圖從cmd運行這個:

c:\windows\system32\schtasks.exe /run /tn myTask /s myIp /u user /p password 

它工作正常。 有什麼建議嗎? 感謝!

+0

「出於某種原因」 - 什麼原因?它可能是任何東西。你有任何錯誤消息?當您在調試器中運行此代碼時,Process.Start會返回一個值 - 即Process? – ChrisF

+0

您是否確認要開始的字符串與您在命令提示符下測試的內容完全相同? –

回答

0

我用它工作正常以下,可能會有所幫助

var p = new Process 
          { 
           StartInfo = 
            { 
             UseShellExecute = false, 
             FileName = "SCHTASKS.exe", 
             RedirectStandardError = true, 
             RedirectStandardOutput = true, 
             CreateNoWindow = true, 
             WindowStyle = ProcessWindowStyle.Hidden, 
             Arguments = arguments 
            } 
          }; 
      p.Start(); 
6

我建議使用的任務調度的.NET包裝的一個(在你的論點堵塞)。

我以前用過this one的效果很好。

0

using Microsoft.Win32.TaskScheduler;

using (TaskService tasksrvc = new TaskService(@"\\" + servername, username, domain, password, true)) 
{  
    Task task = tasksrvc.FindTask(taskSchedulerName); 
    task.Run(); 
}