管理者権限を持たないアプリケーションからの Windows サービスの開始
多くのシナリオでは、別のアプリケーションから Windows サービスを開始または停止する必要があります。ただし、セキュリティ上の懸念により、これは管理者以外のユーザーには制限されているように見える場合があります。この制限を克服し、システムの安定性を損なうことなく、ユーザーがサービス管理をきめ細かく制御できるようにするにはどうすればよいでしょうか?
解決策: サービス権限の変更
この問題の鍵は次のとおりです。サービスオブジェクトの権限を変更する場合。管理者以外のユーザーに適切な権限を付与することで、管理者が制御された方法でサービスと対話できるようにすることができます。
次のコード スニペットは、サービスのセキュリティ記述子を設定して必要な権限を含める方法を示しています。
<code class="c++">wchar_t sddl[] = L"D:" L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)" L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)" L"(A;;CCLCSWLOCRRC;;;AU)" L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)" L"(A;;RP;;;IU)" ; PSECURITY_DESCRIPTOR sd; if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &sd, NULL)) { fail(); } if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd)) { fail(); }</code>
この特定のセキュリティ記述子は、次の権限を付与します:
セキュリティ記述子文字列 (SDDL) をカスタマイズして、さまざまなユーザー グループに必要なアクセス レベルに基づいて特定の権限を追加または削除できます。たとえば、管理者以外のユーザーがサービスを停止できるようにしたい場合は、次の SDDL を使用できます:
L"(A;;RPWP;;;IU)"
これにより、WP (WRITE_PROPERTY) 権限が追加され、対話型ユーザーの両方が開始できるようになります。
権限を慎重に設定することで、管理者以外のユーザーはシステムのセキュリティを損なうことなく重要なサービス管理タスクを実行できます。
以上が管理者以外のユーザーは、システムのセキュリティを損なうことなく Windows サービスを開始できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。