Ich weiß, dass die folgende Funktion den aktuellen Windows-Benutzernamen im Format Domäne \ Benutzername zurückgibt.Wie bekomme ich den Namen des aktuellen Windows-Benutzers in Benutzername @ Domain-Format?
Convert.ToString(WindowsIdentity.GetCurrent().Name);
Aber wie erhalte ich den Namen des Benutzers in [email protected]
Format?
EDIT:
Ich bin in diesem bearbeiten reagiert wie jeder, der geantwortet hat die gleiche Grundidee hat.
Von dem, was ich gegeben habe zu verstehen, Parsing der Name von domain\username
Format und die Konstruktion als [email protected]
ist nicht sicher oder empfohlen. Ich glaube, das ist so, weil es keine Garantie gibt, dass die beiden Domain-Namen in den verschiedenen Formaten gleich sind. Zum Beispiel in der Firma, in der ich arbeite, der domain
Teil des domain\username
Formats basiert auf departement, aber in [email protected]
, ist es der Firmenname. Es ist die Art von Sache, die eine DNS-Suche erfordert.
Ich hatte gehofft, dass es eine API gab, die diese DNS-Suche durchführte. Ich denke, ich hätte diese Informationen in meine ursprüngliche Frage einfügen sollen. Es tut uns leid.
string[] splitName = WindowsIdentity.GetCurrent().Name.Split('\\');
//check that splitName contains at least 2 values before using
string name = (splitName.Length > 1) ? splitName[1] + "@" + splitName[0] : null;
Es ist wichtig zu beachten, dass ein doppelter Schrägstrich \\
ist erforderlich, da ein Backslash ein Sonderzeichen ist:
Ich verwende C# in meiner Anwendung. –
Die Eigenschaft, nach der Sie suchen, ist der Benutzerprinzipalname (User Principal Name, UPN). –
Versuchen Sie WindowsIdentity.GetCurrent() aufzulisten. Ansprüche, der UPN könnte enthalten sein. Wenn nicht, verwenden Sie P/Invoke, um die TranslateName-Funktion aufzurufen. –