托管后,System.diagnostics.process进程无法在IIS上运行?

时间:2017-03-01 08:28:01

标签: c# asp.net

我正在尝试从Web应用程序安装.exe。当我在本地运行应用程序(从asp开发服务器)它正在正确安装。但是,当我在IIS上托管时,它无法正常工作。

我在asp.net page

中的Page_load方法上编写了这段代码

//想在客户端计算机上安装Test.msi。

string filepath = Server.MapPath("~/NewFolder1/Test.msi");//NewFolder1 is on server

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('"+filepath+"')", true);
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
// startInfo.Arguments = "/K msiexec.exe /i \"" + @"D:\Datta\CrispDoxCompression.msi" + "\" /quite /qn";
startInfo.Arguments = "/K msiexec.exe /i \"" + filepath + "\" /qn";
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();

1 个答案:

答案 0 :(得分:1)

  

当我在本地运行应用程序时(从asp开发服务器),它正在正确安装

当然,因为那时服务器和客户端是同一台机器。您正在服务器上启动一个进程,这也恰好是客户端,但在生产中,情况并非如此。

如果您希望用户在其计算机上安装应用程序,请在您的网站上创建一个页面,向他们展示如何执行此操作,包括可以下载安装程序的链接。

能够从客户端计算机上的网站自动安装软件,更不用说静默了。

坐下来一分钟,想想如果你要求的东西实际上是可能的。除了浏览器(插件)漏洞,可能的日子早已不复存在。

如果您在受控环境中运行此站点,那么您可以让系统管理员为您域中的某些用户组部署此安装程序。