Maison > développement back-end > C++ > le corps du texte

Comment démarrer un service Windows à partir d'une application sans droits d'administrateur ?

Linda Hamilton
Libérer: 2024-10-25 03:52:02
original
454 Les gens l'ont consulté

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

Démarrage d'un service Windows sans droits d'administrateur à partir d'une application

Dans certains scénarios, vous souhaiterez peut-être contrôler un service Windows à partir d'une application distincte sans avoir besoin de privilèges administratifs. Cependant, les autorisations par défaut des services empêchent souvent les utilisateurs d'effectuer cette tâche.

Solution : modifier les autorisations du service

La solution consiste à modifier le descripteur de sécurité du service pour accorder l'autorisation à non-administrateurs. Voici comment procéder :

  1. Ouvrez le handle de service : Acquérez un handle de service avec l'autorisation WRITE_DAC.
  2. Créez un descripteur de sécurité : Construisez un descripteur de sécurité à l'aide du langage SDDL (Security Descriptor Definition Language) pour spécifier les autorisations souhaitées. Dans cet exemple, nous accordons le droit « démarrer le service » aux utilisateurs interactifs :
<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>
Copier après la connexion
  1. Convertir le SDDL en descripteur de sécurité : Utilisez la fonction ConvertStringSecurityDescriptorToSecurityDescriptor pour convertir le Chaîne SDDL dans un descripteur de sécurité.
  2. Définir la sécurité du service : Attribuez le descripteur de sécurité modifié à l'objet de service à l'aide de la fonction SetServiceObjectSecurity.

En suivant ces étapes , vous pouvez accorder aux utilisateurs non-administrateurs la possibilité de démarrer et d'arrêter le service depuis votre application, sans compromettre la sécurité du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal