復活[EventId 10016] ShellServiceHost に LOCAL SERVICE を追加する方法

このサイトを検索 | Search this site
warning

イベント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 を追加する方法が考えられます。



イベントログ

イベントログ (2021-09-11)
メッセージアプリケーション固有 のアクセス許可の設定では、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)
イベントID10016
レベル警告
ユーザーLOCAL SERVICE
APPID{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}
APPIDの名前ShellServiceHost

緩和策

comexp

ログに記録された [APPID:ShellServiceHost] は、コンポーネントサービスを利用してアクセス許可を変更することができます。

但し、APPID は、所有者が「Trustedinstaller」のため、ユーザーアカウントや Administorator では設定を変更することができないので、ExecTI というフリーソフトウェアを利用して設定変更を行います。

[使用するもの]
  1. ExecTI (フリーソフトウェア)
  2. コンポーネントサービス (comexp.msc)
[手順概要]
  1. ExecTI を起動する。
  2. ExecTI からコンポーネントサービスを起動する (Open: comexp.msc)。
  3. 名前の列から ShellServiceHostを探す (検索機能なし)。
  4. プロパティ > セキュリティと遷移する。
  5. 「起動とアクティブ化のアクセス許可」を開いて、ログに記録されたユーザー「LOCAL SERVICE」を追加する。
  6. LOCAL SERVICE に「ローカルからのアクティブ化」の許可を付与する。
  7. PCを再起動する
  8. 以上

具体例

1. ExecTI インストールと起動

インストーラーはありません。
任意のフォルダに解凍したら、ExecTI.exe をダブルクリックします。

2. コンポーネントサービスを起動する

Openの横のボックスに comexp.msc と入力してからOKをクリックすると TrustedInstaller としてコンポーネントサービスが起動します。

コンポーネントサービスの外観は通常起動したものと同じですが、{B0316D0C-...} が編集できる状態です。

レジストリエディタで所有者を変更する手順は不要です。

execti-comexp.msc

3. APPIDのプロパティを表示する

comexp.msc > コンソールルート > コンポーネントサービス > コンピューター > マイコンピューター > DCOMの構成
コンポーネントサービスの表示モードを「詳細」に切り替えます。

検索機能がないので右ペインの名前列から ShellServiceHost を目視で探します。

ShellServiceHost

4. 起動とアクティブ化のアクセス許可を表示する

ShellServiceHost: 右クリック > プロパティ > セキュリティ > 起動とアクティブ化のアクセス許可 > 編集

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

comexp-winsecurity


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

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

5. LOCAL SERVICE を追加する

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

6. ローカルからのアクティブ化を有効にする

  1. LOCAL SERVICE を選択する。
  2. アクセス許可の下のボックスの「☑ローカルからのアクティブ化」にチェックを入れる。
  3. OKを選択する。

activate from local

7. 手順終了

  1. PCを再起動する。
  2. PCのスタートアップ処理が落ち着くまで待つ。 (4~5分)
  3. イベントビューアーを起動してログを調べる。
  4. ログの記録が止まらない時は、変更した設定を元に戻して静観する。(この手順は無駄でした...残念!)

資料

S-1-5-19
NT Authority (LocalService) コンピューターにローカルなサービスで使用される ID で、広範なローカル アクセスが不要で、認証されたネットワーク アクセスは必要ない。

LocalService として実行されるサービスは、通常のユーザーとしてローカル リソースにアクセスし、匿名ユーザーとしてネットワーク リソースにアクセスします。 その結果、LocalService として実行されるサービスは、ローカルおよびネットワーク上で LocalSystem として実行されるサービスよりも権限が大幅に少なくなっています。Microsoft Docs
Windows 10 と Windows Server 2016 で DCOM のイベント ID 10016 がログに記録される

この問題は、イベント ログに示されている DCOM コンポーネントに対するアクセス許可を、特定のプロセスが持っていないために発生します。

これらのイベントは無視しても問題ありません。
support.microsoft.com

まとめ

matome
reload
  • 10016イベントは、特定のプロセスが DCOM コンポーネントに対するアクセス許可を持っていない時に記録されます。
  • DCOMログは無視推奨なので、リスクを冒して修復する必要はありません。
  • 紹介する手順は ExecTI を利用するため、レジストリエディタを使用して APPID の所有者を Administrators に変更する手順は不要です。
  • 今回は、ShellServiceHost に対して LOCAL SERVICE がアクセスできるように設定するとログの記録が止まります。
  • ShellServiceHost | SC2

前回 ShellServiceHost を修復した時の記事です。こちらのほうが少し詳しい。

[EventId 10016] ShellServiceHost のアクセス許可に LOCAL SERVICE を追加する方法

[EventId 10016] ShellServiceHost のアクセス許可に LOCAL SERVICE を追加する方法

通知されたログに対応するには、コンポーネントサービスを利用してShellServiceHostのアクセス許可にLOCAL SERVICEを追加する方法が考えられます。コンポーネントサービスとExecTIを使用します。


SC2
Windowsランキング 将棋ランキング スマホ・携帯ランキング にほんブログ村 IT技術ブログ ライフハックへ にほんブログ村 その他趣味ブログ 将棋へ

このサイトを検索 | Search this site

コメントを投稿

0 コメント