Bonjour à toute la communauté!
Tout d'abord, comme il s'agit de mon premier post ici, je tenais à remercier tous les contributeurs pour les ressources de ce site, ô combien utile lorsque l'on débute (et même après ^^).
Alors voici mon souci ^^' Je viens de commencer une formation en développement C#, et j'ai besoin de synchroniser une ressource montée en tant que lecteur réseau avec un dossier local sur ma machine. Mais puisque tous mes collègues vont avoir peu ou prou le même besoin, j'aimerais le faire sous une forme distribuable.
D'où l'idée de mettre cette routine sous forme de service windows.
J'ai donc commencé par créer un objet qui gère la synchronisation (histoire de pouvoir réutiliser ce composant ailleurs au besoin), puis monté le service, puis le projet d'installation qui va avec.
En local, aucun problème, tout fonctionne.
En situation réelle, c'est une autre paire de manches... Et c'est une question d'account.
Si je fais tourner mon service sur localUser -> il n'obtient pas les permissions de lecture/écriture sur le système de fichiers -> il ne sert à rien xD
Si je le fais tourner en localSystem -> il obtient les droits nécessaires (et même plus, ce qui n'est peut-être pas génial non plus) mais il tourne dans la session 0, réservée aux services (si j'ai bien compris l'idée). De fait, il n'a pas accès aux lecteurs réseaux montés sous un account user -> il ne sert encore à rien dans le contexte.
Je me suis donc dit "autant le faire tourner sur un account user" (en l'occurrence le mien )
Hum, sauf que je n'arrive pas à faire ça, le logger du service refuse mon account/pass. Je suppose que c'est logique d'ailleurs, le but n'est pas que le service soit moi, mais qu'il tourne dans mon contexte, ce qui doit se spécifier différemment.
J'ai fait pas mal de recherches sur le fonctionnement des services, mais les ressources en ligne sont généralement peu disertes sur le sujet des comptes, et très fréquemment out of date ( souvent relatives à XP, rarement à Vista, rien trouvé sur 7). La gestion de la sécurité ayant changé à chacune de ces versions, pas facile de trouver son bonheur...
Outch, désolé pour tout le baratin ^^'
Le contexte étant, je pense, suffisamment exposé, j'en viens (enfin ) aux questions concrètes:
- Ne ferais-je pas mieux de porter la routine vers une application systray à démarrage auto ? (puisqu'elle dépend du log d'un user et du montage des lecteurs réseaux par ce même user)
Que la réponse à cette première question soit oui ou non, j'aimerais également savoir plusieurs choses (au cas où la problématique reviendrait dans d'autres contextes):
- Est-ce possible sous 7 de faire tourner un service dans le même contexte qu'un user loggé? (sans bloquer l'accès à l'user) Y compris un compte admin? (à éviter je suppose xD) Et si oui, comment?
- Le service sous LocalSystem peut-il exécuter programmatiquement des lignes de commandes de façon à monter les lecteurs réseaux dans son propre contexte? (dans ce cas l'utilisation du service regagnerait de l'intérêt, puisqu'il pourrait exécuter la routine sans user connecté).
- Savez-vous s'il existe quelque part une liste précise et exhaustive des privilèges accordés aux accounts LocalSystem et LocalUser sous 7, et pas comme dans la doc "minimal rights" et "many rights", ce qui ne renseigne pas beaucoup :/
En vous remerciant par avance pour vos réponses éclairées et éclairantes ^^
Partager