Hebikuzure's Tech Memo

2017年9月22日

Windows に接続したモニターを再認識させる

Filed under: Windows Tips — hebikuzure @ 7:45 午後

Windows が動作している PC にモニターを接続すると、解像度などのモニターの情報が自動認識されてすぐに利用可能になります。これは便利なことではありますが、まれにこの自動認識で不適切な情報が構成されてしまい、本来設定できる解像度が設定できない、マルチ モニター構成でプライマリ モニターとセカンダリーモニターが意図通りに設定されない、などのトラブルが発生します。こうした場合に認識済みのモニターの構成情報を削除して、強制的に再認識させる方法を解説します。

一度接続したことがあるモニターの構成情報はレジストリに登録され、新しいモニターが接続されるごとに登録が追加されていきます。この情報は削除されることがなく、またモニターの組み合わせごとに作成されるので、ノート PC を色々な外部モニターに接続していると、非常に多くの情報が登録されることになります。

例えば仕事柄色々な場所で外部モニター(プロジェクターなど)に接続する私のノート PC では、

image

こんな感じで大量のエントリが記録されています。

モニターを強制的に再認識させるには、これらのレジストリ エントリを手動で削除します。実際にはエントリが登録されている以下のキー全体を削除すれば良いでしょう。

HKLM\Systems\CurrentControlSet\Control\GraphicsDrivers\Configuration
HKLM\Systems\CurrentControlSet\Control\GraphicsDrivers\Connectivity

これらのキーは(作業時点で接続している)モニターが再認識されたタイミングで自動的に再生成されます。その後、再認識させたい外部モニターなどがあれば、順に接続していきます。

個別に特定のモニター(モニターの組み合わせ)だけを削除したいという場合は、以下のような方法で該当するエントリを探すことも可能です。ただしエントリが多数ある場合はかなり面倒なので、特段の理由がなければまとめて削除した方がよいでしょう。

エントリを特定するには、いくつかの情報を総合することになります。エントリのキー名は

MEI96A20_00_07DD_11*SHP109F0_00_07DC_4F^2392D524F1666208AC7A949449A77697

のようになっており、このうち “MEI96A2” と “SHP109F” の部分はレジストリ

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY

に同録されているモニター デバイスの名前(キー名)になっています。そしてこの名前は、デバイス マネージャーで [モニター] 配下にある各モニター(現在接続されていないモニターは [非表示のデバイスの表示] を有効にしないと見えません)の [プロパティ] – [詳細] で [ハードウエア ID] で表示されます。

image

そしてこのモニターについては同じプロパティで [初回インストール日付] や [最後に接続した日] を確認することができます。これらの情報から具体的にどのモニターを示しているのかを推定することができるでしょう。
※ただし [初回インストール日付] については Windows のアップグレード(Windows 10 の機能アップグレードを含む)のような Windows 側の更新などでハードウエアの再認識が行われると、その日付に変わってしまうので、実際のその PC に最初に接続した日ではない場合があります。

image

また

HKLM\Systems\CurrentControlSet\Control\GraphicsDrivers\Configuration

配下のサブキーには Timestamp という値が格納されており、これでそのエントリが最初にいつ登録されたか(いつそのモニターの組み合わせが認識されたか)を確認できます。ただしこの値は NT タイムエポック形式で記録されているので、日時を確認するには NT エポックタイムから通常の時刻形式への変換が必要です。

image

NT エポックタイムから通常の時刻形式に変換するには、コマンドプロンプトで w32tm コマンドを利用します。上のスクリーンショットでは Timestamp 値が 1d037a7d21bbfb3 (130665583117844403) となっていますので、

C:\WINDOWS\system32>w32tm /ntte 130665583117844403
151233 07:31:51.7844403 – 2015/01/24 16:31:51

のように /ntte オプションを付けて、10進数の Timestamp 値を引数にして実行します。

以上のような情報からいつどのモニターの組み合わせを認識させたのかという情報から、対応するエントリ(サブキー)を推定することが可能でしょう。

WordPress.com で無料サイトやブログを作成.