2016-02-18 88 views
0

我有一个用作LOB应用程序的Windows 8.1应用程序。在Windows 10上运行Windows 8.1应用程序获取用户信息

的应用程序中使用到下面的代码行获得域用户:

string user = await Windows.System.UserProfile.UserInformation.GetDomainNameAsync(); 

这一切工作正常和应用程序部署在众多8.1平板电脑。

不过,我刚刚升级我的PC到Windows 10和该行代码现在返回一个空字符串。

我有一个谷歌,发现这篇文章:https://msdn.microsoft.com/library/windows/apps/windows.system.userprofile.userinformation.aspx

但它的建议只是应用程序升级到Windows 10通用的应用程序或回滚到Windows 8.1。这并不是一个非常好的选择,因为我的平板电脑无处不在运行8.1。

那么,有谁知道如何解决这个问题?这基本上意味着我无法在Windows 10 PC上开发Windows 8应用程序。

回答

0

的UserInformation类不会在Windows 10

请参阅此链接存在了:如果向下滚动到此话,你会发现UserInformation类由User类取代 https://msdn.microsoft.com/library/windows/apps/windows.system.userprofile.userinformation.aspx

的Windows 10:

应用程序编译为Windows 8使用的UserInformation CL当在Windows 10上运行时,昵称为 的用户信息更长。这是 ,因为在Windows 10中,应用程序没有明确的用户许可就无法访问用户信息 ,与默认授予此 权限的Windows 8不同。

如果您有使用UserInformation类的Windows 8应用程序,您应该将您的应用程序迁移到通用Windows平台(UWP),并且 改为访问User类。通用Windows平台(UWP)应用程序 现在预计会声明新的 功能,即uap:userAccountInformation,并调用新的API, Windows.System.User.FindAllAsync和User.GetPropertiesAsync,以获取 的数据。提示

安装应用的用户允许访问其用户 信息。如果用户允许应用程序访问信息, 应用程序将出现在Windows 10设置UI (设置>隐私>帐户信息)的隐私页面中。这使得Windows 10用户可以通过 以每个应用程序为基础访问用户信息。

所以简短的答案是否不可能不改变你的代码。

你可以做的是检查操作系统运行时和落实获取用户信息的2种方式。1适用于Windows 1 Windows 8和1(这样做也使您的应用程序将在Windows上使用10个设备)

How can I detect if my app is running on Windows 10

If app is running Windows 10: use User class 
Else: use UserInformation class. 

为了测试它是如何工作在Windows 8上的Windows 10设备,你可以添加一个Windows 8虚拟机,并在那里测试应用程序。 (不完美,但至少它是东西)

+0

链接在我的问题 – Sun

+0

但链接给你答案。该代码仍然可以编译,但仅适用于Windows 10并且不会返回任何用户信息。在Windows 8.1上,代码仍然会返回正确的用户信息。没有其他办法。 – GeertvdC

+0

所以如果你的问题是有任何其他解决方法的答案是:没有 – GeertvdC

相关问题