パフォーマンスカウンタが取得できないときの対処方法


ブルースクリーンなどでPCが強制終了した際に、ごくごくまれにですがパフォーマンスカウンタのデータベースが壊れることがあります。
これが起こると PerfCounter.dll や ServiceModelPerformanceCounters.dll などを利用した情報の取得ができなくなります。
ディスプレイドライバをアップデートしたときに、BSOD連発後この症状が出て、最初はこれらDLLファイルが壊れたのかと思い .NET Framework を再インストールしてみたものの復活せず、さらに原因を探っていたところ、パフォーマンスカウンタライブラリなるものが存在することを知りました。
なるほどたしかに、DLLとはべつにレジストリの CounterBlock のところにバイナリデータが書き込まれてますね。これがDBなんでしょう。
ライブラリのDBを再構築して修復するコマンドは以下の通り。

cd C:\Windows\System32
lodctr /R
cd C:\Windows\SysWOW64
lodctr /R

通常、管理者モードでコマンドプロンプトを立ち上げると最初から System32 なので、1行目の cd は必要ありませんが、SysWOW64 でも同じコマンドを実行する必要があるためディレクトリを切り替えます。
以上でパフォーマンスカウンタの修復は終わりです。
元通り情報が取得できるか確認してみましょう。


以上。

人気の投稿