Nom d'utilisateur du menu démarrer

Résolu
duplatre Messages postés 7 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 26 mai 2011 - 4 mai 2011 à 11:16
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 - 6 mai 2011 à 16:53
Bonjour, je cherche une fonction pour récupérer le nom d'utilisateur de la session windows, celui qui s'affiche dans le menu démarrer ou celui sur lequel on clique au démarrage dans la version famille de windows.

J'ai déjà essayé les fonctions GetUserNameA -> renvoi l'utilisateur de excel ; de même pour environ(....)

J'ai aussi essayé GetComputerNameA qui me renvoie "ORDINATEUR".

Et WNetGetUserA qui renvoie la même chose que GetUserNameA (surement une coincidence)

Je vous remercie d'avance
@ bientôt

12 réponses

Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
6 mai 2011 à 16:53
à duplatre : essaye ça, via WMI

Private Sub Form_Load()
'   [WMI Win32 Helper - Win32_Account]
    On Local Error Resume Next
    Dim sComputerName As String, WMI_Obj As Object, WMI_ObjProps As Object, ObjClsItem As Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_Account", , 48)

    For Each ObjClsItem In WMI_ObjProps
        Debug.Print "Caption : " & ObjClsItem.Caption
        Debug.Print "Description : " & ObjClsItem.Description
        Debug.Print "Domain : " & ObjClsItem.Domain
        Debug.Print "Name : " & ObjClsItem.Name
        Debug.Print vbCrLf
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing
End Sub
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 mai 2011 à 13:25
Bonjour,

J'ai fait quelques recherches rapides sur Google mais j'avoue que je n'ai pas trouvé l'API correspondante.

Par contre regarde par ici tu y trouveras peut-être quelques infos intéressantes.


Calade
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 mai 2011 à 17:42
Salut
c'est peut etre ça

Private Declare Function GetUserName Lib "advapi32.dll" _
 Alias "GetUserNameA" (ByVal UserName As String, _
 ByRef BuffSize As Long) As Long

Public Function CurrentUser() As String
Dim sBuff As String * 512
Dim x As Long
CurrentUser = ""
x = GetUserName(sBuff, Len(sBuff) - 1)
If x > 0 Then
 x = InStr(sBuff, vbNullChar)
 If x > 0 Then CurrentUser = Left$(sBuff, x - 1)
End If
End Function



ce n'est pas de moi
http://www.vbmonster.com/Uwe/Forum.aspx/vb/7616/VB6-How-to-get-username
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 mai 2011 à 17:47
Non ce n'est pas ça
désolé
0

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

Posez votre question
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
4 mai 2011 à 22:18
Essaye ça :
Private Enum EXTENDED_NAME_FORMAT
    NameUnknown = 0
    NameFullyQualifiedDN = 1
    NameSamCompatible = 2
    NameDisplay = 3
    NameUniqueId = 6
    NameCanonical = 7
    NameUserPrincipal = 8
    NameCanonicalEx = 9
    NameServicePrincipal = 10
End Enum
Private Declare Function GetUserNameEx Lib "secur32.dll" Alias "GetUserNameExA" (ByVal NameFormat As EXTENDED_NAME_FORMAT, ByVal lpNameBuffer As String, ByRef nSize As Long) As Long

 Sub main()
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@allapi.net
    Dim sBuffer As String, Ret As Long
    sBuffer = String(256, 0)
    Ret = Len(sBuffer)
    If GetUserNameEx(NameSamCompatible, sBuffer, Ret) <> 0 Then
        MsgBox "Username: " + Left$(sBuffer, Ret)
    Else
        MsgBox "Error while retrieving the username"
    End If
End Sub
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
5 mai 2011 à 07:43
Bonjour,

Tu peux aussi regarder ce site principalement la propriété UserName, ainsi que cetsite.


Calade
0
duplatre Messages postés 7 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 26 mai 2011
5 mai 2011 à 09:32
Merci de vos réponses.

GetUserNameEX me renvoie ORDINATEUR/Alexandre qui correspond pour la partie de droite au nom que j'ai inscrit dans excel. Il est différent de celui du menu démarrer.
0
duplatre Messages postés 7 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 26 mai 2011
5 mai 2011 à 09:34
ORDINATEUR est apparemment mon LOGONSERVEUR.
Alexandre est mon username (excel).
0
radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
5 mai 2011 à 18:30
salut,

ce que tu veux c'est la propriété "displayName" de l'utilisateur dans la SAM locale.

ne sachant pas si tu développes en .net ou pas, je vais t'orienter sur une recherche .net sur ActiveDirectory et ActiveDirectoryManagement.

je sais que tu peux faire une requête et qu'au lieu de mettre "LDAP:" quand il s'agit d'un domaine Windows, tu peux utiliser "WINNT:" pour interroger la SAM locale.

Sinon, je sais qu'avec les WMI, c'est possible d'aller chercher l'info également. je l'ai déjà vu sur des sites.

En espèrant que ca puisse t'aider.
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
5 mai 2011 à 18:57
Bonsoir,
Essaie avec celui-ci,ça devrait aller:
'Tiré de Api-Guide
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Sub Form_Load()
    Dim strUserName As String
    strUserName = String(100, Chr$(0))
    GetUserName strUserName, 100
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)
    MsgBox strUserName
End Sub


Bonne continuation!!
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
6 mai 2011 à 09:44
à nsuadi : ta proposition a été faite au début de la discussion par shayw

à radcur : essaye ça :

Private Declare Function w32_WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" _
    (ByVal lpszLocalName As String, ByVal lpszUserName As String, lpcchBuffer As _
    Long) As Long

Private Sub Form_Load()
    Dim lpUserName As String, lpnLength As Long, lResult As Long
    'Create a buffer
    lpUserName = String(256, Chr$(0))
    'Get the network user
    lResult = w32_WNetGetUser(vbNullString, lpUserName, 256)
    If lResult = 0 Then
        lpUserName = Left$(lpUserName, InStr(1, lpUserName, Chr$(0)) - 1)
        MsgBox "The user's Network Logon Name is " + lpUserName + ".", vbInformation + vbOKOnly, App.Title
    Else
        MsgBox "No user found !", vbExclamation + vbOKOnly, App.Title
    End If
End Sub
0
duplatre Messages postés 7 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 26 mai 2011
6 mai 2011 à 14:40
Bonjour Philippe734,
ton code renvoie aussi Alexandre qui est mon nom d'utilisateur excel (peut être entre autre) mais ce n'est pas le nom que j'ai mis dans le menu démarrer et à l'ouverture de windows.
0
Rejoignez-nous