繁体   English   中英

从ASP.NET执行EXE

[英]Executing an EXE from ASP.NET

我想从ASP.NET MVC应用程序执行一个exe。 是的,我理解这样做的固有风险,但不幸的是我真的需要这样做。

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.config文件下设置<identity impersonate="true" />来解决问题。 <system.web>标记。 但是 - 这没效果。

谢谢 - 所有帮助表示赞赏。

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

编辑:Microsoft的支持: http//support.microsoft.com/kb/306158

最好找出你的exe的真正需求,并赋予NetworkService适当的权限(在文件系统,注册表......)

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

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

所以模仿建议很有意思,但最终我的问题出在我的控制台应用程序本身。 它试图将一些日志文件写入用户的应用程序数据目录(即使使用-silent选项...),这是我没想到的。

删除这些部分(从而使其符合-silent命令)使一切工作完美

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM