using System.Security.Principal;
using Microsoft.Win32.TaskScheduler;
public static void Main()
RunRemoteTask("server12.mydomain.com", new WindowsIdentity("user1@mydomain.com"), "TaskName", new string[] { "paramValue" });
public static void RunRemoteTask(string server, WindowsIdentity user, string taskPath, string[] runParams)
WindowsImpersonationContext context = null;
context = user.Impersonate();
using (var ts = new TaskService(server))
var task = ts.GetTask(taskPath);
if (task == null) throw new InvalidOperationException();