创build自定义协议(Windows 7)

我一直在尝试创build一个自定义协议(open_php_file://)来通过浏览器打开本地文件。 我创build了以下registry项:

HKEY_CLASSES_ROOT open_php_file (Default) = "URL:PHPEd protocol" URL Protocol = "" DefaultIcon (Default) = "phped.exe" shell open command (Default) = "C:\Program Files (x86)\NuSphere\7.0\phped.exe" "%1" 

问题是:我无法打开我的浏览器中的文件(例如:open_php_file:// c:\ file.txt),并且该协议没有在Windows默认程序中列出。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\openphpfile] @="\"URL:openphpfile Protocol\"" "EditFlags"=hex:02,00,00,00 "URL Protocol"="" [HKEY_CLASSES_ROOT\openphpfile\DefaultIcon] @="\"C:\\Users\\ABC\\Documents\\Programs\\CB\\Chunks\\CGI.exe\",0" [HKEY_CLASSES_ROOT\openphpfile\shell] [HKEY_CLASSES_ROOT\openphpfile\shell\open] [HKEY_CLASSES_ROOT\openphpfile\shell\open\command] @="\"C:\\Users\\ABC\\Documents\\Programs\\CB\\Chunks\\CGI.exe\" -c \"%1\"" 

基本上问题是在协议中的下划线。一旦删除所有开始工作正常。您可以根据您的愿望,即“C:\ Program Files文件(x86)\ NuSphere \ 7.0 \ phped.exe”更改可执行文件的路径。

我试过openphpfile:blast ,它的工作相当好:)

编辑:

这个解决方案的问题在于%1被替换为“open_php_file:// [file]”而不是“[file]”。 这样我需要一些排序“open_php_file://”的过滤器。

在openphpfile之后放置一个空格:[Space] Your_Content并将参数更改为%2,您将得到预期的结果

 [HKEY_CLASSES_ROOT\openphpfile\shell\open\command] @="\"C:\\Users\\ABC\\Documents\\Programs\\CB\\Chunks\\CGI.exe\" -c \"%2\"" 

Windows始终使用输入的完整URI替换%1。 AFAIK没有办法改变这种行为。

这给你两个选择:

  1. 如果您已经编写了自己调用的程序,则可以在调用URI时对其进行过滤。
  2. 您可以使用一个充当URI过滤器的中间程序,然后将结果转发给实际的协议实现。 幸运的是,有人已经完成了。 请参阅CodePlex上的“ CustomURL ”。 CustomURL是一个用于注册自定义URL协议的小工具。 例如,您可以将rdp://协议与远程桌面客户端或ssh://协议与Putty或其他SSH客户端相关联。