Доступ к локальным файлам с помощью расширения Google Chrome

Я задавал подобный вопрос к этому ранее

Общайтесь с Денежным Ящиком с Сайта

Однако вопрос был очень расплывчатым, и теперь я знаю, что мне нужно, используя расширение.

Этот вопрос похож на следующий, однако не совсем та информация, которая мне нужна.

Расширение Chrome и локальное хранилище

Доступ к локальным файлам через расширение Google Chrome?

Перечислите локальный каталог с расширением Chrome

Что мне действительно нужно сделать, это запустить файл 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, и затем выполнить командный файл.

Я понимаю, что могу обойти необходимость в папке Chrome с помощью плагина npapi

https://developer.chrome.com/extensions/npapi

Тем не менее, это, по-видимому, потенциальное минное поле, поэтому я бы не хотел этого делать.

Если кто-то может указать мне правильное направление создания папки и доступа к файлу, это будет очень ценно.

Ответы

Ответ 1

Вам нужно написать расширение для Chrome, которое предоставляет API для вашего сайта. Это легкая часть. Вы внедряете скрипт контента на свой веб-сайт, а затем используете chrome.extension.sendMessage для обратной связи с вашим расширением.

Сложная часть заключается в том, чтобы фактически открыть файл bat из вашего расширения. С NPAPI это было бы легко, поскольку вы могли бы просто написать плагин C++, который вызывает CreateProcess или что-то в этом роде. Вопреки тому, что вы сказали, это довольно хорошее решение. Но, к сожалению, NPAPI не вариант, так как он устарел.

Так что вам следует использовать Native Messaging. По сути, это Chrome API, который позволяет расширениям обмениваться сообщениями с собственными приложениями, используя стандартные потоки ввода и вывода.

Узнайте больше об этом здесь: https://developer.chrome.com/extensions/messaging#native-messaging-host

Ответ 2

  • Если у вас есть доступ к компьютерам, на которых развернут ваш продукт, вы можете использовать NaCL и запустить chrome с флагом командной строки --no-sandbox и использовать следующую переменную среды:

    set NACL_DANGEROUS_ENABLE_FILE_ACCESS=1

    Больше информации в этом блоге

  • Другой вариант - NPAPI.

Ответ 3

Это запрещено по соображениям безопасности. Если запуск файла .bat был разрешен, это позволило бы запускать вредоносные команды на компьютере.