在Windows 10 C#UWP通用Windows应用程序中获取UserName

时间:2015-10-28 14:38:33

标签: c# windows uwp

我正在努力解决Windows 10 UWP世界中的另一项简单任务。

我只需要当前Windows用户的UserName。 Environment.UserName在UWP中不是一个东西。到目前为止,搜索网络的数量都没有帮助。因此我的帖子在这里。

任何?这现在不可能吗?

4 个答案:

答案 0 :(得分:17)

  1. 在Package.appxmanifest中为您的应用添加“用户帐户信息”功能
  2. Package.appxmanifest, 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;
      }
      

答案 1 :(得分:4)

我可以看到,有一个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);

答案 2 :(得分:1)

您也可以通过Application.OnLaunched方法接听启动该应用的用户,请参阅here

您仍然需要在清单中声明用户信息功能。

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

sealed partial class App : Application
{
    ... 
    protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        User currentUser = e.User;
        ... 
    }
    ...
}          

答案 3 :(得分:0)

// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;

这将为您提供完整的域\用户名。