启动过程仅适用于控制台应用程序

时间:2013-02-11 13:26:38

标签: c# process permissions

我正在尝试从Web应用程序(在Visual Studio开发服务器上运行)启动外部exe。当我从控制台应用程序运行下面的代码时它工作正常,但是当我从网页运行它时应用程序崩溃。我认为这必须是一个权限问题,但已尝试了一些事情,但却无法使其正常工作。

      private void RunExe(string pythonOutputFileNameAndLocation)
      {

            var process = new Process { StartInfo = GetProcessStartInfo(pythonOutputFileNameAndLocation) };            

            // This is where the application crashes   
            process.Start();

            // ...do some more things here
       }


       private ProcessStartInfo GetProcessStartInfo(string pythonOutputFileNameAndLocation)
            {
                var startInfo = new ProcessStartInfo
                {
                    CreateNoWindow = true, 
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardInput = true,
                    FileName = _exeFileLocation,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    Arguments = String.Format("--hideUI --runScript {0}", pythonOutputFileNameAndLocation)                
                };

                return startInfo;
            }

我要问的是为什么这段代码可以在控制台应用程序中运行,但不能从visual studio Web服务器运行?

我正在使用Windows 7和Visual Studio 2010。

编辑:

这里要求的是Windows捕获的问题详细信息:

  Problem Event Name:   BEX
  Application Name:
  Application Version:  2.2.2.2909
  Application Timestamp:    507bf285
  Fault Module Name:    MSVCR100.dll
  Fault Module Version: 10.0.40219.325
  Fault Module Timestamp:   4df2be1e
  Exception Offset: 0008af3e
  Exception Code:   c0000417
  Exception Data:   00000000
  OS Version:   6.1.7601.2.1.0.256.48
  Locale ID:    2057
  Additional Information 1: c5a0
  Additional Information 2: c5a0d9e876212c0d3929ba8445f002dc
  Additional Information 3: 5e93
  Additional Information 4: 5e93e44f8aa24f99d37e055f533d1658

我无法调试外部应用程序,因为我没有代码。我也没有堆栈跟踪,因为我没有得到异常。外部流程正在崩溃。

由于

3 个答案:

答案 0 :(得分:0)

罗尼,您可能遇到了UAC和安全访问问题。尝试禁用UAC并再次尝试。另外,考虑在真实的Web服务器上,此过程将以ASP.NET或Web用户权限启动。出于安全原因,这些帐户是有目的的。这意味着您尝试启动的应用程序可能会失败,因为它无法访问所需的文件。因此,不建议从Web服务器启动外部exe。但是,您可以检查有关使用管理员凭据运行应用程序的此stackoverflow问题。 How to run c# application with admin creds?

答案 1 :(得分:0)

权限可能存在安全问题,但如果您能向我们提供有关该例外的更多详细信息,那将是最好的。

你是否尝试在IIS上运行它并检查它在那里的工作原理?

答案 2 :(得分:0)

异常代码c0000417的符号名称为STATUS_INVALID_CRUNTIME_PARAMETER。谷歌搜索“python”和“STATUS_INVALID_CRUNTIME_PARAMETER”导致围绕目录权限的各种python问题。您可以在尝试运行应用程序时使用Process Monitor来发现是否存在任何权限问题。