0

一点上下文:

我有一个包含 VNC 链接的网站供我们团队使用——这些 VNC URL 的格式如下:

vnc://000.000.0.0:5901

我们团队中的大多数人都使用 Macbook,而 MacOS 默认会处理这些 url 以打开屏幕共享。但是,我们的一名团队成员使用 PC,需要设置自定义 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 查看器无法正确打开它,因为出于某种原因,它会尝试打开“vnc://000.000.0.0:5901/”(添加了尾随 / 字符)。

我得到的错误是:

端点无效:未正确指定端口

我需要做什么才能删除/过滤掉尾随的“/”字符?

谢谢!

参考

如何在 Windows 中注册自定义 URL 协议? 如何创建自己的 URL 协议?(例如所以://...)

4

1 回答 1

0

我无法隔离附加到 url 的尾部斜杠 (/) 的来源。我阅读了几篇似乎暗示浏览器的文章(我使用的是 Chrome,但在 Microsoft Edge 上也发生了同样的事情)正在添加这个——关于 DirectoryIndex 的东西。

无论如何,我能够通过以下方式提出一种解决方法:

创建批处理文件以格式化 url

此批处理文件采用 url,并且:

  1. 开始和结束引号 -​​- 传递的字符串是“vnc://000.000.0.0:0000/”,它从字符串中删除"vnc://and /"(使用前 7 个字符和后 2 个字符)

  2. 调用 VNC 查看器,将新格式化的 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 会话时它会关闭)。我还没有弄清楚如何做到这一点,但对我来说优先级较低。

于 2020-06-25T17:56:48.287 回答