Как создать собственный обработчик URI схемы?

Добрый день, есть задача во внутренней сети, и её сайтах размещать ссылки, при клике по который происходил определенное действие на стороне клиента

А именно получается обозначить свой URI Scheme и на основе контекста ссылки использующую данную схему - делать то или иное действие на стороне пользователя

Для начала решил теста ради обозначить URI при клике по которому должен открываться на стороне клиента блокнот, с параметром в виде ссылки на текстовый документ находящийся в определенной шаре сети

Для этого на веб странице создал следующую ссылку:

<a href="notepad:\\DESKTOP-M48FDKF\\somefolder\somefile.txt">Open txt file by notepad</a>


Далее на стороне клиента в реестре создал новый раздел

5e97fc972400c051109338.png

5e97fc9da0315884762056.png

И далее решил проверить открыв браузер и кликнув по данной ссылке, выскакивает предупреждения от браузера (Microsoft Edge/Chromium) что данная ссылка пытается открыть блокнот, и вы уверены в этом?
Отвечаю что да, и получаю ошибку

Не удается найти файл C:\Program Files (x86)\Microsoft\Edge\Application\81.0.416.53\notepad:%5C%5CDESKTOP-M48FDKF%5C%5Csomefolder%5Csomefile.txt.

Вы хотите создать новый файл с таким именем?


И тут я понимаю, что скорее всего проблема с указанием пути в ссылке на веб-странице, но не могу понять, в каком виде нужно отдавать ссылку

Похоже проблема в том, что параметр %1 хранит также в себе URI Scheme, т.е. не то значение которое идёт после него, а полностью notepad:\\DESKTOP-M48FDKF\\somefolder\somefile.txt
Подскажите пожалуйста
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
как то делал запуск произвольных программ по ссылке:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp]
"URL Protocol"=""
@="URL:Universal run app"

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell\open\command]
@="mshta javascript:new(ActiveXObject)('WScript.Shell').Run(decodeURI('%1'.substr(7))),window.close()"


<a href="runapp:notepad C:\\Users\\User\\Desktop\\test.txt">Открыть test.txt</a>


при желании можно сделать чтобы только конкретное приложение открывалось, но это неудобно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы