2016-08-10 311 views
0

是否可以編寫以任意方式訪問windows命令行的擴展?另外還有一些瀏覽器提供這種功能。從chrome(或firefox)擴展訪問windows命令行

爲什麼?在我們的生產車間,我們有幾個應用程序需要訪問PC上的硬件。目前,我們必須編寫和部署小應用程序來完成這個任務,但是從瀏覽器部署它們會很棒。

很明顯,在正常情況下,這是一個安全問題,但可以添加一個可以繞過這個問題的擴展嗎?

回答

3

是的,在Firefox中,你當然可以做到這一點。

Firefox有4 types of extensions:(WebExtensionsAdd-on SDKBootstraped,或Overlay/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

所以,基本上,通信會看起來像:

網頁⟷內容腳本⟷背景腳本⟷子進程

這將是比較容易實現的消息傳遞方案,它允許網頁運行任意命令,提供命令行參數,輸入數據和接收輸出數據等。

0

我不會推薦使用瀏覽器來做它。瀏覽器及其安全模型發展非常迅速,您可能會發現自己經常與變化作鬥爭。

相反,如果您的計算機位於域中,請使用組策略來部署您的應用程序。這裏有一個指南:http://www.itninja.com/blog/view/the-guide-to-deploying-software-using-group-policy

如果你的工廠的電腦是不是在一個域或組策略看起來太複雜,那麼你可以有運行一個批處理文件的圖標快捷方式,複製應用到工廠的機器從本地資源。或者,如果您嘗試在無人照管的情況下運行應用程序,則可以將該批處理文件作爲計劃任務運行。

祝你好運!

0

對於現代瀏覽器,您可以使用本機消息傳遞來實現此目的。This link告訴我們有一個項目將這個本地消息api添加到WebExtensions。

有關擴展程序,請參閱Native Messaging瞭解更多詳細信息。

基本上,你需要一個擴展和本地主機,建立擴展和本地主機之間的通信,擴展用於從瀏覽器接收命令,而本地主機實際執行您想要的命令行做任何事情。

+0

如果我明白了,那麼我還是要實行「本地主機」吧? –

+0

@MitchVanDuyn,是的,擴展名必須與原生API的訪問權限。 –