
イベントID10016 /ShellServiceHost
ログが記録された環境:Windows 10 バージョン 21H1 (OS ビルド 19043.1202)
イベントID10016 が記録されました。内容は、DistributedCOM (DCOM) と ShellServiceHost に関連する警告ログです。
このログは、LOCAL SERVICE が ShellServiceHost へのアクセスで問題が発生したことを通知しています。同時に、コンポーネントサービスを利用してアクセス許可を変更できることを示唆しています。
10016イベントは、Microsoft コンポーネントが必要なアクセス許可なしで DCOM コンポーネントにアクセスしようとしたときにログに記録されるものです。
マイクロソフトは、DCOM ログは仕様通りの動作のため無視を推奨しています。ただし、エラーを解消したい場合は、コンポーネントサービスを利用してアクセス許可を変更することができます。
ユーザーによるアクセス許可の変更は、予期しない副作用を引き起こす可能性があるため注意が必要です。
ログの説明
LOCAL SERVICE は、Windowsが使用する特別なアカウントです。
ShellServiceHost は、APPID{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}に付与されたコンポーネントの名前です。
対処法
このログは過去に記録されたログと似ているため、対処方法と効果は検証済みです。(過去記事)
通知されたログに対応するには、コンポーネントサービスを利用して ShellServiceHost のアクセス許可に LOCAL SERVICE を追加する方法が考えられます。
イベントログ
メッセージ | アプリケーション固有 のアクセス許可の設定では、CLSID {6B3B8D23-FA8D-40B9-8DBD-B950333E2C52} および APPID {4839DDB7-58C2-48F5-8283-E1D1807D0D7D} の COM サーバー アプリケーションに対するローカルアクティブ化のアクセス許可を、アプリケーション コンテナー 利用不可 SID (利用不可) で実行中のアドレス LocalHost (LRPC 使用) のユーザー NT AUTHORITY\LOCAL SERVICE SID (S-1-5-19) に与えることはできません。このセキュリティ アクセス許可は、コンポーネント サービス管理ツールを使って変更できます。 |
ログの名前 | システム |
ソース | DistributedCOM (DCOM) |
イベントID | 10016 |
レベル | 警告 |
ユーザー | LOCAL SERVICE |
APPID | {4839DDB7-58C2-48F5-8283-E1D1807D0D7D} |
APPIDの名前 | ShellServiceHost |
緩和策

ログに記録された [APPID:ShellServiceHost] は、コンポーネントサービスを利用してアクセス許可を変更することができます。
但し、APPID は、所有者が「Trustedinstaller」のため、ユーザーアカウントや Administorator では設定を変更することができないので、ExecTI というフリーソフトウェアを利用して設定変更を行います。
- ExecTI (フリーソフトウェア)
- コンポーネントサービス (comexp.msc)
- ExecTI を起動する。
- ExecTI からコンポーネントサービスを起動する (Open: comexp.msc)。
- 名前の列から ShellServiceHostを探す (検索機能なし)。
- プロパティ > セキュリティと遷移する。
- 「起動とアクティブ化のアクセス許可」を開いて、ログに記録されたユーザー「LOCAL SERVICE」を追加する。
- LOCAL SERVICE に「ローカルからのアクティブ化」の許可を付与する。
- PCを再起動する
- 以上
具体例
1. ExecTI インストールと起動
インストーラーはありません。任意のフォルダに解凍したら、ExecTI.exe をダブルクリックします。
2. コンポーネントサービスを起動する
Openの横のボックスに comexp.msc と入力してからOKをクリックすると TrustedInstaller としてコンポーネントサービスが起動します。コンポーネントサービスの外観は通常起動したものと同じですが、{B0316D0C-...} が編集できる状態です。
レジストリエディタで所有者を変更する手順は不要です。

3. APPIDのプロパティを表示する
検索機能がないので右ペインの名前列から ShellServiceHost を目視で探します。

4. 起動とアクティブ化のアクセス許可を表示する
次の手順を実行する。
- 編集をクリックする
- Windows セキュリティダイアログが表示されるので削除をクリックする
- 起動とアクティブ化のアクセス許可が表示される

起動とアクティブ化のアクセス許可

5. LOCAL SERVICE を追加する
- 追加 > 詳細設定 > 検索。
- 検索結果から LOCAL SERVICE を選択する。
- OKを選択する。
- 「選択するオブジェクト名を入力してください」の下のボックスに SYSTEM が表示されていることを確認したらOKを選択する。
- 起動とアクティブ化のアクセス許可の画面に戻るので LOCAL SERVICE が選択状態になっていることを確認します。
6. ローカルからのアクティブ化を有効にする
- LOCAL SERVICE を選択する。
- アクセス許可の下のボックスの「☑ローカルからのアクティブ化」にチェックを入れる。
- OKを選択する。

7. 手順終了
- PCを再起動する。
- PCのスタートアップ処理が落ち着くまで待つ。 (4~5分)
- イベントビューアーを起動してログを調べる。
- ログの記録が止まらない時は、変更した設定を元に戻して静観する。(この手順は無駄でした...残念!)
資料
LocalService として実行されるサービスは、通常のユーザーとしてローカル リソースにアクセスし、匿名ユーザーとしてネットワーク リソースにアクセスします。 その結果、LocalService として実行されるサービスは、ローカルおよびネットワーク上で LocalSystem として実行されるサービスよりも権限が大幅に少なくなっています。Microsoft Docs
Windows 10 と Windows Server 2016 で DCOM のイベント ID 10016 がログに記録される
この問題は、イベント ログに示されている DCOM コンポーネントに対するアクセス許可を、特定のプロセスが持っていないために発生します。
~
これらのイベントは無視しても問題ありません。
support.microsoft.com
まとめ


- 10016イベントは、特定のプロセスが DCOM コンポーネントに対するアクセス許可を持っていない時に記録されます。
- DCOMログは無視推奨なので、リスクを冒して修復する必要はありません。
- 紹介する手順は ExecTI を利用するため、レジストリエディタを使用して APPID の所有者を Administrators に変更する手順は不要です。
- 今回は、ShellServiceHost に対して LOCAL SERVICE がアクセスできるように設定するとログの記録が止まります。
- ShellServiceHost | SC2
前回 ShellServiceHost を修復した時の記事です。こちらのほうが少し詳しい。
![[EventId 10016] ShellServiceHost のアクセス許可に LOCAL SERVICE を追加する方法](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN6dqRB2WfXdfAKB10FDjdJ2p22frW5ahcNd07xf7-Dux9uDfiM1RGf7v6iO-QRooVfr3FsZNkpRKcO8Or0JcmQeJ5ud_ns3dfE7tQwoVZB2bsZbTKUaxVjG_CqSTho3hre6kT7T4mOBGz/w1200-h630-p-k-no-nu/redyellow_317x.gif)
[EventId 10016] ShellServiceHost のアクセス許可に LOCAL SERVICE を追加する方法
通知されたログに対応するには、コンポーネントサービスを利用してShellServiceHostのアクセス許可にLOCAL SERVICEを追加する方法が考えられます。コンポーネントサービスとExecTIを使用します。
このサイトを検索 | Search this site
0 コメント