无法使用System.Diagnostics运行cmd.exe

时间:2015-01-30 21:39:43

标签: c# asp.net .net windows-server-2003 ashx

Envrionment:.Net 2.0,Windows 2003,64bit

我正在尝试将网站从旧服务器移动到新服务器,以下代码在移动代码后不再有效:

    System.Diagnostics.ProcessStartInfo psi = new
    System.Diagnostics.ProcessStartInfo("cmd.exe");
    psi.UseShellExecute = false;
    psi.RedirectStandardOutput = true;
    psi.RedirectStandardInput = true;
    psi.RedirectStandardError = true;
    // Start the process
    System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);
    System.IO.StreamReader strm = proc.StandardError;
    System.IO.StreamReader sOut = proc.StandardOutput;

    // Attach the in for writing
    System.IO.StreamWriter sIn = proc.StandardInput;

    sIn.WriteLine(exec);

    strm.Close();
    sIn.WriteLine("EXIT");

    proc.Close();

    // Read the sOut to a string.
    string results = sOut.ReadToEnd().Trim();

    // Close the io Streams;
    sIn.Close();
    sOut.Close();

似乎系统不允许运行.exe。代码在以前的服务器上正常工作,所以我猜这是一些类型的系统配置问题。我在这里发现了类似的问题:Foo.cmd won't output lines in process (on website)

但我不明白该部分"创建一个具有执行批处理脚本权限的新用户,并选择该用户作为IIS中的AppPool用户"。我知道如何创建新用户,但不是能够找出给用户执行.exe或批处理文件的权限的方式。

任何建议都会有所帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

它可能是新服务器上的.NET Trust级别。尝试将IIS管理器中的信任级别设置为该应用程序的“完全”。