在客户端系统上从服务器端c#代码运行.exe

时间:2011-08-26 12:39:01

标签: c# asp.net

我想从我的c#asp.net网站上运行客户端系统上的exe。当我使用Process.Start()时 它会抛出一个错误:

  

请求的操作需要提升。

如何设置运行该exe的权限?

4 个答案:

答案 0 :(得分:7)

您无法从服务器端代码在客户端计算机上生成进程。

在服务器端代码中使用Process.Start时,它会尝试在托管网站的服务器上执行那里进程。如果你想在客户端计算机上创建进程,那么你需要为它们公开下载(而不是使用subterfuge,就像恶意站点可能会安装软件一样 - 优雅地提供它,并且通常(并且允许)),或者一个Silverlight应用程序或类似的东西。

底线是您要执行的代码(即使只是为了生成进程)必须驻留在客户端上,并在那里执行。

答案 1 :(得分:4)

您无法从这样的Web服务器运行应用程序。您必须让用户通过提供EXE,设置文件或使用ClickOnce来下载应用程序。

答案 2 :(得分:2)

或者您可以开发一个ActiveX控件,您可以让浏览器从受信任的Internet区域自动下载。

下载后,使用证书进行正确签名(从可信(公司)根证书签名)将避免用户提示询问他是否希望允许ActiveX控件安装/激活 -

ActiveX控件随后可以执行交互式登录用户可以执行的任何操作。这意味着要实际安装一个你需要提升的程序(Vista +上的UAC);但如果目标只是运行一个独立的可执行文件,那么你应该很高兴。

这一切都假定在(更大的)公司设置中 white-hat 目的,因为它依赖于PKI基础架构和中央浏览器策略,仅举两个例子。**

这确实会导致一些关于serverfault或超级用户的优秀问题

答案 3 :(得分:2)

我注意到你说你想在客户端运行一个exe文件,但你没有明确说明exe是在服务器上而你想将它推送到客户端。似乎每个人都假设情况如此。

如果您有一些先决条件,可以使用小型JavaScript轻松完成此任务:

  1. 可执行文件已存在于客户端计算机上。
  2. 所有客户都在运行IE
  3. 您可以强制执行策略,将您的网站置于Intranet或Trusted中     站点区域。
  4. 所以基本上这意味着它是一个企业内部网应用程序。我假设这可能就是这种情况,因为,如果您期望使用公共应用程序执行此操作,我会感到惊讶。

    要完成此操作的脚本,请参阅我对此问题的回答:

    How can I get a program on a client machine to run from an ASP.NET page?