Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

EN VB6, retrouver le User NT ID d'un utilisateur

4 réponses
Avatar
FG
Bonjour,

en VB6, je recherche une fonction, un objet ou une API pour connaitre le
User NT (ID) d'un utilisateur ?

Merci d'avance pour vos réponses.

FG

4 réponses

Avatar
Fabrice MALAINGRE
Bonjour FG,

Vous pouvez essayer quelque chose du genre :

'============================ Option Explicit

' Maximum username length
Private Const UNLEN = 256
Private Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long

Private Sub Command1_Click()
Dim l_lSize As Long
Dim l_lReturnCode As Long
Dim l_sUserName As String

l_sUserName = ""
l_lSize = UNLEN + 1

l_sUserName = String$(l_lSize, _
0)
l_lReturnCode = GetUserName(l_sUserName, _
l_lSize)
If (l_lReturnCode <> 0) Then
l_sUserName = Left$(l_sUserName, _
InStr(l_sUserName, vbNullChar) - 1)
MsgBox l_sUserName
End If
End Sub

'============================
Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Avatar
FG
Merci.

En fait je l'ai déjà essayé mais GetUserName me renvoie le login NT et non
pas le sID....
Du style on créé un utilisateur 'AB' qui a un ID 1.
si on supprime l'utilisateur 'AB' et qu'un autre utilisateur est créé avec
le meme code 'AB' (donc avec un ID:2), l'ID est forcément différent..C'est
cet unique ID que je recherche......



"Fabrice MALAINGRE" a écrit dans le message de
news:%
Bonjour FG,

Vous pouvez essayer quelque chose du genre :

'============================ > Option Explicit

' Maximum username length
Private Const UNLEN = 256
Private Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long

Private Sub Command1_Click()
Dim l_lSize As Long
Dim l_lReturnCode As Long
Dim l_sUserName As String

l_sUserName = ""
l_lSize = UNLEN + 1

l_sUserName = String$(l_lSize, _
0)
l_lReturnCode = GetUserName(l_sUserName, _
l_lSize)
If (l_lReturnCode <> 0) Then
l_sUserName = Left$(l_sUserName, _
InStr(l_sUserName, vbNullChar) - 1)
MsgBox l_sUserName
End If
End Sub

'============================ >
Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr




Avatar
Fabrice MALAINGRE
> En fait je l'ai déjà essayé mais GetUserName
me renvoie le login NT et non pas le sID....
Du style on créé un utilisateur 'AB' qui a un ID 1.
si on supprime l'utilisateur 'AB' et qu'un autre utilisateur est créé avec
le meme code 'AB' (donc avec un ID:2), l'ID est forcément différent..
C'est cet unique ID que je recherche......



Au temps pour moi !!!!

Il y avait un peu plus de code à faire :-)

'============================================= Option Explicit

' Maximum username length
Private Const UNLEN = 256
Private Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Private Declare Function LookupAccountName _
Lib "advapi32.dll" _
Alias "LookupAccountNameA" _
(ByVal lpSystemName As String, _
ByVal lpAccountName As String, _
Sid As Byte, _
cbSid As Long, _
ByVal DomainName As String, _
cbDomainName As Long, _
peUse As Long) As Long


Private Sub Command1_Click()
Dim l_lSize As Long
Dim l_lReturnCode As Long
Dim l_sUserName As String
Dim l_sDomain As String
Dim l_sUserSID As String

l_sUserName = ""
l_lSize = UNLEN + 1

l_sUserName = String$(l_lSize, _
0)
l_lReturnCode = GetUserName(l_sUserName, _
l_lSize)
If (l_lReturnCode <> 0) Then
l_sUserName = Left$(l_sUserName, _
InStr(l_sUserName, vbNullChar) - 1)

l_sDomain = ""
l_sUserSID = GetSID(l_sUserName, l_sDomain)
MsgBox l_sUserName & " has SID = " & l_sUserSID & " in domain " &
l_sDomain
End If
End Sub


Public Function GetSID(ByRef p_sUserName As String, _
ByRef p_sDomainName As String) As String
Dim l_sSystemName As String
Dim l_sReturnValue As String
Dim l_lReturnCode As Long
Dim l_SidLength As Long
Dim l_lDomainNameLength As Long
Dim l_lSidType As Long
Dim l_pbSID() As Byte
Dim currentSidIndex As Long

l_sReturnValue = ""

l_sSystemName = vbNullString
p_sDomainName = vbNullString
l_lDomainNameLength = 0

l_lReturnCode = LookupAccountName(l_sSystemName, _
p_sUserName, _
0&, _
l_SidLength, _
p_sDomainName, _
l_lDomainNameLength, _
l_lSidType)

If ((l_lReturnCode = 0) And (l_SidLength > 0)) Then
p_sDomainName = Space$(l_lDomainNameLength)
ReDim l_pbSID(0 To l_SidLength - 1)
l_lReturnCode = LookupAccountName(l_sSystemName, _
p_sUserName, _
l_pbSID(0), _
l_SidLength, _
p_sDomainName, _
l_lDomainNameLength, _
l_lSidType)
If (l_lReturnCode > 0) Then
For currentSidIndex = 1 To l_SidLength
l_sReturnValue = l_sReturnValue & l_pbSID(currentSidIndex - 1)
Next currentSidIndex

If (l_lDomainNameLength > 0) Then
p_sDomainName = Left$(p_sDomainName, l_lDomainNameLength)
End If
End If
End If

GetSID = l_sReturnValue
End Function

'=============================================
Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Avatar
FG
Merci !
C'était exactement ce que je recherchais...........je ne pensais pas que ça
commençait pas LookUp..........


"Fabrice MALAINGRE" a écrit dans le message de
news:
> En fait je l'ai déjà essayé mais GetUserName
> me renvoie le login NT et non pas le sID....
> Du style on créé un utilisateur 'AB' qui a un ID 1.
> si on supprime l'utilisateur 'AB' et qu'un autre utilisateur est créé


avec
> le meme code 'AB' (donc avec un ID:2), l'ID est forcément différent..
> C'est cet unique ID que je recherche......

Au temps pour moi !!!!

Il y avait un peu plus de code à faire :-)

'============================================= > Option Explicit

' Maximum username length
Private Const UNLEN = 256
Private Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Private Declare Function LookupAccountName _
Lib "advapi32.dll" _
Alias "LookupAccountNameA" _
(ByVal lpSystemName As String, _
ByVal lpAccountName As String, _
Sid As Byte, _
cbSid As Long, _
ByVal DomainName As String, _
cbDomainName As Long, _
peUse As Long) As Long


Private Sub Command1_Click()
Dim l_lSize As Long
Dim l_lReturnCode As Long
Dim l_sUserName As String
Dim l_sDomain As String
Dim l_sUserSID As String

l_sUserName = ""
l_lSize = UNLEN + 1

l_sUserName = String$(l_lSize, _
0)
l_lReturnCode = GetUserName(l_sUserName, _
l_lSize)
If (l_lReturnCode <> 0) Then
l_sUserName = Left$(l_sUserName, _
InStr(l_sUserName, vbNullChar) - 1)

l_sDomain = ""
l_sUserSID = GetSID(l_sUserName, l_sDomain)
MsgBox l_sUserName & " has SID = " & l_sUserSID & " in domain " &
l_sDomain
End If
End Sub


Public Function GetSID(ByRef p_sUserName As String, _
ByRef p_sDomainName As String) As String
Dim l_sSystemName As String
Dim l_sReturnValue As String
Dim l_lReturnCode As Long
Dim l_SidLength As Long
Dim l_lDomainNameLength As Long
Dim l_lSidType As Long
Dim l_pbSID() As Byte
Dim currentSidIndex As Long

l_sReturnValue = ""

l_sSystemName = vbNullString
p_sDomainName = vbNullString
l_lDomainNameLength = 0

l_lReturnCode = LookupAccountName(l_sSystemName, _
p_sUserName, _
0&, _
l_SidLength, _
p_sDomainName, _
l_lDomainNameLength, _
l_lSidType)

If ((l_lReturnCode = 0) And (l_SidLength > 0)) Then
p_sDomainName = Space$(l_lDomainNameLength)
ReDim l_pbSID(0 To l_SidLength - 1)
l_lReturnCode = LookupAccountName(l_sSystemName, _
p_sUserName, _
l_pbSID(0), _
l_SidLength, _
p_sDomainName, _
l_lDomainNameLength, _
l_lSidType)
If (l_lReturnCode > 0) Then
For currentSidIndex = 1 To l_SidLength
l_sReturnValue = l_sReturnValue & l_pbSID(currentSidIndex - 1)
Next currentSidIndex

If (l_lDomainNameLength > 0) Then
p_sDomainName = Left$(p_sDomainName, l_lDomainNameLength)
End If
End If
End If

GetSID = l_sReturnValue
End Function

'============================================= >
Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr