Visual C++ 2008OpenInputDesktop() pour déterminer Secure/Connexion Bureau
Comment établir si oui ou non l'utilisateur actuellement interactif est soit au bureau verrouillé (L Windows Key) ou l'écran d'arrêt (Vista ou 7) attendre la fermeture des programmes lors de la déconnexion.
HDESK hd = OpenInputDesktop (0, faux, READ_CONTROL); Cela fonctionne très bien pour une application utilisateur sur le bureau par défaut, mais échoue avec le code d'erreur 5 sur les postes de travail verrouillés ou arrêtés, car l'utilisateur n'a pas les autorisations nécessaires pour ouvrir l'objet Bureau sécurisé. L'appel à partir d'un service s'exécutant sous le compte système renvoie l'erreur 1 (fonction non valide).
Je crois que le Service est dans tous les cas dans la mauvaise session (Session 0) et est incapable de déterminer le bureau interactif pour toute autre session.
J'ai une application fonctionnant sous l'utilisateur actuellement interactif, et aussi, le service de système fonctionnant, ainsi pourrait faire le code de l'un ou l'autre.
Est-ce que je devrais peut-être essayer d'énumérer toutes les sessions, stations de fenêtre et bureaux?
Même alors, comment puis-je déterminer le bureau actuellement interactif si je peux seulement faire l'appel à OpenInputDesktop à partir du service système dans la session 0?
Peut-être la réponse serait de surveiller en quelque sorte lorsque l'utilisateur bascule ordinateurs de bureau? Est-ce possible? – Peter350