如何让Internet Explorer正确处理自定义协议处理程序?

时间:2015-04-08 18:55:31

标签: windows internet-explorer registry

我想要一个我正在开发的网站,以便在PuTTY类型网址上打开ssh://0.0.0.0。我在Chrome和Firefox中使用此功能,但在Internet Explorer中出现以下错误:

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access this item.

其次是:

Unable to open this helper application for ssh://0.0.0.0/.

The protocol specified in this address is not valid. Make sure the address is correct, and try again.

以下是我的注册表项:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\ssh\shell]

[HKEY_CLASSES_ROOT\ssh\shell\open]

[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="cmd /k set in=\"%l\" & call set in=%%in:ssh:=%% & call set in=%%in:/=%% & call \"C:\\Program Files (x86)\\PuTTY\\putty.exe\" %%in%% & exit"

我做了一个快速实验,看起来这个问题归因于cmdcall。一旦我删除它们,我就会得到预期的结果。但是,我仍然需要将字符串操作作为PuTTY(使用RealVNC VNC Viewer的vnc URL的相同情况)只需要没有协议前缀的主机。

编辑:似乎cmd仅导致问题。 call可以与预期的行为一起使用。

1 个答案:

答案 0 :(得分:5)

我猜Internet Explorer会调用cmd.exe存在权限问题。相反,我必须完全从PowerShell开始。这是工作的注册表项,绝对没有其他脚本或PuTTY程序修改,在我在网上找到的一些解决方法中显示:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\ssh\shell]

[HKEY_CLASSES_ROOT\ssh\shell\open]

[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"$uri = [System.Uri]'%l';&\"${env:ProgramFiles}\\PuTTY\\putty.exe\" -P $uri.Port $uri.GetComponents([System.UriComponents]::UserInfo -bor [System.UriComponents]::Host, [System.UriFormat]::UriEscaped)\""

我现在可以从所有三个主要浏览器中打开SSHVNC个链接。