我想从我的c#asp.net网站上运行客户端系统上的exe。当我使用Process.Start()
时
它会抛出一个错误:
请求的操作需要提升。
如何设置运行该exe的权限?
答案 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轻松完成此任务:
所以基本上这意味着它是一个企业内部网应用程序。我假设这可能就是这种情况,因为,如果您期望使用公共应用程序执行此操作,我会感到惊讶。
要完成此操作的脚本,请参阅我对此问题的回答:
How can I get a program on a client machine to run from an ASP.NET page?