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. ディスプレイ設定



少し特殊な配置をしていますが、私はこのようにディスプレイを配置しています。
またモニター1 をメインディスプレイとして、☑が入っています。

また「NVIDIA コントロールパネル」→「複数のディスプレイの設定」でもモニター1がプライマリ ディスプレイになっています。

この状態でプライマリ ディスプレイ以外が録画されてしまう状態の解決策です。

解決策

手順 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]


テキスト エディタなどで拡張子は.regにして保存します
2. 保存した .reg ファイルを実行します。

「はい」を押下します。

3. プライマリ ディスプレイ以外のディスプレイ ケーブル (HDMI や DisplayPort) を外して、Windows を再起動します。
4. 2枚目以降のディスプレイを一つずつ接続し、任意のディスプレイ配置になるよう設定します。
5. GeForce Experience の録画がプライマリ ディスプレイで実行されるようになっています。

手順 2

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


3. 以下のキーを削除します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Configuration
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\Connectivity

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

それでも直らないときは …

① DisplayPort の問題

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

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

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

Amazon で販売されている DisplayPort to HDMI ケーブルで、このケーブルは電源オフ問題が回避できることを私は確認しています。
Amazon | Amazonベーシック DisplayPort to HDMI A/Mケーブル 1.8m

② Windows の再インストール

私は本文に示した手順だけでは解決せず、Windows の再インストールで直りました…

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

参考にしたもの

【NVIDIA】GeForce Experience総合 Part3
(FIX) Recording the wrong monitor on ShadowPlay. : GeForceExperience
Shadowplay captures wrong screen | NVIDIA GeForce Forums