12

パフォーマンスカウンターはEVILです。それらを使用しないでください。

if(PerformanceCounterCategory.Exists("ILoveYou")  ) // is true
{
    PerformanceCounterCategory.Delete("ILoveYou"); 
    //throws exception The **configuration registry** key is invalid
}

at System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0, Boolean unregister)
at System.Diagnostics.PerformanceCounterLib.UnregisterCategory(String categoryName)
at System.Diagnostics.PerformanceCounterCategory.Delete(String categoryName)
at WindowsFormsApplication1.Program.SetupCategory()

私が見つけたのはこれだけです:http: //blogs.msdn.com/b/oanapl/archive/2009/04/24/fix-corrupted-performance-counters.aspx (LODCTR / Rを使用)

そしてそれは役に立ちません。彼らがどんなファイルについて話しているのか私にはわからないので。誰か他のアイデアがありますか?

PS私はWindowsXPSP3を使用していますが、これが問題になる可能性がありますか?ページファイルをキャンセルしない限り、パフォーマンスカウンターを完全にサポートすることを想定していることを理解しています。

これを明確にするために、私の問題は、カウンターをアンインストールできないことです。

4

4 に答える 4

4

私の会社では、パフォーマンス カウンターが定期的に破損するという問題が発生しています。実際のカウンターが破損していることが問題である場合は、次の方法で破損したパフォーマンス カウンターを確認できます。

  1. に行くstart | run | perfmon
  2. [OK] をクリックします。
  3. 右側のパネルのツールバーにある追加ボタン (「+」記号ボタン) をクリックします。
  4. プロモーション オブジェクトのドロップダウン メニューに、数字だけでなく項目が含まれていることを確認します
カウンターが数字または空白の場合:
  • 次の 3 つのファイルを見つけて名前を変更します%windir%\system32
    • Perfc009.dat
    • Perfh009.dat
    • Perfi009.dat
  • Windows XP インストール CD を挿入します
  • CD ドライブを参照し、I386 フォルダー (つまりD:\I386)を参照します。
  • ここでそれらの同じファイルを見つけます
  • それらを CD からコピーして System32 に貼り付けます。
  • コンピュータを再起動します。
  • これは、この問題に対して私たちが見つけた最善の解決策です。

    于 2012-06-05T13:01:05.440 に答える
    3

    同様のマシンがある場合は、lodctr /S:mycounters.ini を実行してすべてのカウンターを「mycounters.ini」にエクスポートし、lodctr /R:mycounters.ini を使用して壊れたマシンにインポートできます。ただし、パフォーマンス カウンターに関してほぼ同一であることがわかっている 2 台のマシンでのみ、この手順を使用したことを覚えておいてください。一致しないマシンで問題が発生するかどうかはわかりません。

    于 2012-12-03T16:43:00.430 に答える
    3

    私のため、

    すべてのパフォーマンスカウンターを再作成するだけで十分でした

    lodctr /R
    

    管理者権限を持つコマンド ラインから (これによると基本パフォーマンス カウンターの手動での再作成はスキップされます)

    レジストリのパフォーマンス カウンターの一覧を確認するとき

     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    

    そのキーのコンテンツは、空白がたくさんあることがわかりました。そのキーの最後に、高いカウンター インデックスを持つパフォーマンス カウンターのリストがありました。上記のコマンドを呼び出した後、キーには基本パフォーマンス カウンターも正しく含まれていました (先頭の空白は含まれていませんでした)。

    于 2013-08-07T14:23:38.033 に答える
    1

    パフォーマンス カウンターは、使いやすさと正確さよりも速度を優先します。XP およびそれ以降の Windows バージョンのパフォーマンス カウンターは、簡単に破損する可能性があります。たとえば、アプリの起動時に新しいパフォーマンス カウンター カテゴリを作成し、シャットダウン時に削除することは非常に悪い習慣です。パフォーマンス カウンターのカテゴリを常に変更すると、パフォーマンス カウンターが破損する可能性があります。

    まだ存在しない場合にのみカテゴリを作成し、アプリがアンインストールされるまでそのままにしておきます。どのような状況でパフォーマンス カウンター カテゴリを削除しますか? 私ができる基本的な答えは、必要がない限り、パフォーマンス カウンター カテゴリを削除しないことです。

    lodctr または EXCTRLST を介してパフォーマンス カウンターを再作成する方法の適切なリンクは、RedGateにあります。ここからダウンロードできます。

    編集1

    まず、問題を解決するツールを見つける必要があります。Exctrlstは、破損したパフォーマンス カウンターを再度有効にするための UI を提供します。

    それが機能する場合は、修復操作中にどのレジストリ キーが書き込まれたかを procmon で確認し、これを自動修復機能の入力として使用できます。

    于 2012-06-03T22:04:27.303 に答える