Windows XPEサービスのインストール-CreateService時間にセキュリティを設定する方法は?
-
24-09-2019 - |
質問
CreateServiceを使用して、Windows XPEにWindowsサービスをインストールしています。管理者のみがサービスを開始/停止/一時停止/再開できるように、物事をセットアップしたいと思います。
今、私は以下を使用してサービスをインストールします。
schService = CreateService(schSCManager,
ServiceName,
ServiceDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
binaryPathName, // service's binary (this program)
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
また、サービスは、Powerusers Groupのメンバーがサービスを開始および停止できるように、セキュリティで終了します。 SC SDShowを使用してセキュリティ記述子を調べることができることを理解しました。また、私たちにとって正しいことをするSDDLラインを作成しました。
また、Win XPEインストールにはSc.exeバイナリがないことがわかったので、この特定のシステムをセットアップするために実際に使用することはできません。
ですから、私が知っておくべきことは、私が使用する必要があるAPIとは何か、CreateServiceコールを行う頃にこのサービスにセキュリティ記述子を設定することです。私はWindows Security APIに完全に慣れていないので、どこから始めればいいのかわかりません。
更新:回答はSetServiceObjectSecurity(以下)です。次の質問:SecurityDescriptorをセットアップする最良の方法は何ですか?デフォルトの記述子を取得してから変更するのが最善ですか?または、まったく新しい記述子を作成する必要がありますか?
解決
私はWindows XPが埋め込まれていることにはあまり精通していませんが、通常はあなたが使用した後のものを達成するでしょう SetServiceObjectSecurity 関数。 createServiceから取得したハンドルを使用し、必要なものに一致するセキュリティ記述子を構築します。