Récupération du UserName

Le
Julien Flawinne
Yop à tous,

Voila, j'ai ce problème que je n'arrive pas récupérer le username de
la personne loggé sur la machine. Je m'explique,

Mon application doit se lancer en mode administrateur c'est
obligatoire. Hors le username dont j'ai besoin est celui de la
personne effectivement loggé.
Donc lorsque j'utilise la méthode GetUserName , comme mon programme se
déroule dans le contexte d'administrateur, c'est donc le username
administrateur que je récupère et non celui de la personne
effectivement logguée.

Cela me pose un sacré problème. J'ai esseyé pas mal de chose comme un
shellexecute d'un petit programme qui ne fait que récupérer le
username et le transmet à l'application principale. Mais ce petit
programme qui est lancé via mon appli du coup travail aussi dans le
contexte administrateur :s .

Donc voila si quelqu'un peut m'aider. Ca doit être possible tout de
même. Je pense que pas mal d'appli sont dans se cas.

Merci d'avance pour votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #24545851
Julien Flawinne a écrit :

Voila, j'ai ce problème que je n'arrive pas récupérer le username de
la personne loggé sur la machine. Je m'explique,
Mon application doit se lancer en mode administrateur c'est
obligatoire. Hors le username dont j'ai besoin est celui de la
personne effectivement loggé.
Donc lorsque j'utilise la méthode GetUserName , comme mon programme se
déroule dans le contexte d'administrateur, c'est donc le username
administrateur que je récupère et non celui de la personne
effectivement logguée.



Tu peux faire par LookupAccountSid() sur l'Explorer ou
par HKEY_USERS (fonction DisplayLocalLogons() de Mark Russinovich
(là par exemple :
http://read.pudn.com/downloads/sourcecode/windows/system/1439/LOGGEDON.C__.htm)
Julien Flawinne
Le #24547601
On 9 juin, 19:06, Christian ASTOR
Julien Flawinne a écrit :

> Voila, j'ai ce problème que je n'arrive pas récupérer le username de
> la personne loggé sur la machine. Je m'explique,
> Mon application doit se lancer en mode administrateur c'est
> obligatoire. Hors le username dont j'ai besoin est celui de la
> personne effectivement loggé.
> Donc lorsque j'utilise la méthode GetUserName , comme mon programme s e
> déroule dans le contexte d'administrateur, c'est donc le username
> administrateur que je récupère et non celui de la personne
> effectivement logguée.

Tu peux faire par LookupAccountSid() sur l'Explorer ou
par HKEY_USERS (fonction DisplayLocalLogons() de Mark Russinovich
(là par exemple :http://read.pudn.com/downloads/sourcecode/windows/syst em/1439/LOGGEDO...)



Merci beaucoup , je vais tester cela. Je dirais si cela a fonctionner
Julien Flawinne
Le #24589281
On 9 juin, 19:06, Christian ASTOR
Julien Flawinne a écrit :

> Voila, j'ai ce problème que je n'arrive pas récupérer le username de
> la personne loggé sur la machine. Je m'explique,
> Mon application doit se lancer en mode administrateur c'est
> obligatoire. Hors le username dont j'ai besoin est celui de la
> personne effectivement loggé.
> Donc lorsque j'utilise la méthode GetUserName , comme mon programme s e
> déroule dans le contexte d'administrateur, c'est donc le username
> administrateur que je récupère et non celui de la personne
> effectivement logguée.

Tu peux faire par LookupAccountSid() sur l'Explorer ou
par HKEY_USERS (fonction DisplayLocalLogons() de Mark Russinovich
(là par exemple :http://read.pudn.com/downloads/sourcecode/windows/syst em/1439/LOGGEDO...)



Bonjour,

Alors, j'ai adapté un peu le code à mon projet. Il en ressort que
effectivement j'ai bien la liste des local logon. Mais aucune de ces
deux fonction ne me donne l'utilisateur actuellement loggé :s . Il y a-
t-il un moyen pour faire cela ?

Bien à vous.
DuboisP
Le #24589381
Le Sat, 23 Jun 2012 20:11:55 +0200, Julien Flawinne

On 9 juin, 19:06, Christian ASTOR
Julien Flawinne a écrit :

> Voila, j'ai ce problème que je n'arrive pas récupérer le username de
> la personne loggé sur la machine. Je m'explique,
> Mon application doit se lancer en mode administrateur c'est
> obligatoire. Hors le username dont j'ai besoin est celui de la
> personne effectivement loggé.
> Donc lorsque j'utilise la méthode GetUserName , comme mon programme se
> déroule dans le contexte d'administrateur, c'est donc le username
> administrateur que je récupère et non celui de la personne
> effectivement logguée.

Tu peux faire par LookupAccountSid() sur l'Explorer ou
par HKEY_USERS (fonction DisplayLocalLogons() de Mark Russinovich
(là par exemple
:http://read.pudn.com/downloads/sourcecode/windows/system/1439/LOGGEDO...)



Bonjour,

Alors, j'ai adapté un peu le code à mon projet. Il en ressort que
effectivement j'ai bien la liste des local logon. Mais aucune de ces
deux fonction ne me donne l'utilisateur actuellement loggé :s . Il y a-
t-il un moyen pour faire cela ?

Bien à vous.



et dans la clé CURRENT_USER ?

logiquement, c'est l'utilisateur connecté.

--
Utilisant le logiciel de courrier révolutionnaire d'Opera :
http://www.opera.com/mail/
Thierry
Le #24590341
Julien Flawinne :

On 9 juin, 19:06, Christian ASTOR
Julien Flawinne a écrit :

> Voila, j'ai ce problème que je n'arrive pas récupérer le username


de
> la personne loggé sur la machine. Je m'explique,
> Mon application doit se lancer en mode administrateur c'est
> obligatoire. Hors le username dont j'ai besoin est celui de la
> personne effectivement loggé.
> Donc lorsque j'utilise la méthode GetUserName , comme mon programme s


e
> déroule dans le contexte d'administrateur, c'est donc le username
> administrateur que je récupère et non celui de la personne
> effectivement logguée.

Tu peux faire par LookupAccountSid() sur l'Explorer ou
par HKEY_USERS (fonction DisplayLocalLogons() de Mark Russinovich
(là par exemple :http://read.pudn.com/downloads/sourcecode/windows/syst


em/1439/LOGGEDO...)



Il peut y avoir plusieurs users loggés, nan ?

Alors, j'ai adapté un peu le code à mon projet. Il en ressort que
effectivement j'ai bien la liste des local logon. Mais aucune de ces
deux fonction ne me donne l'utilisateur actuellement loggé :s . Il y a-
t-il un moyen pour faire cela ?



Il faut recuperer les processus parents jusqu'a ce qu'on tombe jusqu'a
l'explorer (on un proc system (crss, winlogon, ... flemme de tester) si
l'explorer parent a ete tué pour une raison ou une autre).

--
Vainqueur du 1er WSOFRJCP
Gros membre des Space Invaders
Sympathisant AAAAA
flawinne.julien
Le #24602771
Le samedi 9 juin 2012 17:39:15 UTC+2, Julien Flawinne a écrit :
Yop à tous,

Voila, j'ai ce problème que je n'arrive pas récupérer le username d e
la personne loggé sur la machine. Je m'explique,

Mon application doit se lancer en mode administrateur c'est
obligatoire. Hors le username dont j'ai besoin est celui de la
personne effectivement loggé.
Donc lorsque j'utilise la méthode GetUserName , comme mon programme se
déroule dans le contexte d'administrateur, c'est donc le username
administrateur que je récupère et non celui de la personne
effectivement logguée.

Cela me pose un sacré problème. J'ai esseyé pas mal de chose comme un
shellexecute d'un petit programme qui ne fait que récupérer le
username et le transmet à l'application principale. Mais ce petit
programme qui est lancé via mon appli du coup travail aussi dans le
contexte administrateur :s .

Donc voila si quelqu'un peut m'aider. Ca doit être possible tout de
même. Je pense que pas mal d'appli sont dans se cas.

Merci d'avance pour votre aide.



En fait aucunes de ses solution ne fonctionne, à partir du moment ou on r unas administrateur , toutes ces méthodes renvoie le nom d'utilisateur ad ministrateur. J'ai pallié à ce problème en faisant un petit bricolage du style :

J'execute le programme en mode normale , il récupère le username , le s auvegarde (en mémoire, dans un fichier, ...) et directement apres je lanc e un nouveau process avec ShellExecuteExe avec un .Verb = "runas" ce qui force l'application à prendre le jeton admin puis je kill mon instance. B iensur cela implique de prendre en compte le redemarrage de l'appli (genre avec un condition sur l'existance du fichier (si on l'a sauvé dans un fic hier) ou en passant un paramètre.

Voila, j'ai écrit vite, j'espère avoir été compris.

Bien à vous,
Fred
Le #24603071

En fait aucunes de ses solution ne fonctionne, à partir du moment ou on
runas administrateur , toutes ces méthodes renvoie le nom d'utilisateur
administrateur. J'ai pallié à ce problème >en faisant un petit bricolage du
style :



elles marchent très bien vu que ce sont les solutions habituelles qu'on
utilise pour les services..
notamment le LookupAccountSid qui donne l'utilisateur du process explorer,
pas de l'admin..

tu t'es planté quelque part...
flawinne.julien
Le #24603331
Le jeudi 28 juin 2012 21:47:21 UTC+2, Fred a écrit :

>En fait aucunes de ses solution ne fonctionne, à partir du moment ou o n
>runas administrateur , toutes ces méthodes renvoie le nom d'utilisateu r
>administrateur. J'ai pallié à ce problème >en faisant un petit bri colage du
>style :

elles marchent très bien vu que ce sont les solutions habituelles qu'on
utilise pour les services..
notamment le LookupAccountSid qui donne l'utilisateur du process explorer ,
pas de l'admin..

tu t'es planté quelque part...



Ben non, j'ai porté le code, il fonctionne bien c'est pas le problème. Mais quand tu élève un processus en admin , et bien je t'assure que ce code me renvoie uniquement le username administrateur. Que ce soit avec ces méthodes, via la variable d'environement, le HK_CURRENT_USER , un simple GetUserName() ...
Publicité
Poster une réponse
Anonyme