関連付けをコマンドラインで行う

Windowsでエクスプローラーからファイルを開く時(もしくはコマンドプロンプトなどから「拡張子付きで」ファイルを実行する時)、そのファイルをどのプログラムで開くのかを決定する関連付け。

多くの場合、Windowsにプログラムをインストールする時に、関連付けは自動的に設定される。

そして、Windows 10になってアップデートを繰り返すにつれて、ユーザー自身が関連付けを行うためのインターフェースがどんどん使いにくいものになってしまった。

以前は、エクスプローラーのオプションやコントロールパネルから「ファイル拡張子に関連付けされたファイルの種類の変更」のダイアログを表示して設定できたが、現在は[設定]の−[アプリ]-[既定のアプリ]-[ファイルの種類ごとに既定のアプリを選ぶ]で行うようになっている。

そしてこの[ファイルの種類ごとに既定のアプリを選ぶ]ウィンドウからでは、すでに内部で登録されているプログラムに対してしか関連付けを行うことができない。

ここで表示されないプログラムに対して関連付けを行いたい場合は、対象のファイルのプロパティを開き、[全般]タブの[プログラム]の右の[変更]を選ぶ。そして[今後の.ps1ファイルを開く方法を選んでください」などというダイアログで[その他のアプリ]を選んで、必要なプログラムを指定する。

本題。
もう関連付けはCUIでやってしまったほうが、お手軽だろう。

まず、ファイル拡張子とファイルタイプの関連付けを行う。

ファイルタイプの確認には、assocコマンドを使う。例はPowerShellスクリプトである拡張子「ps1」。

>accoc .ps1
.ps1=SageThumbsImage.ps1

拡張子ps1はファイルタイプSageThumbsImage.ps1に関連付けられているとわかる。
引数を付けずにassocを実行すると、すべての拡張子への関連付けが表示される。

ファイルタイプへの関連付けを変更するにもassocコマンドを使う。

>assoc .ps1=Microsoft.PowerShellScript.1

ファイルタイプへの関連付けが完了したら、そのファイルタイプに対して実行するコマンドを設定する。

まず、現在の設定をftypeコマンドで確認。

>ftype Microsoft.PowerShellScript.1
Microsoft.PowerShellScript.1="C:\Windows\System32\notepad.exe" "%1"

設定を変更するにもftypeコマンドを使う。

>ftype Microsoft.PowerShellScript.1="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "%1"

これらの値はレジストリに設定される。
\HKEY_CLASSES_ROOT.(拡張子)の「(既定)」エントリーにREG_SZでファイルタイプ名。
\HKEY_CLASSES_ROOT(ファイルタイプ名)\Shellキーの「(既定)」エントリーでは既定の動作が指定され、
\HKEY_CLASSES_ROOT(ファイルタイプ名)\Shell(既定の動作名)\Commandキーの「(既定)」エントリーREG_SZでftypeコマンドで設定されたコマンドが設定される。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です