Получение имени пользователя Windows в формате «Имя Фамилия», когда пользователь является частью группыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получение имени пользователя Windows в формате «Имя Фамилия», когда пользователь является частью группы

Сообщение Anonymous »

Я пытаюсь получить имя пользователя Windows, вошедшего в систему в данный момент, в формате «Джон Доу». Я не уверен, существует ли для этого общепринятый термин, но подумайте, это имя, которое вы видите, когда открываете меню "Пуск", а не строку, которую вы пишете для входа в систему.
Я начал с просмотра ответов на этот вопрос, но, похоже, они полностью озабочены поиском имени пользователя. Сначала я рассматривал такой обходной путь:

Код: Выделить всё

string GetName(string userName) => string.Join(' ', Regex.Split(userName, @"[A-Z]"));
string name = GetName(Environment.UserName);
Но понял, что это не совсем хорошее универсальное решение, поскольку имена пользователей не имеют формата ^[A-Z]([^A-Z]*)[ A-Z]([^A-Z]*)$ будет форматироваться неправильно или вообще не будет форматироваться.

Код: Выделить всё

GetName("doejohn") // "doejohn"
GetName("RonaldMcDonald") // "Ronald Mc Donald"
Моя следующая остановка была здесь, чтобы посмотреть, смогу ли я найти способ получить значение напрямую из системы, а не вычислять его самостоятельно, и я продвинулся еще дальше: System.DirectoryServices.AccountManagement Теоретически .UserPrincipal.Current.DisplayName кажется именно тем, что мне нужно, и хотя это может работать, а может и не работать в других сценариях, в моем он, похоже, не работает из-за того, что я являюсь частью группы.< /p>

Код: Выделить всё

var name1 = System.Security.Principal.WindowsIdentity.GetCurrent().Name; // "AzureAD\JohnDoe"

var name2 = UserPrincipal.Current.DisplayName;
// System.Exception:
//     Unable to cast object of type 'System.DirectoryServices.AccountManagement.GroupPrincipal'
//     to type 'System.DirectoryServices.AccountManagement.UserPrincipal'.
Моя лучшая идея сейчас, хотя я и зашел в тупик, — использовать GroupPrincipal, если UserPrincipal не работает, но я открыт для других решений, если это неправильно. или против лучших практик.


Подробнее здесь: https://stackoverflow.com/questions/787 ... is-part-of
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»