レジストリ探し隊🕵

Windows の設定項目を Web 検索すると、このレジストリを変更すれば設定を変えられるよって書いてある Web サイトがたくさん見つかります。便利なのでそのレジストリを直接変更したりする人もいるかと思います。

でも、これってどうやって調べたの？っていう疑問が浮かびませんか？
それ Process Monitor でできますよっていうのが、今回の内容になります。

:::note alert
レジストリを調べるのは問題ないですが、レジストリの直接変更は基本的にやってはダメです。
:::

## Process Monitor とは？
Process Monitor（プロセス モニター）は、Windows Sysinternals のツールの一つで、リアルタイムでシステム上のプロセスやスレッドの動きを監視するための強力なツールです。プロセスの開始・終了、ファイルやレジストリ操作などの詳細なログを取得でき、問題解決やトラブルシューティングに役立ちます。

## インストール方法
Process Monitor は、Microsoft の公式 Sysinternals ページからダウンロードできます。

Process Monitor - Sysinternals | Microsoft Learn
https://learn.microsoft.com/en-us/sysinternals/downloads/procmon

ダウンロードした ZIP ファイルを解凍し、Procmon.exe を実行するだけで使用できインストールは不要です。

## Process Monitor で設定に対応するレジストリを調べる
今回は、エクスプローラーのオプションにある「頻繁に使用されるフォルダーを表示する」に対応するレジストリを確認してみます。理由は、OS をインストール後、すぐ OFF にするからです。頻繁に使用するフォルダは自分でピン留めします。

![explorer_folder_option.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/58a6605f-b8a8-ad7f-e423-66eed4b7d5d6.png)
![folder_option.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/9ce235e7-d79f-7b63-b730-772e52dcca93.png)

### Step 1. レジストリのフィルターの設定
Process Monitor を起動するとフィルターの設定画面が最初に表示されます。
![ProcessMonitor_start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/075e51e0-63b3-9413-f0dc-6c2fd3d6f906.png)

今回は、設定を変更するとどのレジストリの値が書き換わるのかを確認したいので、フィルター設定に、Operation is RegSetValue を [Add] ボタンで追加します。 
![RegSetValue.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/045cc62a-c7ce-70a5-2d54-b9b2a4937e0c.png)

追加すると、下の一覧に表示されますので、[OK] ボタンでフィルターの設定を閉じます。
![RegSetValue_add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/12abe05f-7095-914e-6385-6af1622ed098.png)

閉じると自動的に収集がスタートし、RegSetValue（レジストリの書き込み）の処理がどんどん表示されてきます。

この時点では、必要がない情報なので、ログ収集を停止とログをクリアしておきます。Process Monitor の操作はツールボックスからマウス操作で可能ですが、操作が楽になるのでキーボードショートカットを覚えておくとよいです。以下はよく使うことになると思います。
- Ctrl + E: ログ収集の開始 / 停止を切り替え
- Ctrl + L: フィルターの設定ウィンドウを開く
- Ctrl + X: ログをすべて消去

### Step 2. 設定を変更してみる
実際に「頻繁に使用されるフォルダーを表示する」の設定を変更し、どのレジストリが変更されるか確認していきます。Process Monitor のログ収集を開始後、「頻繁に使用されるフォルダーを表示する」のチェックを外して、[適用] ボタンをクリックします。
![folder_option_off.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/0386c82e-92a1-503c-3832-e992a5176af5.png)

[適用] ボタンを押したら、すぐにログ収集を停止します。Process Monitor には、レジストリの書き込み処理が表示されています。
![ProcessMonitor_log.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/bfe13dae-b7d9-9876-456c-201abc890a4e.png)

レジストリの書き込み処理が一つであれば、すぐに対応するレジストリが確定できますが、いろいろな処理がされているため、関係ない処理も混ざっています。フィルター設定をさらに追加して見やすくしていきます。

### Step 3. 追加のフィルター設定
#### プロセスを絞り込む
今回は、エクスプローラーの設定で、explorer.exe がレジストリを変更していることが予想できますので explorer.exe の処理のみにフィルターしていきます。

フィルター設定への追加は、フィルター設定画面から追加してもいいですが、explorer.exe を右クリックすると、コンテキストメニューからフィルター設定を追加できるのでこの方法が簡単です。
![ProcessMonitor_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/c8bbadd3-91d7-6d85-deb3-8fcc021b7ae0.png)

#### レジストリ パスを絞り込む
Process Monitor は、時系列順で表示されます。レジストリが複数回変更されていれば、その数だけ表示されるので、重複がありそのまま見ていくのは大変です。

Process Monitor には、レジストリのアクセスを自動集計して表示する機能（Registry Summary）があり、それを使うと効率よくレジストリを確認できます。

![ProcessMonitor_summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/da344a0b-ad74-83ac-8f03-417cdcc7c776.png)
![ProcessMonitor_analyze.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/f00efb0b-c574-3e64-13c2-f5d4939fbf54.png)

目標のレジストリは、Registry Summary で表示されているどれかであるはずなので、それっぽいものがないか眺めてみます。すると、**"ShowFreuent"** なるいかにもそれっぽい名前のレジストリがあります。それをフィルターへ追加することにします。

![ProcessMonitor_showfrequent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/be92a892-a2af-45ab-765f-02005834bd4b.png)

### Step 4. レジストリの値をチェック
フィルターしたレジストリの値が本当に変更されているか確認してみます。再度ログ収集を開始させ、何回か設定を変更してみます。Process Monitor の Detail 列に表示されている Data を確認すると、0,1,0,1,0 と変化しているのがわかります。

![ProcessMonitor_on_off.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/a5e578e9-03f0-8ce4-ae02-fb7feed9dfd2.png)

この結果より、「頻繁に使用されるフォルダーを表示する」の設定に対応するレジストリが判明しました。

| 項目 | 値 |
| ---- | ---- |
| キー | HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer |
| 名前 | ShowFrequent |
| 種類 | REG_DWORD |
| 値 | ON: 1、OFF: 0 |

ちなみに、右クリックから、[Jump To...] をクリックすることで、このレジストリをレジストリ エディターで表示することが可能です。
![ProcessMonitor_jump.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/5962c8a2-943b-c588-2616-000c66bb387c.png)
![ProcessMonitor_registry.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/cdedc2ff-c143-3d9e-28b0-b5cb40e2b997.png)

## さいごに
手順は、ちょっと多いかもしれませんが、やっていることはそんなに難しくないです。レジストリの値を知りたい！という場面になったら思い出していただければと思います。