我正在尝试使用schtasks
从我的应用程序安排任务,而不是使用Windows任务计划程序COM /托管API。
在命令行schtasks /Create /tn "MyApp" /tr c:\myapp.exe /sc onlogon
上使用此命令可以更轻松地在此处创建任务,但我以管理员身份打开命令行以创建任务(否则我将被拒绝访问)
从我的应用程序中,创建我使用的任务
string args = @"/Create /tn MyApp /tr c:\myapp.exe /sc onlogon";
Process.Start("schtasks", args);
但是,只有在我以管理员身份运行应用程序时才会创建任务。我需要避免这种情况,以便任何用户都可以创建任务而无需像管理员那样运行应用程序。关于如何做到这一点的任何建议?
答案 0 :(得分:2)
您可以尝试使用一种允许使用指定用户运行进程的RunAs:
ProcessStartInfo psi = new ProcessStartInfo("schtasks");
psi.UseShellExecute = false;
psi.UserName = "Username";
psi.Password = "password";
Process.Start(psi);
Process类通过ProcessStartInfo提供了一种机制,允许您指定新进程应在其下运行的用户上下文,因此您可以指定要在其中运行命令的用户,即使启动该程序的用户是不同。在您的情况下,您可以为ProcessStartInfo指定管理员凭据,而无需使用管理员用户运行该程序...
答案 1 :(得分:0)
为什么每次展览都要求用户中断 为展览目的而安装的展位PC?
如果您想要一个隐藏的程序,只要它在启动时在PC上运行,并且您的任务无害,您可以将其添加到以下注册表项中:
HKCU \ SOFTWARE \的Windows \ CurrentVersion \运行
编程。如果需要,我可以提供代码。
答案 2 :(得分:0)
TextBox的内容:“SCHTASKS.exe / Create / ST 06:30 / SC DAILY / TN report / TR notepad.exe”
我能够使用Process.Start(ProcessStartInfo);
ProcessStartInfo psinfo = new ProcessStartInfo();
psinfo.Filename = "powershell.exe";
psinfo.Args = textbox1.text;
Process.Start(psinfo);
**当然,这只适用于安装了PowerShell的计算机,使用cmd.exe无法创建计划任务...