2012-04-07 216 views
2

我的应用程序需要在每天午夜时间重新启动。对于这份工作,根据我的说法,任务调度程序将是理想的使用方式,但我一直无法找到如何在C#中使用任务计划程序API(无需使用外部库)Windows任务计划程序C中的计划任务#

一旦启动来自任务计划程序的应用程序已完成,我还希望提供如何在某个特定时间自动关闭应用程序的建议(即使应用程序在特定时间可能没有响应,显示某些错误消息框或由于某些问题而不工作)

回答

3

嗯,我想你不知道schtasks命令。
您可以简单地打开命令提示符并键入schtasks /?以查看可用选项。
这里需要的是/create。当然这个选项需要一系列参数来配置你的计划任务。但在最后,你可以解决所有呼叫:

Process.Start("schtasks", commandParams); 

对于密切过程的一部分,我用了一个名为pskill小工具来自微软的Mark Russinovich编写的Sysinternals suite找到。这也可以在批处理文件集内调用为计划任务。

编辑:从psshutdown改为pskill(?你只需要关闭应用右)

+0

感谢您的回复。我尝试通过命令行手动设置此任务,并以管理员身份运行'cmd'后,我可以在开始时创建此任务'schtasks/create/tn“MyApp”/ tr c:\ app.exe/sc '用'成功创建任务'的信息。显然,我的应用程序需要管理员权限才能运行,并且当我重新启动计算机时,该应用程序无法运行。我检查了schticks/query,MyApp状态显示为'无法启动'。对此有何建议? – user1240679 2012-04-07 10:18:36

+0

我不认为这是因为这个管理员权限。我尝试了另一个不需要管理员previliges的简单应用程序,但是当我在重新启动后检查schtasks/query时,它提供了'Could not start'状态。 – user1240679 2012-04-07 10:43:51

+0

我将任务更改为登录,现在运行良好。 :-) – user1240679 2012-04-07 11:31:47

2

我建议你写一个服务来处理这个问题。另外,它为什么需要重启

然而,如果必须使用任务计划程序,尝试这样的:

schtasks /create /SC DAILY /TN AppName /TR AppExecutablePath /ST 0 
0:00 /ET TIMEFORENDTASK 

您可以直接在批处理脚本中键入这一点,当用户安装该应用程序运行批处理脚本,然后把这在卸载批处理脚本中:

schtasks /delete /TN AppName 
+0

感谢您的回复。我尝试使用schtasks命令通过命令行手动设置此任务,并以管理员身份运行cmd后,我可以创建此任务schtasks/create/tn“MyApp”/ tr c:\ app.exe/sc on从消息开始成功创建任务。显然,我的应用程序需要管理员权限才能运行,并且当我重新启动计算机时,该应用程序无法运行。我检查了schticks/query,MyApp状态显示为'无法启动'。对此有何建议? – user1240679 2012-04-07 10:21:57

+0

可能需要传递管理员的用户名和密码。看到标志/ U/P和/ RU – Steve 2012-04-07 10:28:32

+0

我不认为这是因为这个管理员权限。我尝试了另一个不需要管理员previliges的简单应用程序,但是当我在重新启动后检查schtasks/query时,它提供了'Could not start'状态。 – user1240679 2012-04-07 10:43:40