Vous ne pouvez vous faire passer pour un compte de service qu'à partir d'un service Windows typique, tel que ce poste mentions :
L'astuce consiste à exécuter votre code en tant que système local et à partir de là, vous pouvez vous faire passer pour les comptes de service en utilisant le nom d'utilisateur approprié sans mot de passe. Une façon d'exécuter votre code en tant que compte Système Local est de créer un shell de ligne de commande en utilisant la technique montrée ci-dessous (tirée de cet article) poste original ), et exécutez votre assemblage à partir de là. Appeler System.Diagnostics.Debugger.Break()
dans votre code vous permet de déboguer.
Pour créer un shell de ligne de commande qui s'exécute sous le compte système local, ouvrez une nouvelle fenêtre de ligne de commande et entrez :
c:\sc create testsvc binpath= "cmd /K start" type= own type= interact
suivi par :
c:\sc start testsvc
Une nouvelle fenêtre de commande devrait s'ouvrir. Dans cette fenêtre, exécutez votre application.exe - vous verrez que vous êtes maintenant exécuté en tant que compte utilisateur du système intégré. Après avoir terminé les tests, vous pouvez supprimer le service de test que vous avez créé en entrant :
c:\sc delete testsvc
Si vous essayez de le faire dans votre propre contexte utilisateur, ces tentatives devraient échouer.