获取在Windows 10上运行的Windows 8.1应用程序的用户信息

时间:2016-02-18 07:59:46

标签: windows-store-apps winrt-xaml windows-10-universal

我有一个Windows 8.1应用程序,用作LOB应用程序。

应用程序让域用户使用以下代码行:

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应用程序。

1 个答案:

答案 0 :(得分:0)

Windows 10中不再存在UserInformation类。

查看此链接: https://msdn.microsoft.com/library/windows/apps/windows.system.userprofile.userinformation.aspx

如果向下滚动以注释,您会发现UserInformation类已被User类替换:

  

Windows 10:

     

使用UserInformation类编号为Windows 8编译的应用程序   在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设置用户界面的“隐私”页面中   (设置>隐私>帐户信息)。这允许Windows 10用户   允许基于每个应用程序访问用户信息。

所以简短的回答是不,如果不改变你的代码就不可能。

您可以做的是检查操作系统运行时并实现两种获取用户信息的方法。 1用于Windows 8和1用于Windows 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 10设备上测试它在Windows 8上的工作方式,您可以添加Windows 8 VM并在其中测试应用程序。 (不完美,但至少它是什么)