えむのメモして満足するLog

どうも私です。

Windows ログは見るもんじゃあ無い

どうもログに取り込まれた後の私です。見たら最後のWindows ログ、今回はパフォーマンス関連で、気になる人用です。安易にコマンドを実行しない。自己責任でどうにかできる方だけどうぞ。

共通してlodctrツールを使用しますが、コマンドプロンプトcmd管理者モードで実行しておいてください。

信頼して無いから処理しないもん #2003

"TermService" サービスのパフォーマンス ライブラリ "C:\Windows\System32\perfts.dll" の構成情報が、レジストリに保存されている信頼されたパフォーマンス ライブラリの情報に一致しませんでした。このライブラリの関数は信頼されているものとして処理されません。
ログの名前:Application
ソース:Perflib
イベント ID:2003
レベル:警告

同じく#2003で、TermService以外も出てくるので、その辺は置き換えて対処する事。

fix

lodctrのパラメーター/t:で信頼させる。

lodctr /t:"TermService"

荒ぶるLoadPerf #2007

xxxxxx サービスのパフォーマンス カウンターを修復できません。LODCTR ツールを使用してパフォーマンス カウンターを手動で再インストールしてください。
ログの名前:Application
ソース:LoadPerf
イベント ID:2007
レベル:警告

fix

安易にコレ行うと、別のエラーが発生するので以下の記事も併せて見てから行うこと。

lodctrのパラメーター/rで修復。

lodctr /r

だから安易にやるなと書いたのに…

lodctr /rを実行すると再構築はしてくれるが、なぜか一部のカウンターが抜けてしまう。

fixは共通なのでまとめる。

?#2001

xxxxxx\Performance キーの "First Counter" 値を読み取れません。ステータス コードはデータで戻されました。

キーはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xxxxxx\Performanceにあるが、実際にxxxxxxが無かったり*1する。
First Counterの他、First HelpLast CounterLast Helpも無い可能性がある。

あとレジストリ見ても仕方が無い。

?? #3001

レジストリのパフォーマンス カウンター名文字列の値が正しくフォーマットされていません。問題の文字列は x です。この文字列に対するインデックス値は、データ セクションの最初の DWORD に含まれ、最後の有効なインデックス値は、データ セクションの y 番目と z 番目の DWORD に含まれています。

いや再起動しても同じなんですけど! #3006

カウンターが読み込まれていないか、共有メモリ オブジェクトを開けなかったため、パフォーマンス モニターを初期化できませんでした。これによって影響されるのは、パフォーマンス モニターのカウンターの使用可能性のみです。コンピューターを再起動してください。

々! #3007

カウンターが読み込まれていないか、共有メモリ オブジェクトを開けなかったため、Gatherer オブジェクトのパフォーマンス モニターを初期化できませんでした。これによって影響されるのは、パフォーマンス モニターのカウンターの使用可能性のみです。コンピューターを再起動してください。

コンテキスト: アプリケーション、 SystemIndex カタログ

#3006と#3007はWindows Searchサービス関連。(たぶん#10021も

??? #3011

サービス xxxxxx (xxxxxx) のパフォーマンス カウンターの文字列をアンロードできませんでした。エラー コードがデータ セクションの最初の DWORD に含まれています。

「正しく終了」したのならなんで… #10021

xxxxxx のインスタンス のパフォーマンス カウンター レジストリを取得できませんでした。次のエラーが発生しました: この操作を正しく終了しました。 *x*。

fix

lodctrレジストリ値を更新したらだいたい直る。

とりあえずエクスプローラーで%SystemRoot%\INFに移動する。

*.iniたくさんあるが、どれでも良いというわけでは無い。*.iniテキストエディターなどで開き[info]セクションに注目する。

例:%SystemRoot%\INF\usbhub\0411\usbperf.ini or %SystemRoot%\INF\usbhub\0000\usbperf.ini

[info]
drivername=usbhub
symbolfile=usbperfsym.h

(略)

drivernameの値がサービス名で、symbolfileの値がシンボルファイル
シンボルファイルが相当の.ini同じフォルダに無いとこれからやる作業、意味が無い。usbhubの例では`%SystemRoot%\INF\usbhubにシンボルファイルのusbperfsym.hが存在する。どちらかにコピーしておく。

例:

cd %SystemRoot%\INF\usbhub
copy ".\0411\usbperf.ini"
dir

usbperf.iniusbperfsym.hが一緒になってたらOK。
留意すべき点は、0411フォルダは日本語なので、コレが無い場合がある。その際は素直に0000フォルダの.iniを使おう。英語だがパフォーマンスモニターなんて普段見ないから大丈夫。

また初めから.ini.hが一緒になってる場合はコピー上書きしない。(する必要が無い

あとは

lodctr "usbperf.ini"

する。ものによっては「Perflib の言語キー xxx を開けません」と出るが無視する。

PCを再起動し、エラーが無いかを確認する。例題の通りだとusbhub(usbper)#2001のエラーは無くなってるはず。他のエラーも同じ要領でやればきえるはず。

但し、#3006、#3007は同じ要領でやっても解決出来ないので追記する。
UGathererwsearchidxpiレジストリ値も更新した上でUGTHRSVCも追加登録する。

cd %SystemRoot%\INF\UGTHRSVC
copy ".\0411\gthrctr.ini"
dir
lodctr "gthrctr.ini"

参考文献

*1:例えばusbperはusbhubなので、キーは実在する。