Installation du service Windows XPE - Comment définir la sécurité au temps de CreateService?
-
24-09-2019 - |
Question
J'utilise CreateService pour installer un service Windows sur Windows XPE. Je voudrais configurer les choses afin que seul l'administrateur puisse démarrer / arrêter / pause / reprendre le service.
En ce moment, j'utilise ce qui suit pour installer le service:
schService = CreateService(schSCManager,
ServiceName,
ServiceDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
binaryPathName, // service's binary (this program)
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
Et le service se retrouve avec la sécurité de telle sorte que les membres du groupe PowerSers puissent démarrer et arrêter le service. J'ai compris que je peux utiliser SC SDShow pour examiner le descripteur de sécurité, et j'ai élaboré une ligne SDDL qui ferait la bonne chose pour nous.
J'ai également appris que notre installation Win XPE n'a pas le binaire sc.exe dessus, nous ne pouvons donc pas vraiment l'utiliser pour configurer ce système particulier.
Donc, ce que je dois savoir, c'est: quelles sont les API que je dois utiliser, pour définir le descripteur de sécurité sur ce service au moment où je fais l'appel CreateService. Je ne suis pas complètement familier avec les API de sécurité Windows, donc je ne sais tout simplement pas par où commencer.
MISE À JOUR: La réponse est SetServiceObjectSecurity (ci-dessous). Question suivante: Quelle est la meilleure façon de configurer le Sécurité Descripteur? Est-il préférable d'obtenir le descripteur par défaut, puis de le modifier? Ou devrais-je simplement créer un tout nouveau descripteur?
La solution
Je ne suis pas vraiment familier avec Windows XP intégré, mais normalement vous réaliseriez ce que vous êtes après avoir utilisé SetServiceObjectSecurity fonction. Utilisez la poignée que vous obtenez de CreateService et créez un descripteur de sécurité qui correspond à ce que vous voulez.