[ERLEDIGT] Username auslesen (erweitert)

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Lingo.

    [ERLEDIGT] Username auslesen (erweitert)

    Hallo Zusammen

    Ich habe eigentlich ein ganz einfaches Problem.

    Mit folgendem Code kann man ja den angemeldeten Benutzer auslesen:

    Benutzername = My.User.Name

    Wenn ich jedoch meine Applikation als Admin (mit einem anderen Benutzer) ausführe wird nicht mehr der User mit welchem ich bei Windows angemeldet bin angezeigt sondern der mit welchem ich die Applikation ausgeführt habe.

    Wie kann ich den angemeldeten WINDOWS User auslesen?

    Vielen Dank für eure Antowrten!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lingo“ ()

    ist das nicht Environment.UserName
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Hmmm es gibt auch noch Environment.UserDomainName aber ich denke mal da wirst du das gleiche problem haben.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Mal etwas getrickst:
    (New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Personal))).Parent.Name
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @Schamash
    Erhalte nur die Domain.

    @ThePlexian

    Beeindruckender Code jedoch wird auch nur der Benutzer mit welchem die Anwendung gestartet wurde ausgegeben.

    EDIT

    Habe den ganze ObjektBrowser durchsucht und folgenden Code probiert:

    VB.NET-Quellcode

    1. Public Function GetUserName() As String
    2. ' Name des aktuell angemeldeten
    3. ' Benutzers ermitteln
    4. Dim oUser As New WindowsPrincipal(WindowsIdentity.GetCurrent)
    5. ' Rückgabewert: Server\UserName
    6. ' Wir möchten aber nur den Benutzername!
    7. With oUser.Identity.Name()
    8. Return (.Substring(.IndexOf("") + 1))
    9. End With
    10. End Function


    Jedoch immer noch keine Lösung gefunden...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lingo“ ()

    [/ic]@Snaptu Habe ich schon ausprobiert siehe 2 Post über deinem. @xtts02 Endlich geil funktioniert! Habe mich fast zu Tode gesucht :P [b]Lösung:[/b] Referenzieren: [ic]System.Management
    Import: Imports System.Management


    VB.NET-Quellcode

    1. 'Set up the basic scope & object
    2. Dim myScope As ManagementScope = New ManagementScope(ManagementPath.DefaultPath)
    3. Dim myObject As ManagementObject
    4. 'Create the query and the searcher
    5. Dim myQuery As SelectQuery = New SelectQuery("Win32_LoggedOnUser")
    6. Dim mySearcher As ManagementObjectSearcher = _
    7. New ManagementObjectSearcher(myScope, myQuery)
    8. 'Get the collection
    9. Dim queryCollection As ManagementObjectCollection = mySearcher.Get()
    10. 'Loop through each object in the collection
    11. Dim tempObject As ManagementObject
    12. For Each tempObject In queryCollection
    13. 'Get the current object
    14. myObject = New ManagementObject(tempObject("Dependent").ToString)
    15. 'If the user is logged on
    16. If myObject("LogonType").ToString() = "2" Then 'Is logged on
    17. 'Get the proper object
    18. myObject = New ManagementObject(tempObject("Antecedent").ToString)
    19. 'Return the user's name
    20. MessageBox.Show(myObject("Caption").ToString)
    21. End If
    22. Next

    Lingo schrieb:

    Wenn ich jedoch meine Applikation als Admin (mit einem anderen Benutzer) ausführe wird nicht mehr der User mit welchem ich bei Windows angemeldet bin angezeigt sondern der mit welchem ich die Applikation ausgeführt habe.
    Ich weiß nicht, welchen anneren User du dann auslesen willst. Führst du eine Anwendung als Admin aus, dann ist wohl der Admin der User.
    Ich denke er meint das so:

    BenutzerA loggt sich in Windows ein und startet ProgrammXY
    ProgrammXY verlangt Adminrechte also öffnet Windows das UAC-Fenster
    BenutzerA gibt die Logindaten von AdminB ein

    Das Programm wurde jetzt als AdminB gestartet. Der eigentliche aktive Benutzer ist aber BenutzerA
    Ich Antworte nach bestem Wissen und Gewissen. Ich übernehme keine Garantie für die Richtigkeit oder Fehlerfreiheit meiner Texte.


    Ich konnte dir helfen?
    - Das ist schön :) Ich würde mich über ein "Hilfreich" freuen ^^