1

我有一个在 IIS 上运行的站点。我需要从站点运行 schtasks.exe。我尝试了以下

Process proc = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = @"C:\Windows\System32\schtasks.exe";
proc.StartInfo.Arguments = "/create /tn mylbat /tr MYLExe.exe /s xxx /u xxx\xxx /p xxx /sc daily;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
proc.Start();
proc.WaitForExit();

在 cmd 上执行的命令工作正常,但是当我尝试在 IIS 上运行的网站上执行它时,没有添加任何任务。并且它还可以在未托管在 IIS 上的站点上工作。

编辑 I:它在站点的应用程序池标识设置为 LocalSystem 时工作,但我需要它作为网络服务工作。

什么不见​​了!!!

4

1 回答 1

0

不是 /u 和 /p 将被使用。从远程机器访问时,它应该指定 /ru 和 /rp 并且它们应该属于具有管理员权限的用户。命令如下:

            startInfo.UseShellExecute = false;
            startInfo.WorkingDirectory = @"C:\Windows\System32";
            startInfo.FileName = @"C:\Windows\System32\schtasks.exe";
            startInfo.Arguments = "/create /tn <taskname> /tr <theEXE> /ru <user> /rp <password> /sc daily ";
            startInfo.RedirectStandardError = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.CreateNoWindow = false;
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            proc = Process.Start(startInfo);
于 2013-02-27T10:33:27.377 回答