2012-07-26 102 views
7

我一直在試圖創建一個自定義協議(open_php_file://)來通過瀏覽器打開本地文件。我創建了以下系統登錄密鑰:創建自定義協議(Windows 7)

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的),以及協議ISN」列在Windows默認程序中。

+1

http://stackoverflow.com/questions/80650/how-do-i-register-a-custom-url-protocol-in-windows?rq=1 – 2012-07-30 01:00:04

+1

該解決方案的問題在於%1被替換爲「open_php_file:// [file]」而不是「[file]」。這樣我需要某種類型的過濾器,可以「open_php_file://」。 – Simon 2012-07-30 06:48:02

回答

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

基本問題是在你的protocol.Once下劃線去掉一切開始工作fine.You可以改變的可執行文件路徑按你的願望,即「C:\ Program Files文件(x86)的\ NuSphere \ 7.0 \ phped.exe」。

我試圖openphpfile:blast和它的工作相當不錯:)

編輯:

與此解決方案的問題是,1%被替換 「open_php_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 2015-03-10 18:01:25

+0

@perilbrain此解決方案在Windows 7上運行良好,但在Windows 10上無法運行,您可以爲Windows 10提供一些建議。 – 2017-02-28 08:37:41

0

Windows總是與已輸入完整的URI替換%1。 AFAIK無法改變這種行爲。

這使你兩個選擇:

  1. 如果你已經寫了被稱爲自己的程序,你可以過濾URI被調用時。
  2. 您可以使用一個充當URI過濾器的中間程序,然後將結果轉發給實際的協議實現。幸運的是,有人已經完成了。請參閱CodePlex上的'CustomURL'。 CustomURL是一個用於註冊自定義URL協議的小工具。例如,您可以將rdp://協議與遠程桌面客戶端或ssh://協議與Putty或其他SSH客戶端相關聯。