UWP EasClientDeviceInformation.SystemFirmwareVersion始终返回0

UWP EasClientDeviceInformation.SystemFirmwareVersion始终返回0,uwp,windows-10-universal,firmware,Uwp,Windows 10 Universal,Firmware,我正在尝试使用EasClientDeviceInformation类在UWP(通用Windows平台)中获取有关桌面或移动设备的信息。阅读有关SystemFirmwareVersion或SystemHardwareVersion的内容时,会注意到“SystemFirmwareVersion属性是从注册表中检索的。如果由于任何原因无法读取注册表,SystemFirmwareVersion将作为空字符串返回。” 在我的例子中,它总是返回一个空字符串。在阅读更多关于UWP的内容时,我发现UWP应用程序

我正在尝试使用EasClientDeviceInformation类在UWP(通用Windows平台)中获取有关桌面或移动设备的信息。阅读有关SystemFirmwareVersion或SystemHardwareVersion的内容时,会注意到“SystemFirmwareVersion属性是从注册表中检索的。如果由于任何原因无法读取注册表,SystemFirmwareVersion将作为空字符串返回。” 在我的例子中,它总是返回一个空字符串。在阅读更多关于UWP的内容时,我发现UWP应用程序以沙箱模式运行,因此首先缺乏对注册表的访问

那么,这种方法是如何从设备中获取信息的呢

有没有办法让UWP读取注册表项并将结果输入到所需的方法中以使其工作

如果可以访问注册表(只读),是否可以检索关于设备的更多信息(如CPU型号、RAM数量、GPU型号等),因为我知道默认情况下UWP无法访问此信息


注意:此应用程序将在有限的设备上供个人使用,因此不需要microsoft的验证,主要是在Surface pro和Windows手机上。

EasClientDeviceInformation中的许多属性取决于设备制造商是否正确设置它们,或者取决于设备是否属于特定类型(特别是,
SystemFirmwareVersion
可能只出现在Windows Phone上,而不是Windows桌面上,在某些情况下甚至可能会丢失)

“UWP应用程序[缺少]对注册表的访问”和“UWP无法访问[CPU、GPU等]”都不是真的

根据政策,UWP应用程序不支持注册表API,因为它们存在可支持性问题(注册表项主要是操作系统的实现细节,而不是应用程序所依赖的)但是,如果您直接调用注册表API,您肯定可以访问。此外,一些注册表项受安全ACL保护,因此您无法读取和/或写入它们

您可以使用诸如
Windows.Devices.Enumeration
DirectX
之类的API或各种Win32 API来获取有关系统的信息