System.Management.ManagementClass 替换核心 Clr

System.Management.ManagementClass Replacement Core Clr

我有一些代码驻留在 asp.net 应用程序中, 它使用 System.Management.ManagementClass 来查询各种 有关当前存在的硬件的详细信息。

我们查看 cpu、基板和 BIOS 详细信息,并将它们用于 各种事情,即身份证明

所以现在与核心 clr & asp.net 5 交叉平台 我们需要开始移植我们的代码。

然后问题变成了如何实现,因为上面提到的 class 不存在(根据我的搜索)。更具体地说,我们正在寻找一种基于硬件的跨平台工作方法,并为我们提供一种基于当前硬件生成密钥的方法。因此,此密钥唯一会更改的情况是更换设备上的硬件。

命名空间 System.Management 可能永远不会移植到 .NET Core,尤其是跨平台。 System.Management 是 WMI 的包装器,它又是一个 Windows 库,非常绑定到 Windows 平台。据我所知,.NET Core 目前没有任何可用的基于硬件的 ID。

如何实现跨平台:构建一个NuGet包,其中包含同一个合约的两个实现。一个基于 net451,利用您现有的 WMI 代码,另一个使用 Linux 方法读取一些连续剧。在那里做一些研究。 /proc 文件系统应该有一些,但你也可以 P/Invoke 到一些 linux 库。