Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0049: Daten über den angemeldeten Benutzer auslesen

 von 

Beschreibung

Dieser Tipp zeigt, wie sich Informationen über den aktuell angemeldeten Benutzer auslesen lassen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [1,65 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2002/2003
' Option Strict:    Aus
' Option Explicit:  An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.XML
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Data
'  - System.Diagnostics
'

' ##############################################################################
' ############################### modWhoAmI.vb #################################
' ##############################################################################
Imports System.Console
Imports System.Security.Principal

Public Enum USER_PRIV As Integer
    USER_PRIV_GUEST = 0
    USER_PRIV_USER = 1
    USER_PRIV_POWERUSER = 2
    USER_PRIV_ADMIN = 3
End Enum

Module modWhoAmI
    Sub Main()
        Dim User As New WindowsPrincipal(WindowsIdentity.GetCurrent)
        Dim Recht, BenutzerName, RechnerName As String

        ' User.Identity.Name zerlegen in Benutzername und Rechnername.
        With User.Identity.Name
            BenutzerName = .Substring(.IndexOf("\") + 1)
            RechnerName = .Substring(0, .IndexOf("\"))
        End With

        ' Benutzerstatus abfragen.
        Select Case User_LogInState()
        Case USER_PRIV.USER_PRIV_ADMIN
            Recht = "Administrator"
        Case USER_PRIV.USER_PRIV_GUEST
            Recht = "Gast"
        Case USER_PRIV.USER_PRIV_POWERUSER
            Recht = "PowerUser"
        Case USER_PRIV.USER_PRIV_USER
            Recht = "User"
        End Select

        ' Ausgabe der Daten.
        WriteLine()
        WriteLine("Auskunft über den angemeldeten Benutzer")
        WriteLine("---------------------------------------------")
        WriteLine("Rechnername : " & RechnerName)
        WriteLine("Benutzername: " & BenutzerName)
        WriteLine("Rechte      : " & Recht)
        WriteLine("---------------------------------------------")
    End Sub

    Public Function User_LogInState() As USER_PRIV
        ' Verweis auf aktuell angemeldeten Benutzer erstellen
        Dim oUser As New WindowsPrincipal(WindowsIdentity.GetCurrent)

        ' Anmeldestatus prüfen
        If oUser.IsInRole(WindowsBuiltInRole.Administrator) Then
            ' Administrator
            Return (USER_PRIV.USER_PRIV_ADMIN)
        ElseIf oUser.IsInRole(WindowsBuiltInRole.PowerUser) Then
            ' PowerUser (Admin mit leicht eingeschränkten Rechten)
            Return (USER_PRIV.USER_PRIV_POWERUSER)
        ElseIf oUser.IsInRole(WindowsBuiltInRole.User) Then
            ' User mit eingeschränkten Rechten
            Return (USER_PRIV.USER_PRIV_USER)
        ElseIf oUser.IsInRole(WindowsBuiltInRole.Guest) Then
            ' Gast
            Return (USER_PRIV.USER_PRIV_GUEST)
        End If
    End Function
End Module

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Üggi am 07.11.2008 um 23:47

hi,

das programm läuft super unter windows xp.

aber wenn ich das programm als admin im vista starte, bekommen ich immer die rückmeldung, dass ich nur ein "user" bin obwohl ich eigentlich ein admin bin.

deaktiviere ich die benutzerkontensteuerung im vista, dann bekomme ich als ergebnis "administrator".

ist es auch möglich im vista "administrator" zurückzubekommen wenn ich das häkchen gemacht habe? weil ich bin ja eigentlich ein admin.
oder gibts sonst eine möglichkeit?

lg üggi

Kommentar von Jens am 15.10.2006 um 17:56

Hallo kann mir jemand sagen wie ich benutzername mit zugehöriger gruppe auslesen kann. in einer Domäne

Kommentar von Karran am 28.07.2005 um 12:49

Unter XP ist es möglich, dass mehrere Benutzer gleichzeitig angemeldet sind. Ist es möglich sich nicht nur einen angemeldeten Benutzer, sondern alle anzeigen zu lassen?

Kommentar von Wittecke am 02.12.2004 um 08:26

gibt es dafür nicht, den Namespace
system.environment?
hier stehen doch eigentlich alle daten direkt drin und man braucht keine aufwendige funktion.
mfg
ralfe

Kommentar von Max am 25.08.2004 um 01:59

Danke für den Tip! hat mir geholfen.

Kommentar von Christoph Friedrich am 19.07.2004 um 11:45

warum hast du noch eine funktion "User_LogInState" geschrieben?
das hätte man doch auch statt der select case anweisung nehmen können.
irgendwie ist das nämlich doppelt vorhanden (die abfrage)