UWP EasClientDeviceInformation.SystemFirmwareVersion 总是 returns 0

UWP EasClientDeviceInformation.SystemFirmwareVersion always returns 0

我正在尝试使用 EasClientDeviceInformation class 在 UWP(通用 Windows 平台)中获取有关桌面或移动设备的信息。在阅读 Documentation 关于 SystemFirmwareVersion 或 SystemHardwarVersion 时,它注意到 "The SystemFirmwareVersion property is retrieved from the registry. If the registry can't be read for any reason, SystemFirmwareVersion is returned as an empty string." 在我的例子中总是 returns 一个空字符串。在阅读有关 UWP 的更多信息时,我发现 UWP 应用程序 运行 处于沙盒模式,因此首先无法访问注册表。

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

有没有办法让 UWP 读取注册表项并将结果提供给所需的方法以使其工作?

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

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

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

"UWP apps [lack] access to registry"不正确,"UWP cannot get access to [CPU, GPU, etc.]."

也不正确

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

您可以使用 Windows.Devices.EnumerationDirectX 等 API 或各种 Win32 API 来获取有关系统的信息。