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

Тема в разделе "Поиск решений", создана пользователем kagorec, 21 май 2018.

  1. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    3.132
    Представьте, что у вас возникла необходимость прямо с веб-страницы заказа в вашей 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.

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

    Источник: Ссылки недоступны для гостей, зарегистрируйтесь или авторизуйтесь на форуме!
     
    Root, xLime и napserious нравится это.
  2. napserious

    napserious Well-Known Member Пользователи Активирован

    Регистрация:
    16 окт 2015
    Сообщения:
    300
    Тоже читал это на хабре, было полезно, спасибо!
     

Поделиться этой страницей