有沒有辦法設定預設應用程式來開啟特定資料夾的所有檔案類型?

有沒有辦法設定預設應用程式來開啟特定資料夾的所有檔案類型?

我有一個具體的包含不同文件類型的資料夾(txt、pdf、docx、任何事物),當雙擊檔案總管時,我不希望預設應用程式開啟這些檔案。相反,我想要一個特定的應用程式來開啟僅駐留在該特定資料夾中的這些檔案。

我用另一種方​​式解釋這一點。假設資料夾 C:\Test 包含以下檔案:

  • 測試.txt
  • 手冊.pdf
  • 計劃.docx
  • 財務.xlsx
  • foo.mp4

如果在 C:\Test 以外的任何其他資料夾中找到這些文件,則它們的預設應用程式會開啟它們:

  • test.txt -> 記事本
  • 手冊.pdf -> Adob​​e Reader
  • 計劃.docx -> Microsoft Word
  • 財務.xlsx -> Microsoft Excel
  • foo.mp4 -> Windows Media Player

但由於這些檔案位於 C:\Test 中,當我在檔案總管上雙擊它們時,我希望它們全部由 default_app.exe 開啟:

  • test.txt -> default_app.exe
  • 手冊.pdf -> default_app.exe
  • plan.docx -> default_app.exe
  • Finance.xlsx -> default_app.exe
  • foo.mp4 -> default_app.exe

抱歉,如果我的 Google 技能不夠好,但我這幾天一直在尋找答案。

答案1

簡短的回答是否定的,您不希望它以任何其他方式工作。

如果發生這種情況,那麼單一程式就可以劫持電腦中的整個資料夾。檔案權限管理不善,檔案系統將成為惡意軟體的絕佳目標。

此外,您的一個應用程式不太可能讀取所有檔案類型並讓使用者理解它們。

您可以將檔案儲存在資料庫中,然後讓程式從資料庫而不是 Windows 檔案系統中呼叫它們。或者,您可以讓您的應用程式遍歷該資料夾並將檔案副檔名變更為它單獨可以理解的副檔名,然後在 Windows 中設定這些關聯。

答案2

您可以使用 AutoHotkey 腳本來完成此操作。

; This script will intercept double-clicks and if you have double-clicked a file within a pre-defined directory,
; instead of opening the file with the default app, open the file with a custom app instead.

#Persistent
#SingleInstance, Force
#InstallKeybdHook
#HotkeyInterval, 100
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
SetTitleMatchMode 2
SetWinDelay, 0

WaitTime := DllCall("GetDoubleClickTime")
SpecialDir := "C:\Test"
ExecWith := "C:\path\to\default_app.exe"

LButton Up::
    IfWinActive ahk_exe explorer.exe
    {
        PrevClip := ClipBoard
        If (A_TimeSincePriorHotkey<400) and (A_TimeSincePriorHotkey<>-1)
        {
            SendInput, ^c ; Get path to file you double-clicked on
            Sleep, 50 ; Sleep to give time for clipboard to get contents
            If FileExist(ClipBoard)
            {
                Run %ExecWith% %ClipBoard%
            } else {
                SendInput, {LButton}
            }
            ClipBoard := PrevClip
        } Else {
            SendInput, {LButton}
        }
    } Else {
        SendInput, {LButton}
    }
Return

只需將此程式碼儲存到名為 explorer-double-click.ahk 的檔案(或以 .ahk 結尾的類似檔案)。

您需要編輯 SpecialDir 和 ExecWith(第 15 行和第 16 行)以適當地設定路徑。

您需要先安裝 AutoHotkey。然後運行它。

相關內容