Question

Quand je lance un service en tant que compte LocalSystem, je peux utiliser les codes suivants pour lancer un programme d'interface graphique sous le compte de connexion en cours:

WTSGetActiveConsoleSessionId-> WTSQueryUserToken-> CreateProcessAsUser

Cependant, quand je lance le service que mon compte personnel, le programme GUI ne sera pas affiché. Je peux le voir dans le gestionnaire de tâches bien.

Que dois-je faire pour lancer le programme d'interface graphique lorsque le service est en cours d'exécution sous mon compte personnel?

Était-ce utile?

La solution

John et jdigital sont à la fois à droite -. Si je comprends bien, les services peuvent généralement disposer d'un accès de bureau (vous devez utiliser localsystem) ou l'accès au réseau (vous devez spécifier un compte pour fonctionner sous)

Vous aurez besoin de deux diviser votre application en deux - un pour interagir avec le bureau et l'autre pour parler sur le réseau. Les deux parties peuvent alors communiquer entre eux pour relayer les informations à l'utilisateur final.

Autres conseils

Il a tout à voir avec les droits, je crois.

LocalSystem a des privilèges suffisants pour usurper l'identité de l'utilisateur actuel, mais votre compte ne fonctionne pas.

Il faudrait trouver un moyen d'étendre les autorisations à votre service, que ce soit en incitant les informations d'identification, ou la connexion à un service d'assistance qui fonctionne comme LocalSystem.

(Pourquoi voulez-vous courir avec votre compte au lieu de LocalSystem?)

Je suis sûr qu'il ya des réponses beaucoup plus approfondies qui traitent les années dans les années et hors de le faire, mais à un niveau élevé, je pense que c'est la question.

Vous pouvez être en cours d'exécution dans la station de mauvaise fenêtre ou de bureau. Voir cette référence Microsoft sur les stations de fenêtres et de bureau .

Je crois que ce que vous essayez de faire peut être considéré comme une vulnérabilité de sécurité. Il est également peu probable de travailler dans certains cas aussi. Je pense que jdigital est correct en ce qu'elle a à voir avec les stations de fenêtre et essayer d'obtenir l'accès à la station actuelle de la fenêtre de l'utilisateur et il est bureau. Ceci est confus beaucoup quand vous êtes sous sous un serveur de services terminaux où il y a plusieurs stations de fenêtre en cours. Microsoft ne veux vraiment pas que vous ce que vous voulez et ils le rendent plus difficile à chaque nouvelle version de Windows.

Je pense que le mieux est de résoudre le problème sous un autre angle et il suffit de créer une application graphique que l'utilisateur exécute (manaully ou automatiquement lors de la connexion) et il parle à votre service.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top