在 Windows 10 C# UWP Universal Windows 应用程序中获取用户名

Get UserName in a Windows 10 C# UWP Universal Windows app

我正在为 Windows 10 UWP 世界中的另一个简单任务而苦苦挣扎。

我只需要当前 Windows 用户的用户名。 Environment.UserName 不是 UWP 中的东西。到目前为止,网络搜索再多也无济于事。因此我的 post 在这里。

有人吗?现在这不可能吗?

如我所见,有一个 User class 可用 (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);
  1. 在 Package.appxmanifest
  2. 中为您的应用添加 "User Account Information" 功能

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

您还可以从 Application.OnLaunched method see here.

中获取启动应用程序的用户

尽管如此,您仍然需要在清单中声明用户信息功能。

快速示例(省略号表示不适用的生成代码):

sealed partial class App : Application
{
    ... 
    protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        User currentUser = e.User;
        ... 
    }
    ...
}          
// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;

这将为您提供完整的 domain\username。