Windows
 Computer >> コンピューター >  >> システム >> Windows

Windows 11で既定のアプリを設定する方法――コマンドラインが機能しない理由と現実的な対処法

正直に言おう。私は以前考えていたよりも早く、コンピューターを使う機会を大きく減らすことになるだろう。もちろん、劇的に文明を捨てて原始生活に戻るといった話ではない。しかし、世に送り出されるソフトウェアの品質低下と愚かさにはすっかりうんざりしており、マシンとの関わりを必要最低限まで縮小しようと考えている。今日のテーマは、その典型例とも言える「既定のプログラム(デフォルトアプリ)」の設定だ。

Windowsにおける既定のアプリ設定。これは「やってはいけないやり方」の見本のような例だ。最近、MicrosoftがWindows 11で一般ユーザーによる既定アプリの切り替えを難しくしたという記事が散見される。だが、これはもはや「昨日のニュース」だ。一般ユーザーにとってこの作業が難しくなっているのは、もう長い間のことである。筆者は以前、Windows 11のDev版レビューでこの問題を取り上げたが、そのトーンは大衆向けには「映えない」らしい。しかも、これはWindows 11限定の話ですらない。Windows 10でも同じことをやっている。「Edgeを使え、Edgeを使え」と至る所で警告が鳴り響く仕様だ。そこで考えた。コマンドラインからWindowsの既定アプリを設定し、こうした騒音とナンセンスを回避する方法はないのだろうか?

そもそも何の話か

まず前提として、ファイルタイプと特定のプログラムを結び付ける「既定の関連付け」が存在する。どのOSにもデフォルト設定はある。しかし問題は、そのデフォルトから別のアプリへ切り替えようとした瞬間に起こる。Microsoftが筆者のIrfanViewの画像ファイル関連付けを何度も勝手にリセットしたことについては既に報告してきたし、こちらで既定アプリを設定していても、Windows 10が依然として確認ダイアログを表示してくるケースもある。主にメディア再生やブラウザ機能に関してだ。Edgeだけではない。動画ファイルでも同じことが起こる。

Windows 11で既定のアプリを設定する方法――コマンドラインが機能しない理由と現実的な対処法

2018年当時、クリーンインストール直後のIrfanView。

Windows 11で既定のアプリを設定する方法――コマンドラインが機能しない理由と現実的な対処法

ずいぶん必死な訴求ですね?

Windows 11での唯一の実質的な違いは、設定メニューに特定のファイルタイプごとに既定アプリを割り当てるための、やや回りくどくなったワークフローが用意された点だ。Devビルドではこの機能はやや不安定で動作も遅いが、Windows 10と根本的に異なるわけではない。ファイルを右クリックして「プログラムから開く」を選ぶ操作は依然として可能だ。地味な話だ。しかし、本当の問題は、この作業を効率的に行おうとしたときに発生する。

assoc、ftype、dismの悲しい現状

古いバージョンのWindowsでは、ファイルの関連付けを設定・変更するためのコマンドラインツール(assoc、ftype)が提供されており、好みのプログラムでファイルを開けるようにできた。グループポリシーやレジストリ経由での変更も可能だった。さらに、各ファイルタイプの扱い方をシステムに指示する専用のXMLファイルを作成して適用する方法もあった。最もエレガントな解決策ではないが、スクリプト化は容易だったのだ。

Windows 11で既定のアプリを設定する方法――コマンドラインが機能しない理由と現実的な対処法

しかし、これはまったく機能しない。同様に、次のようなコマンドも試せる。

Dism.exe /online /Export-DefaultAppAssociations:C:\PS\DefaultAssoc.xml

Deployment Image Servicing and Management tool
Version: 10.0.22000.1

Image Version: 10.0.22000.132

The operation completed successfully.

書き出されたXMLを開き、任意のファイルタイプを手動で編集してからインポートする流れだ。

<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
  <Association Identifier=".3g2"
   ProgId="VLC.3g2"
   ApplicationName="VLC media player" />
  <Association Identifier=".3gp"
   ProgId="VLC.3gp"
   ApplicationName="VLC media player" />
  <Association Identifier=".ac3"
   ProgId="AppXqj98qxeaynz6dv4459ayz6bnqxbyaqcs"
   ApplicationName="Groove Music" />
  <Association Identifier=".adt"
   ProgId="AppXqj98qxeaynz6dv4459ayz6bnqxbyaqcs"
   ApplicationName="Groove Music" />
  <Association Identifier=".adts"
   ProgId="VLC.adts"
   ApplicationName="VLC media player" />
...

Dism.exe /Online /Import-DefaultAppAssociations:C:\PS\DefaultAssoc.xml

Deployment Image Servicing and Management tool
Version: 10.0.22000.1

Image Version: 10.0.22000.132

The operation completed successfully.

ところが、Windows 10 20H2以降、これらの手法は既存ユーザーの環境ではまったく機能しなくなった。変更を加えること自体はできる。ただし、システムはその変更を完全に無視する。さらに厄介なことに、Windowsは現在、プログラムとファイルの関連付けごとにハッシュ値を付与しており、このハッシュによって「その変更がユーザー自身によって行われた正当なものか」を検証している。つまり、レジストリを手動で書き換えても、ハッシュが一致しないためWindowsに無視されてしまうのだ。このハッシュがどう計算されているのかは、筆者には見当もつかない。

Windows 11で既定のアプリを設定する方法――コマンドラインが機能しない理由と現実的な対処法

こうして、何を試しても結局は設定GUIに戻り、そこでポチポチと変更を行うしかなくなった。遅く、面倒で、効率性へのもう一つの打撃だ。とはいえ、現代のOSは生産性よりも「煩わしさ」を優先して設計されているのかもしれない。

実際的な解決策はあるのか

結論から言えば、ない。筆者が見つけられた範囲では、前述の問題に対する優れた、シンプルで合理的な代替手段は存在しない。ただし、不満を少し違う形で表現することはできる。第一に、体系的かつ規律正しく対応すること。システム上のすべてのアプリを正しく設定し、エクスプローラーで各ファイルタイプを右クリックして、適切なハンドラーを(恒久的に)割り当てておくことだ。第二に、標準アプリがしつこく付きまとってくるなら、それらを無効化またはアンインストールしてしまうこと。

たとえば筆者は、Edge自体は総じて悪くないブラウザだと評価しているが、IFEO(イメージ ファイル実行オプション)を使って自分のWindowsマシン上では起動できないようにしている。設定画面のヘッダーバーでEdgeの使用を推奨され、設定内でも目につき、ブラウザ対応ファイルを開こうとするたびに宣伝メッセージとともに表示される。あまりに鬱陶しく、必死さが透けて見えるからだ。解決策はシンプル。Edgeを起動不能にする。こうすれば、SVGやPDFファイルを誤って間違ったアプリで開いてしまう事故も防げる。完璧な解決策か? いいえ。必要な措置か? 残念ながらイエスだ。

まとめ

興味深いことに、Windows 10はこの古くからの問題に対して半ば合理的な解決策を実装していた。動画、音楽といった機能カテゴリの短いリストを提示し、それぞれに適切なアプリを(ほぼ)割り当てられる方式だったのだ。ところがWindows 11は、プロトコル単位・拡張子単位で個別に設定する古くて複雑な方式へと回帰してしまった。これは面倒なだけでなく、一貫性がないため混乱を招きかねない。最悪なのは、この作業を効率的に行おうとしても、それができないという点だ。

現時点で、Windows 11に「どのアプリでどのファイルを開くか」を確実に伝える最良の方法は、目的のアプリをインストールする段階で関連付けを済ませてしまうことだ(そうすればソフトウェア側がバックグラウンドで面倒な処理を行ってくれる)。そのうえで、設定漏れとなったファイルタイプに対しては、都度「右クリック > プログラムから開く」で対応する。決してシンプルでも簡単でも美しい方法ではないが、現状はそういうものだ。この記事に画期的な生産性向上テクニックがあることを期待していた読者には申し訳ないが、それは存在しない。これが、技術者を遠ざけ、何の利益にもならない無意味な変更の長い傾向の始まりでないことを祈るばかりだ。……いや、よく考えてみると、すでに始まっているのかもしれない。

それではまた。

  1. Windows 10でWindows Helloをセットアップする方法【顔認証・指紋認証の使い方】

    以下の手順に従えば、Windows 10のPCでWindows Helloを簡単にセットアップして利用開始できます。 Windows Helloは、Windows 10に搭載された先進的な機能で、指紋認証・顔認証・虹彩認証といった生体情報を使ってログインできるようにするものです。この機能はPCに生体認証によるセキュリティレイヤーを追加し、従来のパスワード入力とは異なる新しいログイン手段を提供します。従来のパスワード方式と比べて、Windows Helloはユーザーフレンドリーで、安全かつ信頼性が高いと評価されています。なお、Windows Helloを設定するには、専用の赤外線カメラアレイまた

  2. Windows 11で不足している既定アプリを復元する4つの方法

    Windowsには、基本的な作業をこなすのに役立つ便利なアプリケーションが数多くプリインストールされています。そのため、ユーザーがこれらを手動でインストールする必要はありません。しかし、これらの既定のアプリがデバイスから消えてしまったらどうすればよいのでしょうか。既定アプリが欠落する原因はいくつか考えられますが、最も多いのは新しいOSアップデートやビルドのインストール直後です。また、古いOSから新しいOSへアップグレードした際にも発生することがあります。さらに、システムのバグによって複数の既定アプリが表示されなくなるケースもあります。この記事では、Windows 11で失われた既定アプリを復元