是否可以編寫以任意方式訪問windows命令行的擴展?另外還有一些瀏覽器提供這種功能。從chrome(或firefox)擴展訪問windows命令行
爲什麼?在我們的生產車間,我們有幾個應用程序需要訪問PC上的硬件。目前,我們必須編寫和部署小應用程序來完成這個任務,但是從瀏覽器部署它們會很棒。
很明顯,在正常情況下,這是一個安全問題,但可以添加一個可以繞過這個問題的擴展嗎?
是否可以編寫以任意方式訪問windows命令行的擴展?另外還有一些瀏覽器提供這種功能。從chrome(或firefox)擴展訪問windows命令行
爲什麼?在我們的生產車間,我們有幾個應用程序需要訪問PC上的硬件。目前,我們必須編寫和部署小應用程序來完成這個任務,但是從瀏覽器部署它們會很棒。
很明顯,在正常情況下,這是一個安全問題,但可以添加一個可以繞過這個問題的擴展嗎?
是的,在Firefox中,你當然可以做到這一點。
Firefox有4 types of extensions:(WebExtensions,Add-on SDK,Bootstraped,或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與它使用stdin,stdout和stderr溝通。
您將不得不在主(後臺)腳本中的子進程之間進行所有通信。所有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。
所以,基本上,通信會看起來像:
網頁⟷內容腳本⟷背景腳本⟷子進程
這將是比較容易實現的消息傳遞方案,它允許網頁運行任意命令,提供命令行參數,輸入數據和接收輸出數據等。
我不會推薦使用瀏覽器來做它。瀏覽器及其安全模型發展非常迅速,您可能會發現自己經常與變化作鬥爭。
相反,如果您的計算機位於域中,請使用組策略來部署您的應用程序。這裏有一個指南:http://www.itninja.com/blog/view/the-guide-to-deploying-software-using-group-policy
如果你的工廠的電腦是不是在一個域或組策略看起來太複雜,那麼你可以有運行一個批處理文件的圖標快捷方式,複製應用到工廠的機器從本地資源。或者,如果您嘗試在無人照管的情況下運行應用程序,則可以將該批處理文件作爲計劃任務運行。
祝你好運!
對於現代瀏覽器,您可以使用本機消息傳遞來實現此目的。This link告訴我們有一個項目將這個本地消息api添加到WebExtensions。
有關擴展程序,請參閱Native Messaging瞭解更多詳細信息。
基本上,你需要一個擴展和本地主機,建立擴展和本地主機之間的通信,擴展用於從瀏覽器接收命令,而本地主機實際執行您想要的命令行做任何事情。
如果我明白了,那麼我還是要實行「本地主機」吧? –
@MitchVanDuyn,是的,擴展名必須與原生API的訪問權限。 –