从 chrome(或 firefox)扩展访问 windows 命令行

Access windows command line from chrome (or firefox) extension

是否可以编写以任意方式访问 windows 命令行的扩展?或者是否有一些浏览器提供此功能。

为什么?在我们的制造车间,我们有几个应用程序需要访问 PC 上的硬件。目前我们必须编写和部署小应用程序来执行此操作,但从浏览器部署它们会很棒。

很明显,在正常情况下这是一个安全问题,但是否可以添加一个扩展程序来规避此问题?

我不推荐使用浏览器。浏览器及其安全模型发展非常迅速,您可能会发现自己一直在与变化作斗争。

相反,如果您的计算机在域中,请使用组策略来部署您的应用程序。这是一个指南:http://www.itninja.com/blog/view/the-guide-to-deploying-software-using-group-policy

如果您的工厂计算机不在域中或组策略看起来太复杂,那么您可以使用图标快捷方式 运行s 一个批处理文件,将应用程序从本地复制到工厂计算机资源。或者,如果您在无人看管的情况下尝试 运行 应用程序,您可以将该批处理文件 运行 作为计划任务。

祝你好运!

是的,在 Firefox 中你当然可以这样做。

Firefox 有 4 types of extensions: (WebExtensions, Add-on SDK, Bootstraped, or Overlay/XUL).

WebExtensions 目前无法做到这一点,而且可能永远无法做到(它们就像 Google Chrome 扩展)。 Mozilla 正在大力转向仅使用 WebExtensions 和 Add-on SDK 扩展。因此,这应该是一个 Add-on SDK 扩展。

您将要使用 system/child_process API, which is an implementation of the node.js child_process API。您可以使用以下行访问 API:

var childProcess = require("sdk/system/child_process");

然后您可以轻松 create a new process and communicate with it using stdin, stdout, and stderr

您必须在主(后台)脚本中进行子进程之间的所有通信。全部 communication with the webpage you are viewing must be in a content script. You can choose to only load the content script when the URL matches certain pages, or domains using page-mod (which will be one part of not having any arbitrary website being able to run commands). You will need to pass messages back and forth through from your content script to your background script.

因此,基本上,通信将如下所示:

网页⟷内容脚本⟷后台脚本⟷子进程

实现允许网页运行任意命令、提供命令行参数、输入数据和接收输出数据等的消息传递方案相对容易

对于现代浏览器,您可以使用本机消息传递来实现这一点。 This link 告诉我们有一个项目可以将此本地消息传递 api 添加到 WebExtensions。

对于 chrome 扩展,请参阅 Native Messaging 了解更多详细信息。

基本上,您需要一个扩展程序和一个本地主机,在扩展程序和本地主机之间建立通信,扩展程序用于接收来自浏览器的命令,而本地主机实际上执行您希望命令行执行的任何操作。