Windows 11でIntel GPUドライバーを別のドライバーへ変更したのに、
しばらくするとIntel GPUドライバーが再び入っている
ということがあります。
Windows Updateによる再インストールを制限しても、それだけでは不十分な場合があります。
原因の一つが、
DriverStoreに過去のIntel Display Driverが残っていること
です。
この記事では、Windows標準のpnputilを使って、
DriverStoreに残っている
Intel Display Driverを確認
↓
対象のoemXX.infを特定
↓
不要なドライバーパッケージを削除
↓
本当に消えたか再確認
する方法をまとめます。
この記事でやること
今回のゴールは次の状態です。
現在使用するDisplay Driver
↓
Microsoft Basic Display Adapter
DriverStore
↓
不要なIntel Display Driverなし
今後のIntel GPU Driver再導入
↓
DenyDeviceIDsで制御
前回の記事では、
Windows Update全体
↓
止めない
Intel GPU
↓
Hardware IDを指定
↓
DenyDeviceIDs
↓
ドライバーインストールを制御
という設定を行いました。
しかし、DenyDeviceIDsは、
これからドライバーがインストールされる経路を制御する設定
です。
すでにPC内部へ保存されている過去のドライバーまでは削除しません。
そこで今回はDriverStore側を整理します。
DriverStoreとは?
Windowsでは、デバイスドライバーが単純にProgram Filesのような場所へ置かれているわけではありません。
ドライバーパッケージはWindowsへ登録され、
C:\Windows\System32\DriverStore\FileRepository
などの領域で管理されています。
これがDriverStoreです。
ただし、
C:\Windows\System32\DriverStore\FileRepository
をエクスプローラーから開いて、ファイルを直接削除するのは避けます。
Windowsではドライバーパッケージ単位で管理されているため、標準ツールを使用して削除します。
今回使うのが、
pnputil
です。
pnputilはWindows標準のドライバー管理ツールです。
なぜDriverStoreに残っているIntel GPUドライバーを削除するのか
たとえば現在、
Intel GPU
↓
Microsoft Basic Display Adapter
で正常に動いていたとします。
それでもPC内部には、
Intel GPU
│
├─ 現在使用中
│ ↓
│ Microsoft Basic Display Adapter
│
└─ DriverStore
↓
過去のIntel Display Driver
↓
oemXX.inf
という状態が残っている可能性があります。
つまり、
現在Intelドライバーを使用していない = IntelドライバーがPCから完全に消えている
とは限りません。
DriverStoreに過去のドライバーパッケージが残っていると、デバイスの再検出やドライバーの再評価などによって、ローカルに存在するドライバーが再利用される可能性があります。
そのため今回は、
DenyDeviceIDs
↓
今後の再導入を制御
+
DriverStore cleanup
↓
過去に保存されたIntel Driverを削除
という2つの対策を組み合わせます。
まずIntel Display Driverが残っているか確認する
管理者としてPowerShellを起動します。
次のコマンドを実行します。
Get-WindowsDriver -Online |
Where-Object {
$_.ClassName -eq "Display" -and
$_.ProviderName -like "*Intel*"
} |
Select-Object PublishedName, ProviderName, ClassName, DriverVersion, Date
ここでは、
ClassName
↓
Display
かつ、
ProviderName
↓
Intel
のドライバーだけを抽出しています。
例えば、次のように表示されたとします。
PublishedName : oem42.inf
ProviderName : Intel Corporation
ClassName : Display
DriverVersion : xx.xx.xxxx.xxxx
Date : xx/xx/xxxx
ここで重要なのが、
PublishedName
です。
今回の場合は、
oem42.inf
がWindows上で登録されているドライバーパッケージ名です。
oem42.infとは?
ドライバーをWindowsへ登録すると、
oem0.inf
oem1.inf
oem2.inf
...
のような名前で管理されます。
したがって、
PublishedName : oem42.inf
と表示された場合、
DriverStoreから削除するときに指定するのは、
oem42.inf
です。
「Intelだから削除」は危険
ここはかなり重要です。
Intelと表示されたドライバーを片っ端から削除してはいけません。
Intel製ドライバーには、GPU以外にも、
Intel Network Driver
Intel Chipset Driver
Intel Bluetooth Driver
Intel Storage関連
などが存在する可能性があります。
今回対象にするのは、
ProviderName
↓
Intel / Intel Corporation
かつ
ClassName
↓
Display
のものです。
確認項目を整理すると次のようになります。
| 項目 | 確認内容 |
|---|---|
ClassName |
Display |
ProviderName |
Intel / Intel Corporation
|
PublishedName |
oemXX.inf |
DriverVersion |
削除対象バージョンの確認 |
Date |
ドライバー確認用 |
つまり、
Intelだから削除するのではなく、Intel + Displayであることを確認して削除する
のがポイントです。
pnputilでIntel Display Driverを削除する
対象が、
PublishedName : oem42.inf
ProviderName : Intel Corporation
ClassName : Display
であることを確認したとします。
管理者権限のPowerShellまたはコマンドプロンプトで、
pnputil /delete-driver oem42.inf /uninstall /force
を実行します。
/delete-driver
/delete-driver
は、指定したドライバーパッケージをDriverStoreから削除するためのオプションです。
今回なら、
oem42.inf
を削除します。
/uninstall
/uninstall
は、そのドライバーを現在使用しているデバイスがある場合に、デバイスからもアンインストールするための指定です。
イメージとしては、
Intel GPU
↓
Intel Driver
という関連付けが存在している場合、その関連付けも外します。
/force
/force
は、対象ドライバーパッケージが使用中の場合でも削除を試みるための指定です。
したがって、
pnputil /delete-driver oem42.inf /uninstall /force
は大きく分けると、
対象デバイスからアンインストール
↓
DriverStoreから
oem42.infを削除
という操作になります。
注意
/forceを含むドライバー削除は、対象を間違えるとデバイスが正常に動作しなくなる可能性があります。必ず
PublishedName、ProviderName、ClassName、現在使用中のドライバーを確認してください。
Intel Display Driverが複数残っている場合
DriverStoreには、過去のドライバーが複数世代残っていることがあります。
例えば、
oem12.inf
Intel
Display
oem27.inf
Intel
Display
oem42.inf
Intel
Display
という状態です。
この場合、oem42.infだけ削除しても、
oem12.inf
oem27.inf
が残ります。
不要であることを確認したうえで、それぞれ削除します。
pnputil /delete-driver oem12.inf /uninstall /force
pnputil /delete-driver oem27.inf /uninstall /force
pnputil /delete-driver oem42.inf /uninstall /force
ただし、
表示されたoemXX.infを機械的に全部削除するのは避けます。
毎回、
Provider Name
↓
Intel
Class Name
↓
Display
であることを確認します。
削除後にDriverStoreを確認する
削除コマンドが成功しても、そこで終わりにはしません。
次のコマンドを実行します。
pnputil /enum-drivers /class Display
DriverStoreに登録されているDisplay Driverを確認できます。
削除前に、
Published Name : oem42.inf
Provider Name : Intel Corporation
Class Name : Display
があったのであれば、
削除後に、
oem42.inf
が表示されなくなっていることを確認します。
PowerShellでもIntel Display Driverが残っていないか確認する
最初に使用したPowerShellコマンドでも確認します。
Get-WindowsDriver -Online |
Where-Object {
$_.ClassName -eq "Display" -and
$_.ProviderName -like "*Intel*"
} |
Select-Object PublishedName, ProviderName, ClassName, DriverVersion, Date
何も表示されなければ、少なくともこの検索条件に一致する、
Intel
+
Display
のドライバーパッケージは確認できない状態です。
今回重要なのは、
削除した
で終わるのではなく、
削除した
↓
再検索した
↓
Intel Display Driverが見つからない
まで確認することです。
Microsoft Basic Display Adapterまで消えない?
ここで、
Intel Display DriverをDriverStoreから削除したら、Microsoft Basic Display Adapterまで消えてしまうのでは?
と思うかもしれません。
今回削除しているのは、
oemXX.inf
として登録されているIntelのDisplay Driverです。
一方、
Microsoft Basic Display Adapter
はWindows標準の表示ドライバーです。
そのため、
pnputil /enum-drivers /class Display
でIntel Display Driverが表示されなくなったからといって、
Microsoft Basic Display Adapterまで削除された、という意味ではありません。
pnputilにMicrosoft Basic Display Adapterが出なくても問題ない
もう一つ混乱しやすいポイントです。
pnputil /enum-drivers /class Display
を実行しても、
Microsoft Basic Display Adapter
という名前が出てこないことがあります。
見る場所が違うためです。
デバイスマネージャー
↓
現在GPUが
どのドライバーで動作しているか
pnputil /enum-drivers
↓
DriverStoreに
どのドライバーパッケージが
登録されているか
今回確認したい最終状態は、
現在のGPU
↓
Microsoft Basic Display Adapter
DriverStore
↓
不要なIntel Display Driverなし
です。
DenyDeviceIDsとDriverStore削除は役割が違う
今回の2つの対策を整理すると分かりやすくなります。
DenyDeviceIDs
未来への対策
です。
対象GPUに対する今後のドライバーインストールを制御します。
DriverStore cleanup
過去への対策
です。
すでにPC内部へ保存されているIntel Display Driverを整理します。
つまり、
過去
↓
DriverStore cleanup
↓
不要なIntel Display Driverを削除
現在
↓
Microsoft Basic Display Adapter
未来
↓
DenyDeviceIDs
↓
Intel GPU Driverの再導入を制御
という考え方です。
今回使用したコマンドまとめ
1. Intel Display Driverを検索
Get-WindowsDriver -Online |
Where-Object {
$_.ClassName -eq "Display" -and
$_.ProviderName -like "*Intel*"
} |
Select-Object PublishedName, ProviderName, ClassName, DriverVersion, Date
2. PublishedNameを確認
例えば、
PublishedName : oem42.inf
を確認します。
3. DriverStoreから削除
pnputil /delete-driver oem42.inf /uninstall /force
oem42.infは自分の環境で確認したPublishedNameへ置き換えます。
4. DriverStoreを再確認
pnputil /enum-drivers /class Display
5. PowerShellでも再検索
Get-WindowsDriver -Online |
Where-Object {
$_.ClassName -eq "Display" -and
$_.ProviderName -like "*Intel*"
} |
Select-Object PublishedName, ProviderName, ClassName, DriverVersion, Date
最終的に確認したい状態
Intel Display Driver
↓
DriverStoreから検出されない
現在のDisplay Adapter
↓
Microsoft Basic Display Adapter
Intel GPU Driverの再導入
↓
DenyDeviceIDsで制御
Windows Update全体
↓
停止しない
この状態を目指します。
「直った」だけではなく「元に戻る経路」を消す
今回の作業で重要だと感じたのは、
現在正常に動いているかだけを見るのでは不十分
ということでした。
例えば、
Intel GPU Driverを変更
↓
ブラックスクリーンが改善
↓
正常になった
だけで終わらせると、
その後、
Windows Update
PnPによるデバイス再検出
再起動
メンテナンス
などによって、再び以前の状態へ戻る可能性があります。
そのため、
現在どう動いているか
+
PC内部に何が残っているか
+
今後何が再導入される可能性があるか
まで確認する必要があります。
長期間無人で動かすエッジPCでは、
「直った」だけではなく、「再び同じ状態へ戻る経路が残っていないか」を確認する
ことも、安定運用の一部だと考えています。
次回:Intel GPU Driverが戻っていないことを数分で確認する
ここまで、
DenyDeviceIDs
+
DriverStore cleanup
によってIntel GPU Driverが意図せず戻る経路を整理しました。
ただ、長期間運用する場合は、
設定後もその状態が維持されているか、短時間で確認できること
も重要です。
次回は、
Intel GPU Driverが戻っていないことを数分で確認するチェックリスト
として、
-
pnputilによるDisplay Driverの確認 - Intel Display Driverの残存確認
-
Get-PnpDeviceによる現在のDisplay Adapter確認 -
Get-PnpDevicePropertyによるHardware ID確認 -
DenyDeviceIDsのレジストリ確認 -
gpresultによるグループポリシー適用確認 - Windows Update後の再確認
をまとめます。
本記事は、実際のエッジPC運用・障害対応経験をもとに、機密情報に配慮して一部を一般化・匿名化しています。
DriverStoreからのドライバーパッケージ削除は、デバイスの動作やシステムの安定性へ影響する可能性があります。
特に
pnputil /delete-driverを実行する場合は、PublishedName、ProviderName、ClassName、対象デバイス、現在使用中のドライバーを十分確認してください。実環境へ適用する場合は、検証環境で動作を確認し、復旧手段を確保したうえで実施してください。