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>
"标签下的配置文件。但是——这行不通。
谢谢——感谢所有的帮助
您的网站在受限制的用户帐户下运行。除非您使用模拟,否则您的EXE将在相同的受限帐户下运行。
编辑:微软支持:http://support.microsoft.com/kb/306158
最好找出什么是你的exe的真正需求,并给予NetworkService
适当的权利(在文件系统,注册表…)
它需要一些逆向工程(使用sysinternals processmonitor
),但你仍然有一个高度安全的系统。
在代码中使用WindowsIdentity
类的Impersonate
功能,仅用于该操作。您不希望模拟一个有权为整个应用程序执行任意.exe的用户。确保您(被模拟的调用者)具有在生产服务器上运行它的权限。
所以模拟建议很有趣,但最终我的问题在于我的主机应用本身。它试图将一些日志文件写入用户的应用程序数据目录(即使使用-silent
选项…),这是我没有预料到的。
删除这些片段(从而使其遵循-silent
命令)使一切工作完美