创建自定义协议(Windows 7)

Sim*_*mon 7 windows protocols network-protocols windows-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"
Run Code Online (Sandbox Code Playgroud)

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

per*_*ain 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\""
Run Code Online (Sandbox Code Playgroud)

基本上问题是你的协议中的下划线.一旦删除一切开始工作正常.你可以根据你的愿望改变可执行文件的路径,即"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\""
Run Code Online (Sandbox Code Playgroud)