2016-02-18 3 views
0

Je viens de chercher beaucoup sur le web mais je n'ai trouvé aucune aide. J'ai un propre service Windows et maintenant il devrait être possible de le configurer à partir de mon logiciel principal.Vérifiez si l'utilisateur peut démarrer le service

Je n'ai aucun problème avec l'installation, le démarrage, l'arrêt, le changement et la désinstallation. Je peux également installer le service avec d'autres informations d'identification de l'utilisateur.

Mais il y a le problème. Avant d'installer le service (appel "cmd" sc créer SERVICENAME [...]) Je souhaite vérifier si l'utilisateur avec les informations d'identification saisies peut démarrer les services ou non. J'ai donc besoin de vérifier s'il est entré dans la politique de sécurité locale "Se connecter en tant que service". Je fais pas voulez changer la politique, je veux seulement vérifier s'il est autorisé à le faire. Est-il possible de faire cette vérification simplement en C#?

+0

Voir http://stackoverflow.com/a/21238484/5243037 – MHolzmayr

Répondre

2

Il semble que la "Connexion en tant que service" est un type de connexion de LOGON32_LOGON_SERVICE que vous pouvez obtenir auprès de Advapi32.dll. La première chose que j'ai trouvée (qui peut être plus utile) est le LogonUser function qui tente de se connecter en tant qu'utilisateur, donc il peut être utilisé comme une détection si LOGON32_LOGON_SERVICE se connecte pour votre utilisateur échoue ou réussit.

Here est une liste complète des fonctions du serveur principal. Certains d'entre eux semblent prometteurs mais peuvent nécessiter des essais et erreurs tels que AuditQuerySystemPolicy et autres. Bonne chance!

+1

J'ai trouvé une solution basée sur votre réponse, merci pour cela. Le code que j'ai utilisé est le suivant: 'IntPtr hToken; si (LogonUser (userDomainAndName [1], userDomainAndName [0], ServiceUserPassword, (int) LogonType.LOGON32_LOGON_SERVICE, (int) LogonProvider.LOGON32_PROVIDER_DEFAULT, sur hToken)) { code // exécution lors de réussir retour; } // Code exécuté en cas d'échec ' –