10/31/2015

[note] Win10で画像を開くアプリを変更する方法について

またまたWindows10のワークアラウンド。色々と不満は多々感じられつつ、様子見程度にサブ機で使い続けているところのWindows10ですけれども、またしても利用の自由を妨げる苛立たしい問題がありまして。その対策を以下メモ。

何かというと、画像ビューアのデフォルト設定についてです。まず前提として、win7,8,8.1等従来のバージョンでデフォルトに設定されていたフォトビューア等がWindows10では置き換えられ、[フォト]アプリがデフォルト設定されるようになっています。で、これの挙動が極めて重いのです。特に初回の起動速度が滅茶苦茶遅い。画像を開いては確認、とかいう作業をしようとすると、ものすごく時間がかかってイライラさせられるわけで、作業効率は無論精神的にも非常によろしくありません。他にも、オンライン連携でプライバシーが侵害される可能性もつきまといます。で、アップグレード直後からそういった諸々が気に入らず、速攻で従来のフォトビューアに切り替え、しばらく使ってきたわけです。

しかし、フォトビューアも完全ではないのです。やはりスピードが問題。画像を開く際、その開こうとする画像のあるフォルダ内の画像全てをサーチして何らかの前処理をしているらしく、そのためフォルダ内に大量の画像がある場合、起動のラグに加え、前後の画像への切り替えが可能になるまでに数秒以上の時間がかかってしまう事があるのです。これでは切り替えた意味がありません。

というわけで、さらに軽量なビューアに切り替えよう、としたのですが・・・。ここでトラブルが発生してしまいました。画像ファイルを開くデフォルトアプリの関連付けが機能しないのです。エクスプローラからダブルクリックして[開く]際のプログラム設定ですね。[右クリック]-[プログラムから開く]-[別のプログラムを選択]で開かれる選択ダイアログ中から選択する際、[常にこのアプリを使って***ファイルを開く]のチェックを入れて選択しても、その時は開けても、以降その関連付けが保存されないのです。再度開こうとすると元のフォトビューアが。ファイルの[プロパティ]-[全般]タプ中の[プログラム:]の項目から[変更]ボタンを押しても同様の選択ダイアログが出てくるのですが、ここから選択変更しても同様。これは一体どうしたことか。

一方、Windows10で新設された設定画面には、デフォルトのアプリを設定する項目があります。[設定]-[システム]-[規定のアプリ]ですね。この中に、[フォト ビューアー]の項目もあります。そこで、恐らくはここの設定と従来のエクスプローラ等からの設定が整合しておらず、前者が優先され後者は無視される状態になっているのかもしれない、と仮説を立て、こちらを変更してみる事にしました。が、こちらで[既定を選ぶ]と表示される選択画面では、そもそもWindows公式のアプリ(フォト、ペイント、Windowsフォト ビューアー等)しか項目に現れず、かつその他のプログラムを選択する項目が存在しません。指定自体が出来ないのです。

という次第で、またしても色々と試行錯誤する羽目になってしまったわけです。結果から言えば、解決しました。レジストリの設定を手動で上書きするのです。ただ、今回は専用のコマンドが用意されているのでregeditを使う必要はありません。以下、pngとjpegの設定を例に手順を。

<1 .="">

何はともあれ、まず現状の確認。プログラムとの関連付けは拡張子毎に行われる仕様になっているのですが、内部ではその拡張子毎に識別子が設定され、この識別子がプログラムと関連付けられています。なので、まずは目的のファイル型について、その拡張子に対応する識別子を確認する必要があります。

具体的には、コマンドプロンプトから以下のコマンドで確認。例はpngの場合。なお、このコマンドは確認のみにつき管理者権限不要ですが、その後の変更作業では必要になるので、コマンドプロンプトはあらかじめ管理者権限付で起動したものを使うのが良いでしょう。

> assoc .png

すると、下記のように拡張子に対応する識別子が表示されます。

.png=pngfile

で、この識別子に関連付けられているプログラムを確認します。下記コマンド。

> ftype pngfile

で、同様にプログラム(実行コマンド)が表示されます。この場合はフォトビューアが設定されていた場合です。

pngfile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1

これを使いたいプログラムで置き換えてやればいいわけです。例として、Irfanviewの64bit版を指定した時のコマンドを下記。前記の通り、ここの実行には管理者権限が必要ですので注意。当然ながらパスは適宜目的のプログラムが存在する場所に置き換える必要があります。

> ftype pngfile=C:\program\Irfanview\iview440_x64\i_view64.exe %1

成功すれば、下記のように結果がエコーされます。

pngfile=C:\program\Irfanview\iview440_x64\i_view64.exe %1

これで完了。なお、jpegの場合は下記。assocコマンドで確認してみれば分かる事ですが、.jpgも.jpegも共に識別子はjpegfileです。

> assoc .jpg

.jpg=jpegfile

> ftype jpegfile=C:\program\Irfanview\iview440_x64\i_view64.exe %1

jpegfile=C:\program\Irfanview\iview440_x64\i_view64.exe %1

でOK。ただし、設定変更直後は反映されず、フォトビューアで開かれる場合がありました。ただ、その場合もエクスプローラから手動で変更する際にリスト中に設定プログラムが表示されるようになっていて、そこから選んでやれば以降は関連付けが機能しました。ですから、おそらくは一時的なものに過ぎないのでしょうけれども、これも不整合の一環という事でしょうか。何ともグダグダで酷い仕様だと、改めて呆れ果てた次第なのです。

しかしこれ、そもそも何でこんなユーザの自由な使用を妨害する仕様になっているのかと疑念が自然と湧くわけなのですが・・・。といって、まず間違いなくmicrosoftの自社製アプリ強制キャンペーンの一環という事なんでしょうが、これまた酷すぎて論外だと思うのです。アホじゃなかろうかとさえ。開発者なら、自前のツールを使うのはむしろ当然の話でしょうに。

勿論、従来のPCビジネス自体が斜陽を迎えた現在、microsoftとしては生き残りのため、androidやiOS等のようにアプリやサービスで囲い込んで収益を上げる仕組みを作りたい、という意図は分かるのです。が、ユーザが自由に使える事が第一の利点であり存在意義でもあるPCでそれは両立し得ない事は最初から明白なわけで。何故そんな無茶をするのか。最初からそういうものとして普及させるのと、後から強制的に制限する形で導入しようというのでは根本的に違うというのが分からないのでしょうか。いやまあ、それが分かっているからこそ、本件のように黙って強制したり、win10アップグレードのようにあくまで推奨と言いながら実質的に強制するような姑息なやり方を選択しているんでしょうけれども、逆効果だと思うんです。Macの売上が伸びるのもむべなるかな。

というか、本件も場合によっては業務妨害にも当たりうるだろうし、無論独占禁止にもあたるわけですから、法的にも到底許されざる暴挙に違いないのです。個々の問題の深刻さは然程ではなくとも、積もり積もれば致命傷にも成り得ると思うんですが、microsoftはその辺どう考えているんでしょうね?やれやれです。ともあれ、今回はこれでおしまい。

[関連記事 [note] Windows10アップグレードの無効化]
[関連記事 [note] Win10のモニタOFFタイムアウト設定を無視する現象の修正方法]