Wie erhalte ich den aktuellen Benutzernamen in .NET mit C#?
H Environment.UserName
?
Wie erhalte ich den aktuellen Benutzernamen in .NET mit C#?
Option A)
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Option B)
string userName = Environment.UserName
Sie können verwenden Environment.UserDomainName + "\\" + Environment.UserName
um scheinbar das gleiche Ergebnis zu erzielen wie System.Security.Principal.WindowsIdentity.GetCurrent().Name
. Was ist der Unterschied, fragen Sie... Ich bin mir nicht sicher.
Ich brauchte den Benutzer, der die Anwendung ausführt, und nicht den, der angemeldet ist (Environment.UserName ist nicht das, was ich will), also habe ich das Folgende getan, um die Domäne zu entfernen: System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split( '\\' ).Last();
Versuchen Sie die Eigenschaft: Environment.UserName
.
Vorsicht: wie Simon Gillbee in den Kommentaren der akzeptierten Antwort erwähnte, Environment.UsernName
gibt den eingeloggten Kontonamen an, aber WindowsIdentity.GetCurrent().Name
gibt den Kontonamen zurück, unter dem die Anwendung läuft.
Die Dokumentation für Environment.UserName scheint ein wenig widersprüchlich zu sein:
Environment.UserName Eigenschaft
Auf der gleichen Seite heißt es:
Ruft den Benutzernamen der Person ab, die derzeit am Windows-Betriebssystem angemeldet ist.
UND
zeigt den Benutzernamen der Person an, die das aktuelle Thema begonnen hat
Wenn Sie Environment.UserName mit RunAs testen, erhalten Sie den Namen des RunAs-Benutzerkontos und nicht den ursprünglich bei Windows angemeldeten Benutzer.
Ich schließe mich den anderen Antworten voll und ganz an, möchte aber eine weitere Methode hervorheben, die besagt
String UserName = Request.LogonUserIdentity.Name;
Die obige Methode liefert mir den Benutzernamen im Format: Domänenname \UserName . Zum Beispiel, EUROPA \UserName
Das ist etwas anderes als:
String UserName = Environment.UserName;
die in dem Format angezeigt werden: Nutzername
Und schließlich:
String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
die gab: NT AUTHORITY\IUSR
(während die Anwendung auf dem IIS-Server läuft) und DomainName\UserName
(während die Anwendung auf einem lokalen Server läuft).
@TK-421 Request
funktioniert nur, wenn Sie eine Webanwendung sind. Es ist eine Instanz von System.Web.HttpRequest
@GerardoGrignoli - Danke für Ihren Kommentar, ja Request würde nur funktionieren, wenn Sie eine Webanwendung verwenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Im Zusammenhang mit Impersonation kann der Benutzername ein anderer sein als der Benutzername der angemeldeten Benutzersitzung (z. B. Runas oder .Net-Impersonation in verwaltetem Code), siehe Kommentare anderer Benutzer weiter unten