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

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

请求的操作需要提升。

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

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

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

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

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

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

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

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

这一切都假定在(更大的)企业环境中有白帽用途 ,因为它依赖于PKI基础设施和中央浏览器策略,仅举两例。**

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

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

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

  1. 可执行文件已存在于客户端计算机上。
  2. 您的所有客户都在运行IE
  3. 您可以实施策略以将您的站点置于Intranet或受信任的站点区域中。

所以基本上这意味着它是一个企业内部网应用程序。 我假设这可能就是这种情况,因为,如果您期望使用公共应用程序执行此操作,我会感到惊讶。

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

如何在客户端计算机上获取程序以从ASP.NET页面运行?