Как из браузера открыть папку в проводнике Windows

от автора

Представьте, что у вас возникла необходимость прямо с веб-страницы заказа в вашей CRM-системе открывать папку с файлами, которые к этому заказу относятся. Но не просто отображать содержимое папки, а прямо на компьютере открывать проводник с этой папкой.

К сожалению, сделать это «в лоб» не получится. Во-первых, браузеры умеют открывать только веб-страницы, а не программы на компьютере. Во-вторых, политика безопасности браузеров запрещает доступ ко всему, что явно не разрешено, тем более, доступ к файловой системе.

Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:

1) он не может отобразить список файлов в папке;
2) такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.

Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Windows и потребует некоторых (очень простых) действий на компьютере.

В HTML-коде это будет выглядеть как-то так:

<a href="myproto://C:/My Folder/123">открыть папку</a>

Можно из JavaScript:

window.open('myproto://C:/My Folder/123');

Сначала необходимо придумать название протокола (у меня будет myproto) и зарегистрировать его в системе. Для этого в любом месте (хоть на рабочем столе) создаём файл с расширением .reg (например, myproto.reg) и следующим содержимым:

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\myproto] "URL Protocol"="" @="URL:Myproto Protocol"  [HKEY_CLASSES_ROOT\myproto\shell]  [HKEY_CLASSES_ROOT\myproto\shell\open]  [HKEY_CLASSES_ROOT\myproto\shell\open\command] @="\"C:\\myproto.bat\" \"%1\"" 

Здесь myproto — название моего только что созданного протокола. Можете изменить на своё (но не используйте стандартные названия протоколов типа http, ftp, mailto и прочие).

Запускаем файл. Винда выдаст несколько вопросов и предупреждений, со всеми соглашаемся. Всё, больше этот файл на этом компьютере не нужен, можно удалять.

Далее в корне диска C: необходимо создать файл myproto.bat со следующим содержимым:

@echo off set "path=%~1" setlocal enabledelayedexpansion set path=%path:myproto://=% set path=%path:"=% set path=%path:/=\% set path=!path:%%20= ! set path=!path:%%5C=\! C:\Windows\explorer.exe "%path%" 

Здесь также меняем myproto на название вашего протокола. Это и будет его обработчик.
Всё готово. Теперь вы можете прямо из браузера (абсолютно любого) на данном компьютере открывать папки в проводнике в отдельном окне, просто открыв ссылку вида myproto://C:/My Folder/123.

К сожалению, данные действия придётся проделать на всех компьютерах, где необходима такая функциональность. Но, как правило, подобные вещи используются во внутрикорпоративных приложениях, где число пользователей известно и ограничено.


ссылка на оригинал статьи https://habr.com/ru/post/708760/


Комментарии

Добавить комментарий

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