Récupération du UserName

8 réponses
Avatar
Julien Flawinne
Yop =E0 tous,

Voila, j'ai ce probl=E8me que je n'arrive pas r=E9cup=E9rer le username de
la personne logg=E9 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=E9.
Donc lorsque j'utilise la m=E9thode GetUserName , comme mon programme se
d=E9roule dans le contexte d'administrateur, c'est donc le username
administrateur que je r=E9cup=E8re et non celui de la personne
effectivement loggu=E9e.

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

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

Merci d'avance pour votre aide.

8 réponses

Avatar
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/LOGGEDON.C__.htm)
Avatar
Julien Flawinne
On 9 juin, 19:06, Christian ASTOR wrote:
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
Avatar
Julien Flawinne
On 9 juin, 19:06, Christian ASTOR wrote:
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.
Avatar
DuboisP
Le Sat, 23 Jun 2012 20:11:55 +0200, Julien Flawinne
a écrit:

On 9 juin, 19:06, Christian ASTOR wrote:
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/
Avatar
Thierry
Julien Flawinne écrivait news:e980ecb7-9df6-
:

On 9 juin, 19:06, Christian ASTOR wrote:
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
Avatar
flawinne.julien
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,
Avatar
Fred
a écrit dans le message de news:

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...
Avatar
flawinne.julien
Le jeudi 28 juin 2012 21:47:21 UTC+2, Fred a écrit :
a écrit dans le message de news:

>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() ...