微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# – 使用Process.Start使用计划任务

我正在尝试将预定的工作语句集成到Process.Start中

Process.Start("schtasks.exe",""" + textBox1.Text + """);

如何将下面的参数添加到上面的Process.Start语句中?

schtasks /Create /SC DAILY /TN TestJob /TR "C:Program Filestesttest.exe 'C:'"

为什么打电话给PerformanceCounter很慢?

embedded式清单的C#4.0应用程序是否需要在客户机上安装数字证书或强名?

在“stream程布局面板”内为“面板中的控件”设置锚点

如何获得在Windows中的Z顺序?

IIS – 从.NET应用程序的CLI中将目录设置为应用程序

TCP保持活动频率不一致

寻找一个.NET SNMP扩展代理

找出键盘布局何时更改

我可以使用C#/ .NET以编程方式禁用窗口自动播放function吗?

C# – 获取ManagementObjectSearcher输出一个TextBox

您可以使用TaskScheduler直接与Windows任务管理器进行交互。 它会让你访问任务的一系列属性,并在什么条件下将被解雇。 当然,它需要更多的代码,但它能以管理的方式为您提供所需的全部控制。

这是一段代码,即时通讯使用我自己,它运作良好(我切断了我的一些业务逻辑,所以不是所有的参数将编译/有意义)。 它基本上会创建一个任务,将从现在开始一分钟。

TaskScheduler.TaskScheduler scheduler = new TaskScheduler.TaskScheduler(); scheduler.Connect(null,null,null); //run as current user. ITaskDeFinition taskdef = scheduler.NewTask(0); taskdef.RegistrationInfo.Author = "Me me me"; taskdef.RegistrationInfo.Description = "My description"; taskdef.Settings.ExecutionTimeLimit = "PT10M"; // 10 minutes taskdef.Settings.disallowStartIfOnBatteries = false; taskdef.Settings.StopIfGoingOnBatteries = false; taskdef.Settings.WaketoRun = true; ITimeTrigger trigger = (ITimeTrigger)taskdef.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME); DateTime nextRun = DateTime.Now.AddMinutes(1); // one minute from Now trigger.StartBoundary = nextRun.ToString("s",System.Globalization.CultureInfo.InvariantCulture); IExecAction action = (IExecAction)taskdef.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC); action.Id = "exe name"; action.Path = "path to exe"; action.WorkingDirectory = "working dir"; action.Arguments = "app arguments"; /// <-- here you put your arguments.. ITaskFolder root = scheduler.GetFolder("\"); IRegisteredTask regTask = root.RegisterTaskDeFinition( "My task name",taskdef,(int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,// user null,// password _TASK_logoN_TYPE.TASK_logoN_INteraCTIVE_TOKEN,//User must already be logged on. The task will be run only in an existing interactive session. "" //SDDL );

可以在这里找到更多说明和代码示例: 从托管代码调用Windows Vista(和Windows server 2008)中的任务计划程序

问题是你需要双重逃脱。

命令行中的适当命令用于:

schtasks /Create /SC DAILY /TN TestJob /TR "C:Program Filestesttest.exe 'C:'"

schtasks /Create /SC DAILY /TN TestJob /TR ""C:\Program Files\test\test.exe" "C:\""

这意味着你需要:

Process.Start("schtasks.exe",string.Format(@"/Create /SC DAILY /TN TestJob /TR """"{0}"" ""{1}""""",textBox1.Text.Replace("","\"),@"C:"));

(没有一个编译器方便,所以可能会有拼写错误,但你应该明白了。)我假设textBox包含exe的路径,不知道参数来自何处或硬编码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐