Nom d'utilisateur du menu démarrer [Résolu]

Signaler
Messages postés
7
Date d'inscription
jeudi 3 février 2011
Statut
Membre
Dernière intervention
26 mai 2011
-
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
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

Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
à 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
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
Non ce n'est pas ça
désolé
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
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
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Bonjour,

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


Calade
Messages postés
7
Date d'inscription
jeudi 3 février 2011
Statut
Membre
Dernière intervention
26 mai 2011

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.
Messages postés
7
Date d'inscription
jeudi 3 février 2011
Statut
Membre
Dernière intervention
26 mai 2011

ORDINATEUR est apparemment mon LOGONSERVEUR.
Alexandre est mon username (excel).
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
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.
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
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
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
à 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
Messages postés
7
Date d'inscription
jeudi 3 février 2011
Statut
Membre
Dernière intervention
26 mai 2011

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.