如何从ASP.NET站点打开.EXE文件?

时间:2011-02-09 04:28:53

标签: asp.net iis iis-7 executable

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

我尝试在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中时,两个代码段都只会打开文件。

非常感谢任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分: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打开文件吗?

答案 2 :(得分:0)

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

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

选项2:
如果您尝试在任何design.exe中打开特定文件,并且用户具有要在其系统上注册到该应用程序的文件类型,则只需在Web上添加具有相应扩展名的文件的链接即可页面,它将打开包含该文件的应用程序。