如何唯一标识表面(平板电脑)?我如何获得平板电脑的ID?有一种使用`HardwareIdentification.GetPackageSpecificToken(null)的方法。问题是,它改变了简单的硬件更改,如禁用蓝牙。有没有办法为平板电脑获得独一无二的ID?WindowsRT表面(平板电脑)识别
回答
您可以使用HardwareIdentification.GetPackageSpecificToken(null)
,看到http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
这功能为您提供了大量的信息,你可以过滤,只要你喜欢。例如:
using System.Runtime.InteropServices.WindowsRuntime;
public static string GetMachineId()
{
var hardwareToken =
HardwareIdentification.GetPackageSpecificToken(null).Id.ToArray();
var count = hardwareToken.Length/4;
ulong id = 0ul;
for (int i = 0; i < count; i++)
{
switch (BitConverter.ToUInt16(hardwareToken, i * 4))
{
case 1:
// processor
case 2:
// memory
case 9:
// system BIOS
id = (id << 12)^BitConverter.ToUInt16(hardwareToken, i * 4 + 2);
break;
}
}
return Convert.ToBase64String(BitConverter.GetBytes(id));
}
但是,请记住,这个功能和底层API,不能在所有连接到互联网的设备保证绝对的唯一性。您通常会将其与关于用户的信息结合起来。
另一种方法是在本地(非漫游)存储中生成并存储GUID,并将其用作机器ID。根据你的具体需求,这可能是一个更好的解决方案。
UPDATE
的GUID方法相当简单。刚开始使用
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
"installationId",
CreationCollisionOption.FailIfExists);
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
await fileStream.WriteAsync(installationId.ToByteArray(), 0, 16)
await fileStream.FlushAsync();
}
在随后的运行中生成新的GUID的应用程序使用
Guid installationId = Guid.NewGuid();
运行,那么存储在本地文件中的第一次,你发现该文件是存在的,阅读它。
此方法的一个可能的缺点是,当应用程序被卸载并随后重新安装时,将会生成一个新的GUID。
@KrisVandermotton .as我在我的问题中说过,这种方法不会解决我的问题,因为packagespecificToken是针对您关闭的小硬件更改你的蓝牙 – 2014-09-30 08:29:27
@MigaraKulasekara正如我在我的回答中所说的,你可以过滤这些信息。当添加或删除网络适配器或蓝牙连接时,我显示的功能不会更改其输出。 – 2014-09-30 08:32:24
谢谢@ KrisVandermotten,你能解释一下GUID的方法吗? – 2014-09-30 08:49:27
- 1. CSS - 手机/平板电脑的识别
- 2. 使用Windows平板电脑输入来实现手写识别
- 3. Android平板电脑上的手写识别
- 4. Nexus 7平板电脑无法识别adb
- 5. 如何识别jQuery中的Android手机或平板电脑?
- 6. 平板电脑手写识别:可以用它编程吗?
- 7. Eclipse无法识别我的Android平板电脑
- 8. Android平板电脑?
- 9. Tango平板电脑可以用作普通平板电脑吗?
- 10. 如何让平板电脑仅适用于平板电脑,只适用于手机平板电脑?
- 11. wxPython:平板电脑版
- 12. Sumologic和Android平板电脑
- 13. 开源平板电脑
- 14. jQuery检查平板电脑?
- 15. Drawbitmaps在平板电脑上
- 16. 平板电脑开发
- 17. HTML5:平板电脑绘图
- 18. Android平板电脑Listview
- 19. 检测平板电脑
- 20. 平板电脑检测
- 21. 面向Android平板电脑的Honeycomb面板库(3.2)
- 22. Qt位置偏移表面平板电脑
- 23. Android平板电脑应用模板
- 24. 有图纸识别的平板电脑的任何Diagramm工具吗?
- 25. 如何使页面从桌面识别手机/平板电脑? (无媒体查询)
- 26. 平板电脑上的Youtube面板选项卡
- 27. 平板电脑上的不同视图比笔记本电脑
- 28. Android平板电脑设备无法连接电脑
- 29. Secha touch2:在平板电脑上为表格面板设置背景图片
- 30. 手机和平板电脑的浏览器之间的区别
你的意思是用asp.net标记问题吗?如果是这样,你想做什么? – 2014-09-29 09:39:48
重要的是你需要多长时间ID,但对于大多数目的(仅限于平板电脑,而不是电话),您可以使用['EasClientDeviceInformation.Id'](http://msdn.microsoft.com/zh-cn/library /windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.aspx)。此属性为您提供“MachineID,User SID和Package Family Name”组合的SHA256散列的一半。这将永远不会改变(只要您的套餐系列名称保持不变,它应该),但它会因用户而异,因此它不会唯一标识单个设备。 – 2014-09-29 19:18:12
感谢@ NateDiamond.is有一种方法来识别两个平板电脑,尽管它被多个用户使用 – 2014-09-30 07:47:19