我在 Windows 10 UWP 的世界中又遇到了一个简单的任务难题。
我只需要当前 Windows 用户的用户名。在 UWP 中,Environment.UserName 并不存在。无论我在网上搜索多少次,都没有得到帮助。因此,我在此发帖求助。
有人知道吗?现在这个问题有解决办法吗?
我在 Windows 10 UWP 的世界中又遇到了一个简单的任务难题。
我只需要当前 Windows 用户的用户名。在 UWP 中,Environment.UserName 并不存在。无论我在网上搜索多少次,都没有得到帮助。因此,我在此发帖求助。
有人知道吗?现在这个问题有解决办法吗?
使用以下代码获取用户显示名称:
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;
}
<Capabilities> </Capabilities>
之间添加 <uap:Capability Name="userAccountInformation" />
。这是针对 Windows 10 应用程序的,你必须添加这个。但是一旦添加了上述代码(Sergui 的代码),它就可以正常工作了。 - akasoggybunz// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;
我看到有一个可用的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);
var users = User.FindAllAsync(UserType.LocalUser).AsTask().Result; var name = users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.AccountName).AsTask().Result.ToString(); return name;
这段代码对我很有效。 - Timo Treichel但是,您仍需要在清单中声明用户信息功能。
快速示例(省略号表示不适用的生成代码):
sealed partial class App : Application
{
...
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
User currentUser = e.User;
...
}
...
}