関連付け
- 既定のプログラム (User Choice)
- ファイルタイプ (assoc / ftype)
- プログラムから開く (OpenWithList / OpenWithProgids)
レジストリ
- Vista 方式
- shell / verb / command
- OpenWithList
- OpenWithProgids
- User Choice
- Windows 8 方式
- User Choice
- ProgID
Windows 10
- 「既定のプログラム」 (User Choice) が優先される。
- アプリからは登録済みの「既定のプログラム」 (User Choice) を変更できない。
ドキュメント:
新しいアプリケーションのファイルの種類を登録する方法 | Microsoft Docs [公式]
Best Practices for File Associations | Microsoft Docs [Official]
File Association Example | Microsoft Docs [Official]
参考:
最新の Windows におけるファイルの関連づけを分析する | ASCII.jp
Windows 8 方式のファイル関連付けを分析する | ASCII.jp
Windows Vista / 7 で用いられたファイル関連付けの仕組みを知る | ASCII.jp
ファイル拡張子とプログラムの関連付け | Web/DB プログラミング徹底解説
拡張子の関連付け (Windows 10) | リボンの君と SuyamaSoft
拡張子の関連付け (Windows XP) | リボンの君と SuyamaSoft
Windows 10 でのファイル拡張子関連付けのための準備作業 | サクラエディタ ヘルプ
既定のプログラム (User Choice)
ドキュメント:
Windows 10 の既定のプログラムを変更する | Windows ヘルプ [公式]
Changes to how Windows 10 handles default apps | Windows Dev Center [Official]
参考:
既定のアプリ/既定のプログラムの拡張子関連付けを設定変更する方法 | ぱそかけ
「このファイルを開く方法を選んでください。」で関連付ける | リボンの君と SuyamaSoft
ファイルのダブルクリックで起動するアプリを変更したい | 日経クロステック
Best way to get file type association in Windows 10 from command line? – Stack Overflow
Get a location of application in open with list of Windows 10 – Super User
assoc
ドキュメント:
ftype
ドキュメント:
レジストリ
HKEY_XXX\SOFTWARE\Classes
以下に拡張子別にプログラムの関連付けが記録される。
HKEY_LOCAL_MACHINE
: マシン全体の設定HKEY_CURRENT_USER
: ユーザー別の設定
assoc
/ ftype
コマンドは HKEY_LOCAL_MACHINE
のみを対象とする。
ドキュメント:
File Types | Microsoft Docs [Official]
参考:
レジストリの直接編集によるファイルの拡張子と関連づけ | Glamenv-Septzen.net
最新のWindowsにおけるファイルの関連づけを分析する | ASCII.jp
ファイルタイプの登録
- キー:
HKEY_CLASSES_ROOT\filetype
DefaultIcon
: 既定のアイコンを指定する。shell\open\command
: 「開く」 (Open) で使用するコマンドラインを与える。shell\edit\command
: 「編集」 (Edit) で使用するコマンドラインを与える。
ドキュメント:
File Types | Microsoft Docs [Official]
参考:
HKEY_CLASSES_ROOT – レジストリ 解剖記 | Programming Field
拡張子の登録
- キー:
HKEY_CLASSES_ROOT\.ext
- 既定: ファイルタイプキー、あるいは、ProgID キーを指定する。
OpenWithProgids
: 拡張子を開けるアプリを ProgID で指定する。
ドキュメント:
File Types | Microsoft Docs [Official]
参考:
HKEY_CLASSES_ROOT – レジストリ 解剖記 | Programming Field
このファイルを開く方法を選んでください
- キー:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext
OpenWithList
OpenWithProgids
UserChoice
新規ユーザー作成時に適用されるデフォルト設定を追加/変更するには次のキー以下を編集する。
- キー:
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
参考:
「このファイルを開く方法を選んでください」で関連付ける | リボンの君と SuyamaSoft
アイコンを変更する
DefaultIcon
参考:
レジストリを編集して拡張子に関連付けされているアイコンを変更する | iPentec.com
ファイルのアイコンを変更する (DefaultIcon) | リボンの君と SuyamaSoft
HKEY_CLASSES_ROOT – レジストリ 解剖記 | Programming Field
How to Change the Icon for a File Type in Windows | Winhelponline
Show default extension icon instead of default – Microsoft Community
動詞 (Verb)
標準動詞
Open
: ファイルまたはフォルダを開くOpennew
: ファイルまたはフォルダを新しいウィンドウで開くPrint
: ファイルを印刷するPrintto
: ファイルをプリンターにドラッグアンドドロップして印刷するExplore
: エクスプローラーを開くProperties
: プロパティを開く
ドキュメント:
ショートカットメニューハンドラーの作成 | Microsoft Learn [公式]
アプリケーション
ドキュメント:
アプリケーションの登録 | Microsoft Learn [公式]
プログラムから開く
- OpenWithList
- OpenWithProgids
ドキュメント:
ファイル名拡張子のファイル ハンドラを指定する | Microsoft Docs [公式]
ファイル名拡張子の動詞を登録する | Microsoft Docs [公式]
「開く」ダイアログ ボックスにアプリケーションを含める方法 | Microsoft Docs [公式]
参考:
「プログラムから開く」メニューに追加 (OpenWithList) | リボンの君と SuyamaSoft
最新の Windows におけるファイルの関連づけを分析する | ASCII.jp
Windows Vista / 7 で用いられたファイル関連付けの仕組みを知る | ASCII.jp
プログラム識別子 (ProgID)
ドキュメント:
プログラム識別子 | Microsoft Docs [公式]
バージョンに依存しない ProgID キー | Microsoft Docs [公式]
Shell Execute API
- ShellExecute
- ShellExecuteEx
- ShellExecuteW
ドキュメント:
アプリケーションの起動 (ShellExecute / ShellExecuteEx) | Microsoft Learn [公式]
ShellExecuteW 関数 | Microsoft Learn [公式]
参考:
ShellExecuteEx API | Oka Laboratory
CSIDL 値
ドキュメント:
CSIDL (Shlobj.h) | Microsoft Docs [公式]
MultiSelectModel
種類
- Single: 一つの選択のみをサポートする
- Document: ドキュメントを最上位ウィンドウで開くアプリケーション (最大 15 項目の選択をサポートする)
- Player: 複数の項目を選択して開くアプリケーション (最大 100 項目の選択をサポートする)
ドキュメント:
動詞選択モデルを使用する方法 | Microsoft Learn [公式]
「ペイント 3D で編集する」を削除する
参考:
右クリックメニューから「ペイント 3D で編集する」を削除する | Billion Wallet
Add or Remove Edit with Paint 3D context menu in Windows 10 – TenForums
ドキュメント
アプリケーションの登録 | Microsoft Docs [公式]
GetProgID.ps1
コード: