在C#中启动计划任务

问题描述 投票:0回答:3

我正在尝试用 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

效果很好!

有什么建议吗?

c# scheduled-tasks remote-connection
3个回答
10
投票

我建议使用 .NET 包装器之一作为任务调度程序。

我以前用过这个,效果很好。


9
投票

使用 Microsoft.Win32.TaskScheduler;

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

2
投票

我使用以下效果很好,可能会有所帮助(插入你的论点)

var p = new Process
                            {
                                StartInfo =
                                    {
                                        UseShellExecute = false,
                                        FileName = "SCHTASKS.exe",
                                        RedirectStandardError = true,
                                        RedirectStandardOutput = true,
                                        CreateNoWindow = true,
                                        WindowStyle = ProcessWindowStyle.Hidden,
                                        Arguments = arguments
                                    }
                            };
            p.Start();
© www.soinside.com 2019 - 2024. All rights reserved.