Abrufen des angemeldeten Benutzernamens in C #

8

Wie bekomme ich den aktuell angemeldeten Benutzernamen in Windows 7 (d. h. der Benutzer, der sich physisch an der Konsole angemeldet hat, in der das Programm läuft, das ich starte).

Wenn ich beispielsweise als "MainUser" angemeldet bin und meine Konsolenanwendung (die den angemeldeten Benutzernamen anzeigt) als "SubUser" ausführen, gibt das Programm nur "SubUser" als den aktuell angemeldeten Benutzer zurück.

Ich habe die folgenden zwei Techniken verwendet, um den Benutzernamen zu erhalten. Beide bringen mir nicht das Ding, das ich will.

%Vor%

Beachten Sie jedoch, dass dieser VBScript-Code den angemeldeten Benutzernamen unabhängig vom Benutzerkonto zurückgibt, von dem dieses Skript ausgeführt wird:

%Vor%

Wie ist es in C # möglich?

    
Santhosh 28.10.2010, 06:16
quelle

4 Antworten

6

Ich denke nur die Konvertierung der WMI-Anrufe in c # funktioniert gut für mich.

%Vor%     
Santhosh 02.11.2010, 06:00
quelle
5

Ich denke, du müsstest eine P / Invoke-Route runter gehen. Sie müssen herausfinden, auf welcher WindowStation Ihr Prozess läuft und dann den Besitzer dieser WindowStation bestimmen. Ich denke nicht, dass es eine .NET API gibt, um diese Dinge zu bestimmen.

Win32-APIs, die Sie betrachten sollten, sind wahrscheinlich GetProcessWindowStation und GetUserObjectSecurity , um den Besitzer zu finden.

    
Damien_The_Unbeliever 28.10.2010 06:45
quelle
2

Obwohl ich nicht verstehe, ob Sie den Benutzernamen, wer auf dem System angemeldet ist oder den Benutzernamen, unter dem die Konsole ausgeführt wird - vielleicht können Sie versuchen, System.Environment.UserName verwenden - MSDN behauptet, dass es Zeigt den angemeldeten Benutzernamen an.

    
bernhardrusch 28.10.2010 06:21
quelle
1

Sie möchten den Benutzernamen Ihrer Sitzung. Sie können Ihre Sitzungs-ID ermitteln, indem Sie ProcessIdToSessionId aufrufen. Dann verwenden Sie WTSQuerySessionInformation , um den Benutzernamen herauszufinden.

    
wj32 28.10.2010 07:09
quelle

Tags und Links