Comment récupéré le full name réseau en vba

raph007 Messages postés 22 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 20 mai 2005 - 24 févr. 2004 à 14:07
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 25 févr. 2004 à 10:45
Salut a tous,
j'ai un serveur novell avec netware 5 et dans une macro excell je récupére le lgion name mais je trouve cela pas joli
est ce que vous connaissez un moyen de récupérer le Full name??
merci d'avance

3 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
24 févr. 2004 à 19:32
Salut,

Ouh là, Novell et Netware ça existe encore ?
Bref, à part cette tite plaisanterie, tu utilises VBA sous Excel si j'ai bien compris ?

Tu pourrais donc voir du côté des API's comme WNetGetUser.

Désolé, en NT je sais faire mais pas testé en Netware.

CanisLupus
0
raph007 Messages postés 22 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 20 mai 2005
25 févr. 2004 à 08:10
oui g essayer avec cette api mais curieusement cela fonctionne bien sur ma station (windows xp) mais par-contre quand j'ouvre le fichier excel sous w98 ben la rien ne ce passe
mais merci quand meme a+ raph
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 févr. 2004 à 10:45
Dans mes applis, j'utilise ce qui suit. J'ai été obligé de faire comme ça car je bosse en environnement sécurisé Win 98 et Win XP et les autres méthodes ne me renvoyaient que l'utilisateur habituel du poste et pas le nom de connexion.
La fonction Login me renvoie donc le vrai nom de login en cherchant d'abord le 1er lecteur réseau.
Maintenant, je n'ai pas testé en VBA.

Function Login() As String
Dim lpBuffer As String
Dim currDrive As String
Dim Slash_Position As Integer

lpBuffer = GetDriveString()

Do Until lpBuffer = vbNullChar

currDrive = StripNulls(lpBuffer)

If GetDriveType(currDrive) = DRIVE_REMOTE Then
Login = GetNetResourceUserName(Left$(currDrive, 2))
Slash_Position = InStr(Login, "")
If Slash_Position > 0 Then
Login = Right$(Login, Len(Login) - Slash_Position)
End If
Exit Do
End If

Loop

End Function

Function GetDriveString() As String

'Retourne tous les lecteurs logiques séparés par un Null
Dim sBuffer As String

sBuffer = Space$(26 * 4)

If GetLogicalDriveStrings(Len(sBuffer), sBuffer) <> 0 Then

GetDriveString = Trim$(sBuffer)

End If

End Function

' --------------------------------------------------------------------------------
' Fonction retournant la liste des lecteurs logiques
' --------------------------------------------------------------------------------
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _
"GetLogicalDriveStringsA" ( _
ByVal nBufferLength As Long, ByVal _
lpBuffer As String) As Long

' --------------------------------------------------------------------------------
' Fonction retournant le type d'un lecteur logique
' --------------------------------------------------------------------------------
Declare Function GetDriveType _
Lib "kernel32" Alias "GetDriveTypeA" _
( _
ByVal lpRootPathName As String _
) As Long

' --------------------------------------------------------------------------------
' Fonction retournant le login de l'utilisateur en cours
' --------------------------------------------------------------------------------
Declare Function WNetGetUser _
Lib "mpr.dll" Alias "WNetGetUserA" _
( _
ByVal lpName As String, _
ByVal lpUserName As String, _
lpnLength As Long _
) As Long

Function GetNetResourceUserName(sShare As String) As String

'Retourne le Full name si l'utilisateur est logué
'Sinon retourne chaîne vide
Dim buff As String
Dim nSize As Long

buff = Space$(MAX_PATH)
nSize = Len(buff)

If WNetGetUser(sShare, buff, nSize) = 0 Then

GetNetResourceUserName = Split(buff, Chr$(0))(0)
Exit Function

End If

End Function

Cordialement

CanisLupus
0
Rejoignez-nous