0

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 グループのメンバーがサービスを開始および停止できるようなセキュリティで終了します。sc sdshow を使用してセキュリティ記述子を調べることができることがわかりました。また、適切な処理を行う SDDL 行を作成しました。

また、私たちの Win XPE インストールには sc.exe バイナリが含まれていないため、この特定のシステムをセットアップするためにそれを実際に使用できないことも知りました。

したがって、私が知っておく必要があるのは、CreateService 呼び出しを行うときに、このサービスにセキュリティ記述子を設定するために使用する必要がある API は何かということです。私は Windows セキュリティ API にまったく慣れていないため、どこから始めればよいかわかりません。

更新: 答えは SetServiceObjectSecurity (以下) です。次の質問: SecurityDescriptor をセットアップする最良の方法は何ですか? デフォルトの記述子を取得してから変更するのが最善ですか? それとも、まったく新しい記述子を作成する必要がありますか?

4

1 に答える 1

1

私は Windows XP Embedded についてはあまり詳しくありませんが、通常はSetServiceObjectSecurity関数を使用した後に現在の状態を実現できます。CreateService から取得したハンドルを使用して、必要なものに一致するセキュリティ記述子を作成します。

于 2010-02-01T18:17:13.867 に答える