2011-02-09 41 views
0

我可以在IIS上托管的ASP.NET网站上打开客户端计算机上的可执行文件吗?如何从ASP.NET网站打开.EXE文件?

我曾尝试使用下面的代码在ASP.NET尝试:

Process notePad = new Process(); 

notePad.StartInfo.FileName = "notepad.exe"; 
notePad.StartInfo.Arguments = @"E:\abc.txt"; 

notePad.StartInfo.CreateNoWindow = false; 
notePad.StartInfo.UseShellExecute = false; 
notePad.StartInfo.RedirectStandardOutput = false; 

notePad.Start(); 

,并在Javascript与下面的代码:

function Launch() { 
    var w = new ActiveXObject("WScript.Shell"); 
    w.run('notepad.exe'); 
    return true; 
} 

但这两个片段将只打开该文件时,该网站不在IIS中托管。

任何帮助,非常感谢。先谢谢你。

+1

为什么你会想要这样做?如果你认为这是一个可以接受的选择,那么你的应用程序和对安全性的尊重就会严重破坏。 – 2011-02-09 04:41:53

+0

我同意科迪,你不应该这样做。不过,我也明白,在许多环境中,用户(主要是公司用户)喜欢像他们这样为他们做的东西。如果有的话,您应该使用响应流传输文件数据,并允许操作系统(即Windows)将任何文件与正确的程序关联起来处理它。 – bitxwise 2011-02-09 04:51:03

+0

其实这是根据要求,我已经给出。我想知道它是否真的可能(重写安全问题)。还有一点,如果该可执行文件驻留在共享驱动器上,那么是否有可能?我不认为这是可能的。 – 2011-02-09 04:54:38

回答

2

能够推出在客户机上的可执行(计算机运行的浏览器)在几乎任何情况下...

你的代码是C#其中居住在服务器上看起来就像它试图运行记事本,如果工作实际上是在服务器上打开记事本实例...不是客户端。

如果您确实设法允许客户端为您提供运行记事本(一个大的if)的权限,那么您可能还想显示某些东西,如果该机器不是Windows PC(例如,没有记事本第1名)

1

您可以尝试使用Javascript,但这只适用于IE用户:

<html> 
<head runat="server"> 
    <title>Run Executable HTA</title> 

    <script language="javascript" type="text/javascript"> 
    function RunEXE(prog) 
    { 
     var oShell = new ActiveXObject("WScript.Shell"); 
     oShell.Run('"'+prog+'"', 1); 
    } 
    </script> 
</head> 
<body> 
    <input id="btnMyButton" onClick="RunEXE('notepad.exe')" type="button" value="Notepad" /> 
</body> 
</html> 

编辑

删除硬编码

编辑

更新应答如OP尝试使用Design.exe。

正如我所说,我宁愿不这样做,但因为这是一个要求,让我们看看我们能做些什么。假设Design.exe文件具有自己的文件扩展名(例如.txt,.des),而不是试图打开Design.exe并传递它加载的文件,也许可以使用Response流传输文件,用户打开下载,Windows(假设这是操作系统)将自动使用Design.exe来打开文件?

0

如果绝对必须做到这一点,我建议你不要......

选项1:
如果你只需要支持IE,一种选择是建立一个小的ActiveX控件按钮将弹出到所需的程序并将其嵌入到网页中。

选项2:
如果你试图打开一个特定的文件在任何design.exe是,和用户有要打开登录到该应用程序在其系统上,你可以只是把文件类型链接到具有适当的网页扩展名的文件,它将打开包含该文件的应用程序。