如何通过HTML文件中的链接打开一个exe文件?

19

我想通过HTML文件中的链接打开一个exe文件。

这可行吗?如果可以,应该如何实现?

11个回答

15
在本地计算机上,您可以轻松完成这个操作, 所以您只需要创建自己的自定义协议,就像Skype或iTunes使用的那种协议来启动它们的本机Windows应用程序一样:
  • 必须在Windows注册表中创建自定义协议,添加一个与此处相同的条目:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ACCapp]
@="URL:ACCapp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\ACCapp\shell]

[HKEY_CLASSES_ROOT\ACCapp\shell\open]

[HKEY_CLASSES_ROOT\ACCapp\shell\open\command]
@="msaccess.exe"

粗体字ACCapp是自定义协议的名称,将用于您的HTML href链接中,如下所示。

<a href="ACCapp://">PLEASE RUN MS Access exe file</a>

This link won't run unless you add the registry keys.


我尝试了这个概念,它表现得很好,但问题是 - 我的 .exe 在启动后自动关闭... 我不知道原因。 - Namitha

9

用户不能直接在本地计算机或通过网站启动/执行所在的 .exe 文件。必须先下载 exe 文件,然后运行可执行文件。


JavaScript怎么样?我们能用JavaScript打开exe文件吗? - Mohammad Dayyan
1
不,它也不能与JavaScript一起使用。从服务器接收的HTML和JavaScript不知道用户目录或文件路径(也无法访问它们)。用户仍然需要手动下载文件并运行它。 - RDL

5

出于安全原因,这是不可能的,而且最好保持现状。

下面的代码可以工作,但只能在程序所在的机器上运行:

<a href = "c:\Myfolder\Myprogram.exe">

5

您可以这样做

这是我唯一能想到的方法:

<html>
    <head>

        <title>Open exe</title>

        <script type="text/javascript">
        function runProgram()
        {
            var shell = new ActiveXObject("WScript.Shell");                 
            var appITunes = "\"C:\\Program Files\\iTunes\\iTunes.exe\" ";
            shell.Run(appITunes);
        }        
        </script>

    </head>



    <body>

        <a href="javascript:runProgram()">Run program</a>

    </body>

</html>

2
这只适用于IE浏览器,而不是Chrome浏览器。原因是ActiveX对象。 - Vikash Kumar

3
我为此目的创建了一个应用程序,名为WebRun,您可以从www.webrunapps.com下载。安装后,您可以创建webrun链接来启动Windows PC上的任何可执行文件/文件/命令。 这是运行记事本的示例:
<a href="webrun:C:\Windows\notepad.exe">Notepad</a>

希望这能帮到您。

1
这对我很有帮助。但是我有一个简单的问题。Webrun在手机上不起作用吗?如果要在Android手机上使用Webrun呢? - Karthi

2

您可以编写一个仅在Internet Explorer中运行的Active-X对象。

虽然不是exe文件,但这是最接近运行exe文件的方法。


1
我知道一个好的答案,Roblox 和 Atom 使用这种技术来通过链接运行 exe 程序。我从未尝试过这样做,因此无法解释如何操作,但我知道它们使用 URI 协议。URI 协议类似于 http、ftp 和 https。我不知道 Roblox 的 URI 协议,但我知道 Atom 的,Atom 的协议是 atom://。我最近才了解到这种技术,所以我对它并不了解。
除此之外,用户必须先下载 exe 文件,然后如果设置了 URI 协议,就可以通过链接打开它。
如果您在系统上安装了 Atom,这里有一个示例,它将打开程序,我相信它是一个 exe 文件。这只是一个我偶然发现的随机包。 atom://settings-view/show-package?package=autocomplete-plus
Mahfoud Boukert 实际上对此进行了一些解释,并提供了一些代码示例。

0
我知道一个好的答案,Roblox和Atom使用这种技术来通过链接运行exe程序。
itch.io是另一个可以模拟.exe文件但不需要下载的网站。例如,Dani(我非常喜欢的YouTuber)创建了https://danidev.itch.io/triangle-game,我懒得深入挖掘文件源码,但基本上,这个游戏是用Unity创建的。
我不太确定,但我认为要在.html网站上加载.exe文件,您必须使用WebGL。(因为这是我在挖掘Dani的视频时找到的唯一支持将Unity程序导出到HTML5的选项)

用于此的方法来自Unity引擎本身。它宣传其能够将游戏打包为桌面或Web版本。大多数人不应该使用Unity来处理手头的主题,但那些使用它的人很容易将他们的游戏打包成可在Web上运行的版本。 - John Fisher

0

在工作中,我使用PC(遗憾的是,我是MAC迷)和Firefox。对我而言,在Firefox中有效的代码,以及仅在内部有效的链接是<a href = "file:///c:/Myfolder/Myprogram.exe">

并且它仅在您右键单击链接并选择在外部应用程序中打开链接时才有效。仅单击链接本身会提示用户保存.exe文件,然后运行它。

我无法让它在IE或Firefox中只使用<a href = "c:/Myfolder/Myprogram.exe">就能够正常工作。


在这里发布帖子时,将您的电子邮件地址公开可能不是一个好主意。请参阅:http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed - Shog9

-1

为什么不使用CGI来实现这个目的,CGI实际上是通过服务器上的浏览器运行可执行文件。


听起来不错,你能提供一些额外的信息,如何做到这一点吗?谢谢。 - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接