Detection du Login sur machine. [Résolu]

Signaler
Messages postés
22
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2008
-
Messages postés
22
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2008
-
Bonjour, je travaille en c++ sur une application qui va se charger de récupérer qui veut se loger sur la machine.



J'ai beau regardé un peu partout je n'arrive pas à savoir comment
faire. J'utilise un service pour réaliser cette tâche, donc si
j'utilise les fonctions basics comme getUsername cela ne fonctionne
pas, il faudrait que j'obtienne le message windows indiquant qu'un
utilisateur vient de se loger et que je récupère le login de l'utilisateur.


Voilà si vous avez une idée ,aidez-moi.

6 réponses

Messages postés
22
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2008

Pour celui que ca intéresse, j'ai fait un petit programme qui permet de savoir qui est logé sur la machine.
J'utilise la liste des SID de windows qui sont sur l'ordinateur local, ensuite grace à ces SID j'ouvre la base de registre dans


HKEY_USERS\\SID\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer et la valeur recherché est dans 'Logon User Name'.

Si on iter sur tous les SID alors on obtient les utilisateurs logé sur la machine. Grâce à ca je sais qui se log sur la machine et qui se delog.
Voila merci à tous et bon courage .
Messages postés
215
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
21 août 2011

Hello,
As tu essayer de recuperer le login avec la variable %USERNAME% ?
pour voir depuis le cmd tape "set" ou echo %USERNAME%
@+
Norton
Messages postés
22
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2008

...C'est pas du tout ca mon problème, le truc c'est de recevoir un message lorsqu'un utilisateur se connecte sur l'ordinateur et avec ce message choppé l'utilisateur qui c'est connecté à ta machine.
Mon but est de détecté chaque utilisateur se logant sur le système.
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Slt,
Si j'ai bien compris, tu veux récupérer le nom de l'utilisateur qui est logué (l'utilisateur courant).(?)
Si oui :

char *Nom=(char*)malloc(256*sizeof(char));
LPDWORD ml=256;
GetUserName (Nom,&ml);
printf("%s", Nom);
Messages postés
22
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2008

Pas du tout comme je viens de l'expliquer, mon programme est de marré en service windows et va recuper les informations de login sur la machine.
Ton getUserName ne fonctionne que pour un programme qui est démarre après le login de l'utilisateur.

Si tu fais un getusername sur un programme demarré en service il te renvoie System en utilisateur ...

Moi je cherche à connaitre le message qui est envoyer par le system aux autres programmes pour indiquer qu'un utilisateur est entrain de se loger sur le poste.
Avec ce message recuperer l'utilisateur qui a reussi a se loger.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Je ne connais pas de message Windows indiquant qu'un utilisateur vient de se loguer. Mais je pense que tu peux utiliser la base de registres pour y arriver. Tu crées un Event dans ton service. Tu appelles la fonction RegNotifyChangeKeyValue() pour détecter la modification dans la clé HKEY_USERS. Cette fonction positionne ton Event passé en paramètre. La fonction WaintForSingleObject() permet d'attendre le positionnement de l'Event. Tu dois te renseigner sur la structure de la clé HKEY_USERS pour connaitre la sous-clé ou les valeurs qui sont modifiées à la suite d'un logon.
Il existe aussi un autre moyen consistant à faire des DLLs servant à detecter les événements de WinLogon. Ca s'appelle "Winlogon Notification Packages".