windows-runtime – 如何在Windows 10周年更新中获取唯一的设备I
以前的
Windows 10迭代有
HardwareToken API (aka ASHWID)来获取设备的唯一标识符,但它有几个缺点:
>它仅适用于桌面和移动平台,它们要求您将Extension SDK添加到项目中(并且在HoloLens或其他平台上不可用) 周年纪念更新中是否有新方法可以获得在所有Windows 10平台上一致的更有用/稳定的ID?我想在我的应用中使用ID来关联来自同一设备的遥测,以用于使用指标和广告.我不会使用该值来识别用户,创建匿名帐户,加密数据或其他任何类似的东西.它仅用于遥测目的. 我想做的事情如下: var id = Windows.Something.GetDeviceId(); // hypothetical OS function var telemetry = MyApp.GetUsageTelemetry(); // my own function // Use (eg) HttpClient to send both id and telemetry to my // cloud infrastructure for processing and correlation SendDataToCloudForProcessing(id,telemetry) 解决方法
Windows 10周年更新推出了新的 >它适用于所有Windows 10平台 >注意:ASHWID现在也可在所有平台上使用,但仍具有上面列出的其他缺点 >它返回一个稳定的值(即使在PC上),由于硬件升级或重新安装操作系统而不会改变 >注意:这对企业方案最有用;如果没有很好的理由,您不太可能拥有使用此功能的Windows应用程序批准的应用程序,因为它代表了隐私问题 API存在一个小缺点:它不适用于某些旧PC,因为它需要UEFI或TPM.在过去5年中构建的大多数PC应该具有此硬件,并且所有其他非PC设备(电话,Xbox,HoloLens等)都具有正确的硬件.如果您发现没有硬件的PC,则需要回退到ASHWID或其他一些机制. 2017年11月3日更新 从Windows Fall Creator的更新(又名1709或RS3或Universal API Contract 5)开始,a new 2017年11月3日结束更新 使用API??很简单;不需要复杂的解析或计算后端的漂移: using Windows.System.Profile; IBuffer GetSystemId() { // This sample gets the publisher ID which is the same for all apps // by this publisher on this device. // Use GetSystemIdForUser if you have the userSystemId capability // and need the same ID across all apps for this user (not // really applicable for apps in the Windows Store) var systemId = SystemIdentification.GetSystemIdForPublisher(); // Make sure this device can generate the IDs if (systemId.Source != SystemIdentificationSource.None) { // The Id property has a buffer with the unique ID return systemId.Id; } // This is a very old PC without the correct hardware. Use // another mechanism to generate an ID (or perhaps just give // up due to the small number of people that won't have the ID; // depends on your business needs). return GetIdFromAshwidOrSomethingElse(); } 如问题中所述,此ID仅应用于后端服务中的关联(例如,用于遥测,广告,使用度量等).它永远不应该用于创建匿名用户帐户,识别或跟踪用户,加密用户数据等.这是因为不同的用户可以共享同一设备,或者同一个用户可以在不同的设备上漫游,因此ID不会t使用用户或他们的数据1:1. 此API可在Universal API Contract v3中找到,可以在Windows Universal SDK版本10.0.14393.0中找到(请记住,如果您正在进行多版本应用并想要点亮此API的使用,则不应该做运行时版本检查;而你应该只是query the OS to see if the API is available). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-7 – 在Ctrl-Alt-Delete桌面上启动特定程序
- 在现代Windows上绘制HWND的最快方法是什么?
- 如何隐藏Win7登录界面的administrator用户名恢复
- windows – inno setup需要有关开始菜单下图标组的帮助
- 如何在Windows 8 Metro(C/XAML)中制作循环/循环ScrollViewe
- .net – 为什么System.Environment.MachineName值大写?
- iis-7.5 – Windows进程激活服务无法启动“参数不正确”(Vi
- windows-server-2008-r2 – 我可以在服务器上运行Excel 201
- windows-phone-7 – windows 7手机 – 关闭键盘
- 你可以在Windows应用程序中使用asp.net会员提供程序吗?