我需要在Windows 8应用程序中获得唯一的设备标识符。 我有几个应用程序,我需要确定安装了一个或多个应用程序的设备ID(例如,为安装其他游戏的游戏玩家的奖金)。 使用下面的方法为我提供了每个应用程序ID,它不会告诉我该设备安装了一些其他应用程序。
我尝试了三种不同的方法,但是它们都在同一台PC上返回不同的UDID。
1)之前使用过,因为我需要每个应用程序唯一的ID,现在我需要UDID,所以这是可以预测的不适合我:
GUID g; std::string ret; CoCreateGuid(&g); Platform::Guid pg(g); std::string udid = WStringToUTF8(pg.ToString()->Data());
2)我已经尝试了EasClienDeviceInformation,这是build议作为一个确定的事情,但得到不同的结果2个应用程序在同一台PC上:
EasClientDeviceInformation^ info = ref new EasClientDeviceInformation; ret = WStringToUTF8(info->Id.ToString()->Data());
3)我尝试了常用的方法来获得ASHWID,没有任何希望,它显然显示了不同的UDID:
auto token = Windows::System::Profile::HardwareIdentification::GetPackageSpecificToken(nullptr); ret = WStringToUTF8(Windows::Security::Cryptography::CryptographicBuffer::EncodeToBase64String(token->Id)->Data()); _RPT1(_CRT_WARN, "TOKEN UDID IS %s \n", ret.c_str());
我只知道一个选项,它是使用MAC地址,但我不知道这是否是一个有效的选项。 用户可以拥有一台可以改变或者复制MAC地址的PC(我曾经听说过批量的中国networking适配器具有相同的地址),或者有一个没有networking的设备(例如,使用没有networking适配器的PC,并且连接使用USBencryption狗到互联网)。
所以问题是:
我做的一切正确吗?或者我犯了一个错误,导致我的例子返回错误的UDID?
我是否有权假定MAC地址是唯一可行的方式来获得一个真正独特的每设备标识符? 我可能一直没有注意到,错过了一些显而易见的方式。
我是否错误地假设了MAC地址识别的不安全感,就像我之前描述的那样?
UPD:我也想知道WP8的正确方法,而我们正在使用它。