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

时间:2016-08-10 13:01:37

标签: google-chrome google-chrome-extension firefox-addon

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

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

显然,在正常情况下,这是一个安全问题,但是是否可以添加一个允许这样做的扩展?

3 个答案:

答案 0 :(得分:3)

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

Firefox有4 types of extensions :( WebExtensionsAdd-on SDKBootstrapedOverlay/XUL)。

WebExtensions目前无法执行此操作,并且可能永远无法执行此操作(它们就像Google Chrome扩展程序一样)。 Mozilla正在大力发展只有WebExtensions和Add-on SDK扩展。因此,这应该是附加SDK扩展。

您需要使用system/child_process API,这是node.js child_process API的实现。您可以使用以下行来访问API:

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

然后,您可以轻松create a new process并使用stdinstdoutstderr与其进行通信。

您必须在主(背景)脚本中进行子进程之间的所有通信。所有communication with the webpage you are viewing必须位于content script。您可以选择仅在URL与某些页面匹配时加载内容脚本,或者使用page-mod(这将是没有任何网站能够运行命令的一部分)加载内容脚本。您需要pass messages back and forth through from your content script to your background script

所以,基本上,沟通将如下:

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

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

答案 1 :(得分:1)

我不建议使用浏览器。浏览器及其安全模型的发展非常迅速,您可能会发现自己经常对抗这些变化。

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

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

祝你好运!

答案 2 :(得分:1)

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

有关Chrome扩展程序的详细信息,请参阅Native Messaging

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