System.Management.ManagementClass 替换核心 Clr

Posted

技术标签:

【中文标题】System.Management.ManagementClass 替换核心 Clr【英文标题】:System.Management.ManagementClass Replacement Core Clr 【发布时间】:2015-12-02 19:29:10 【问题描述】:

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

我们查看 CPU、基板和 Bios 详细信息,并将它们用于 各种东西,即识别

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

是的,你是对的。它需要安装 .net 框架 Nuget 包 nuget.org/packages/System.Management 怎么样? 好吧,世界在 4 年内发生了变化 ;) ...我没有检查过,但可能 .NET Core 2+ / .NET 5 实际上在 WINDOWS 上运行这个包。不是Linux。它依赖于注册表。我还没有检查,但如果你这样做,请告诉我们结果;)。但是,总体而言,在您的管理/配置任务中关注 PowerShell。这就是未来。

以上是关于System.Management.ManagementClass 替换核心 Clr的主要内容,如果未能解决你的问题,请参考以下文章