PC-More

パソコンの基本操作や使い方、便利化、カスタマイズ方法、フリーソフト等の紹介。

Windows10で関連付け出来ない場合 (バージョン1803)

Windows10 (バージョン1803)において、通常のやり方で関連付けしようとしても出来ない場合の対処法です。

ただ、2018年12月12日前後に行われたアップデートによりこの問題は解決されたようです

ですので、以下で紹介する関連付け方法は、PCのリカバリー後等に、複数のファイル形式を一気に関連付ける時くらいにしか役にしか立ちません。

それが必要な場合はやってみてください。

管理者権限が必要ですので、それ以外の環境では実現出来ません。ご自身のPCであれば問題無いかと思います。

PC初心者の方面倒な処理をしたくない方は、ツールを使う方法をお試しください。

フリーソフトを使いたくない方や、企業等でフリーソフトの使用が禁止されている方は、少し手間は掛かりますが、レジストリスクリプトを使う方法をお試しください。

ツールを使う方法

ツールを使う方法です。ツールの仕様は全て公開されていますので、必要ならダウンロード後にご確認ください。

ダウンロード

こちらをクリックし、圧縮ファイルをダウンロード(保存)します。
保存方法が分からない場合

展開(解凍)

上記で保存した圧縮ファイル「win10aat-1.3」 (.zip)ファイルを展開 (解凍)し、出来たフォルダを開きます。
展開方法が分からない場合

実行

Win10-関連付け補助ツール」(.vbs)ファイルを実行します。

実行ファイルを選択」をクリックし、対象ソフトのフォルダを開き、ソフトの実行ファイルを選択します。

関連付ける「ファイルタイプ」か「プロトコル」に、チェックを入れるか、直接入力します。
(既に書かれている拡張子やプロトコルを編集する事も可能です。)

実行」をクリックします。

ツールを閉じます。

画像

処理実行後は、Windowsの通常の関連付けを行ってください。

出来ない場合はこちらをご覧ください。

レジストリスクリプトを使う方法

Windows標準のレジストリスクリプト(regファイル)を利用する方法です。

レジストリスクリプトは、レジストリ(Windowsの設定ファイル)の設定を変更するものです。

こちらでテストは行っていますが、レジストリの編集には危険が伴いますので、よく処理を確認しながら、自己責任で行ってください。

ファイルタイプ(拡張子)に関連付ける場合

メモ帳等のテキストエディタを起動します。

以下の文章をそこへコピー&ペーストします。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-【ソフト名】"="SOFTWARE\\AppName-【ソフト名】\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-【ソフト名】\Capabilities\FileAssociations]
".【拡張子】"="AppName-【ソフト名】"

[HKEY_CLASSES_ROOT\AppName-【ソフト名】\shell\Open\command]
@="\"◆【プログラムのパス(「¥」は2個)】◆\" \"%1\""

複数の拡張子を登録したい場合は以下のようにしてください。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-【ソフト名】"="SOFTWARE\\AppName-【ソフト名】\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-【ソフト名】\Capabilities\FileAssociations]
".【拡張子1】"="AppName-【ソフト名】"
".【拡張子2】"="AppName-【ソフト名】"
".【拡張子3】"="AppName-【ソフト名】"

[HKEY_CLASSES_ROOT\AppName-【ソフト名】\shell\Open\command]
@="\"◆【プログラムのパス(「¥」は2個)】◆\" \"%1\""

【 】 で囲まれた部分を書き換えます。例えば、以下のような感じです。

【ソフト名】 → Notepad
【拡張子】 → log2
【プログラムのパス(「¥」は2個)】 → C:\\Windows\\notepad.exe

ソフト名は、他のソフトと重複しない任意の名前で、25文字までで、 「 _ . - 」 以外の半角文字は使わないでください。半角スペースはOKです。

パス(場所)の区切りである半角「\」は2個である点にご注意ください。

拡張子は、ドットは既に付いていますので、ドット「.」無し、半角英数16文字までで記述します。

パスは「"」で囲まないでください。

全角と半角は間違えないでください。

テキストエディタに置換機能がある場合は、それを使うと正確に置換出来るかと思います。

最後に、パス前後の「◆」を消します

編集が済んだら、今一度よく確認します。例えば、以下のような感じになればOKです。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-Notepad"="SOFTWARE\\AppName-Notepad\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-Notepad\Capabilities\FileAssociations]
".log2"="AppName-Notepad"

[HKEY_CLASSES_ROOT\AppName-Notepad\shell\Open\command]
@="\"C:\\Windows\\notepad.exe\" \"%1\""

問題無ければ、上部メニュー等から保存処理へ進み、
「文字コード」を指定出来る場合は「Unicode」にし、
〜.reg」というようなファイル名で保存します。例えば「001.reg」等です。

特に「ANSI」や「Shift-JIS」で表現出来ない文字を使った場合は必ず「Unicode」で保存してください。例えば「」等です。

保存したらテキストエディタを閉じます。

保存したファイルを実行します。

警告が出るので、「はい」や「OK」をクリックして処理を完了させます。

処理実行後は、Windowsの通常の関連付けを行ってください。

出来ない場合はこちらをご覧ください。

プロトコル(http等)に関連付ける場合

メモ帳等のテキストエディタを起動します。

以下の文章をそこへコピー&ペーストします。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-【ソフト名】"="SOFTWARE\\AppName-【ソフト名】\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-【ソフト名】\Capabilities\URLAssociations]
"【プロトコル】"="AppName-【ソフト名】"

[HKEY_CLASSES_ROOT\AppName-【ソフト名】\shell\Open\command]
@="\"◆【プログラムのパス(「¥」は2個)】◆\" \"%1\""

[HKEY_CLASSES_ROOT\【プロトコル】]
"URL Protocol"=""

複数のプロトコルを登録したい場合は、以下のようにしてください。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-【ソフト名】"="SOFTWARE\\AppName-【ソフト名】\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-【ソフト名】\Capabilities\URLAssociations]
"【プロトコル1】"="AppName-【ソフト名】"
"【プロトコル2】"="AppName-【ソフト名】"
"【プロトコル3】"="AppName-【ソフト名】"

[HKEY_CLASSES_ROOT\AppName-【ソフト名】\shell\Open\command]
@="\"◆【プログラムのパス(「¥」は2個)】◆\" \"%1\""

[HKEY_CLASSES_ROOT\【プロトコル1】]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\【プロトコル2】]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\【プロトコル3】]
"URL Protocol"=""

【 】 で囲まれた部分を書き換えます。例えば、以下のような感じです。

【ソフト名】 → calc
【プロトコル】 → http
【プログラムのパス(「¥」は2個)】 → C:\\Windows\\System32\\calc.exe

ソフト名は、他のソフトと重複しない任意の名前で、25文字までで、 「 _ . - 」 以外の半角文字は使わないでください。半角スペースはOKです。

パス(場所)の区切りである半角「\」は2個である点にご注意ください。

プロトコルは、半角英数と半角「 . - 」20文字までで記述します。

パスは「"」で囲まないでください。

全角と半角は間違えないでください。

テキストエディタに置換機能がある場合は、それを使うと正確に置換出来るかと思います。

最後に、パス前後の「◆」を消します

編集が済んだら、今一度よく確認します。例えば、以下のような感じになればOKです。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"AppName-calc"="SOFTWARE\\AppName-calc\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\AppName-calc\Capabilities\URLAssociations]
"http"="AppName-calc"

[HKEY_CLASSES_ROOT\AppName-calc\shell\Open\command]
@="\"C:\\Windows\\System32\\calc.exe\" \"%1\""

[HKEY_CLASSES_ROOT\http]
"URL Protocol"=""

問題無ければ、上部メニュー等から保存処理へ進み、
「文字コード」を指定出来る場合は「Unicode」にし、
〜.reg」というようなファイル名で保存します。例えば「001.reg」等です。

特に「ANSI」や「Shift-JIS」で表現出来ない文字を使った場合は必ず「Unicode」で保存してください。例えば「」等です。

保存したらテキストエディタを閉じます。

保存したファイルを実行します。

警告が出るので、「はい」や「OK」をクリックして処理を完了させます。

処理実行後は、Windowsの通常の関連付けを行ってください。

出来ない場合はこちらをご覧ください。

実行後の処理

ツールやレジストリスクリプトを実行した後にする処理です。

ファイルタイプ(拡張子)の場合

処理後、関連付けたファイルタイプのファイルを開くと、
このファイルを開く方法を選んでください」という画面が出ますので、
常にこのアプリを使って 〜 ファイルを開く」にチェックを入れ、
関連付けたソフトをダブルクリックします。

「常にこのアプリを使って 〜 ファイルを開く」のチェックが無い場合は、
関連付けたファイルタイプのファイルを右クリックし、
プログラムから開く」をクリックします。

更にメニューが展開された場合は「別のプログラムを選択」をクリックします。

プロトコル(http等)の場合

プロトコルの場合は、処理後に関連付け処理をしなくても関連付けされている場合もあります

又、そのプロトコルが実行されたタイミングで開くアプリを尋ねられる場合もあります。

尋ねられた場合は、「常にこのアプリを使う」にチェックを入れ、開きたいソフトをダブルクリックします。

又、関連付けされていない場合は以下の操作を行ってください。

デスクトップ左下のWindowsロゴのボタンをクリックします。

左にある歯車マークをクリックしてWindowsの設定を表示します。

アプリ」をクリックします。

左にある「既定のアプリ」をクリックします。

右の欄の少し下の方にある「プロトコルごとに既定のアプリを選ぶ」をクリックします。

左の欄で処理したプロトコルを探し、その右にあるソフトをクリックして、指定したソフトを選択します。

ウィンドウを閉じます。

既定のブラウザ(メインで使用するブラウザ)にする場合

本ツールや、レジストリスクリプトにて、
ファイルタイプhtml」「htm」と、
プロトコルhttp」「https」を、
対象ソフトに対して処理してください。

その後、デスクトップ左下のWindowsロゴのボタンをクリックし、
左にある歯車マークをクリックしてWindowsの設定を出し、
アプリ」をクリックし、
左にある「既定のアプリ」をクリックし、
右の欄の少し下の方にある「WEB ブラウザー」の所のアプリをクリックし、関連付けしたソフトを選択します。

ソフトが一覧に無い場合は、
ファイルの種類ごとに既定のアプリを選ぶ」をクリックし、「html」「htm」を、対象ソフトにし、
プロトコルごとに既定のアプリを選ぶ」をクリックし、「http」「https」を、対象ソフトにします。

原理と原因

恐らく、Windowsはファイルの関連付けを行う際、以下の順にレジストリ (Windowsの設定ファイル)を参照しているようです。

そこにある値を参照し、更にリンク先を辿っていくようなイメージです。

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
 ↓
HKEY_LOCAL_MACHINE\SOFTWARE\\Capabilities\FileAssociations
 ↓
HKEY_CLASSES_ROOT\\shell\Open\command

2つ目の
HKEY_LOCAL_MACHINE\SOFTWARE\ 〜 \Capabilities
は、64ビット版のWindows10の場合
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node
配下になる場合が多いようです。

又、「http」や「https」等のプロトコルの場合は、
FileAssociations」ではなく、
URLAssociations」となるようです。

ただ、「URLAssociations」の場合は、
HKEY_CLASSES_ROOT\〇〇〇」キーに、
URL Protocol」という空の文字列値(REG_SZ)が無いと、プロトコルとして認識されません

つまり、上記の意味は、
http」プロトコルであれば、
HKEY_CLASSES_ROOT\http」キーに、
URL Protocol」という空の文字列値(REG_SZ)があるという意味です。

ただ、「http」「https」「ftp」等のメジャーなプロトコルは既にこれが付いていますので、意識する必要はありません。

関連付けされていないプロトコルや、独自のプロトコルを関連付ける場合に意識する必要があります。