PDFファイルをChromeに関連付けしたときのアイコンを変える

![pdfのアイコン問題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/f1062ea9-8e55-3df9-2293-00ec7ddfc688.jpeg)
PDFファイルをChromeに関連付けすると、Chromeのアイコンになってしまいます。
これだと分かりにくいのでPDFアイコンに変更したいところですが、Chromeに関連付けられた.pdfファイルのアイコンを変更しようとすると、通常では、HTMLファイルのアイコンまで一緒に変わってしまいます。

これを「ファイルをChromeで開くだけのバッチファイルにPDFを関連付けする」という荒業でPDFファイルのみアイコンを変更します。

> 【追記 2024/03/19】
Windows 11の標準ターミナル (Windows Terminal) ではバッチファイルの起動が以前より遅くなったため、バッチファイル経由でChromeを開く方法は遅くて不便になった。
そのため、当記事の最後にバッチファイルを噛まさずにChromeに直接関連付けする方法を追加した。

↓まずお読みください↓

<details>

<summary>【前提】関連付けのアイコンを変更する方法</summary>

関連付けのアイコンを変更するには、レジストリを弄るか、フリーソフトを使用します。この記事では、「Default Programs Editor」というソフトで変更しています。
関連付けのアイコンの変え方自体はここでは触れないので検索してみてください。[関連付け アイコン 変更 - Google検索](https://www.google.com/search?q=%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91+%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3+%E5%A4%89%E6%9B%B4)

</details>

※画像はChrome Canaryになっていますが、通常のChromeでも同様です。

## 普通にアイコンを変更すると一緒に変わってしまう理由
Windowsのファイルのアイコンは、関連付けのファイルタイプ・ProgIDごとに設定されています。
しかし、PDFファイルをChromeに関連付けすると、HTMLファイルと同じファイルタイプに一緒に関連付けられてしまうという仕様があります。
このため、PDFファイルのアイコンを変更すると、「ChromeSSHTM.～」(Chrome HTML Document) という、HTMLも関連付いているファイルタイプのアイコンごと変更することになるため、PDFのアイコンを変更すると同時にHTMLのアイコンも変わってしまうのです。
（この辺の知識はちょっとあいまいなので、間違いがあったらごめんなさい。）
![ファイルタイプが同一 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/da48f819-533a-b32d-c620-9021bbdbbf63.png)


# 解決法
### 正攻法
　正攻法ならば、レジストリを弄ったりソフトを使ったりして、ファイルタイプを新しく作って関連付けを直接編集するべきだと思われます。~~しかし、ファイルタイプの作成などはいろいろ試してみたのですがうまくいかなかったので、私は関連付けを直接編集するのは諦めました。~~
 【追記】ページの最後に関連付けを直接編集する方法を記載しました。

### Chromeを開くだけのバッチファイルに関連付ける
　そこで、荒業ですがChromeでファイルを開くためだけのバッチファイルを作り、それにPDFファイルを関連付けることにします。
Windowsの関連付けは.exeだけでなく.batにもできるので、これを利用して、Chromeを開くだけのバッチファイルにPDFを関連付けします。レジストリを弄らないので簡単だと思います。

## やり方
### １．バッチファイルを作成

```batch:pdfopen.bat
start "" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %1
```

このバッチファイルの中身は、

<dl>
  <dt>start コマンド</dt>
  <dd>別ウィンドウでプログラムを起動するコマンドです。</dd>
  <dt>空の「""」</dt>
  <dd>startコマンドでは、最初の""をウィンドウのタイトルと認識してしまうため、それを避けるために入れます。(<a href=http://piyopiyocs.blog115.fc2.com/blog-entry-759.html>参考ページ</a>)</dd>
  <dt>"[Chromeのパス]"</dt>
  <dd>chrome.exeのパスを指定します。<b>環境により異なる場合が多いので、必ず各自で確認してから記入してください！最近インストールした方は (x86) がない方に入っています。<b></dd>
  <dt>%1</dt>
  <dd>chrome.exe に渡す引数です。開くPDFファイルが入ります。</dd>
</dl>

で構成されています。
ちなみにこのバッチファイルに何かファイルをドラッグ＆ドロップすれば、そのファイルがChromeで開かれます。つまりこれが「Chromeでファイルを開く」だけのバッチファイルです。

### ２．PDFファイルを作成したバッチファイルに関連付け
適当なPDFファイルを右クリック→プログラムから開く→別のプログラムを選択→その他のオプション→この PC で別のアプリを探す で先程作成したバッチファイルを指定します。
これでPDFファイルが先程作成したバッチファイルに関連付けされます。
![関連付け.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/2940cdb2-6cb8-e87e-1446-f61f5e9ae18c.jpeg)
![関連付け2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/9421b2ca-bf05-bbb0-22fb-fe972dfd9745.jpeg)

### ３．関連付けのアイコンを変更
この段階ではただの白紙アイコンになっているので、一番上の 【前提】関連付けのアイコンを変更する方法 を参考に好きなアイコンに変更します。

ちなみに私の場合は、Windows10標準のEdgeのPDFのアイコンにしたいので、Default Program Editorのアイコン変える画面の [Browse...] をクリックして、出てきた [アイコンの変更] ダイアログでMicrosoft Edgeのexeファイル `(C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe)` を指定して、Windows10標準のPDFのアイコンにしました。
![2021-05-15 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/1e505fa5-706d-89e1-9cba-c99bf1b3da20.png)
レジストリを直接編集する場合は、数字で指定するので
`C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,13`
です。

## おわり
これでPDFをChromeに関連付けしたままPDFのみアイコンを変えることができました。（正確には「Chromeを開くバッチ」に関連付けしていますが）
![完成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/a45f62c6-f88f-3d5a-fd62-24da1c290900.jpeg)
本当はレジストリで直接設定したほうがスマートだと思いますが、荒業ということでお許しください。この方法だと関連付けを変えれば元に戻せるので、一応安全な方法だとは思います。

---

# 追記 (2024/03/18)
Windows 11 では標準のコンソールが Windows ターミナル に変更されたが、Windows ターミナル ではバッチファイルの起動に0.5秒程度かかるようになってしまった。
これにより、間にバッチファイルを噛ますと毎回ワンテンポ待たされるようになり、不便である。
そのため、バッチファイルを経由せずにChromeを直接関連付けする正攻法も記載する。

### １．新しいファイルタイプを作成する

※ここでは、ファイルタイプの名前を `pdf_chrome` とする。

1\. レジストリエディタで `HKEY_CURRENT_USER\SOFTWARE\Classes\pdf_chrome` を作成する  
　※ Classes というフォルダ(キー)を右クリックして、「新規(N)」→「キー(K)」で作成する。

2\. 作成した `pdf_chrome` の下に、さらにキーを作成していく

画像の通りに、「pdf_chrome」の下に「DefaultIcon」と「shell」→「open」→「command」を作成する。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/8358b39c-22f3-5fa8-3006-4ecc01afb436.png)

最終的に上の画像のようになればOK。

3\. 2で作成した `DefaultIcon` キーを開き、最初からある `(既定)` をダブルクリックして、アイコンのパスを指定する。
　Edge標準のPDFアイコンにしたい場合は、
 
 ```:(既定)
 C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,13
 ```
 と入力する。

設定例:
  ![DefaultIconの設定例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/8a1b684c-b8f5-f94d-5b37-55fb08f2eae9.png)

 4\. `command` キーを開き、`(既定)` をダブルクリックし、`"Chromeのフルパス" "%1"` と設定する。

```:pdf_chrome¥shell¥open¥command¥(既定)　設定例
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "%1"
```

**※chrome.exeのパスは環境により異なる場合が多いので、必ず各自で確認してから記入してください！最近インストールした方は、 (x86) がない方に入っています。**

![commandを設定した画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/2a741813-76d9-2aba-a2d5-c5329db3865e.png)

以上で、新たなファイルタイプ「pdf_chrome」を作成できた。


### ２．.pdfをpdf_chromeに関連付ける

`HKEY_CURRENT_USER\SOFTWARE\Classes\.pdf` を開き、`(既定)` をダブルクリックして編集し、`pdf_chrome` と入力する。

![pdf_関連付け.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/89624beb-a367-da22-9b6b-60c4002d5af3.png)

その後、PDFファイルをダブルクリックして、Google Chromeが「新規」として表示されれば成功。

![Google Chrome 新規.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488979/89246d0b-195f-a911-4442-9dd1f979c789.png)

最後に、「常にこのアプリを使って .pdf ファイルを開く」にチェックを入れて Google Chrome を選択すれば、先程作成したファイルタイプで関連付けが行われ、PDFのアイコンでChromeが直接起動するようになる。

### 補足

この状態から他のソフトに関連付けを変更することは問題ない。
他ソフトに関連付けしても、Chromeに再び関連付けすればPDFアイコンの状態に戻る。

#### 補足2

この変更を元に戻したいときは、`HKEY_CURRENT_USER\SOFTWARE\Classes\pdf_chrome` を削除するだけでよい。
これで、PDFをChromeに関連付けた場合に「Chrome HTML Document」扱いに戻り、アイコンもChromeアイコンになる。
なお、pdf_chromeを削除しても、 `HKEY_CURRENT_USER\SOFTWARE\Classes\.pdf` や、 `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf` には「pdf_chrome」の記述が残ったままになるが、特に支障はない。(普通に使っていても、 ○○○_auto_file などのファイルタイプは使わなくなっても残るようになっている。)

#### 補足3: 「別のプログラムを開く」の一覧に残っているpdfopen.batを消す方法
この記事の方法でpdfopen.batにファイルを関連付けした場合、右クリック→プログラムから開く→別のプログラムを選択 で出てくるアプリのリストに pdfopen.bat が標準で表示されるようになってしまうことが判明した。

これを消すには、そのexeやbatを消すか、もしくは `HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\` から当該exeのキーを削除すれば消せる。

### 参考資料

https://www.glamenv-septzen.net/view/14