如何在Windows上添加自定义URL处理程序?例如像iTunes的itms://。

19
我想让telnet://blah在打开putty而不是本地Windows telnet客户端时生效。
我甚至不知道Windows下这个“功能”的名称,所以我没有找到任何关于它的信息。
谢谢你提前帮忙,Jan

请参考此处的示例:http://blogs.msdn.com/b/noahc/archive/2006/10/19/register-a-custom-url-protocol-handler.aspx - Preet Sangha
如何在Windows中注册自定义URL协议 - sercxjo
4个回答

20

如果很简单,你可以通过命令行来完成:

ftype telnet # view current binding
ftype telnet=\path\to\putty.exe %1
否则,您需要像之前发布的那样使用注册表。

谢谢Richard,ftype看起来就像是我需要的东西。 但是当我创建如下绑定时:ftype ssh=c:\putty %1当我尝试运行“ssh:”时,会显示“拒绝访问”... - Jan Bannister
我发现在Vista中,如果用户有管理员权限并且UAC打开或关闭,就会出现“文件未找到”的问题。而http和mailto协议则没有这个问题。 - Goran Peroš
3
遗憾的是,单独在命令行上使用“ftype”命令会显示“访问被拒绝”的错误信息。你还需要在注册表示例中添加空白的“URL Protocol”键。MSDN链接提供了相关信息。 - studgeek

12

这是一个提供自定义URI处理程序的注册表键。

这里有一篇关于它的MSDN文章,摘录如下:

HKEY_CLASSES_ROOT
     alert
          (Default) = "URL:Alert Protocol"
          URL Protocol = ""
          DefaultIcon
               (Default) = "alert.exe"
          shell
               open
                    command
                         (Default) = "C:\Program Files\Alert\alert.exe" "%1"

这会让你允许执行以下操作

alert:一些信息

而你的应用程序将明显以"一些信息"作为其参数接收到它。


4
这很有效,但协议也被传递了。因此在您的示例中,应用程序发送“alert:some message”。有关如何在应用程序接收消息之前去掉“alert:”的任何提示/想法吗?我已尝试字符串替换,例如%1:alert:=%,但似乎不起作用。 建议在应用程序接收该消息之前将“alert:”去掉。您可以尝试使用字符串替换来实现这一点,例如将“alert:”替换为空字符串。您提供的尝试可能存在语法错误。 - studgeek
这篇 StackOverflow 文章有答案。 - Air2

2
要更改telnet协议处理程序(或任何其他现有处理程序)的方法,适用于XP(可能适用于Vista-我还没有查看),请转到控制面板>文件夹选项>文件类型(选项卡)。向下滚动(不多,靠近顶部)以查找(无)URL:Telnet协议,并单击“高级”按钮。从这里开始,就像更改文件类型关联一样简单。请注意,目标应用程序需要支持将提供的URL作为参数传递。
不幸的是,“新建”按钮似乎不允许创建新的“URL”类型,因为它需要输入扩展名。要创建新条目,我以前必须从注册表中复制现有条目(即:查找,导出,使用文本编辑器进行编辑,然后重新导入)。

0
您可以使用以下脚本: https://gist.github.com/sbiffi/11256316 它将telnet://和ssh:// URL与一个解析URL参数并启动putty的脚本相关联。
无需更改putty,它还支持传递登录(以及ssh密码)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接