ホームページ  >  記事  >  バックエンド開発  >  管理者権限のないアプリケーションから Windows サービスを開始するにはどうすればよいですか?

管理者権限のないアプリケーションから Windows サービスを開始するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 03:52:02451ブラウズ

How can I start a Windows service from an application without administrator rights?

アプリケーションから管理者権限なしで Windows サービスを開始する

シナリオによっては、別のアプリケーションから Windows サービスを制御したい場合があります。管理者権限は必要ありません。ただし、多くの場合、サービスのデフォルトの権限により、ユーザーはこのタスクを実行できません。

解決策: サービスの権限の変更

この解決策には、サービスのセキュリティ記述子を変更して、次のサービスに権限を付与することが含まれます。非管理者。その方法は次のとおりです:

  1. サービス ハンドルを開きます: WRITE_DAC 権限を持つサービス ハンドルを取得します。
  2. セキュリティ記述子を作成します: セキュリティ記述子定義言語 (SDDL) を使用してセキュリティ記述子を構築し、必要な権限を指定します。この例では、対話型ユーザーに「サービス開始」権限を付与します。
<code class="c++">wchar_t sddl[] = L"D:("
  L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)" // Default permissions for local system
  L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)" // Default permissions for administrators
  L"(A;;CCLCSWLOCRRC;;;AU)" // Default permissions for authenticated users
  L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)" // Default permissions for power users
  L"(A;;RP;;;IU)" // Added permission: start service for interactive users
  ;</code>
  1. SDDL をセキュリティ記述子に変換します。 ConvertStringSecurityDescriptorToSecurityDescriptor 関数を使用して、 SDDL 文字列をセキュリティ記述子に追加します。
  2. サービス セキュリティの設定: SetServiceObjectSecurity 関数を使用して、変更したセキュリティ記述子をサービス オブジェクトに割り当てます。

次の手順に従います。を使用すると、システムのセキュリティを損なうことなく、管理者以外のユーザーにアプリケーション内からサービスを開始および停止できる権限を付与できます。

以上が管理者権限のないアプリケーションから Windows サービスを開始するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。