
有沒有辦法將另一個程式設定為開啟資料夾或「我的電腦」時開啟的預設程式?我想用另一個程式(例如 FreeCommander)取代 Windows 資源管理器。我嘗試查看程式關聯的控制面板選項,但找不到打開資料夾的選項。
我認為某個地方有一些正則表達式可以做到這一點,但我不會手動搜尋。
答案1
總的來說,PHOENiX的問題是正確的,但有一個問題。註冊表項HKEY_CLASSES_ROOT\Folder
不僅涵蓋目錄,還涵蓋各種特殊資料夾,例如控制面板等等。如果您嘗試在第 3 方檔案管理器中開啟此類特殊資料夾,它很可能會失敗,因此您將無法再使用這些資料夾。
你真正想要的只是配置目錄和驅動器在文件管理器中開啟。有兩個註冊表項:
HKEY_CLASSES_ROOT\Directory
HKEY_CLASSES_ROOT\Drive
以下是如何將 Total Commander 設定為預設檔案管理器的兩個範例。當按一下(例如在「開始」功能表中)、雙擊(例如在桌面、Windows 檔案總管等上)、從其他應用程式開啟等時,兩者都會導致在Total Commander 中的新分頁中開啟任何目錄或驅動器。打開目錄/驅動器上下文選單中的項目,第二個是新增項目在 Total Commander 中開啟將 Total Commander 的圖示加入到上下文功能表中。
只需將以下內容複製並貼上到新檔案中,為其指定.reg
擴展名並執行即可。當然,您需要確保擁有 Total Commander 可執行檔的正確路徑。
檢查文件更多細節。
1.使用預設的打開物品
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Drive\shell]
@="open"
[HKEY_CLASSES_ROOT\Drive\shell\open\command]
@="\"C:\\Program Files\\totalcmd\\TOTALCMD64.EXE\" \"%1\" /T /O /S"
[HKEY_CLASSES_ROOT\Directory\shell]
@="open"
[HKEY_CLASSES_ROOT\Directory\shell\open\command]
@="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE \"%1\" /T /O /S"
2. 新增的上下文選單項在 Total Commander 中開啟
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Drive\shell]
@="TotalCommander"
[HKEY_CLASSES_ROOT\Drive\shell\TotalCommander]
@="Open in Total Commander"
[HKEY_CLASSES_ROOT\Drive\shell\TotalCommander\command]
@="\"C:\\Program Files\\totalcmd\\TOTALCMD64.EXE\" \"%1\" /T /O /S"
"Icon"="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE,0"
[HKEY_CLASSES_ROOT\Directory\shell]
@="TotalCommander"
[HKEY_CLASSES_ROOT\Directory\shell\TotalCommander]
@="Open in Total Commander"
"Icon"="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE,0"
[HKEY_CLASSES_ROOT\Directory\shell\TotalCommander\command]
@="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE \"%1\" /T /O /S"
Total Commander 的命令列參數
上面的範例中使用了 4 個命令列參數:
"%1"
:開啟的目錄/磁碟機的路徑,應該用引號引起來,以正確處理帶有空格字元的路徑/O
:使用 Total Commander 的現有實例而不是執行新實例/T
:開啟一個新選項卡而不是重複使用目前活動的選項卡/S
:開啟的目錄/磁碟機將被視為來源,因此它將在目前活動標籤所在的面板中開啟
檢查文件了解更多參數。
答案2
透過比較將 Q-Dir 設定為文件瀏覽器之前和之後的註冊表與其「附加」功能表中的選項,以下是它實際執行的操作(因為該軟體似乎不是開源的):
Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell
Change: Added Value
Value: *Q-Dir
Type: REG_SZ
Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir
Change: Added Key
Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir
Change: Added Value (Icon)
Value: C:\Program Files\Q-Dir\Q-Dir.exe
Type: REG_SZ
Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir\command
Change: Added Key
Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir\command
Change: Added Value
Value: "C:\Program Files\Q-Dir\Q-Dir.exe" /e>%L>%D>%1>%S>
Type: REG_SZ
它正在建立一個shell 命令,該命令也會出現在上下文選單中,但是,這將是「預設」操作,因此如果您在Windows 檔案總管中開啟某些內容,它將在Q-Dir 中打開。
第一個登錄機碼變更將預設 shell 設定為新建立的*Q-Dir
shell 命令。
最後一次註冊表更改的值具有以下含義:
"C:\Program Files\Q-Dir\Q-Dir.exe"
-- 執行 Q-Dir.exe
/e>%L>%D>%1>%S>
-- 使用這些參數
>%L>%D>%1>%S>
是命令列變量,此處進一步解釋:為上下文選單編寫 shell 指令時哪些特殊變數可用
然而,>
它們之間的 和/e
是 Q-Dir 特有的。 Q-Dir 專門實現了一個/e
接受值的開關,以便它可以>
根據優先級鏈中的需要進行拆分和使用。
最大的問題是,這樣安全嗎?
我們不確定,但請謹慎行事。我已經注意到,shell 替換程式可能會獲得一個參數,人們可能期望它是一個文件路徑,但實際上它是一個奇怪的 GUID 字串,例如,格式為::{123E4567-E89B-12D3-A456-426614174000}\8\::{123E4567-E89B-12D3-A456-426614174000}
.例如,如果您右鍵單擊開始功能表中的應用程式 -> 卸載,就會發生這種情況,該應用程式通常會傳遞到資源管理器(預設為 shell)並從那裡處理。
處理此問題的一種方法是建立一個中間程序,該程序接受參數,確保它是檔案路徑,如果不是,則將參數傳遞給 explorer.exe,而不是打開真正想要的 shell。像 Q-Dir 這樣的程式直接在其中編寫了這個或類似的東西,因此 Q-Dir 不需要這個。
答案3
不確定 FreeCommander,但是Q-目錄有一個選項將該文件管理器設定為預設值:
不過,如果作為便攜式應用程式運行,該設定有一些限制。例如,Win E啟動 Windows 資源管理器,儘管有一個上下文功能表項目可以使用 Q-Dir 開啟資料夾。