Windows 8 我能否在Windows 10/Windows 8/WinRT中唯一标识设备

Windows 8 我能否在Windows 10/Windows 8/WinRT中唯一标识设备,windows-8,windows-runtime,Windows 8,Windows Runtime,是否存在唯一标识设备的机制(即使是匿名的) 很清楚,我所说的“设备”是指计算机/板岩/个人电脑 Windows 8.x Windows 10 您必须添加移动和/或桌面扩展SDK 对于Windows 8中的Metro风格的应用程序来说,似乎没有一种方便的方法来获取系统维护的唯一标识符,比如Windows Phone 7随其Microsoft.Phone.Info.DeviceExtendedProperties.GetValue(“DeviceUniqueId”) 到目前为止,我找到的最

是否存在唯一标识设备的机制(即使是匿名的)

很清楚,我所说的“设备”是指计算机/板岩/个人电脑

Windows 8.x

Windows 10

您必须添加移动和/或桌面扩展SDK


对于Windows 8中的Metro风格的应用程序来说,似乎没有一种方便的方法来获取系统维护的唯一标识符,比如Windows Phone 7随其
Microsoft.Phone.Info.DeviceExtendedProperties.GetValue(“DeviceUniqueId”)

到目前为止,我找到的最好的解决方案是简单地生成一个in,并使用该标识符为当前和未来的应用程序发布标识计算机

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Object value = localSettings.Values["uniqueDeviceId"];
if (!value)
{
    value = Guid.NewGuid();
    localSettings.Values["uniqueDeviceId"] = value;
}

请记住,用户可能会删除本地存储,并导致您的应用程序忘记并重新生成该值(甚至可能修改/伪造该值),因此不要出于任何关键安全目的依赖它。由于我仅将此技术用于粗略的统计和使用情况报告,因此这很适合我的需要。

刚刚在Windows 8 RTM中添加了此功能:

Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null)

这是否可以用作登录用户的一致ID

EasClientDeviceInformation.Id | Id属性


返回本地计算机的标识符。Id属性表示使用从MachineID、用户SID和应用Id的SHA256哈希的前16个字节截断的GUID的设备Id,其中MachineID使用本地用户组的SID。GUID的每个组件都以网络字节顺序返回。

例如,如果我的应用程序希望跨设备跟踪同步增量。(如果您想要一个可编程的用例)答案是肯定的,但还没有(在RC中)如果您使用“GetPackageSpecificToken”API,请非常小心“考虑硬件漂移”-请参阅:GUID几乎肯定是唯一的,这正是我建议的解决方案。如果您在同一设备上使用另一个应用程序,此值是否不同?此方法的最大问题是,如果您的应用程序被卸载并重新安装,您将无法复制此Guid来标识设备。谢谢!这似乎是目前为止最好的解决方案。嗨,你们觉得这是一个合适的解决方案吗?我正在为我的应用程序评估此方法。更改应用程序时,此值会更改。如果使用此方法,请非常小心“考虑硬件漂移”-请参阅:
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Object value = localSettings.Values["uniqueDeviceId"];
if (!value)
{
    value = Guid.NewGuid();
    localSettings.Values["uniqueDeviceId"] = value;
}
Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null)