Maison > développement back-end > C++ > Comment les applications peuvent-elles contrôler les services Windows sans privilèges d'administrateur ?

Comment les applications peuvent-elles contrôler les services Windows sans privilèges d'administrateur ?

DDD
Libérer: 2024-10-25 09:27:28
original
683 Les gens l'ont consulté

How Can Applications Control Windows Services Without Administrator Privileges?

Contrôle du service Windows à partir d'applications sans privilèges d'administrateur

Les services Windows offrent un moyen pratique d'exécuter des tâches de longue durée en arrière-plan sans intervention de l'utilisateur . Cependant, par défaut, le démarrage ou l'arrêt de ces services nécessite des droits d'administrateur. Cela pose une limitation pour les applications qui doivent gérer des services pour le compte des utilisateurs.

Solution

La solution à ce problème réside dans la modification des autorisations de l'objet de service. Cela permet aux applications d'interagir avec le service sans nécessiter de privilèges élevés. Voici une approche suggérée en utilisant C :

<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
  ;

PSECURITY_DESCRIPTOR sd;

if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &amp;sd, NULL))
{
   // Handle error
}

if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd))
{
   // Handle error
}</code>
Copier après la connexion

Explication

Ce code ouvre le descripteur de sécurité du service spécifié et modifie sa DACL (liste de contrôle d'accès discrétionnaire). Il ajoute un nouvel ACE (entrée de contrôle d'accès) qui accorde le droit "Démarrer le service" aux utilisateurs interactifs (utilisateurs non administrateurs).

Pour arrêter également le service, ajoutez le droit "Arrêter le service" (WP ) à la liste :

<code class="c++">L"(A;;RPWP;;;IU)"                           // added permissions: start service, stop service for interactive users</code>
Copier après la connexion

En modifiant les autorisations de l'objet de service, vous pouvez donner aux applications la possibilité de gérer les services Windows de manière transparente sans avoir besoin d'une élévation d'administrateur.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal