GeForce Experience でプライマリーでないディスプレイが録画される問題の解決

## 事象について
NVIDIA GeForce (GTX600 以降) のグラフィックボードを搭載している PC では、GeForce Experience というユーティリティ ソフトウェアを利用することができます。

GeForce Experience には インスタントリプレイ (旧名称: ShadowPlay) と呼ばれる、実行中のゲーム画面、もしくはデスクトップを録画する機能があります。
これは強制的に Windows のプライマリー ディスプレイが録画されますが、何らかの原因 (ディスプレイの交換や再接続など) でそれ以外のディスプレイが録画されてしまう事象が発生する場合があります。

これらは Windows の再起動やドライバのアップデートでは解決しませんでした。
試行錯誤して解決法を見つけましたので、紹介します。

## 私の環境
OS: Windows 10 (2004) 
GeForce Game Ready ドライバー: 461.72 (リリース日:2021/02/25)

ただし特定のバージョンには起因せず、多くの環境で発生すると思っています。
## まずはじめに
プライマリーディスプレイを確認しましょう。

1. デスクトップの何もない場所を右クリック
2. ディスプレイ設定

![Snapshot 2021-03-08 02.10.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/fdd3a636-81a2-9fb5-249d-7e5939f6e0f4.png)
![設定 2021-03-08 02.09.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/13730882-b675-144a-5bc0-15a6d7810796.png)
少し特殊な配置をしていますが、私はこのようにディスプレイを配置しています。
またモニター1 をメインディスプレイとして、☑が入っています。
![設定 2021-03-08 02.07.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/2b27affd-7849-4750-efa2-d3dff772958b.png)
また「NVIDIA コントロールパネル」→「複数のディスプレイの設定」でもモニター1がプライマリ ディスプレイになっています。
![NVIDIA コントロール パネル 2021-03-08 02.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/82f91408-a7d6-7167-0848-d23fe11f1b65.png)
この記事は、このプライマリディスプレイが適切に設定されているにも関わらず、そのディスプレイ以外が録画されてしまう状態の解決策です。
人によって設定状態が異なると思いますので、以下いずれか（または全て）の方法を試してみてください。

## 解決策A
レジストリに記録されたディスプレイに関する情報を手動で削除することで、解決する場合があります。
手順 1 か手順 2 のどちらかを実施してください。やっている内容は同じになります。

### 手順 1
1. .reg ファイルを作成します。

```
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Connectivity]
```
![Monitor Persistence.reg - メモ帳 2021-03-08 02.50.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/a61f5d70-38ae-a0ac-4790-faec82dcb555.png)
テキスト エディタなどで拡張子は`.reg`にして保存します。ここでは `Monitor Persistence.reg` としていますが、なんでもよいです。
2. 保存した .reg ファイルを実行します。
![ダウンロード 2021-03-08 02.52.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/2262c37e-8616-57b3-26c8-4e10cb88fa9c.png)
「はい」を押下します。
![レジストリ エディター 2021-03-08 02.36.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/19038c15-0acd-b483-5e40-f7ba55d9c4ed.png)
3. プライマリ ディスプレイ以外のディスプレイ ケーブル (HDMI や DisplayPort) を外して、Windows を再起動します。
4. 2枚目以降のディスプレイを一つずつ接続し、任意のディスプレイ配置になるよう設定します。
5. GeForce Experience の録画がプライマリ ディスプレイで実行されるようになっています。
6. 作成した .reg ファイルは不要なので削除します。

### 手順 2
1. Windows + R キーを押して「ファイル名を指定して実行」を開きます
2. 「regedit」と入力して、レジストリ エディタを開きます

![ファイル名を指定して実行 2021-03-08 02.25.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/b801a2a8-c6be-0035-5713-5544206bdcc8.png)
3. 以下のキーを削除します。
`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Configuration`
`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Connectivity`
![レジストリ エディター 2021-03-08 02.29.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/3cc6af06-9e10-9265-42b8-cbf986febf58.png)

Configuration キーには各ディスプレイの解像度や周波数情報、
Connectivity キーには各ディスプレイに対して使用したトポロジー情報（複製や拡張）などが格納されています。
これらを削除したあとに再起動すると、モニターの位置がリセットされます。
4. プライマリ ディスプレイ以外のディスプレイ ケーブル (HDMI や DisplayPort) を外して、Windows を再起動します。
5. 2枚目以降のディスプレイを一つずつ接続し、任意のディスプレイ配置になるよう設定します。
5. GeForce Experience の録画がプライマリ ディスプレイで実行されるようになっています。

## 解決策B
デスクトップキャプチャ（普段のデスクトップ画面録画）が有効になっている場合、これをオフにするだけで解決する場合があります。
もしデスクトップキャプチャが不要であれば、これを試してみてください。

1. 「Alt + Z キー」で GeForce Experience の設定画面を開きます
2. 右下の歯車設定アイコンをクリック
3. プライバシー管理 を開く
4. 「デスクトップキャプチャ」をオフにします
<img width="500" alt="IMG_7716.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/ea486abb-d389-2c78-c84f-4b128d84d07c.jpeg">

## それでも直らないときは …
### ① DisplayPort の問題を疑う
DisplayPort にはディスプレイがスリープ状態になった時、Windows がディスプレイを取り外されたと勘違いする Rapid Hot Plug Detect (Rapid HPD) と呼ばれる問題があります。
俗に言う「DisplayPort の電源オフ問題」ですが、これも GeForce Experience からのディスプレイの認識に悪影響を及ぼす一因になっている場合があります。
もし DisplayPort で接続しているモニターが存在し、モニターのスリープ操作によってディスプレイ数が増減したことで問題が発生する環境の場合、Rapid HPD を解決できないか試行錯誤してみてください。

また Windows 側の修正で解決される見込みはあるものの、手っ取り早いのはこれを物理的に解決することです。
(ソース: [Windows 10のマルチディスプレイ環境でのウィンドウ動作不具合が修正へ - Engadget 日本版](https://japanese.engadget.com/windows-10-windows-070005588.html))


DPHPDMA (DisplayPort HPD Mod Adapter) と呼ばれるこの問題を回避するためのアダプターなども販売されていたりしますが、私の環境では長時間のスリープで問題が引き続き発生したため、結局は DisplayPort を HDMI に変換するケーブルを使うことで解決しました。
DisplayPort を使って出力したいモニター側に HDMI ポートが存在し、デイジーチェーン接続 や FreeSync & G-Sync Compatible など DisplayPort 特有の機能を使わないのであれば、こちらがオススメです。

Amazon ベーシックの DisplayPort to HDMI ケーブルで、このケーブルは電源オフ問題が回避できることを私は確認しています。
[Amazon | Amazonベーシック DisplayPort to HDMI A/Mケーブル 1.8m](https://www.amazon.co.jp/dp/B015OW3M1W/)

### ② Windows の再インストール
（たぶん）百発百中です。面倒臭くなったらこれで解決しましょう。

## ゲームキャプチャソフトのすすめ
ここからは別ソフトの紹介です。
あなたがもし GeForce Experience をゲームの録画に利用しているのであれば、[Outplayed](https://go.overwolf.com/outplayed/) というゲーム用キャプチャソフトウェアがオススメです。

ゲーム中はハードウェアエンコーダー（NVIDIA NVENC）でゲームを常に録画し、ゲーム内の区切り（マッチなど）で録画ファイルを分割して保存されるので、後から簡単に見返すことができます。
また対戦ゲームなどはキルやアシスト・デスしたタイミングなども記録され、タイムライン上からそのタイミングまでジャンプできるので、お気に入りのプレイがどこだったかもすぐに分かります。

* Apex Legends
![Outplayed 2023-03-28 01.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/c989f244-48f6-cc49-ccbc-a0a12130178a.png)
![Outplayed 2023-03-28 01.38.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/f21d8c0a-c45d-a250-e09d-326e96e5a439.png)
* League of Legends
![Outplayed 2023-03-28 01.42.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/1ba9cb9e-76b0-5e6d-43ea-812858664364.png)
![Outplayed 2023-03-28 01.40.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/c8d42c96-ca79-f001-9bce-76b419cb5182.png)
* VALORANT
![Outplayed 2023-03-28 01.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/60d1ed80-0dac-f5a4-d6db-951f3e9d3ad3.png)
![Outplayed 2023-03-28 01.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206465/0ef3ca07-e1d7-fa9d-bf0b-1fab7fa61d0c.png)

例として最近流行りの3ゲームを挙げましたが、ざっと400タイトルくらいサポートしているようです。
また録画を切り抜いて Discord や YouTube、Twitter への共有機能もあるので、GeForce Experience より高機能で、かつ軽量です。

私は GeForce Experience の録画機能は使うのをやめて Outplayed だけになりました。
ぜひゲーマーの人は一度インストールしてみてください。

## さいごに
他にも直った方法があれば、コメントをください。

#### 参考ページ
[【NVIDIA】GeForce Experience総合 Part3](https://egg.5ch.net/test/read.cgi/jisaku/1525316952/)
[(FIX) Recording the wrong monitor on ShadowPlay. : GeForceExperience](https://www.reddit.com/r/GeForceExperience/comments/imes94/fix_recording_the_wrong_monitor_on_shadowplay/)
[Shadowplay captures wrong screen | NVIDIA GeForce Forums](https://www.nvidia.com/en-us/geforce/forums/geforce-experience/14/259542/shadowplay-captures-wrong-screen/)