【问题标题】:Is there anybody who have an idea about running executables from firefox?有没有人知道从 Firefox 运行可执行文件?
【发布时间】:2015-05-27 04:26:04
【问题描述】:

我试图开发一个 Firefox 插件来通过浏览器的上下文菜单(或 VBScript 文件或 CMD 命令)运行 exe 文件。我尝试了这些并没有结果:

  • 使用签名的 jar 文件
  • 使用 Flash (fscommand)
  • 使用 JavaScript (ActivexObject)
  • 使用 Firefox 插件 SDK (nsIProcess&ctypes)

我总是有一个非常流行的结尾,它说“安全问题不允许这样做”。有没有人有没有死胡同的想法?

【问题讨论】:

  • 由于安全问题,您无法从任何浏览器执行任何可执行文件,但您可以使用扩展名为 .hta 的 HTA(HTML 应用程序)执行此操作 那么您要启动哪种可执行文件?跨度>
  • 可以是vbscript或者bat文件
  • 另外,HTA 看起来适合 IE,它是否适用于 Firefox 和 Chrome。
  • 所以我再问你要执行哪个程序?这个可执行文件的路径?
  • 在这种情况下你应该编辑并发布runExeScript.vbs的源代码

标签: firefox firefox-addon


【解决方案1】:

我尝试了这些但没有结果: 使用 Firefox Add-on SDK (nsIProcess&ctypes)

插件 sdk 提供了一种开箱即用启动进程的方法:system/child_process

Firefox 插件拥有计算机上用户帐户的全部功能。如果用户可以启动进程,那么 firefox 插件也可以。

所以我很想知道是什么导致你“没有结果”。

【讨论】:

  • 这是“无结果”的原因:TypeError: Components.classes 未定义。我使用了其他模块,如 require("sdk/context-menu")、require('sdk/tabs'),但我无法定义 var {Cc, Ci} = require("chrome")。我尝试了所有的变体,但我看到了同样的错误。
  • 请注意,我链接的模块不需要 chrome 权限。虽然require("chrome") 应该也可以正常工作。
【解决方案2】:

您尝试了哪些 ctypes?我正在使用 ShelExecuteEx 在 Windows 中使用 ctypes 启动 exe,使用 g_app_info_launch_uris 在 Gtk (Unix) 上以及在打开 popen 的 OSX 上启动 exe。我使用这些(而不是 nsIProcess)是因为我需要它分离启动,这意味着启动进程不等待已启动进程的关闭等响应。在 unix/linux/mac 上 nsIProcess 启动会导致 pid 污染。这意味着启动过程的 pid 将在已启动的流程资产中找到。

要使用常规 nsIProcess 启动,请执行以下操作:

var procFinned = {
    observe: function (aSubject, aTopic, aData) {
      console.log('bash nsIProcess completed');
    }
};

var nsifile = new FileUtils.File('c:\blah\blah.exe');
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
var args = [];
process.init(nsifile);
process.runAsync(args, args.length, procFinned);

【讨论】:

  • 我在您回答后尝试了您的代码,但它也不起作用。我使用插件 sdk_1.16。你有 nsIProcess 的完整示例吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 2015-04-23
相关资源
最近更新 更多