是否可以在 HTML 中的“onclick”上运行 .exe 或 .bat 文件

IT技术 javascript html dom
2021-02-04 15:09:01

是否可以使用 html5 按钮事件运行 bat/可执行文件?如果我没有错的话,在 IE 中它可以使用 Shell 对象实现。

5个回答

不,那将是一个巨大的安全漏洞。想象一下如果有人能跑

format c:

每当您访问他们的网站时。

这就是我所做的。我想在我们的网络上设置一个 HTML 页面,这样我就不必导航到各种文件夹来安装或升级我们的应用程序。所以我所做的是在我们每个人都可以访问的“共享”驱动器上设置一个 .bat 文件,在该 .bat 文件中我有以下代码:

start /d "\\server\Software\" setup.exe

HTML代码是:

<input type="button" value="Launch Installer" onclick="window.open('file:///S:Test/Test.bat')" />

(确保你的斜线是正确的,我用另一种方式,它没有用)

我更喜欢直接启动 EXE,但这是不可能的,但 .bat 文件允许我解决这个问题。希望它适用于 FF 或 Chrome,但仅限于 IE。

亲爱的@Chuff 如果 bat 文件有注册命令呢,我的意思是 sth like REG ADD "HKCU\Software\..."
2021-03-13 15:09:01
2021-03-13 15:09:01
这不再适用于 Firefox、Edge 和 Chrome!只有 IE 有效。
2021-04-07 15:09:01

当页面本身通过file:///路径打开时是可能的

<button onclick="window.open('file:///C:/Windows/notepad.exe')">
    Launch notepad
</button>

然而,当你把它放在网络服务器上的那一刻(即使你通过 访问它http://localhost/),你会得到一个错误:

错误:拒绝从脚本访问“file:///C:/Windows/notepad.exe”

@nodiscc 事实上,Firefox 默认不允许您运行可执行文件,但拥有像OpenDownload²这样的扩展来允许您这样做的情况并不少见
2021-03-17 15:09:01
@IsaacS 我无法访问 Windows 8 盒子,所以很遗憾我无能为力。我刚刚在 Windows 7 上用 Firefox 28 再次尝试了这个,它可以工作,所以额外的安全性可能仅限于 Windows 8。
2021-03-22 15:09:01
这允许“下载”notepad.exe,而不是运行它。火狐 31、Windows 7
2021-03-31 15:09:01
@Stijn 在这种情况下执行的文件是您刚刚“下载”的文件,而不是原始文件。因此在大多数情况下它不起作用 - 它不允许您运行已安装在您的机器上的程序。
2021-04-02 15:09:01
+1 我刚刚确认这适用于 IE11,但不适用于 Win8.1 上的 Firefox 27。
2021-04-07 15:09:01

您可以在带有 OCX 组件的 Internet Explorer 和使用 chrome 扩展的chrome 文档的chrome 浏览器上执行此操作, 在任何情况下都需要在客户端系统上进行其他设置!

chrome扩展源的重要部分:

var port = chrome.runtime.connectNative("your.app.id"); 
      port.onMessage.addListener(onNativeMessage); 
      port.onDisconnect.addListener(onDisconnected);
      port.postMessage("send some data to STDIO");

权限文件:

{
      "name": "your.app.id",
      "description": "Name of your extension",
      "path": "myapp.exe",
      "type": "stdio",
      "allowed_origins": [
            "chrome-extension://IDOFYOUREXTENSION_lokldaeplkmh/"
      ]
}

和 Windows 注册表设置:

HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\your.app.id
REG_EXPAND_SZ : c:\permissionsettings.json

您不能运行/执行位于用户本地计算机或通过站点的 .exe 文件。用户必须先下载exe文件,然后运行可执行文件。
所以没有办法

以下代码仅在用户机器中存在 EXE 时才有效。

<a href = "C:\folder_name\program.exe">

亲爱的@coolprarun,如果我在用户的机器上有一个 bat 文件,我如何使用 javascript 或其他方式在 chrome 中运行 bat 文件?我可以通过 ActiveXObject 在 IE 浏览器中做到这一点,但是这个对象不适用于 chrome。
2021-04-05 15:09:01
你当然可以。使用自定义 URL 协议 -> stackoverflow.com/questions/3057576/...
2021-04-05 15:09:01