我之前曾问过类似的问题
Communicate with Cash Drawer from Website
然而问题非常模糊,我现在知道我需要的是使用扩展名。
这个问题与以下类似,但不完全是我需要的信息。
Chrome extension and local storage
Access local files through Google chrome extension?
List a local directory with chrome extension
我真正需要做的是从我的网站上运行用户计算机上的bat文件。该网站的用户将是公司的员工,他们将使用的计算机将由我们提供,因此我可以对机器进行任何必要的更改,以便在运送给用户之前使用。
我了解您可以在计算机上创建一个允许chrome访问的本地文件夹,从而保持安全性。我已经搜索了如何做到这一点,但似乎无法确定我需要搜索的内容,尤其是我需要帮助的地方。
http://developer.chrome.com/apps/fileSystem
我还没有建立扩展,但我愿意接受挑战,所以我不需要帮助这方面的事情。下面的两个指南似乎不仅仅是充足的。
http://lifehacker.com/5857721/how-to-build-a-chrome-extension
http://css-tricks.com/colorpeek-part-2-building-first-chrome-extension/
这是我目前所处的位置。
{
"name": "Open Till",
"version":"1",
"manifest_version": 2,
"description": "Allow POS Users to Open their Till",
"browser_action": {
"default_icon": "icon.jpg"
}
}
接下来我需要创建一个命令来调用扩展,然后扩展导航到chrome可以访问的本地文件夹,然后执行批处理文件。
我意识到我可以通过使用npapi插件
来解决对chrome文件夹的需求https://developer.chrome.com/extensions/npapi
然而,这显然是一个潜在的雷区,所以我不想这样做。
如果有人可以指出我如何创建文件夹和访问文件的正确方向,那将非常感激。
答案 0 :(得分:14)
您需要编写一个Chrome扩展程序,向您的网站公开API。这是简单的部分。您为自己的网站添加了inject内容脚本,然后使用chrome.extension.sendMessage
与您的扩展程序进行通信。
困难的部分是从您的扩展程序中实际打开bat
文件。使用NPAPI,这本来很容易,因为您可以编写一个调用CreateProcess
或其他东西的C ++插件。与你所说的相反,这是一个非常好的解决方案。但不幸的是,NPAPI不是一种选择,因为它是deprecated。
所以你应该做的是使用 Native Messaging 。基本上,它是一个Chrome API,允许扩展使用标准输入和输出流与本机应用程序交换消息。
在这里阅读更多相关信息: https://developer.chrome.com/extensions/messaging#native-messaging-host
答案 1 :(得分:3)
如果您可以访问部署产品的计算机,则可以使用NaCL并使用--no-sandbox command-line
标志启动chrome并使用以下环境变量:
set NACL_DANGEROUS_ENABLE_FILE_ACCESS=1
有关此blog
另一个选项是NPAPI。
答案 2 :(得分:-1)
出于安全原因,不允许这样做。 如果允许运行.bat文件,则允许在计算机上运行恶意命令。