我尝试使用 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);
但是,只有当我以管理员身份运行应用程序时,才会创建该任务。我需要避免这种情况,以便任何用户都可以创建任务,而无需以管理员身份运行应用程序的麻烦。关于如何做到这一点有什么建议吗?
最佳答案
您可以尝试使用一种允许使用指定用户运行进程的 RunAs :
ProcessStartInfo psi = new ProcessStartInfo("schtasks");
psi.UseShellExecute = false;
psi.UserName = "Username";
psi.Password = "password";
Process.Start(psi);
Process 类通过 ProcessStartInfo 提供了一种机制,允许您指定新进程应在其下运行的用户上下文,因此您可以指定要在其中运行命令的用户,即使启动程序的用户是不同的。在您的情况下,您可以为 ProcessStartInfo 指定管理员凭据,而无需使用管理员用户运行程序...
关于c# - 在没有管理员权限的情况下使用 'schtasks' 调度任务 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055516/