我正在开发一个需要与Windows 10兼容的8.1应用程序。
我正在尝试获取用户登录的用户名,但它总是返回一个emtry字符串。
如何在Windows 10 PC上运行的Windows 8.1商店应用中获取用户的用户名?
Windows.System.UserProfile.UserInformation.GetPrincipalNameAsync()
和
Windows.System.UserProfile.GetDomainNameAsync()
始终返回空字符串
是否有另一种获取用户AD用户名的方法?
答案 0 :(得分:2)
正如UserInformation类文档的备注部分中的说明:
重要 Windows 10或更高版本不支持 UserInformation 类。请改用User课程。
Windows 10:
使用 UserInformation 类为Windows 8编译的应用程序在Windows 10上运行时不再返回用户信息。这是因为在Windows 10中,未经用户明确同意,应用程序无法访问用户信息,与在Windows 8中不同,默认情况下授予此权限。
如果您的Windows 8应用程序使用 UserInformation 类,则应将应用程序迁移到通用Windows平台(UWP)并访问User类。现在,用于访问用户信息的通用Windows平台(UWP)应用程序将声明一个新功能,即uap:userAccountInformation,并调用新的API, Windows.System.User.FindAllAsync 和 User.GetPropertiesAsync ,以获取数据。
如果您在代码中使用UserInformation.NameAccessAllowed属性,则会发现其值为false
。
如果此属性为 false ,则 GetDisplayNameAsync , GetDomainNameAsync , {{3} , GetFirstNameAsync 方法返回一个空字符串,而 GetLastNameAsync 和 GetAccountPicture 方法返回空值。
因此,我认为要在Windows 10上获取用户名,您必须将应用程序迁移到通用Windows平台(UWP)并访问GetSessionInitiationProtocolUriAsync类。有关详细信息,您可以查看GitHub上的User。