2016-10-21 2 views
1

Для приложения, которое я разрабатываю для клиента, мне нужно получить текущие данные пользователя. Затем я должен назначить права, сравнив пару «домен \ login» с таблицей, содержащей всех авторизованных пользователей.UWP: Получить текущее имя пользователя для предоставления прав пользователю

повторно использовать код, указанный на @Sergiu Кожокар here, что я перепутал с официальным образцом (UserInfo), чтобы получить более подробную информацию:

IReadOnlyList<Windows.System.User> users = await Windows.System.User.FindAllAsync(); 

var current = users.Where(u => u.AuthenticationStatus == Windows.System.UserAuthenticationStatus.LocallyAuthenticated && 
           u.Type == Windows.System.UserType.LocalUser).FirstOrDefault(); 

// user may have username 
var data = await current.GetPropertyAsync(KnownUserProperties.AccountName); 
string displayName = (string)data; 

// or may be authenticated using hotmail/outlook 
if (string.IsNullOrEmpty(displayName)) 
{ 
    string firstName = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName); 
    string lastName = (string)await current.GetPropertyAsync(KnownUserProperties.LastName); 
    displayName = string.Format("{0} {1}", firstName, lastName); 
} 

Но на самом деле я только получить «ПгвЬЫат» и "lastName" от "KnownUserProperties". Иное свойство пустеет:

  • ProviderName: нулевой
  • AccountName: нулевой
  • guestHost: нулевой
  • PrincipalName: нулевой
  • Домен: нулевой
  • sipUri: нулевой

=> Это нормально?

Проблема заключается в том, что ожидаемая пара «домен \ Логин» основано на результатах командной строки «Whoami», который не дает тот же результат, что «ПгвЬЫате» и "lastName".

=> Есть ли способ получить тот же результат в приложении?

Уточняю, что я использую учетную запись Hotmail, но счета клиентов должны быть основаны на Active Directory: я не знаю, если это изменит что-нибудь ...

+0

Если вы хотите взять имя пользователя для пользователя, проверьте это http://stackoverflow.com/questions/39949829/uwp-get-path-to-user-download-folder/39972084 # 39972084 – GeralexGR

+1

Спасибо, но это не совсем то, что мне нужно, поскольку это дает только имя пользователя, но не домен ... –

+0

Для domainName и sipUri я могу попасть на свою сторону. Вы присоединились к домену? –

ответ

0

Чтобы получить информацию о домене и пользователей домена изменить

var data = await current.GetPropertyAsync(KnownUserProperties.AccountName); 

в

var data = await current.GetPropertyAsync(KnownUserProperties.DomainName); 

на моей стороне результата: RO M.EUROPE.TECHTEAM.COM \ scojocar

+0

Спасибо @Sergiu Cojocaru. Но, как я уже упоминал в своем первом сообщении, я также попытался использовать решение, указанное в примере UserInfo: все доступные свойства KnownUserProperties были восстановлены, но имеют значение только FirstName и LastName. Интересно, если это не так, я использую личную учетную запись Outlook для входа в Windows. Будет ли это отличаться от учетной записи Active Directory, поскольку конечный клиент должен их использовать? –

+0

, если вы используете его в личном аккаунте, у вас будет имя и фамилия, заполненные вашими данными, когда вы находитесь в домене, ваше имя и фамилия будут пустыми, и только свойство DomainName будет содержать данные о вашем доменном имени и имени пользователя –

+0

Итак, результат нормально? Но как можно восстановить данные «хоста», которые я могу получить с помощью командной строки «whoami», которая дает мне: «host \ username»? –

 Смежные вопросы

  • Нет связанных вопросов^_^