C# WP8.1功能中缺少ID_CAP_IDENTIY_设备

C# WP8.1功能中缺少ID_CAP_IDENTIY_设备,c#,windows-phone-8,windows-phone-8.1,win-universal-app,C#,Windows Phone 8,Windows Phone 8.1,Win Universal App,为什么Wp8.1中缺少功能ID\u CAP\u IDENTITY\u设备? 由于这个原因,我无法获得与我在WP8中获得的设备ID匹配的设备ID 而这反过来又导致了应用程序升级中的许多问题 现在我用 HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null); IBuffer hardwareId = token.Id; HashAlgorithmProvider hasher = HashAlgorithm

为什么Wp8.1中缺少功能ID\u CAP\u IDENTITY\u设备? 由于这个原因,我无法获得与我在WP8中获得的设备ID匹配的设备ID

而这反过来又导致了应用程序升级中的许多问题

现在我用

HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
IBuffer hardwareId = token.Id;
HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm("MD5");
IBuffer hashed = hasher.HashData(hardwareId);
string DeviceId = CryptographicBuffer.EncodeToHexString(hashed);
return DeviceId ;
以前我们用过,

DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId);
result = (byte[])uniqueId;
string id = Convert.ToBase64String(result).Replace("=", "").Replace("/", "").Replace("+", "");
return id + "";
请建议一个解决方案,以便我们可以在两个平台上获得相似的ID


感谢所有帮助和建议。

如果您正在开发Windows Phone 8.1 XAML应用程序,它将不支持ID\u CAP\u IDENTITY\u设备,因为它可以部署在任何设备上,如手机、平板电脑或桌面。因此,您可以使用HardwareIndentification类来获取设备ID

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;
        }

这可能会有帮助

如果您正在开发Windows Phone 8.1 XAML应用程序,它将不支持ID_CAP_IDENTITY_设备,因为它可以部署在任何设备上,如手机、平板电脑或桌面。因此,您可以使用HardwareIndentification类来获取设备ID

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而不是任何其他算法?@apoorva,因为MD5很快。这不是您试图保护的密码。请注意,通过硬件设置计算生成的任何id都意味着插入U盘、禁用蓝牙或任何与硬件相关的修改都将导致不同的id。哎哟!但为什么是MD5而不是任何其他算法?@apoorva,因为MD5很快。这不是您试图保护的密码。请注意,通过硬件设置计算生成的任何id都意味着插入U盘、禁用蓝牙或任何与硬件相关的修改都将导致不同的id。哎哟!