我正在尝试查看是否可以从asp.net-mvc站点管理一堆Windows计划任务(设置新任务,更新现有任务的频率等),因为我们希望允许非技术用户更新这个信息(所以我们要避免人们不得不直接登录网络服务器等)
我发现你可以通常使用C#(下面的链接)来做这件事但不确定权利等可以通过网络应用程序进行管理。
如果无法从网上获取,是否有其他“远程”选项,那么大家可以这样做而无需进入特定的盒子?
答案 0 :(得分:10)
是的,您可以,只需使用可在C:\ Windows \ SysWOW64中找到的taskschd.dll 只需将其引用到您的Web应用程序并像这样使用它
using TaskScheduler;
namespace Test
{
public class Class1
{
public void Test()
{
var taskService = new TaskScheduler.TaskScheduler();
taskService.Connect();
var rootFolder = taskService.GetFolder(@"\");
var registeredTasks = rootFolder.GetTasks(0);
foreach (var registeredTask in registeredTasks)
{
}
}
}
}
为了向您证明它在这里运行的是从网页调用的运行代码的屏幕截图
从我的机器上可以看到,我从任务调度程序中抓取了5个项目。
BTW我在博客中为您创建了一篇完整文章,内容如下:
在这里http://macaalay.com/2013/10/02/programmatic-management-of-scheduled-task/
答案 1 :(得分:0)
我宁愿使用Quartz.net,它看起来比我更灵活,而不是Windows任务调度程序,但这个想法可以适用于两种类型的调度程序,请看下面的案例来获取想法,也许这有助于你:
编辑: 你需要记住以下几点: wcf将为您提供处理Web应用程序任务所需的“状态”状态,quartz可以处理读取数据库和设置新任务的工作(石英或Windows调度程序),Web表单只是前面的结束处理这些行动。
在石英学校工作就像:
public class ReadDBJob : IJob
{
public void Execute(IJobExecutionContext context)
{
// Do your work to read the database
// and create the tasks that you need
}
}