このページの本文へ

前へ 1 2 次へ

Windows Info 第65回

最新のWindowsにおけるファイルの関連づけを分析する

2016年07月16日 12時00分更新

文● 塩田紳二 編集● ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

Windows 8までのファイルの関連付け

 ファイルの関連付けは、基本的にはレジストリの登録で行なわれる。これには3つの方式がある。便宜上、この3つの方式を「XP方式」「Vista方式」「8方式」と呼称する。

 XP方式は、最も単純な方式で、今でもこのやり方でデータファイルを登録するアプリも少なくない。というのも、実は関連付けに対して、MSDNなどに古いものを含め、複数のドキュメントが存在し、どれが現時点での「標準的」な方法であるのかがわからない状態だからだ。とはいえ、Windows自体には互換性があり、最も古いXP方式で登録を行ってもちゃんと動作する。実際には、XP以前に確立した方式で、XP以前にも何回か変更があったのだが、すでに情報も失われているため、とりあえずXPの時点でのやり方を1つの方法とした。

 XP方式では、レジストリにある拡張子を示すキーに対してアプリの起動方法などを設定する仕組みだ。具体的には、「HKEY_CLASSES_ROOT」以下にピリオドを先頭につけた拡張子をキーとして登録していく。たとえば、テスキトファイルを示す「txt」という拡張子の場合「.txt」がキーとなる。

 もっもと単純な方法では、拡張子キーの下に一定のキーを作り、起動プログラムなどを定義する。このときのレジストリ設定には下の表のようなものを使う。

キー 名前 解説
HKEY_CLASSES_ROOT\[拡張子] (既定値) ファイルタイプキーやProgIDキーを定義する。ここを定義するとshellキー以下が無視される
ContentType HTTPなどで扱う場合のMIMEタイプを指定
PerceivedType Windows検索のKindで指定されるファイルの種類
OpenWithList 使われない
OpenWithProgids 対応可能なアプリをProgIDで指定(複数可)

 しかし、現在では、ファイルタイプキーやProgIDキーにアプリケーションの起動方法などを定義し、拡張子キーの既定値にProgIDを定義する方法が一般的だ。

 ProgIDとは「Programmatic Identifiers」の略である。ProgIDは、同じくHKEY_CLASSES_ROOT直下に定義されるピリオドで始まらないキーで定義する。ここには、ProgID以外のキーもあるが、ProgIDは、キー名に一定のルールがある。ただし、長い時間を経て使われてきたものであるため、ProgIDのルールを使わないものもある。

 当初は、このやり方は「ファイルタイプ」と呼ばれていた。たとえば、.txtという拡張子に「textfile」というファイルタイプを関連付けておき、ファイルタイプ側で、起動するアプリなどを切り替える方式だった。これは、単一のファイル形式を複数の拡張子に適用する場合などに便利な方式だった。現在でもこのやり方で関連付けを定義するためのコマンドとしてassoc、ftypeコマンドが残っている。

 assoc、ftypeコマンドは、具体的には「HKEY_LOCAL_MACHINE\SOFTWARE\Classes」にある拡張子キーに対して動作する。HKEY_CLASSES_ROOTは、このHKEY_LOCAL_MACHINE\SOFTWARE\Classesと、HKEY_CURRENT_USER\SOFTWARE\Classesを合成して作られるレジストリになっている。前者は、マシン全体(つまりすべてのユーザー)が対象で、後者は個々のユーザーごとの設定値になる。通常の操作は、HKEY_CLASSES_ROOTで行って問題はないのだが、変更は、HKEY_CURRENT_USER側になる。

 これに対してassoc、ftypeコマンドでは、HKEY_LOCAL_MACHINE\SOFTWARE\Classesしか見なし、変更もこのキー側になる。このため、HKEY_CLASSES_ROOTを直接編集した場合、それはassoc、ftypeコマンドでは表示されないので注意されたい。コマンドラインから行えるためある意味便利なのではあるが、XP以前に確立された古いやり方でしか記述ができず、変更が、全ユーザーに及ぶことを考えると、あまり使うべきではないと考えられる。

 ファイルタイプは、1つのアプリ定義を複数の拡張子に適用するときにコマンド記述を繰り返さないすむため、assoc、ftypeコマンドが主要な方法だった時期には便利なやり方だった。しかし、同種アプリの異なるバージョンが同居した場合や、アプリの起動方法が複雑になる(たとえば、アプリを構成するCOMコンポーネントを呼び出してファイルを処理するなど)に従い、単純なコマンドラインの記述では対応が難しくなってきた。そこで登場したのがProgIDだ。

 以後、話を簡単にするためにProgID形式で定義されたキーをProgIDキー、ファイルタイプ形式で定義されたキーをファイタイプキーと呼ぶ。なお、実際には両者は明確な区別がなく、サブキー以下の項目が混在していても動作する。

 もっとも単純な構造は、ファイルタイプとして用いられてきたキー構造だ。

キー 名前 解説
HKEY_CLASSES_ROOT\[ファイルタイプ] (既定値) ファイルタイプの名称
…\shell\[動詞]\Command (既定値) 動詞に対応するコマンドラインを定義。ファイルタイプキーの定義でも有効。動詞キーの既定値が表示名となり、日本語表記などを定義可能
…\shell\[動詞]\DropTarget clsid ドラッグドロップを処理するコンポーネントのID。ファイルタイプキーの定義でも有効
…\DefaultIcon (既定値) データファイルに使われるアイコン(リソース形式)

 ここではコマンドライン形式のプログラム起動方法が利用できる。これは、以下のようにShellキーのしたに「Open」、「Edit」、「Print」などの「動詞」に相当するキーを付け、さらに「command」キーを置き、その既定値で実行コマンドを定義する方法だ。

 具体的には、

HKEY_CLASSES_ROOT\.Sample
    @=SampleFType

HKEY_CLASSES_ROOT\SampleFType\
    DefaultIcon\
        @=c:\data\app.icon
    shell\
        edit\
            command\
                @=app.exe /edit %1
        open\
            command\
                @=app.exe /open %1
注:@=は既定値

 という形になる。なお、この方式を使うことで、エクスプローラーでデータファイルを右クリックすると、コンテキストメニューに「編集」や「開く」といった項目が表示されるようになる。メニューに日本語などを表示させたい場合、動詞キーの既定値に文字列を指定すると、これがメニューで使われる。

 ただし、現在マイクロソフトは、オプションとして以下のURLで示すキーを利用できるとしている(https://msdn.microsoft.com/en-us/library/windows/desktop/cc144148(v=vs.85).aspx

 なお、ContentTypeキーは、Webサーバーで扱う場合に拡張子からMIMEタイプを判別する場合に、PerceivedTypeは、Windowsの検索機能で、対象のKindを指定したときの判定に使われるものだ。前者は、同じPCでWebサーバーを動作させている場合に、後者は、Windowsの検索機能で複雑な検索条件を指定した場合にしか使われないため、設定しなくても特に問題が起きることはない。

 また、著名な形式、たとえばテキストファイルや画像ファイルの場合、すでに設定が行われているので、これを書き換えないように注意するだけでいい。

 なお、ProgIDの場合には、以下のURLにキー構造の説明がある(https://msdn.microsoft.com/en-us/library/windows/desktop/cc144152(v=vs.85).aspx)。

キー 名前 解説
HKEY_CLASSES_ROOT\[ファイルタイプ] (既定値) プログラムを表示するときの名称(Windows2000以降で有効)
…\DefaultIcon (既定値) データファイルに使われるアイコン(リソース形式)
…\FriendlyTypeName (既定値) プログラムの表示名(リソース形式)。こちらが指定されていると既定値の表示名は使われない
…\InfoTip (既定値) ToolTipsの表示内容
…\EditFlags (既定値) ファイルタイプアトリビュートフラグ
…\AppUserModelID (既定値) ジャンプリストの制御(Windows7以降で有効)
…\AllowSilentDefaultTakeOver (既定値) ProgIDを無視するかどうか(Windows 8以降で有効)
…\CurVer (既定値) アプリの最新バージョンのProgID

 この形式を使ってもかまわないが、手作業でやるには結構複雑になる。既存のキーをエクスポートして書き換え、インポートして設定すると少し作業がラクになる(キー名の書き換えを確実にすること)。

前へ 1 2 次へ

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
1
【Amazon.co.jp限定】HP ノートパソコン 15-fd 15.6インチ インテル Core 5 120U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M5PA-AAAI)
【Amazon.co.jp限定】HP ノートパソコン 15-fd 15.6インチ インテル Core 5 120U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M5PA-AAAI)
¥109,980
2
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
¥177,333
3
【Amazon.co.jp限定】Lenovo Chromebook クロームブック Duet 11 10.95インチ MediaTek Kompanio 838 プロセッサー​搭載 メモリ8GB eMMC 128GB 重量1.0kg 83HH000TJP パソコン
【Amazon.co.jp限定】Lenovo Chromebook クロームブック Duet 11 10.95インチ MediaTek Kompanio 838 プロセッサー​搭載 メモリ8GB eMMC 128GB 重量1.0kg 83HH000TJP パソコン
¥57,800
4
【整備済み品】中古 ノートパソコン富士通 A579/ 15.6型/ 第8世代Core i5-8365U/ 快適メモリ 8GB/ 高速SSD 256GB/ Win11 Pro/MS Office 2019付属/ テンキー・Webカメラ/豊富な接続端子(HDMI, VGA, USB 3.0)/ ACアダプター付属/初期設定済み・届いてすぐ使用可能/ 180日保証
【整備済み品】中古 ノートパソコン富士通 A579/ 15.6型/ 第8世代Core i5-8365U/ 快適メモリ 8GB/ 高速SSD 256GB/ Win11 Pro/MS Office 2019付属/ テンキー・Webカメラ/豊富な接続端子(HDMI, VGA, USB 3.0)/ ACアダプター付属/初期設定済み・届いてすぐ使用可能/ 180日保証
¥22,392
5
Lenovo ノートパソコン パソコン IdeaPad Slim 3 15.3インチ AMD Ryzen™ 5 7535HS メモリ16GB SSD512GB MS Office搭載 Windows11 バッテリー駆動17.4時間 重量1.59kg ルナグレー 83K700HBJP ノートPC
Lenovo ノートパソコン パソコン IdeaPad Slim 3 15.3インチ AMD Ryzen™ 5 7535HS メモリ16GB SSD512GB MS Office搭載 Windows11 バッテリー駆動17.4時間 重量1.59kg ルナグレー 83K700HBJP ノートPC
¥99,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
2
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,386
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
4
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,680
5
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,080
6
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,780
7
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
8
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
9
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
¥1,359
10
KIOXIA(キオクシア)【日本製】SDカード 32GB SDHC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA032G
KIOXIA(キオクシア)【日本製】SDカード 32GB SDHC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA032G
¥1,080

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン