c# - net - visual studio javadoc




Comment puis-je obtenir le nom d'utilisateur actuel dans.NET en utilisant C#? (10)

Essayez la propriété: Environment.UserName .

Comment puis-je obtenir le nom d'utilisateur actuel dans .NET en utilisant C #?


J'ai essayé plusieurs combinaisons à partir des réponses existantes, mais ils me donnaient

DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool

J'ai fini par utiliser

string vUserName = User.Identity.Name;

Ce qui m'a donné le nom d'utilisateur réel du domaine des utilisateurs seulement.


Je seconde totalement les autres réponses, mais je voudrais souligner une autre méthode qui dit

String UserName = Request.LogonUserIdentity.Name;

La méthode ci-dessus m'a renvoyé le nom d'utilisateur au format: DomainName \ UserName . Par exemple, EUROPE \ UserName

Ce qui est différent de:

String UserName = Environment.UserName;

Qui est affiché au format: UserName

Et enfin:

String UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

qui a donné: NT AUTHORITY\IUSR (lors de l'exécution de l'application sur le serveur IIS) et DomainName\UserName (lors de l'exécution de l'application sur un serveur local).


Juste au cas où quelqu'un cherche le nom d'affichage de l' utilisateur par opposition au nom d'utilisateur , comme moi.

Voici le régal:

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName

Ajoutez une référence à System.DirectoryServices.AccountManagement dans votre projet.


Obtenez le nom d'utilisateur Windows actuel:

using System;

class Sample
{
    public static void Main()
    {
        Console.WriteLine();

        //  <-- Keep this information secure! -->
        Console.WriteLine("UserName: {0}", Environment.UserName);
    }
}

Pour une application Windows Forms qui devait être distribuée à plusieurs utilisateurs, dont beaucoup se connectent via VPN, j'ai essayé plusieurs méthodes qui ont toutes fonctionné pour mes tests de machine locale mais pas pour d'autres. Je suis tombé sur un article de Microsoft que j'ai adapté et travaille.

using System;
using System.Security.Principal;

namespace ManageExclusion
{
    public static class UserIdentity

    {
        // concept borrowed from 
        // https://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity(v=vs.110).aspx

        public static string GetUser()
        {
            IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
            WindowsIdentity windowsIdentity = new WindowsIdentity(accountToken);
            return windowsIdentity.Name;
        }
    }
}

Utilisation:

System.Security.Principal.WindowsIdentity.GetCurrent().Name

Ce sera le nom de connexion.


Utilisez System.Windows.Forms.SystemInformation.UserName pour l'utilisateur connecté en tant que Environment.UserName renvoie toujours le compte utilisé par le processus en cours.


Vous pouvez également essayer d'utiliser:

Environment.UserName;

Comme ça...:

string j = "Your WindowsXP Account Name is: " + Environment.UserName;

J'espère que cela a été utile.


essaye ça

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];

maintenant ça a l'air mieux





.net