Mit nachfolgendem Tipp lassen sich alle im System eingerichteten Benutzer ermitteln. Die Funktion EnumUsers gibt die Benutzernamen hierbei als String-Array zurück. Fügen Sie nachfolgenden Code am besten in ein Modul: Option Explicit ' benötigte API-Deklarationen Private Declare Function NetApiBufferFree Lib "Netapi32.dll" ( _ ByVal lpBuffer As Long) As Long Private Declare Function NetUserEnum Lib "Netapi32.dll" ( _ ServerName As Byte, _ ByVal level As Long, _ ByVal filter As Long, _ bufptr As Long, _ ByVal prefmaxlen As Long, _ entriesread As Long, _ totalentries As Long, _ resume_handle As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" ( _ Destination As Any, _ Source As Any, _ ByVal Length As Long) Private Declare Function lstrlen Lib "kernel32" _ Alias "lstrlenA" ( _ ByVal lpString As String) As Long Public Function EnumUsers( _ Optional ByVal sComputer As String = "") As Variant ' alle im System eingerichteten Usern ermitteln ' Rückgabe als String-Array Dim bServer() As Byte Dim nUsers() As Long Dim nBufPtr As Long Dim nCount As Long Dim nTotal As Long Dim i As Long Dim sUsers() As String Dim nBuffer() As Byte ' Computername (Server) ' (wird als Byte-Array benötigt) If Len(sComputer) = 0 Then sComputer = Environ$("COMPUTERNAME") If Left$(sComputer, 2) <> "\\" Then sComputer = "\\" & sComputer bServer = sComputer & vbNullChar ' Benutzer ermitteln If NetUserEnum(bServer(0), 0, &H2, nBufPtr, 255&, nCount, nTotal, 0&) = 0 Then ReDim nUsers(nCount - 1) ReDim sUsers(nCount - 1) CopyMemory nUsers(0), ByVal nBufPtr, nCount * 4 ' jetzt die Benutzernamen anhand der Speicheradresse ' (Pointer) ermitteln For i = 0 To nCount - 1 If lstrlen(nUsers(i)) > 0 Then ReDim nBuffer(255) CopyMemory nBuffer(0), ByVal nUsers(i), 255 sUsers(i) = nBuffer If InStr(sUsers(i), vbNullChar) > 0 Then sUsers(i) = Left$(sUsers(i), InStr(sUsers(i), vbNullChar) - 1) End If End If Next i ' Resourcen freigeben NetApiBufferFree nBufPtr End If EnumUsers = sUsers End Function Aufrufbeispiel: Dim sUsers() As String sUsers = EnumUsers() Dim i As Long If UBound(sUsers) >= 0 Then For i = 0 To UBound(sUsers) List1.AddItem sUsers(i) Next i End If Dieser Tipp wurde bereits 9.905 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |