管理者権限を持たないアプリケーションからの Windows サービスの開始
多くのシナリオでは、別のアプリケーションから Windows サービスを開始または停止する必要があります。ただし、セキュリティ上の懸念により、これは管理者以外のユーザーには制限されているように見える場合があります。この制限を克服し、システムの安定性を損なうことなく、ユーザーがサービス管理をきめ細かく制御できるようにするにはどうすればよいですか?
解決策: サービス権限の変更
この問題の鍵は次のとおりです。サービスオブジェクトの権限を変更する場合。管理者以外のユーザーに適切な権限を付与することで、管理者が制御された方法でサービスと対話できるようにすることができます。
次のコード スニペットは、サービスのセキュリティ記述子を設定して必要な権限を含める方法を示しています。
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();
}
この特定のセキュリティ記述子は、次の権限を付与します:
セキュリティ記述子文字列 (SDDL) をカスタマイズして、さまざまなユーザー グループに必要なアクセス レベルに基づいて特定のアクセス許可を追加または削除できます。たとえば、管理者以外のユーザーがサービスを停止できるようにしたい場合は、次の SDDL を使用できます:
L"(A;;RPWP;;;IU)"
これにより、WP (WRITE_PROPERTY) 権限が追加され、対話型ユーザーがサービスの開始と停止の両方を行えるようになります。
権限を慎重に設定することで、管理者以外のユーザーはシステムのセキュリティを損なうことなく重要なサービス管理タスクを実行できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3