7

我一直在尝试创建一个自定义协议(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 默认程序中。

4

2 回答 2

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\""
于 2012-08-05T19:27:33.423 回答
0

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

这给你留下了两个选择:

  1. 如果您自己编写了被调用的程序,则可以在调用它时过滤 URI。
  2. You could use an intermediate program that acts as a filter for the URI and then forwards the result to the actual protocol implementation. Fortunately for you, someone has already done exactly that. See 'CustomURL' on CodePlex. CustomURL is a small utility for registering custom URL protocols. For example you can associate the rdp:// protocol with Remote Desktop Client or the ssh:// protocol with Putty or another SSH client.
于 2012-08-05T19:34:03.447 回答