Создание Пользовательского Протокола (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.0phped.exe" "%1"

проблема в том, что я не могу открыть файлы в своем браузере (пример: open_php_file://c:file.txt), и протокол не указан в программах windows по умолчанию.

2 ответов


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 файлы (x86)\NuSphere\7.0\phped.исполняемый."

пробовал openphpfile:blast и это сработало очень хорошо :)

EDIT:

проблема с этим решением заключается в том, что %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 всегда заменяет %1 введенным полным URI. AFAIK нет способа изменить это поведение.

Это оставляет вам два варианта:

  1. если вы написали программу, называемую собой, вы можете фильтровать URI, когда он вызывается.
  2. вы можете использовать промежуточную программу, которая действует как фильтр для URI, а затем перенаправляет результат на фактическую реализацию протокола. К счастью для вас, кто-то уже сделал именно так. Смотри'CustomURL ' на CodePlex. CustomURL-это небольшая утилита для регистрации пользовательских протоколов URL. Например, вы можете связать протокол rdp:// с клиентом удаленного рабочего стола или протокол ssh:// с Putty или другим клиентом SSH.