[ホーム] - [Windows 11 サービス一覧] - [Diagnostic System Host]

Diagnostic System Host サービスの概要と起動の必要性

このページでは"Diagnostic System Hostサービス"とは何かに関して説明します。関連してこのサービスが必要性なのか、起動方法の変更方法、手動の停止や手動の開始方法に関して説明します。
作成日:2023/09/12

【目次】

サービス名 WdiSystemHost
表示名 Diagnostic System Host
dll / exe 名 C:\WINDOWS\System32\svchost.exe -k LocalSystemNetworkRestricted -p
説明 (マイクロソフト情報より引用) Diagnostic System Host は、ローカル システム コンテキストでの実行が必要な診断をホストするために、診断ポリシー サービスによって使用されます。このサービスを停止すると、このサービスに依存する診断はすべて機能しなくなります。
セキュアPC上の起動必要性 ×


◎起動を強く推奨、○起動を推奨、△環境による、×停止を推奨、××停止を強く推奨



Diagnostic System Hostサービスとは


このサービスはWindows 10 でネットワーク、アプリケーションで問題、トラブル、エラーが発生した場合にWindows ば自分自身で問題やエラーを発見し修復するサービスです。
Windows 7 時代でもこの機能はありましたがほとんど使いものになりませんでした。ほとんどエラーの原因や修復ができなかったからです。
しかしWindows 10 になりこの機能が大幅に改善しました。とくに"ネットワークが接続できない"、"インターネットに接続できない"、"Windows Update が適用できない"場合などはこの機能は便利です。

「Diagnostic Policy Service」との違いは「System Context」の権限で実行される点です。このサービスを無効にしてトラブルシューティングを実行しても問題なく実行できました。どのケースで使用するのかは調査中です。(Usersで実行した場合は実行時に管理者のパスワードの入力を求められ、入力したら正常に実行されました。よって無関係と思われます。)


このサービスは必要か


障害、エラー、うまく動かない場合に自動的に診断や修復が必要なら手動起動のままでよいと思います。通常時は"無効化"し必要時に"手動"に変更するのでもよいでしょう。
必要な機能ではないため私のPC では無効化して常時停止させています。今のところ問題は発生していません。


参考:
サービスやタスクスケジューラで表示されるアカウントの違い

サービスの起動方法を変更する

サービスの起動方法を変更にする方法を紹介します。サービス管理ツール(services.msc) で設定します。Windows 11 の画面で説明します。

(1)スタートメニューから[管理ツール] - [サービス]を選択します。

(2)以下の画面が表示されるため、"Diagnostic System Host"をダブルクリックします。

(3)「スタートアップの種類」から起動のタイプを設定します。設定が完了したら[OK]をクリックします。

各起動設定の内容は以下の通りです。



自動(延滞開始)・・・・・他の自動起動サービスが全て起動されてから起動されます。
自動・・・・・Windows 起動時に自動で起動されます。
手動・・・・・自動では起動されませんが、手動あるいは他のサービスなどから起動することが可能です。
無効・・・・・自動起動されません。手動でも起動できません。
自動(トリガー)・・・・・Windows 起動時に自動起動されますが、役目が終了したら自動的に停止します。
手動(トリガー)・・・・・他のサービスなどから起動されますが、役目が終了したら自動的に停止します。

sc コマンドでサービスを設定する

次にsc コマンドでコマンドプロンプトより設定する方法を紹介します。

(1)管理者でコマンドプロンプトを開きます。

参考:管理者権限でコマンドプロンプトを開く方法

(2)以下のコマンドを実行します。


自動起動設定



C:\>sc config WdiSystemHost Start= auto


【注意】Powershellで実行すると、sc がコマンドレットである set-contentとバッティングしエラーとなるので注意してください。C:\WINDOWS\system32\sc.exe などフルパスで指定するなどの工夫が必要です。
手動



C:\>sc config WdiSystemHost Start= demand

無効



C:\>sc config  WdiSystemHost Start= disabled

自動(延滞開始)



C:\>sc config  WdiSystemHost Start= delayed-auto

sc コマンドで以下のようなエラーが発生する場合はコマンドプロンプトを管理者として実行してください。


C:\>sc stop ServiceName

[SC] OpenService FAILED 5:
アクセスが拒否されました。

サービスを手動開始する

サービスを手動で開始する方法を紹介します。sc コマンドにより起動します。


C:\>sc start WdiSystemHost

他の方法として net コマンドでも開始させることが可能です。


C:\>net start WdiSystemHost


サービスを手動で停止する

サービスを手動で停止する方法を紹介します。sc コマンドにより停止します。


C:\>sc stop WdiSystemHost

他の方法として net コマンドでも停止させることが可能です。


C:\>net stop WdiSystemHost


サービスの設定を確認する

sc コマンドを利用してサービスの設定を確認する方法を紹介します。



c:\>sc queryex WdiSystemHost 

SERVICE_NAME: WdiSystemHost 
        TYPE               : 30  WIN32  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 6732
        FLAGS              : 

sc コマンドを利用してサービスの起動設定(自動、手動、無効など)を確認することが可能です。



c:\>sc qc WdiSystemHost 
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: WdiSystemHost
        TYPE               : 20  WIN32_SHARE_PROCESS 
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\System32\svchost.exe -k LocalSystemNetworkRestricted -p
        LOAD_ORDER_GROUP   : 
        TAG                : 0
        DISPLAY_NAME       : Diagnostic System Host
        DEPENDENCIES       : 
        SERVICE_START_NAME : LocalSystem

サービスが起動中か確認する

net start コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら文字列が存在するはずなので findstr で検索しています。




c:\>net start   | findstr -i /c:"Diagnostic System Host" 
   Diagnostic System Host

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
起動中

sc コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら"Status"が"Running" であるためfindstr で検索します。




c:\>sc query WdiSystemHost   | findstr -i State   | findstr -i Running 
        STATE              : 4  RUNNING 

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
起動中

レジストリからサービスの設定を確認する

レジストリから reg コマンドでサービスの設定を確認する方法を紹介します。サービスの設定はレジストリに保存されています。その値を確認します。



c:\>reg query HKLM\System\CurrentControlSet\services\WdiSystemHost   | findstr -i "group ObjectName DependOnService ErrorControl RequiredPrivileges ServiceSidType" 
    ErrorControl    REG_DWORD    0x1
    ObjectName    REG_SZ    LocalSystem
    RequiredPrivileges    REG_MULTI_SZ    SeChangeNotifyPrivilege\0SeImpersonatePrivilege\0SeTcbPrivilege\0SeDebugPrivilege\0SeAssignPrimaryTokenPrivilege\0SeIncreaseQuotaPrivilege\0SeProfileSingleProcessPrivilege\0SeSystemEnvironmentPrivilege
    ServiceSidType    REG_DWORD    0x1

[ホーム] - [Windows 11 サービス一覧]




(ご注意)本ページの内容の正当性は保障されません。内容に誤りがある場合も有ります。 本ページの情報は高セキュリティを目指すPCで起動すべきサービスの指針を示していますが、環境に依存するためすべての環境に当てはまることは保障しません。 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)


Copyright(c) TOOLJP.COM 1999-2023