J'utilise CreateService pour installer un service Windows sur Windows XP. Je voudrais configurer les choses de sorte que seul l'administrateur puisse démarrer/arrêter/mettre en pause/reprendre le service.Installation du service Windows XPE - comment définir la sécurité au moment de CreateService?
En ce moment je suis en utilisant 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 termine avec la sécurité tels que les membres du groupe de PowerUsers peut 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 ne contient pas le binaire sc.exe, donc nous ne pouvons pas vraiment l'utiliser pour installer ce système particulier. Donc, ce que j'ai besoin de savoir est: Quelles sont les API que j'ai besoin d'utiliser, pour définir le descripteur de sécurité sur ce service au moment où je fais l'appel CreateService. Je ne suis absolument pas familier avec les API de sécurité Windows, donc je ne sais pas par où commencer.
MISE À JOUR: La réponse est SetServiceObjectSecurity (ci-dessous). Question suivante: Quelle est la meilleure façon d'installer SecurityDescriptor? Est-il préférable d'obtenir le descripteur par défaut, puis le modifier? Ou devrais-je simplement créer un nouveau descripteur?