Windows10のPCでイベントビューアーのログを確認すると、ソース:DistributedCOMのエラーログが頻繁に記憶されているケースがあります。エラーログのイベントIDは、10010や10016であることが多いです。
上記のエラーは、フリーズが発生した際に記録される場合もありますが、PCの動作に問題がない場合でも記録される場合があります。
本記事では、Windows10でDistributedCOMに関連するエラーが頻繁にイベントビューアーのログに記録されるトラブルの対処法についてを紹介します。
この記事の内容
DistributedCOMとは
DistributedCOM(DCOM)とは、COM(Component Object Model)をネットワーク経由でやり取りができるよう拡張したMicrosoftのソフトウェアコンポーネントです。
COMは個別のPC上でしかプログラムのやり取りができませんでしたが、DistributedCOMの機能を使用すると、別のPC同士がネットワーク通信を経由してプログラムのやり取りができるようになります。
Windowsの様々なアプリケーションやサービスがDistributedCOMの機能を使用しています。
DistributedCOMエラーの原因
イベントビューアー上でのDistributedCOMのエラーログは、主にアプリケーションやサービスがDistributedCOMの機能を利用できなかった際に記録されます。
特定のアプリケーションではなく、Runtime BrokerなどのWindowsの標準サービスがエラーの原因になっているケースもあります。
アプリケーションやサービスがDistributedCOMの機能を使用できない原因としては、主に次のことが考えられます。
- アプリケーションが十分なアクセス権を持っていないため、一部の機能がブロックされている
- アプリケーション本体の機能や構造に問題がある
- パソコンの高負荷やシャットダウンが原因で処理が正常に完了しなかった
原因によっては完全に対処することが難しいケースもあり、アプリケーションやPCの動作に明らかな悪影響が出ていなければエラーを無視しても問題ない場合がほとんどです。
しかし、DistributedCOMエラーによってフリーズなどの深刻な問題が起きている場合は、紹介する方法を参考に調査や対処を行ってみてください。
対処1: エラーの原因のアプリケーションを特定する
まずイベントビューアーのエラーログを確認して、DistributedCOMのエラーを発生させているアプリケーション、もしくはサービスを特定してください。
エラーの原因のアプリケーションは、次の手順で確認することができます。
1. アプリケーションIDを確認する
イベントビューアーを開いてエラー詳細を表示し、エラー詳細文に記載されているアプリケーションまたはプログラムのIDを確認します。
- イベントID10010の場合は、「サーバー {XXXXXXXX} は、必要なタイムアウト期間内に DCOM に登録しませんでした。」というエラーメッセージが表示されます。
- メッセージの {XXXXXXXX} 部分が問題のアプリケーションIDを表しています。かっこ内のIDをメモしてください。
- イベントID10016の場合は、「アプリケーション固有のアクセス許可の設定では、CLSID {YYYYYYYY} および AppID {ZZZZZZZZ} の COM サーバー アプリケーションに対するローカルからのアクティブ化のアクセス許可を……」というログが表示されます。
- 記載されているCLSID {YYYYYYYY} とAppID {ZZZZZZZZ} の2箇所をメモしてください。
2. アプリケーション名を特定する
エラーが出ているアプリケーションIDを確認したら、レジストリエディタを使ってIDからアプリケーションの名前を検索します。
- 「ファイル名を指定して実行(ショートカットはWin + R)」ウィンドウに「regedit」と入力してレジストリエディタを起動します。
- レジストリエディタ上部メニューより「編集」→「検索」を選択します。
- 「検索する値」にイベントログで確認したID(かっこ内の数字およびアルファベット部分)を入力して「次を検索」をクリックします。
- イベントログに2種類のIDが表示されていた場合は、どちらかのIDで検索してください。どちらで検索しても同じアプリケーション名が表示されるはずですが、もしヒットしない場合はもう片方のIDで検索し直してください。
- 検索に成功するとレジストリエディタ右ペインの(既定)の項目にIDに対応するアプリケーション名が表示されます。
以上で、DistributedCOMのエラーの原因になっているアプリケーションを特定することができます。
エラーの原因となっているアプリケーションが判明したら、不要なアプリケーションであればアンインストールを行ってください。
エラーの出ているアプリケーションが必要な場合は、アップデートや再インストールを試してエラーが解決しないか確認してください。エラーが解決しない場合は、次の対処を試してください。
対処2: アプリケーションのDCOMのアクセス権を許可する
エラーの原因になっているアプリケーションのDCOMのアクセス権限を個別で許可することで、エラーが解決する可能性があります。
アプリケーションのDCOMのアクセス許可設定をするには、次の手順で操作します。
1. DCOMのセキュリティ設定の変更を許可する
WindowsのデフォルトではアプリケーションのDCOMのセキュリティ設定を個別に変更することが許可されていません。
そのため、まずレジストリを編集してDCOMのセキュリティ設定を変更できる状態にします。
- 「ファイル名を指定して実行(ショートカットはWin + R)」ウィンドウに「regedit」と入力してレジストリエディタを起動します。
- レジストリエディタで次の階層までたどります。
HKEY_CLASSES_ROOT\CLSID\{アプリケーションのCLSID}
- 末尾の{アプリケーションのCLSID}部分は、イベントログメッセージに表示されているIDに差し替えてください。
- イベントログに2種類のIDが表示されている場合は、CLSIDと表記されているIDに差し替えます。
- イベントビューアーでAppIDが確認できていない場合は、AppIDを以下の手順で調べます。*AppIDが分かっている場合は、この手順をスキップしてください。
- {アプリケーションのCLSID}キーを選択したら、右ペインの「AppId」の値を確認します。
- 該当項目の「データ」に表示されている内容が、調べたCLSIDに対応するAppIDです。
- 「{アプリケーションのCLSID}」キー(フォルダアイコン)を右クリックし、「アクセス許可」を選択します。
- 「詳細設定」→「変更」(所有者の右に表示されています)→「詳細設定」とクリックして進みます。
- 「ユーザーまたはグループの選択」画面が表示されたら、デフォルトの設定のまま「検索」ボタンをクリックします。
- ウィンドウ下部のリストに検索結果が表示されるので、「Administrators」を選択して「OK」をクリックします。
- 「Administrator」ではなく、必ず末尾に ”s” のついた「Administrators」を選択するようにしてください。
- 「OK」をクリックして「ユーザーまたはグループの選択」ウィンドウを閉じます。
- 所有者名の下に表示されている「サブコンテナーとオブジェクトの所有者を置き換える」にチェックを入れます。
- 「アクセス許可エントリ」リスト内にある「Administrators」で始まる項目をダブルクリックします。
- 「基本のアクセス許可」の中にある「フルコントロール」にチェックを入れて「OK」をクリックします。
- 「適用」ボタンをクリックして設定を保存します。
- レジストリエディタのメイン画面に戻り、今度は次のキーを探します。
HKEY_LocalMachine\Software\Classes\AppID\{アプリケーションのAppID}
- 末尾の{アプリケーションのAppID}部分は実際のAppIDに差し替えてください。
- 「{アプリケーションのAppID}」キーを右クリックして「アクセス許可」を選択します。
- 同じ手順(手順4~12)で、所有者をAdministratorsに変更し、Administratorsにフルアクセスコントロール権限を付与します。
- 設定を保存し、レジストリエディタを終了します。
レジストリの操作が完了したら、PCを再起動してください。以上の手順で、DCOMのセキュリティ設定を変更することができるようになります。
2. アプリケーションのアクセス許可設定を変更する
続いて、コンポーネントサービスで、エラーの出るアプリケーションのDCOMのアクセス権限を許可します。次の手順で操作してください。
- 「スタート」メニューから「コンポーネントサービス」を管理者として実行します。
- 上部メニューより「表示」→「詳細」を選択し、リストを詳細表示に変更します。
- 左ペインのツリーをたどり、「コンポーネントサービス」→「コンピューター」→「マイコンピューター」→「DCOMの構成」を開きます。
- 中央ペインにアプリケーションとアプリケーションIDの一覧が表示されます。アプリケーション名やアプリケーションID(AppID)を参考に目的のアプリケーションを探します。
- アプリケーションが見つかったら、右クリックして「プロパティ」を選択します。
- 「セキュリティ」タブを開き、「起動とアクティブ化のアクセス許可」内の「編集」ボタンをクリックします。
- 「Windowsセキュリティ」による警告が表示された場合は、「削除」を選んください。
- 「追加」ボタンをクリックします。
- 「詳細設定」をクリックします。
- 「検索」ボタンをクリックすると、検索結果にユーザーの一覧が表示されます。イベントログに記載されている「ユーザー」の名前を選択します。
- 不明な場合はイベントビューアーの該当エラーログにて「全般」情報を確認してください。
- ユーザーを選択したら「OK」をクリックしてユーザーを追加します。
- 「起動とアクティブ化のアクセス許可」ウィンドウまで戻ったら、「グループ名またはユーザー名」リストから先程追加したユーザーを選択します。
- 「アクセス許可」リストにて、「ローカルからのアクティブ化」にチェックを入れます。
- 「OK」を押して設定を保存します。
以上でエラーの出ているアプリケーションのDCOMへのアクセス権が許可されます。イベントビューアーでエラーが解決したか確認してください。
対処3: COMのアクセス設定を初期化する
COMのアクセス許可設定に問題が起きており、DistributedCOMのエラーログが記憶されるケースがあります。
そのため、COMのアクセス許可設定を初期化することでエラーが解決する可能性があります。
COMのアクセス許可設定を初期化するには、次の手順でレジストリの値を編集します。
- 「ファイル名を指定して実行(ショートカットはWin + R)」ウィンドウに「regedit」と入力してレジストリエディタを起動します。
- 次のパスにあるキーまでたどります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole
- 上記パスにある「Ole」キーを選択したら、右ペインにある次の値を削除します。*環境によっては一部の値が存在しないことがありますが、その場合は削除できるキーのみ削除してください。
- DefaultAccessPermission
- DefaultLaunchPermission
- MachineAccessRestriction
- MachineLaunchRestriction
- レジストリエディタを閉じ、パソコンを再起動します。
PCの再起動が完了するとCOMのセキュリティ関連のレジストリが自動で再生成(初期化)されます。
イベントビューアー上のDistributedCOMのエラーログが記録されなくなったか確認してください。
対処4: DCOMの全般的なセキュリティ設定を確認する
DCOMの全般的なセキュリティ設定が変更されているとエラーが出る原因になります。
そのため、DCOMのセキュリティ設定を確認して修正することでエラーが解決する可能性があります。
DistributedCOMのセキュリティ設定を確認するには、次の手順で操作します。
- 「Windowsマーク」→「Windows管理ツール」フォルダを開きます。
- 「コンポーネントサービス」を右クリックして「その他」→「管理者として実行」を選択します。
- ウィンドウ左のツリーを「コンポーネントサービス」→「コンピューター」の順に展開して、「マイコンピューター」を右クリックして「プロパティ」を選択します。
- マイコンピューターのプロパティウィンドウが表示されます。「既定のプロパティ」タブを開きます。
- 「既定の認証レベル」を「接続」に、「既定の偽装レベル」を「識別する」に設定します。
- 続いて「COMセキュリティ」タブを開きます。
- 「アクセス許可」設定項目内にある「既定値の編集」ボタンをクリックします。
- アクセス許可の設定ウィンドウが表示されたら、まず上のリストから「SELF」の項目を選択して、「ローカルアクセス」「リモートアクセス」の両方に「許可」のチェックを入れます。
- 続いて「Administrators」を選択し、同じように「ローカルアクセス」「リモートアクセス」両方に「許可」のチェックを入れます。
- 「SYSTEM」を選択して「ローカルアクセス」のみに「許可」のチェックを入れます。
- 「リモートアクセス」の項目は、許可しなくてはならない理由がない限りはチェックを外しておきます。
- 「適用」ボタンを押して設定を保存してから設定ウィンドウを閉じます。
以上でDCOMの全般的なセキュリティ設定の変更は完了です。設定を変更した場合は、PCを使用してDCOMのエラーログが出ないか様子をみてください。
解決しない時は
ここまでの対処方法を試してもDistributedCOMのエラーが発生する場合は、次の対処も試してみてください。
- Windowsアップデートが利用可能な場合はアップデートを実行してください。
- サードパーティのセキュリティソフトを導入している場合は、保護機能を無効化してDCOMのエラーが解決しないか確認してください。
- グラフィックドライバー等、ドライバーの不具合が原因でDCOMのエラーが起きることがあります。インストールされている各種ドライバーを更新してみてください。