创建自定义协议(Windows 7)

时间:2012-07-26 14:15:42

标签: windows windows-7 protocols network-protocols

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

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默认程序中列出。

2 个答案:

答案 0 :(得分:9)

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\""

答案 1 :(得分:0)

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

这给你两个选择:

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