特定のフォルダーのすべてのファイルタイプを開くためのデフォルトのアプリケーションを設定する方法はありますか?

特定のフォルダーのすべてのファイルタイプを開くためのデフォルトのアプリケーションを設定する方法はありますか?

私は特定の異なるファイルタイプ(txt、pdf、docx、何でも) をファイル エクスプローラーでダブルクリックしたときに、既定のアプリケーションでこれらのファイルを開くことは望ましくありません。代わりに、この特定のフォルダーにのみ存在するこれらのファイルを特定のアプリケーションで開くようにしたいのです。

これを別の方法で説明します。フォルダー C:\Test に次のファイルが含まれているとします。

  • テスト.txt
  • マニュアル.pdf
  • 計画.docx
  • 財務.xlsx
  • フー.mp4

これらのファイルが C:\Test 以外のフォルダーで見つかった場合は、デフォルトのアプリケーションによってファイルが開かれます。

  • test.txt -> メモ帳
  • manual.pdf -> Adob​​e Reader
  • 計画.docx -> Microsoft Word
  • finance.xlsx -> Microsoft Excel
  • foo.mp4 -> Windows メディアプレーヤー

しかし、これらのファイルは C:\Test にあるため、ファイル エクスプローラーでダブルクリックすると、すべてが default_app.exe によって開かれるようにします。

  • test.txt -> default_app.exe
  • manual.pdf -> default_app.exe
  • プラン.docx -> default_app.exe
  • finance.xlsx -> default_app.exe
  • foo.mp4 -> default_app.exe

私の Google スキルが十分でなかったら申し訳ありませんが、私は数日間にわたって答えを探していました。

答え1

簡単に答えると、いいえです。他の方法で動作することを望むことはないでしょう。

これが可能であれば、1 つのプログラムがマシン内のフォルダー全体を乗っ取ってしまう可能性があります。ファイルのアクセス許可が適切に管理されず、ファイル システムがマルウェアの格好の標的となってしまいます。

また、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 をインストールする必要があります。その後、それを実行してください。

関連情報