Recupérartion du username NT dans VBA

cs_OlivierR Messages postés 2 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 8 février 2002 - 30 janv. 2002 à 12:08
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 20 sept. 2004 à 10:17
Salut à tous,

Je voudrais savoir comment récuper mon username de windows Nt dans mon prog Access.

J'utilise Windows Nt avec Access 2000, mon but étant d'afficher mon username sur mon formulaire principale.

7 réponses

cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
30 janv. 2002 à 13:18
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

'Pour Recuperer le login windows
'Dim sBuffer As String
'Dim lSize As Long
'
'' Allocation de la taille du buffer de réception
'sBuffer = Space$(255)
'lSize = Len(sBuffer)
'
'' La DLL retourne l'utilisateur connecté sur cette machine
'Call GetUserName(sBuffer, lSize)
'txtNomUtilisateur.Text = sBuffer

Voilà !
0
chipaolee Messages postés 23 Date d'inscription lundi 6 août 2001 Statut Membre Dernière intervention 14 avril 2005
5 févr. 2002 à 11:57
Je ne connais pas le moyen de récupérer le mot de passe de l'utilisateur
mais je pense que la protection par NT doit être assez musclée en encore
plus sur réseau sinon à quoi servirait le mot de passe si une simple
fonction API peut le faire sauter.
Par contre pour récupérer le login (pas le UserName de la machine), je te propose ci-dessous une solution

Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVallpName
As String, ByVal lpUserName As String, lpnLength As Long) As Long
Const NoError = 0
Function GetUserName()
Const lpnLength As Integer = 255
Dim status As Integer
Dim lpName, lpUserName As String
lpUserName = Space$(lpnLength + 1)
status = WNetGetUser(lpName, lpUserName, lpnLength)
If status = NoError Then
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
Else
MsgBox "Impossible d'obtenir le login."
End
End If
GetUserName = lpUserName
End Function

Sub AfficheLogin()
MsgBox GetUserName
End Sub
0
cs_zack Messages postés 10 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 7 février 2002
5 févr. 2002 à 12:11
Je tiens a apporter mon approbation a chipaolee je pense que pimousse (comme son pseudo l'indique) est encore puceau en matière de programmation.
Il pensait épater la galerie en utilisant une API mais ce system n'est pas très fiable. En tant que développeur dans une grosse société informatique nous utilisons (bien que + évolué) le procéder mise en place par chipaolee. Donc bravo a toi chipaolee quand a pimousse je pense que quelque cours ne lui ferait pas de mal.
bonne journée.
0
cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
5 févr. 2002 à 12:19
Mon cher Zack,

je trouve ton jugement un peu hâtif. Je n'ai aucunement prétenu faire un coucours de prog mais simplement laisser la trace d'une autre solution possible pour capitaliser le savoir. Quant à mon pseudo il n'a rien à voir avec mes compétences, et pour ta gouverne tu n'es pas le seul à travailler dans une grosse société...
0

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

Posez votre question
triners Messages postés 3 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 11 juillet 2002
15 févr. 2002 à 12:07
Je suis sous sous WinXP et Excel XP et le code ne fonctionne pas soit il me manque un bout du code en VBA par rapport aux propositions du forum ou ils ont changé quelquechoses entre 2000 et XP,
j'aimerais savoir si quelqu'un a une solution
Merci d'avance
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
20 sept. 2004 à 10:13
Essayes-ca:

Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function WhoIs() As String
Dim strUserName As String
Dim lngLenght As Long
Dim lngResult As Long
'Créé le tampon
strUserName = String$(255, 0)
lngLenght = 255
'Effectue l'appel
lngResult = GetUserName(strUserName, lngLenght)
'Nettoie et affecte la valeur
WhoIs = Left(strUserName, InStr(1, strUserName, Chr(0)) - 1)
End Function

Ensuite tu n'as plus qu'à utiliser la fonction pour récupérer le username:

Me.UserName = WhoIs
TBBUIM
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
20 sept. 2004 à 10:17
Ou ça:

Public Declare Function wu_GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

Function ap_GetUserName() As Variant
Dim strUserName As String
Dim lngLenght As Long
Dim lngResult As Long

'Créé le tampon
strUserName = String$(255, 0)
lngLenght = 255

'Effectue l'appel
lngResult = wu_GetUserName(strUserName, lngLenght)

'Nettoie et affecte la valeur
ap_GetUserName = Left(strUserName, InStr(1, strUserName, Chr(0)) - 1)
End Function
TBBUIM
0
Rejoignez-nous