Как удалить завершающую косую черту (/) в конце параметра, передаваемого через пользовательский протокол URL-адреса в приложение (VNC Viewer)?

Немного контекста:

У меня есть веб-сайт со ссылками на VNC для использования нашей командой — эти URL-адреса VNC имеют следующий формат:

vnc://000.000.0.0:5901

Большая часть нашей команды использует Macbook, и MacOS по умолчанию обрабатывает эти URL-адреса, чтобы открыть общий доступ к экрану. Однако один из членов нашей команды использует ПК, и ему необходимо настроить собственный протокол URL-адресов.

Вот что мы уже пробовали

Добавлено следующее с помощью редактора реестра:

HKEY_CLASSES_ROOT/
  vnc/
    (Default)    "URL:vnc Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) "C:\Program Files\RealVNC\VNC Viewer\vncviewer.exe" "%1"

Это дало нам 99% пути — нажатие на URL-адрес открывает приложение «VNC Viewer» и передает URL-адрес. Однако VNC Viewer не может открыть это правильно, потому что по какой-то причине он пытается открыть vnc://000.000.0.0:5901/ (добавлен завершающий символ /).

Ошибка, которую я получаю:

Недопустимая конечная точка: неправильно указан порт

Что мне нужно сделать, чтобы заставить его удалить/отфильтровать трейлинг/символ?

Спасибо!

Ссылки

Как зарегистрировать собственный протокол URL-адресов в Windows? Как создать собственный протокол URL? (например, так://...)


person jonoh    schedule 24.06.2020    source источник


Ответы (1)


Мне не удалось выделить источник завершающей косой черты (/), добавленной к URL-адресу. Я прочитал несколько статей, которые, казалось, предполагали, что браузер (я использую Chrome, но то же самое произошло и с Microsoft Edge) добавлял что-то о DirectoryIndex.

Во всяком случае, я смог собрать обходной путь:

Создание пакетного файла для форматирования URL

Этот пакетный файл принимает URL-адрес и:

  1. Начальные и конечные кавычки. Передана строка vnc://000.000.0.0:0000/, и она удаляет "vnc:// и /" из строки (используя первые 7 символов и последние 2 символа).

  2. Вызывает VNC Viewer, передавая новый отформатированный URL-адрес в качестве параметра.

vnc-url-handler.bat

SET S=%1
SET S=%S:~7,-2%
call "C:\Program Files\RealVNC\VNC Viewer\vncviewer.exe" %S%
quit 0

Вы можете создать это в Блокноте и сохранить в правильном формате.

Изменение ключа реестра, чтобы он указывал на пакетный файл, а не на мое приложение

HKEY_CLASSES_ROOT/
  vnc/
    (Default)    "URL:vnc Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) "path_to_vnc-url-handler.bat_here" "%1"

Это работало в Windows 10, Chrome 83.

Окно командной строки будет открываться каждый раз при открытии VNC Viewer, но вы можете закрыть его (или оно закроется, когда вы закроете сеанс VNC Viewer). Я еще не понял, как это сделать, но для меня низкий приоритет.

person jonoh    schedule 25.06.2020