Получить имя пользователя в приложении Windows 10 С# UWP Universal Windows

Я борюсь с еще одной простой задачей в мире Windows 10 UWP.

Мне просто нужно имя пользователя текущего пользователя Windows. Environment.UserName - это просто не что-то в UWP. И никакого поиска в Интернете пока не удалось. Отсюда мой пост.

Кто-нибудь? Неужели это невозможно сейчас?

Ответ 1

  • Добавить "Информация о учетной записи пользователя" для вашего приложения в Package.appxmanifest

Package.appxmanifest, Информация учетной записи пользователя

  1. Используйте этот код, чтобы получить отображаемое имя пользователя:

    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;
    }
    

Ответ 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;

Это даст вам полный домен\имя пользователя.