创建自定义协议(Windows 7)

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

1
https://dev59.com/MHVD5IYBdhLWcg3wHn2d?rq=1 - Pavel Radzivilovsky
1
这个解决方案的问题在于%1被替换为"open_php_file://[file]"而不仅仅是"[file]"。因此我需要一种过滤器来去掉"open_php_file://"。 - Simon
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:[空格]Your_Content之后加一个空格,并将参数更改为%2,您将获得预期结果。

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

1
它可以在不添加“EditFlags”值和“DefaultIcon”键的情况下工作,很有趣。感谢您的分享,我会在Win7上使用它。 - Blagoh
@perilbrain 这个解决方案在Windows 7上运行良好,但在Windows 10上不起作用,你能否为Windows 10提供一些建议。 - Madhur Sodhi
这正是我正在寻找的,但正如@MadhurSodhi所提到的,这种方法在Windows 10上不起作用。这将非常有用,完全消除了参数解析的“中间件”需求。 - Pedro Henrique

0

Windows总是将%1替换为输入的完整URI。据我所知,没有办法改变这种行为。

这给你留下了两个选择:

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

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