2

因此,有很多类似这样的帖子,都是关于获取 Windows 8 设备的唯一标识符的。然而,也认识到标识符会随着各种系统组件的变化而变化。从文档

硬件漂移是应用程序不应按原样使用 ASHWID 字节流的原因。如果一些硬件组件发生更改或关闭,API 将返回不同的 ASHWID。该应用程序可能会错误地将同一设备识别为新设备。以下是一些可能导致硬件漂移的合理场景:

  • 一天快结束时,一位用户想让电池持续到她回家,所以她关闭了蓝牙和 Wi-Fi,同时保持 3G/4G 开启以与云连接。
  • 用户插入 USB 3G 数据卡。
  • 底层操作系统/片上系统电源管理可能会关闭某些内核。

这是一种非常令人遗憾的状况。文档建议查看 ASHWID(应用程序特定硬件 ID)并对不太可能更改的各种组件进行加权,并忽略(赋予权重 0)可变的事物,例如是否存在扩展坞。但是,我没有看到任何关于如何识别组件的文档。我得到的标识符只是一个数字列表。

有没有更好的方法来获得稳定的唯一设备 ID(如果它是特定于包的,只要它是每个设备/包组合唯一的就可以了)?或者,有人可以向我指出如何识别由生成的令牌中的组件的文档HardwareIdentification.GetPackageSpecificToken吗?

更新:

解决了组件部分。但仍然对获得稳定 id 的更好方法感兴趣。

字节流由多组四个字节组成。前两个字节包含组件的类型,接下来的两个字节包含值。使用下表确定每个组件的类型:

4

1 回答 1

1

您是否尝试过使用Receipts API。文档表明它在“Receipt”元素下有一个设备标识符“ReceiptDeviceId”。唯一的问题是 API 仅在用户登录到商店时才有效。

于 2012-11-10T19:32:58.337 回答