如何在Windows Phone 8.1中获取设备唯一标识符?

6

我希望为后端服务(ws)获取唯一设备ID,我找到了以下参考资料:

  private string GetDeviceId()
    {
        var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
        var hardwareId = token.Id;
        var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);

        byte[] bytes = new byte[hardwareId.Length];
        dataReader.ReadBytes(bytes);

        return BitConverter.ToString(bytes).Replace("-", "");
    }//Note: This function may throw an exception. 

但是,我无法理解这段代码,每次我都会得到相同的设备ID(64个字符的字符串),我想知道它是否适用? 我在MSDN上也找不到任何参考资料。
谢谢。
1个回答

2
这可能有帮助:
private string GetDeviceID()
{
    HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
    IBuffer hardwareId = token.Id;

    HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);
    IBuffer hashed = hasher.HashData(hardwareId);

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

关于文档,请查看 HardwareIdentification类中的 GetPackageSpecificToken 方法。

你可以使用 HashAlgorithmNames.Md5 代替硬编码的 *"MD5"*。 - Kristian Vukusic
@KristianVukusic 谢谢。我已更新我的答案。 - Stuart
这个PackageSpecificToken在更改硬件配置文件(拔掉蓝牙或其他东西)后会发生变化。我不会依赖它。也许只用于广告目的。 - Tertium
无论如何,如果您使用它,您应该处理它的“漂移”:https://msdn.microsoft.com/zh-cn/library/windows/apps/jj553431.aspx?f=255&MSPPError=-2147217396 - Tertium

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接