【问题标题】:Device Unique id in Windows Phone 8.1Windows Phone 8.1 中的设备唯一 ID
【发布时间】:2014-06-12 20:12:56
【问题描述】:

如何在 Windows Phone 8.1 中获取设备唯一 ID?使用 DeviceExtendedProperties.GetValue("DeviceUniqueId") 的旧方式不适用于 Windows 通用应用程序。

【问题讨论】:

标签: c# windows-phone windows-phone-8.1 win-universal-app


【解决方案1】:
private string GetDeviceID()
{
    HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
    IBuffer hardwareId = token.Id;

    HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm("MD5");
    IBuffer hashed = hasher.HashData(hardwareId);

     string hashedString = CryptographicBuffer.EncodeToHexString(hashed);
     return hashedString;
}

希望有帮助!

【讨论】:

  • 为什么要使用 MD5?为什么没有其他算法??
  • 我会将“MD5”替换为HashAlgorithmNames.Md5
  • 你可以用 Convert.ToBase64String 替换 CryptographicBuffer.EncodeToHexString,它会产生更短但仍然可读的字符串。
【解决方案2】:

请注意,当您编写通用应用程序时,它不仅可以安装在手机上。虽然在电话上的硬件配置在技术上是相同的,但在其他设备上它可以改变,因此它的 ID。那就是我认为没有这样的通用方法来获取ID。 (更多信息您可以找到also here)。

你可以看看HardwareIdentification class及其方法GetPackageSpecificToken

HardwareToken myToken = HardwareIdentification.GetPackageSpecificToken(null);
IBuffer hardwareId = myToken.Id;

还有一个Guidance on using the App Specific Hardware ID (ASHWID) to implement per-device app logic

【讨论】:

  • 如果你想使用它你必须记住,当你更改应用签名证书时这个Id会改变
  • @Johniak 感谢您提出这一点。
  • @Romasz HardwareIdentification.GetPackageSpecificToken 取决于包 ID/名称。对于安装在同一设备上的所有应用,是否有任何其他 ID 看起来相同?
  • @KinjanBhavsar 我不确定这样的。
  • @Romasz 你能确认它是否对每个设备都是唯一的(即如果我在两个设备上安装相同的应用程序,我会得到不同的硬件 ID)?另外,如果两个设备相同,那么我们也会得到不同的硬件 ID?
猜你喜欢
  • 1970-01-01
  • 2015-02-20
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2014-07-30
相关资源
最近更新 更多