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

Diagnostic Policy Service サービスの概要と起動の必要性

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

【目次】

サービス名 DPS
表示名 Diagnostic Policy Service
dll / exe 名 C:\WINDOWS\System32\svchost.exe -k LocalServiceNoNetwork -p
説明 (マイクロソフト情報より引用) 診断ポリシー サービスを使用すると、Windows コンポーネントの問題を検出、トラブルシューティング、および解決できます。このサービスを停止すると、診断は実行されません。
セキュアPC上の起動必要性 ×


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



Diagnostic Policy Serviceサービスとは



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

必要なサービスか


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

サービス停止時のエラー


Windows10では無効にしても以下のメッセージとともに自動で有効にされます。
「診断ポリシーサービスは無効になっています」
イベントログでは以下が記録されています。


Diagnostic Policy Service サービスの開始の種類は 無効 から 自動的な開始 に変更されました。



実験結果からすると管理者権限なら「Diagnostic Policy Service 」が動作していれば他の「Diagnostic Execution Service」「Diagnostic Service Host 」「Diagnostic System Host 」が停止していてもトラブルシューティングは可能でした。

Windows 10 設置アプリのトラブルシューティングツール


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

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

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

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

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

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



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

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

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

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

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

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


自動起動設定



C:\>sc config DPS Start= auto


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



C:\>sc config DPS Start= demand

無効



C:\>sc config  DPS Start= disabled

自動(延滞開始)



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

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


C:\>sc stop ServiceName

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

サービスを手動開始する

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


C:\>sc start DPS

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


C:\>net start DPS


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

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


C:\>sc stop DPS

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


C:\>net stop DPS


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

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



c:\>sc queryex DPS 

SERVICE_NAME: DPS 
        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                : 4044
        FLAGS              : 

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



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

SERVICE_NAME: DPS
        TYPE               : 20  WIN32_SHARE_PROCESS 
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\System32\svchost.exe -k LocalServiceNoNetwork -p
        LOAD_ORDER_GROUP   : 
        TAG                : 0
        DISPLAY_NAME       : Diagnostic Policy Service
        DEPENDENCIES       : 
        SERVICE_START_NAME : NT AUTHORITY\LocalService

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

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




c:\>net start   | findstr -i /c:"Diagnostic Policy Service" 
   Diagnostic Policy Service

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 DPS   | 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\DPS   | findstr -i "group ObjectName DependOnService ErrorControl RequiredPrivileges ServiceSidType" 
    ErrorControl    REG_DWORD    0x1
    ObjectName    REG_SZ    NT AUTHORITY\LocalService
    RequiredPrivileges    REG_MULTI_SZ    SeChangeNotifyPrivilege\0SeCreateGlobalPrivilege\0SeAssignPrimaryTokenPrivilege\0SeImpersonatePrivilege
    ServiceSidType    REG_DWORD    0x3

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




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


Copyright(c) TOOLJP.COM 1999-2023