
PCを起動したら、キーボードが使えなくなっていました。
OSは「Windows 10」です。
OSが起動する前のファームウェア(BIOSじゃなくて、今はなんていうんですかね?EFIファーム?)では、問題なくキーボードが使えるので、H/Wの問題ではありません。別のOS、Knoppixでも問題なしでした。
デバイスマネージャーを確認すると、キーボードとマウスに「!」が付いていて、ドライバがエラー扱いになっていました。
デバイスを右クリックしてプロパティを確認すると以下のような状態。
デバイス | デバイスの状態 | |||
---|---|---|---|---|
PC | キーボード | HID キーボードデバイス | このハードウェアのデバイス ドライバーを読み込むことができません。ドライバーが壊れているか、ドライバーがない可能性があります。 (コード 39) | オブジェクト名が見つかりません。 |
標準 PS/2 キーボード | ||||
マウスとそのほかのポインティング デバイス | PS/2 互換マウス | このデバイスを開始できません。 (コード 10) | システム リソースが不足するため、API を終了できません。 |
Web検索して色々試してみたものの、解決するまでに少し時間がかかりました。
試した事は以下の一覧のとおりです。
試したこと | 結果 |
---|---|
PCを再起動 | 状況変わらず |
PCを終了して、電源コード・バッテリーを外し、しばらく放置してから再起動 | 状況変わらず |
該当デバイスを削除して再認識させる | 状況変わらず |
「Windows Update」でオプションの更新プログラムの中にあったドライバのアップデータ「Intel - net - 4/29/2019 12:00:00 AM - 18.33.17.1」を適用する | 状況変わらず |
最終的にレジストリを編集することで解決できました。ちょっと危険な試行もあったので、それも含めて一覧にしておきます。
- 編集する前にレジストリのバックアップを実施。
- ↑具体的には「レジストリ エディター[regedit]」の「エクスポート」
- 編集したレジストリ・キーの位置
- [HKEY_LOCAL_MACHINE] -> [SYSTEM] -> [CurrentControlSet] -> [Control] -> [Class]
- 試したことの一覧表です。上から順番に実施していきました。
- ※「レジストリ エディター」で編集後、「デバイス マネージャー」で該当デバイスを削除、「再起動が必要」と促された場合はそれに従い再起動させて、自動スキャンでデバイスが再認識されたときの状況を「結果」列に記載しています。
-
キー 元の値 試した事 結果 4D36E96B-E325-11CE-BFC1-08002BE10318
(キーボード)UpperFilters kbdclass
vmkbd3値を""(空)にした 「HID キーボードデバイス」のエラーコードが外れたが、キーボードが使えない状況は変わらず。 4D36E96F-E325-11CE-BFC1-08002BE10318
(マウス)UpperFilters mouclass 値を""(空)にした 危険。外付けマウスも使えなくなった。内蔵のタッチパッドは使えたので助かった。すぐに元の値に戻した。 4D36E96B-E325-11CE-BFC1-08002BE10318
(キーボード)UpperFilters kbdclass
vmkbd3「UpperFilters」のキー自体を削除 状況変わらず。 4D36E96F-E325-11CE-BFC1-08002BE10318
(マウス)UpperFilters mouclass 「UpperFilters」のキー自体を削除 危険。外付けマウスも使えなくなった。内蔵のタッチパッドは使えたので助かった。すぐに元の値に戻した。 4D36E96B-E325-11CE-BFC1-08002BE10318
(キーボード)UpperFilters kbdclass
vmkbd3値を編集。
"vmkbd3"の行を削除。
変更後の値は
kbdclass
の1行のみ復旧できた
上記リストの最後の行に書いた通り、キーボードの「UpperFilters」の値を変更することで、復旧できました。キーボードが使えるようになり、「!」マークが付いていた3つのデバイスも正常にドライバが読み込まれる状態に遷移。
途中、外付けのマウスも使えなくなり、少し焦りました。(入力装置の全滅はかなり厳しいので)
ちなみに、削除した「vmkbd3」という値は、VMWare由来のようなので、VMWare Playerをインストールしなおせば、「vmkbd3」という値を変更しなくても復旧できたのかもしれません。
今回の場合、「コード 39」の「オブジェクト名が見つかりません。」というメッセージで示していたのは、「vmkbd3」の事で、このドライバーが見つからないという意味だったようです。
今回のトラブルで、レジストリは大事&脆いということが判りました。今後はPCのバックアップをする前に、レジストリの値をエクスポートして保存しておこうと思います。
実行する予定のコマンド
reg export HKEY_CLASSES_ROOT "C:\~\reg\reg_1_HKEY_CLASSES_ROOT.reg" /y
reg export HKEY_CURRENT_USER "C:\~\reg\reg_2_HKEY_CURRENT_USER.reg" /y
reg export HKEY_LOCAL_MACHINE "C:\~\reg\reg_3_HKEY_LOCAL_MACHINE.reg" /y
reg export HKEY_USERS "C:\~\reg\reg_4_HKEY_USERS.reg" /y
reg export HKEY_CURRENT_CONFIG "C:\~\reg\reg_5_HKEY_CURRENT_CONFIG.reg" /y
※ サイズが大きいので1ファイルにアーカイブして圧縮しておくつもりです。
以下散文
マイクロソフトのトラブルシューティングツール、今回もだけど、今までに1度も役に立ったことが無い。