Benutzer auflisten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Ninoxo.

    Benutzer auflisten

    Hallo

    ich wollte mal wissen, wie man Alle benutzer des PCs in einer Listbox auflisten kann
    folgenden code hab ich schon:

    VB.NET-Quellcode

    1. Dim sysroot() As String = Split(System.Environment.SystemDirectory, ":")
    2. Dim Pfad As String = sysroot(0) + ":\"
    3. ListBox1.Items.AddRange(IO.Directory.GetDirectories(Pfad & "Users"))
    4. ListBox1.Items.Remove(Pfad & "Users\All Users")
    5. ListBox1.Items.Remove(Pfad & "Users\Default")
    6. ListBox1.Items.Remove(Pfad & "Users\Default User")
    7. ListBox1.Items.Remove(Pfad & "Users\Public")
    8. ListBox1.Items.Remove(Pfad & "Users\" & Environment.UserName)
    9. If ListBox1.Items.Count = 0 Then
    10. ListBox1.Items.Add("Es konnten keine weiteren Benutzer an diesen Computer gefunden werden!")
    11. Else
    12. For i = 0 To ListBox1.Items.Count
    13. Dim itemname As String = ListBox1.SelectedItem
    14. itemname.Replace(Pfad & "Users\", "")
    15. ListBox1.Items.Remove(ListBox1.SelectedItem.ToString)
    16. ListBox1.Items.Add(itemname)
    17. ListBox1.SelectedIndex = i
    18. Next
    19. End If


    nur irgendwas funktioniert da nicht (unten in der For-schleife)

    könnt ihr mir helfen?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ramon1611“ ()

    So ich hab dir deinen Code ein bisschen umgeschrieben:

    VB.NET-Quellcode

    1. 'Variablen
    2. Dim sysroot() As String = Split(System.Environment.SystemDirectory, ":")
    3. Dim Pfad As String = sysroot(0) + ":\"
    4. 'Alle Benutzer herausfinden
    5. For Each Benutzer As String In IO.Directory.GetDirectories(Pfad & "Users")
    6. ListBox1.Items.Add(Benutzer.ToString)
    7. Next
    8. 'Ungewünschte wieder entfernen
    9. ListBox1.Items.Remove(Pfad & "Users\All Users")
    10. ListBox1.Items.Remove(Pfad & "Users\Default")
    11. ListBox1.Items.Remove(Pfad & "Users\Default User")
    12. ListBox1.Items.Remove(Pfad & "Users\Public")

    Das ist kürzer und viel schöner, als dein Code es war ;)
    Ich nehme an das du ihn verstehst.

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dancger“ () aus folgendem Grund: Code Optimierung

    Wenn das schon alles sein sollte:

    VB.NET-Quellcode

    1. For i = 0 To ListBox1.Items.Count - 1

    Die Items sind Null-basiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würds so machen
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Management
    2. Imports System.Net
    3. '...

    VB.NET-Quellcode

    1. Public Shared Function GetUsers() As List(Of String)
    2. Dim w As New ManagementObjectSearcher("SELECT * FROM Win32_UserAccount WHERE Domain ='" & Dns.GetHostName() & "'")
    3. Dim l As New List(Of String)
    4. For Each mo As ManagementObject In w.Get
    5. l.Add(CStr(mo("Name")))
    6. Next
    7. Return l
    8. End Function

    ramon1611 schrieb:

    Ja gut, der Code funzt, aber jetzt hab ich in der Listbox immer "C:\Users\..." setehn, ich will aber das nur die Benutzernamen angezeigt werden


    Wo wir wieder beim splitten wären ;D

    Ich würde eine For Each-Scheife nehmen, die jedes Item durchläuft und
    immer bei den "\"-es splitted. Dann einfach das Item mit dem Ergebnis der Splittung
    umbenennen.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!