Executing an EXE from ASP.NET

本文关键字:ASP NET from EXE an Executing | 更新日期: 2023-09-27 17:54:55

我想从ASP执行exe。NET MVC应用程序。是的,我明白这样做的内在风险,但不幸的是,我真的需要这样做。

EXE是一个GUI应用程序,但是我传递给它的参数强制它"静默"运行,在那里它生成一些数据到zip文件中,然后退出。

执行EXE的代码如下-它在我的开发盒上的VS2008中运行良好-但是当我对实际服务器(server 2003 - IIS6)进行测试时,它失败了:

        ProcessStartInfo psi = new ProcessStartInfo();
        psi.FileName = "C:'.....";
        psi.Arguments = "-silent -file outFile.zip";
        Process proc = new Process();
        proc.StartInfo = psi;
        proc.Start();
        proc.WaitForExit();
        log.Debug("Process exited: " + proc.ExitCode);

退出码是:-532459699,显然是出了什么问题。

我在服务器上通过经过身份验证的HTTPS连接(基本身份验证)运行应用程序,所以我认为我可以通过在Web中设置<identity impersonate="true" />来解决这个问题。"<system.web>"标签下的配置文件。但是——这行不通。

谢谢——感谢所有的帮助

Executing an EXE from ASP.NET

您的网站在受限制的用户帐户下运行。除非您使用模拟,否则您的EXE将在相同的受限帐户下运行。

编辑:微软支持:http://support.microsoft.com/kb/306158

最好找出什么是你的exe的真正需求,并给予NetworkService适当的权利(在文件系统,注册表…)

它需要一些逆向工程(使用sysinternals processmonitor),但你仍然有一个高度安全的系统。

在代码中使用WindowsIdentity类的Impersonate功能,仅用于该操作。您不希望模拟一个有权为整个应用程序执行任意.exe的用户。确保您(被模拟的调用者)具有在生产服务器上运行它的权限。

所以模拟建议很有趣,但最终我的问题在于我的主机应用本身。它试图将一些日志文件写入用户的应用程序数据目录(即使使用-silent选项…),这是我没有预料到的。

删除这些片段(从而使其遵循-silent命令)使一切工作完美