Nom Complet Session Windows

jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013 - 26 janv. 2004 à 09:10
cs_djforever Messages postés 6 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 24 août 2005 - 19 sept. 2005 à 14:35
Salut a tous, je cherche a récupérer le nom complet de l'utilisateur depuis les informations de sa session Windows

J'arrive pour le moment à récupérer son login mais je ne sais pas comment récupérer le nom complet

D'avance Merci

Amicalement
Julien

10 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
26 janv. 2004 à 19:56
Essai ca :
Environment.UserDomainName + "\" + Environment.UserName


[Membre du Labo .NET]
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
27 janv. 2004 à 08:14
non, ca ca me permet de récupérer le nom de domain et le login, moi ce qu'il me faut dans mon programme, c'est récupérer le nom complet

non, moi ce que je veux, c'est pouvoir récupérer mon nom + prénom

J'ai trouvé un site expliquant que ces données étaient disponibles dans l'environement NT mais je n'ai pas trouvé de site expliquant comment les récupérer

En tout cas, merci beaucoup de ton aide

Amicalement
Julien
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
27 janv. 2004 à 15:22
accessible via WMI (je sais pas faire autrement)
Classe WMI : Win32_UserAccount

Cocoricoooooooo !!!!
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
27 janv. 2004 à 15:52
ah, donc c vraiment possible de le récupérer ? t'aurais un petit exemple de l'utilisation de cette classe WMI ?

D'avance Merci

Amicalement
Julien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
27 janv. 2004 à 16:46
On peut faire enormement de chose via WMI
Mes exemples sont basés sur le compte utilisateur ASPNET

Méthode 1 :
1) Ajouter la reference System.Management via l'element Reference dans l'explorateur de solutions
2) using System.Management;
3) Code :
ObjectQuery objQuery = new ObjectQuery("SELECT * FROM Win32_UserAccount WHERE Name='ASPNET'");
ManagementObjectSearcher objSearch = new ManagementObjectSearcher(objQuery);
ManagementObjectCollection objColl = objSearch.Get();
foreach ( ManagementObject userAccount in objColl)
{
MessageBox.Show("Name : "+userAccount["Name"].ToString()
+"\nFullName : "+userAccount["FullName"].ToString());
}


Methode 2 :
tu peux aussi te servir du générateur de classe typée de Visual qui te permet d'avoir une classe directement exploitable pour la classe WMI Win32_UserAccount

1) Lancer "Visual Studio .NET 2003 Command Prompt" du groupe de raccourcis "Microsoft Visual Studio .NET 2003\Outils Visual Studio .NET"
2) Executer la commande
mgmtclassgen Win32_UserAccount /n root\cimv2 /l CS /p c:\Win32_UserAccount.cs
3) Plus qu'a ajouter le fichier Win32_UserAccount.cs généré au projet et à l'utiliser comme suis
Ajouter la reference System.Management via l'element Reference dans l'explorateur de solutions
using System.Management;
using ROOT.CIMV2.Win32;

.
.
.
UserAccount.UserAccountCollection userAccounts = UserAccount.GetInstances("Name='ASPNET'");
foreach ( UserAccount userAccount in userAccounts)
{
MessageBox.Show("Name : "+userAccount.Name
+"\nFullName : "+userAccount.FullName);
}


Cocoricoooooooo !!!!
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
28 janv. 2004 à 08:54
Merci bien pour ton aide coq, ta démarche N°2 fonctionne impec sur ma machine sur laquelle je développe l'application mais par contre, elle plante si je teste mon programme sur une autre machine car il me dit qu'il n'arrive pas à récupérer les infos de l'user, tu sais d'où ca peut venir ?

En tout cas, encore merci

Amicalement
Julien
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 janv. 2004 à 10:05
quel OS aussi ?
pck WMI n'est pas une specification du C# mais un "composant externe" donc ça depend de l'OS installé sur la machine

car si je ne me trompe pas :
- WMI est present sur 2000 mais avec qq classes en moins que le WMI fourni avec XP (ptet qu'on peut mettre a jour je sais pas)
- WMI n'est carrement pas present sur du 98, il doit y avoir une install a faire (d'ailleurs les users sur 98..........)

Cocoricoooooooo !!!!
0
cs_djforever Messages postés 6 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 24 août 2005
24 août 2005 à 15:38
Bonjour,


En c#, je cherche a connaitres les informations concernant l'utilsateur
logué sur un machine windows (droits admin ou pas...). j'ai tenté avec
l'API WMI, avec du Win32_UserAccount.. mais je n'y arrive pas, j'ai
l'impression que ca fait une recheche dans l'AD...

Dans votre exemple ci-dessus vous faites un "where ("Name='ASPNET'");"

mais le problème c'est que je connais pas le name justement a l'avance.

Merci
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
17 sept. 2005 à 12:45
Désolé du retard, je n'avais pas vu le message.
Tu peux récupérer le nom du compte utilisateur associé au thread courant avec l'appel à la méthode GetUserName des API :

[DllImport("Advapi32.dll")]
private static extern bool GetUserName(
[Out]StringBuilder lpBuffer,
[In, Out]ref uint nSize
);

exemple d'utilisation :
string username = string.Empty;
uint size = 32767;
StringBuilder sb = new StringBuilder((int)size);
bool ret = GetUserName(sb, ref size);


if ( ret )
{
username = sb.ToString();
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_djforever Messages postés 6 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 24 août 2005
19 sept. 2005 à 14:35
Merci pour la réponse.

J'avoue ne pas avoir les memes notions.. car j'ai jamais fait un uint size = 32767...



Je suis passé par :

WindowsIdentity MyIdentity = WindowsIdentity.GetCurrent();

après je recupère :

MyIdentity.Name, IsAuthenticated, AuthenticationType, IsAnonymous, IsGuest, IsSystem et Token.

Sous system win98 je suis toujours en IsSystem a True,

et en windows 2000 en IsAuthenticated a True, autrement dit sous 98
j'ai forcément les droits admin mais sous 2000 ou XP ca reste un point
quelques peu obscure...
0
Rejoignez-nous