Как получить текущее имя пользователя в .NET с помощью C #? - PullRequest
538 голосов
/ 06 августа 2009

Как мне получить текущее имя пользователя в .NET с помощью C #?

Ответы [ 17 ]

806 голосов
/ 06 августа 2009
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
290 голосов
/ 19 декабря 2012

Если вы находитесь в сети пользователей, тогда имя пользователя будет другим:

Environment.UserName
- Will Display format : 'Username'

вместо

System.Security.Principal.WindowsIdentity.GetCurrent().Name
- Will Display format : 'NetworkName\Username'

Выберите нужный формат.

108 голосов
/ 06 августа 2009

Попробуйте свойство: Environment.UserName.

27 голосов
/ 25 января 2013

Документация для Environment.UserName выглядит несколько противоречивой:

Environment.UserName Property

На той же странице написано:

Получает имя пользователя, который в данный момент вошел в операционную систему Windows.

И

отображает имя пользователя, который запустил текущую тему

Если вы тестируете Environment.UserName с помощью RunAs, он выдаст вам имя учетной записи пользователя RunAs, а не пользователя, который первоначально вошел в Windows.

24 голосов
/ 07 октября 2014

Я полностью поддерживаю остальные ответы, но я хотел бы выделить еще один метод, который говорит:

String UserName = Request.LogonUserIdentity.Name;

Приведенный выше метод вернул мне имя пользователя в формате: DomainName \ UserName . Например, EUROPE \ UserName

Что отличается от:

String UserName = Environment.UserName;

Который отображается в формате: Имя пользователя

И наконец:

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

, который дал: NT AUTHORITY\IUSR (при запуске приложения на сервере IIS) и DomainName\UserName (при запуске приложения на локальном сервере).

21 голосов
/ 06 августа 2009

Использование:

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

Это будет имя для входа.

11 голосов
/ 07 августа 2009

Вы также можете попробовать использовать:

Environment.UserName;

Вот так ...:

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

Надеюсь, это было полезно.

9 голосов
/ 28 мая 2014

Я попробовал несколько комбинаций из существующих ответов, но они давали мне

DefaultAppPool
IIS APPPOOL
IIS APPPOOL\DefaultAppPool

В итоге я использовал

string vUserName = User.Identity.Name;

Который дал мне только имя пользователя домена действительного пользователя.

8 голосов
/ 26 января 2014

Используйте System.Windows.Forms.SystemInformation.UserName для фактически вошедшего в систему пользователя, поскольку Environment.UserName по-прежнему возвращает учетную запись, используемую текущим процессом.

5 голосов
/ 19 ноября 2018
String myUserName = Environment.UserName

Это даст вам вывод - your_user_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...