一点上下文:
我有一个网站,其中包含指向 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 FilesRealVNCVNC Viewervncviewer.exe" "%1"
这让我们完成了 99% 的路程——点击 URL 会打开应用程序"VNC 查看器",然后传递 URL。但是,VNC 查看器无法正确打开它,因为出于某种原因,它尝试打开"vnc://000.000.0.0:5901/"(添加了尾随/字符(。
我得到的错误是:
终结点无效:未正确指定端口
我需要做什么才能让它删除/过滤掉尾随的"/"字符?
谢谢!
引用
如何在 Windows 中注册自定义 URL 协议? 如何创建自己的网址协议?(例如 so://...
我无法隔离附加到 url 的尾部斜杠 (/( 的来源。我读了几篇文章,似乎建议浏览器(我使用的是Chrome,但在Microsoft Edge上发生了同样的事情(正在添加这个 - 关于DirectoryIndex的一些东西。
无论如何,我能够通过以下方式制定解决方法:
创建批处理文件以格式化 URL
此批处理文件采用 url,并且:
-
开始和结束引号 - 传递的字符串是"vnc://000.000.0.0:0000/",它从字符串中删除
"vnc://
和/"
(使用前7个字符和后2个字符( -
调用 VNC 查看器,将新格式化的 url 作为参数传递。
vnc-url-handler.bat
SET S=%1
SET S=%S:~7,-2%
call "C:Program FilesRealVNCVNC Viewervncviewer.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查看器时都会打开一个命令提示符窗口,但您可以关闭它(或者在关闭VNC查看器会话时关闭(。我还没有弄清楚如何做到这一点,但对我来说优先级很低。
没有批处理文件:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTvnc]
@="URL:vnc Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOTvncshellopencommand]
@="cmd /V:ON /C set address=%1 && set address=!address:~6,-2! && "C:\Program Files\uvnc bvba\UltraVNC\vncviewer.exe" -connect !address!-notoolbar -nostatus -noauto -8greycolors"