1

我正在将 Windows 10 机器和 Visual Studio 2015 用于具有 Windows 运行时组件和通用 Windows 应用程序 (UWA) 的项目。UWA 参考了 Windows 运行时组件,该组件执行任务以获取登录用户的用户身份(Window NT ID 即“域名/用户名”)。创建 UWA 测试项目以调试运行时组件。如果我们在运行时组件中获取 UserIdentity,那么我们可以使用对我们的 Windows10 cordova 项目的组件引用来获取 javascript 中的 UserIdentity。
在这里,我们面临的问题是没有任何代码可以登录用户的域名/用户名。我们已将此代码从 Windows 8.1 升级到 10,此代码在 Windows 8.1 中运行良好,但在 Windows 10 中出现问题。以下是我们用于获取 UserIdentity 的代码:

public sealed class getNTID
{
    public static IAsyncOperation<string> DownloadAsStringsAsync()
    {

        return Task.Run<string>(async () =>
        {

            IReadOnlyList<User> users = await User.FindAllAsync();

            var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated &&
                                    p.Type == UserType.LocalUser).FirstOrDefault();


            var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);

            return data.ToString();

        }).AsAsyncOperation();
    }
} 

最后我们在数据变量中得到空字符串。如果有人分享他们的经验或者他们在提到的平台上遇到过这种问题,那就太好了。

4

1 回答 1

0

用户类是 Windows 10 的新类,与您使用的 Windows 8.1中的UserInformation不同。访问用户的个人信息是您必须请求的特权,因此在您的商店应用程序的 Package.appxmanifest 中,您需要在“功能”选项卡中启用“用户帐户信息”功能。

当您调用时GetPropertyAsync,您的用户将收到系统的权限提示,如下所示,接受后您可以获得权限。有关功能的更多详细信息,请参考此文档在此处输入图像描述

对于GetPropertyAsync方法,如果属性缺失或不可用,则返回空字符串。因此,如果您已经完成但仍然获得 null 值,则可能是该属性丢失或不可用。

这是我通过运行您的代码来获取DomainName当前用户的结果(我还将代码放在 Windows 运行时组件中)。

在此处输入图像描述

更多细节请参考官方样品

于 2016-12-20T06:01:01.500 回答