質問: ### 実現したいこと Visual Studio 2017(C++)で、Windowsサービスプログラムを 作成しています。 作成したサービスを必ず起動出来るようにする為(勝手に止められないようにする)、 Windows管理ツール(サービス)の画面にて、作成したサービスの 設定(スタートアップの種類:自動)を変更出来ないようにしたいのですが、 どのようにすればいいのかが分かりません。 ### 試したこと CreateService、ChangeServiceConfig、ChangeServiceConfig2の APIを確認しましたが、「スタートアップの種類」をグレーアウト(変更不可状態)に する方法が分かりませんでした。 尚、サービスを停止できないようにするには、 SERVICE_STATUSのdwControlsAcceptedを0にすることで、 Windows管理ツール(サービス)の画面の停止ボタンがグレーアウトに なり、停止できない状態にすることが出来ました。 ### 補足情報 Windows管理ツール(サービス)で、 「Background Tasks Infrastructure Service」のサービスは、 「スタートアップの種類」がグレーアウト(変更不可状態)に なっているので、何かしらの方法で実現出来ると考えています。
回答: SetServiceObjectSecurity APIを使用することで、サービスの設定変更(「スタートアップの種類」)を 制御することが出来ることが分かりました。