Получить имя пользователя в приложении Windows 10 С# UWP Universal Windows
Я борюсь с еще одной простой задачей в мире Windows 10 UWP.
Мне просто нужно имя пользователя текущего пользователя Windows. Environment.UserName - это просто не что-то в UWP. И никакого поиска в Интернете пока не удалось. Отсюда мой пост.
Кто-нибудь? Неужели это невозможно сейчас?
Ответы
Ответ 1
- Добавить "Информация о учетной записи пользователя" для вашего приложения в Package.appxmanifest
![Package.appxmanifest, Информация учетной записи пользователя]()
-
Используйте этот код, чтобы получить отображаемое имя пользователя:
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
IReadOnlyList<User> users = await User.FindAllAsync();
var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated &&
p.Type == UserType.LocalUser).FirstOrDefault();
// user may have username
var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
string displayName = (string)data;
//or may be authinticated using hotmail
if(String.IsNullOrEmpty(displayName))
{
string a = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName);
string b = (string)await current.GetPropertyAsync(KnownUserProperties.LastName);
displayName = string.Format("{0} {1}", a, b);
}
text1.Text = displayName;
}
Ответ 2
Как я вижу, существует класс User
(UWP): https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.user.aspx
Попробуйте следующее:
var users = await User.FindAllAsync(UserType.LocalUser);
var name = await users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.AccountName);
Ответ 3
Вы также можете выбрать пользователя, который запустил приложение из Application.OnLaunched, см. здесь.
Вам все равно нужно объявить возможность пользовательской информации в вашем манифесте.
Быстрый пример (Эллипсы обозначают не применимый сгенерированный код):
sealed partial class App : Application
{
...
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
User currentUser = e.User;
...
}
...
}
Ответ 4
// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;
Это даст вам полный домен\имя пользователя.