Ik heb een code geschreven die de userid + volledige naam van een gebruiker opvraagd.
UserID opvragen gaat altijd goed.
Alleen ik krijg niet altijd het volledige(DisplayName) naam terug.
Op mijn laptop gaat het goed, maar op de (bijna identieke )laptop van een collega gaat het niet goed. We hebben allebei een WInXP SP2.
Ik heb het ook onder vmware met win2003 geprobeerd, ook hier klapt het uit bij
: If GetUserNameEx(NameDisplay, sBuffer, Ret) <> 0 Then
Verder heb ik op internet deze en deze gevonden, maar ook hier krijg ik niet het volledige naam terug. Wel weer de userid. Bij de laatste kan ik alleen de lokale gebruikers uitlezen, maar ik moet de "netwerk" loginnaam uitlezen.
Kan iemand mij vertellen waarom deze oplossing niet overal werkt en of ik op een andere manier het volledige naam kan opvragen?
Voor de duidelijkheid: In alle gevallen hebben de gebruikers behalve userid ook een Full UserName in windows/AD.
Als er iets niet duidelijk of niet volgens de "regels" is hoor ik het graag.
VB= vb6 + sp6
Windows= WinXp Sp2, Win2004 SP4 en Win20003 SP1
Netwerk= win2003 en zonder netwerk
UserID opvragen gaat altijd goed.
Alleen ik krijg niet altijd het volledige(DisplayName) naam terug.
Op mijn laptop gaat het goed, maar op de (bijna identieke )laptop van een collega gaat het niet goed. We hebben allebei een WInXP SP2.
Ik heb het ook onder vmware met win2003 geprobeerd, ook hier klapt het uit bij
: If GetUserNameEx(NameDisplay, sBuffer, Ret) <> 0 Then
Verder heb ik op internet deze en deze gevonden, maar ook hier krijg ik niet het volledige naam terug. Wel weer de userid. Bij de laatste kan ik alleen de lokale gebruikers uitlezen, maar ik moet de "netwerk" loginnaam uitlezen.
Kan iemand mij vertellen waarom deze oplossing niet overal werkt en of ik op een andere manier het volledige naam kan opvragen?
Voor de duidelijkheid: In alle gevallen hebben de gebruikers behalve userid ook een Full UserName in windows/AD.
Als er iets niet duidelijk of niet volgens de "regels" is hoor ik het graag.
VB= vb6 + sp6
Windows= WinXp Sp2, Win2004 SP4 en Win20003 SP1
Netwerk= win2003 en zonder netwerk
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| 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 Private Declare Function GetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private l As Long Private szBuffer As String * 100 Private Function szToStr(szStr As String) As String szToStr = Trim(Left(szStr, InStr(szStr, Chr(0)))) End Function Public Function UserName() As String Dim l 'Returns the userid of the user logged into 'the system l = GetUserName(szBuffer, Len(szBuffer)) UserName = szToStr(szBuffer) End Function Private Sub Command1_Click() Text1.Text = UserName '''''''''''''' Dim sBuffer As String, Ret As Long sBuffer = String(256, 0) Ret = Len(sBuffer) If GetUserNameEx(NameSamCompatible, sBuffer, Ret) <> 0 Then Label1.Caption = "Username: " + Left$(sBuffer, Ret) Else MsgBox "Error while retrieving the username" End If If GetUserNameEx(NameDisplay, sBuffer, Ret) <> 0 Then 'Ik krijg hier een false. Dim usernn As String usernn = Left$(sBuffer, Ret) Label2.Caption = "Voluit :" & usernn ' MsgBox "Username: " + Left$(sBuffer, Ret) Else MsgBox "Error while retrieving the username" End If Err End Sub ''''''''''''''''''''''''' |
Pana 5j