【发布时间】:2014-08-22 00:10:41
【问题描述】:
我有一个 C# 应用程序,它将在 Task Scheduler 程序中创建重复任务以执行特定程序(根据重复条件发送的触发电子邮件)。
使用 C# 我能够在 Visual Studio 和 IIS Express 中运行应用程序时成功创建任务。看到弹出命令窗口,任务进入成功。
但是,当直接通过 IIS(通过 Web 浏览器)进入程序时,我发现任务调度程序没有任何变化,并且没有显示任何状态信息的命令窗口。
我尝试以管理员身份运行,但无济于事。根据下面的代码,当计划任务不存在时,我需要进行哪些修改才能成功添加计划任务,或者修改已经存在的现有重复计划任务并仅更改重复日期?
这是我到目前为止所做的:
if (chkActivate.SelectedItem.Text == "Deactivate Reminders")
{
chkDaysOfWeek.Enabled = false;
chkEmailOption.Enabled = false;
command = "schtasks.exe /Change /TN \"Action Item Reminder\" /Disable";
}
else
{
chkDaysOfWeek.Enabled = true;
chkEmailOption.Enabled = true;
command = "schtasks.exe /Change /TN \"Action Item Reminder\" /Enable";
}
List<string> days = new List<string>();
for (int idx = 0; idx < chkDaysOfWeek.Items.Count; idx++)
{
if (chkDaysOfWeek.Items[idx].Selected == true)
{
strquery = "UPDATE EmailOption set [Value] = 'true' where [Option] = '" + chkDaysOfWeek.Items[idx].Text.ToString() + "'";
days.Add(chkDaysOfWeek.Items[idx].Text.Substring(0, 3).ToUpper());
}
else
strquery = "UPDATE EmailOption set [Value] = 'false' where [Option] = '" + chkDaysOfWeek.Items[idx].Text.ToString() + "'";
SqlCommand cmd = new SqlCommand(strquery, mycon);
cmd.ExecuteNonQuery();
}
// string runascmd = @"schtasks.exe /DELETE /TN ""Action Item Reminder"" /f & schtasks.exe /CREATE /SC WEEKLY /D " + string.Join(",", days) + @" /TN ""Action Item Reminder"" /TR ""C:\ActionAIM_Source\bin\ActionItemReminder.exe"" /ST 00:01 /f & """ + command;
string runascmd = @"schtasks.exe /CREATE /SC WEEKLY /D " + string.Join(",", days) + @" /TN ""Action Item Reminder"" /TR ""C:\ActionAIM_Source\bin\ActionItemReminder.exe"" /ST 00:01 /f & " + command;
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe");
processInfo.Arguments = @"runas /env /user:Administrator /K """ + runascmd + @"""";
//processInfo.Verb = "runas";
processInfo.UseShellExecute = true;
try
{
Process.Start(processInfo);
}
catch (Win32Exception ex)
{
Response.Write(ex.ToString());
}
【问题讨论】:
-
您是否尝试在运行您的网络应用程序的应用程序池上设置管理凭据?
-
我已尝试将应用程序池更改为 LocalSystem(目前为当前设置),以及我自己的 Windows 用户帐户。他们都没有做出改变。所以可能代码不是问题。
-
你能单步调试代码看看会发生什么吗?另外,你看过这个吗? stackoverflow.com/a/4679686/2638872
-
感谢您的链接。我尝试了启用 IIS Admin Service 与桌面交互的主要建议,但无法生成解决方案。当我只“更改”(意思是启用或禁用)计划任务时,我观察到我的程序正在运行。当我尝试“创建”或“删除”时,程序什么也不做或挂起。这仍然是权限问题吗?
标签: c# asp.net scheduled-tasks