C# 从UWP应用程序读取设备序列号和/或IMEI

C# 从UWP应用程序读取设备序列号和/或IMEI,c#,uwp,C#,Uwp,我正在开发一个应用程序,该应用程序将为用于加密各种配置数据的设备获取X.509证书。理想情况下,该证书应包含与采购记录相关的信息。有没有办法从通用windows应用程序中读取设备序列号或IMEI?无法使用电话号码信息获取另一部手机的IMEI,但是您可以获取设备唯一Id using Microsoft.Phone.Info; object uniqueId; var hexString = string.Empty; if (DeviceExtendedProperties.TryGetValu

我正在开发一个应用程序,该应用程序将为用于加密各种配置数据的设备获取X.509证书。理想情况下,该证书应包含与采购记录相关的信息。有没有办法从通用windows应用程序中读取设备序列号或IMEI?

无法使用电话号码信息获取另一部手机的IMEI,但是您可以获取设备唯一Id

using Microsoft.Phone.Info;

object uniqueId;
var hexString = string.Empty;
if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId))
     hexString = BitConverter.ToString((byte[])uniqueId).Replace("-", string.Empty);
        MessageBox.Show("myDeviceID:" + hexString);

一般来说,对于UWP,要获得系统唯一id(不是IMEI),您可能需要签出以下类:

Windows.System.Profile.SystemIdentification

例如:您可以通过以下方式查询唯一的设备id:

var buffer = SystemIdentification.GetSystemIdForPublisher();
根据msdn,其具有以下备注:

ID具有以下特征:

  • 每个系统都是独一无二的
  • 可以脱机创建
  • 在重新启动、操作系统升级/重新安装等过程中持续存在
  • 在硬件修改过程中保持不变
  • 可在一个核心
  • 可在工厂内获得许可证

请注意,返回类型是一个
IBuffer
,并生成一些原始(非字符串式可读)字节,因此您可能需要对其进行序列化

更多信息


我熟悉设备唯一ID,但这缺乏采购记录的基础。我知道,但不幸的是,你无法获得IMEI,它与iOS相同,不再可用@CarlIt可以(尽管可能有点复杂)在iOS上读取序列号和IMEI。所有MDM都这样做。Android和黑莓只需要一个许可来读取这些值。正式地,它是严格禁止的苹果,但也有一些解决办法。@卡尔如果你觉得这个帖子有用,考虑接受答案,以便其他人可以在未来使用它。我们可以用什么来建立以前的周年更新?Windows.System.Profile.HardwareIdentification不可用您是否有权访问周年纪念前系统?我认为这个名称空间比A-update更旧,这可以在这个线程中看到:但是doc的名称空间让我感到困惑。
var buffer = SystemIdentification.GetSystemIdForPublisher();