因此,有很多类似这样的帖子,都是关于获取 Windows 8 设备的唯一标识符的。然而,也认识到标识符会随着各种系统组件的变化而变化。从文档:
硬件漂移是应用程序不应按原样使用 ASHWID 字节流的原因。如果一些硬件组件发生更改或关闭,API 将返回不同的 ASHWID。该应用程序可能会错误地将同一设备识别为新设备。以下是一些可能导致硬件漂移的合理场景:
- 一天快结束时,一位用户想让电池持续到她回家,所以她关闭了蓝牙和 Wi-Fi,同时保持 3G/4G 开启以与云连接。
- 用户插入 USB 3G 数据卡。
- 底层操作系统/片上系统电源管理可能会关闭某些内核。
这是一种非常令人遗憾的状况。文档建议查看 ASHWID(应用程序特定硬件 ID)并对不太可能更改的各种组件进行加权,并忽略(赋予权重 0)可变的事物,例如是否存在扩展坞。但是,我没有看到任何关于如何识别组件的文档。我得到的标识符只是一个数字列表。
有没有更好的方法来获得稳定的唯一设备 ID(如果它是特定于包的,只要它是每个设备/包组合唯一的就可以了)?或者,有人可以向我指出如何识别由生成的令牌中的组件的文档HardwareIdentification.GetPackageSpecificToken
吗?
更新:
解决了组件部分。但仍然对获得稳定 id 的更好方法感兴趣。
字节流由多组四个字节组成。前两个字节包含组件的类型,接下来的两个字节包含值。使用下表确定每个组件的类型: