vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Computer/Benutzer/Ländereinstellungen   |   VB-Versionen: VB624.08.07
Alle im System eingerichteten Benutzer ermitteln

Dieser Tipp verrät, wie man alle im System eingerichteten Benutzernamen ermitteln kann.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  9.886 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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:
Es sollen alle Benutzernamen in einer ListBox angezeigt werden.

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.886 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel