Déconnecter les événements de connexion / déconnexion de Windows

J’ai un service qui fonctionnerait au niveau du système. Maintenant, je veux suivre l’utilisateur connecté en elle. Auparavant, j’essayais d’obtenir le nom d’utilisateur connecté à partir de l’API GetUserName, mais dans mon cas, il renvoie “SYSTEM” à chaque fois.

Y a-t-il un moyen de se connecter à mon nom d’utilisateur? ou y a-t-il un crochet que je peux installer pour que je puisse avoir quel utilisateur connecté?

PS: Je travaille principalement avec Delphi 2007, mais ces questions sont spécifiques à l’API Win32.

    Je ne connais pas bien l’implémentation Delphi des services Windows, mais chaque fois que vous définissez les contrôles acceptés par le service, vous devez append SERVICE_ACCEPT_SESSIONCHANGE. Ensuite, dans votre fonction de rappel HandlerEx, le paramètre dwEventType sera l’une des valeurs WM_WTSSESSION_CHANGE et lpEventData sera un pointeur sur une structure WTSSESSION_NOTIFICATION contenant l’ID de session de l’événement.

    Vous pouvez utiliser cette information avec l’API des services de terminal pour déterminer qui a fait quoi.

    Vous pouvez utiliser SENS pour écouter et vous abonner aux notifications de connexion.

    Vous devez être plus spécifique dans vos besoins. Plusieurs utilisateurs peuvent être connectés à tout moment, que ce soit localement ou à distance. Ne vous souciez que des utilisateurs interactifs?

    La requête la plus courante est de savoir comment obtenir l’utilisateur interactif connecté localement, c’est-à-dire la personne physiquement assise au clavier et à l’écran. Vous devez examiner diverses questions avant de décider de la marche à suivre. MSDN a une bonne entrée sur Window Stations qui expliquera la situation mieux que moi.