Windowsエラー
 Computer >> コンピューター >  >> トラブルシューティング >> Windowsエラー

Windows 10/11でイベントエラー1020・1008(Microsoft-Windows-Perflib)を解決する5つの対処法

Windows 10/11には、快適なパソコン体験を支える数多くの便利な機能が搭載されています。システム全体は複数の小さなサブシステムが連携することで成り立っており、あらゆる用途に対応した直感的なプラットフォームを提供しています。

しかし最近、Windows 10/11のユーザーの間で、イベントエラー1020および1008(Microsoft-Windows-Perflib)が発生し、対象のアプリケーションが起動できなくなったり、パソコンのパフォーマンスに悪影響が出たりするという報告が相次いでいます。

影響を受けたユーザーの声によると、このエラーは明確な原因もなく突然現れるとのことです。エラーが表示される前に、パソコンがフリーズしたりアプリがクラッシュしたりといった前兆は一切なく、何の予告もなく発生します。

さらに厄介なことに、このエラーの解決方法に関するオンライン上の情報は非常に少なく、多くのユーザーが対処法が分からず戸惑っているのが現状です。

プロのヒント:専用のPC最適化ツールを活用すれば、誤った設定、ジャンクファイル、有害なアプリ、セキュリティ上の脅威などを一括で除去し、システムトラブルや動作の遅延を未然に防ぐことができます。

突然このエラーに遭遇して途方に暮れている方は、本ガイドがきっと役立つはずです。

イベントエラー1020・1008(Microsoft-Windows-Perflib)とは?

まず混乱しないようにしておきましょう。実はこれらは2種類の異なるエラーです。イベントID 1020とイベントID 1008ですが、同時に発生することが多く、発生状況もほぼ共通しています。

イベントエラー1008では、次のようなエラーメッセージが表示されることがあります。

ソース: Perflib
カテゴリ: なし
種類: エラー
イベントID: 1008

DLL「C:\WINDOWS\system32\mscoree.dll」内のサービス「.NETFramework」のオープン プロシージャがエラー コードにより失敗しました。指定されたファイルが見つかりません。このサービスのパフォーマンス データは利用できません。

一方、イベントエラー1020では、次のようなメッセージが表示されます。

ソース: Perflib
カテゴリ: なし
種類: エラー
イベントID: 1020

拡張可能カウンター DLL「C:\Windows\System32\perfts.dll」のサービス「LSM」の収集関数に渡されたバッファ サイズが必要なサイズより小さいため、データを収集できませんでした。報告されたバッファ サイズは 34184、必要なサイズは 43160 でした。

これらのエラーはmscoree.dll以外のファイルでも発生する可能性があります。他のDLLファイルに対してパフォーマンス チェックを実行した際にも、同様のエラーが記録されることがあります。

上記のメッセージは、システムがmscoree.dllを見つけられないことを意味しています。管理者権限のPowerShellで「lodctr /r」コマンドを実行すると「mscoree.dllがバックアップから復元されました」と表示され、「lodctr /q」コマンドで修復一覧を確認してもmscoree.dllがリストに含まれています。それにもかかわらず、これらの操作を行った後でもエラーが消えないという報告があります。

影響を受けたユーザーの多くは、イベントビューアーにこれらのエラーが表示される以外には、パソコンに特に異常を感じていないと述べています。すべてが正常に動作しているように見えるため、何が原因で何が正しく機能していないのか分からないというのが実情です。

ただし、このエラーが表示されても過度に心配する必要はありません。エラー自体は深刻な問題ではなく、単にWindowsが「パフォーマンス データを収集できない」ことを知らせているだけです。意味を理解するのは簡単ですが、実際にエラーを解消するのは別の話になります。

イベントエラー1020・1008の原因

前述の通り、これらのイベントエラーはさまざまなアプリケーションで発生する可能性があります。パフォーマンス モニターが初めてすべてのカウンターを読み込む際、拡張機能のOpenプロシージャが呼び出されます。

Openプロシージャの典型的なタスクは、レジストリから自身がサポートするオブジェクト インデックスの範囲を読み取ることです。これらのインデックス値は、アプリケーションのPerformanceキーの下にある「First Counter」「First Help」「Last Counter」「Last Help」の各レジストリ値に保存されています。

Openプロシージャがデータの読み取りに失敗した場合(つまり、これらのエントリが存在しないか、アンインストール作業によって削除された場合)、イベント ログに1008または1020のイベントが記録されます。

イベント1020および1008は通常、カウンター リストが破損していたり、必要なDLLが無効化されていたりすることで発生します。パフォーマンス カウンターが指定されたサービスの文字列をアンロードできない場合、レジストリが破損し、これらのPerflibエラーが表示されることがあります。

イベントエラー1020・1008の修正方法

このエラーはWindowsシステムにとって致命的なものではありませんが、通知が繰り返し表示されるのは煩わしいものです。以下の解決策を順番に試してみてください。

対処法1:パソコンを再起動する

エラーを解決するための最初のステップは、システムの再起動です。再起動は一時的な不具合の解消に効果的な場合が多いです。電源ボタンを押してシャットダウンし、数分待ってから再度起動してください。また、セーフモードで起動して、エラーがサードパーティ製ソフトウェアに関連しているかどうかを確認するのも有効です。

対処法2:破損したファイルを修復する

もう一つの基本的なトラブルシューティングとして、コマンド プロンプトでSFCコマンドを実行し、システム内の破損ファイルをチェックする方法があります。このツールは破損したファイルを自動的に修復または置換し、エラーの解決を図ります。併せて、Outbyte PC Repairなどのシステム クリーナーでシステムをクリーンアップし、さらなるエラーの発生を防ぐこともおすすめです。

対処法3:レジストリを編集する

孤立したエントリを削除するには、通常以下の手順に従います。

  1. レジストリ エディター(Regedt32.exe または Regedit.exe)を起動します。
  2. 次のサブキーに移動します。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<サービス名>\Performance
  3. 「Open」の値を削除します。
  4. 変更を有効にするためにパソコンを再起動します。

対処法4:パフォーマンス カウンターを再構築する

この問題を解決するには、パフォーマンス カウンターのリストを再構築します。

  1. スタートボタンをクリックします。
  2. 検索バーに「CMD」と入力します。
  3. コマンド プロンプトを右クリックします。
  4. 「管理者として実行」を選択します。
  5. 次のコマンドを入力してEnterキーを押します。
    CD %SYSTEMROOT%\System32
  6. コマンド プロンプトで「lodctr /r」と入力します。
  7. Enterキーを押します。
  8. エラー1008の場合は、さらに「lodctr /e:<DLL名>」と入力してEnterキーを押します。

なお、この手順を実行するにはローカルのAdministratorsグループへの所属が必要です。レジストリ内のカウンター リストを再構築するには、以下の手順を実行します。

  1. Windows 10/11のスタートボタンをクリックします。
  2. 表示された検索ボックスに「CMD」または「コマンド プロンプト」と入力します。
  3. 候補が表示されたら右クリックし、「管理者として実行」を選択します。
  4. 開いたコマンド プロンプト ウィンドウで、次のコマンドを入力してEnterキーを押します。
    cd %SYSTEMROOT%\System32
  5. 続けて次のコマンドを入力してEnterキーを押します。
    lodctr /r

対処法5:DLLを再有効化する

同様に、1008のMicrosoft-Windows-Perflibエラーは、必要なDLLが無効になっている場合にも発生します。この問題を解決するには、「lodctr /e:<DLL名>」と入力してEnterキーを押します(<DLL名>は該当ライブラリのファイル名に置き換えてください)。

1つ以上の拡張可能カウンター DLLを無効化して原因を特定するには、以下の手順を実行します。

  1. レジストリ エディター(RegEdt32.exe)を起動します。
  2. 次のレジストリ サブツリーに移動します。
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
  3. [表示]メニューの[キーの検索]をクリックします。
  4. 検索文字列として「Performance」と入力し、下方向へ検索します。
  5. 見つかった各Performanceエントリで、Libraryの値を選択し、ライブラリ名の先頭に「xx」を付けて変更します。例:「OrigLib.dll」を「xxOrigLib.dll」に変更します。
  6. CurrentControlSet\Servicesキーの下にあるすべてのPerformanceエントリに対してこの作業を行った後、Perfmonを再起動して正常に動作するかどうかを確認します。正常に動作する場合は、元のライブラリ名に戻しながら同じ手順を繰り返し、どのライブラリが問題の原因となっているのかを特定します。

まとめ

Windows 10/11でイベントエラー1020・1008(Microsoft-Windows-Perflib)が発生するのは煩わしいものの、致命的なエラーではありません。イベントで言及されているサービスのパフォーマンス カウンターが不要な場合は、exctrlst.exeツール(拡張可能パフォーマンス カウンター リスト)を使用して無効化することも可能です。ただし、これはあくまで通知を止めるための応急措置です。根本的にエラーを解決したい場合は、本記事で紹介したトラブルシューティング手順を参考にしてください。

  1. Windows 10でイベントID 1020・1008(Microsoft-Windows-Perflib)エラーが出たときの直し方

    Windows 10を使用していると、特別な心当たりがないのにイベントビューアーにイベントID 1020および1008のMicrosoft-Windows-Perflibエラーが記録されることがあります。エラーの意味が分からず、どう対処すればよいのか困っている方も多いのではないでしょうか。実際に表示されるメッセージは、おおむね次のような内容です。エラーメッセージの内容1. イベントID 1008「サービス『.NETFramework』のDLL『C:\WINDOWS\system32\mscoree.dll』にあるOpenプロシージャが失敗しました。エラーコード:指定されたファイルが見つかりませ

  2. Windows 11/10でイベントID 642 ESENTエラーを修正する方法

    拡張ストレージエンジン(ESE)は、ESENT.DLL を含むデータベース技術で、Windows 2000以降のすべてのWindowsに搭載されています。Windows Updateをはじめ、多くのWindowsコンポーネントがこのエンジンを利用しています。 デバイスでWindowsをアップグレードした後にイベントID 642 ESENTエラーが発生している場合は、この記事が役立ちます。本記事では、この問題を解決するための対処法を詳しく紹介します。 イベントID 642 ESENTエラーとは このエラーは、主にWindows 10 バージョン2004にアップグレードしたユーザーから報告されてお