我正在尝试查看是否可以从 asp.net-mvc 站点管理一堆 Windows 计划任务(设置新任务、更新现有任务的频率等),因为我们希望允许非技术用户更新此信息(所以我们希望避免人们必须直接登录网络服务器等)
我看到您通常可以从 C# 执行此操作(下面的链接),但不确定可以通过 Web 应用程序进行管理的权利等。
如果无法通过网络实现,是否还有其他“远程”选项,这样人们就可以在不进入特定盒子的情况下做到这一点?
我正在尝试查看是否可以从 asp.net-mvc 站点管理一堆 Windows 计划任务(设置新任务、更新现有任务的频率等),因为我们希望允许非技术用户更新此信息(所以我们希望避免人们必须直接登录网络服务器等)
我看到您通常可以从 C# 执行此操作(下面的链接),但不确定可以通过 Web 应用程序进行管理的权利等。
如果无法通过网络实现,是否还有其他“远程”选项,这样人们就可以在不进入特定盒子的情况下做到这一点?
是的,您可以,只需使用可以在 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 个项目。
顺便说一句,我在我的博客中为您创建了一篇关于如何:
在这里http://macaalay.com/2013/10/02/programmatic-management-of-scheduled-task/
我宁愿使用Quartz.net,它对我来说看起来更灵活,而不是 windows 任务调度程序,但这个想法可以适用于两种类型的调度程序,看看下面的案例来了解这个想法,也许这可以帮助你:
编辑:您需要牢记以下几点:wcf 将为您提供处理 Web 应用程序任务所需的“状态”,quartz 可以处理读取数据库和设置新任务的工作(quartz 或windows scheduler) 和 web 表单只是处理这些操作的前端。
在石英中建立工作可能很简单:
public class ReadDBJob : IJob
{
public void Execute(IJobExecutionContext context)
{
// Do your work to read the database
// and create the tasks that you need
}
}