2010-04-29 42 views
0

最近,我需要运行Windows平台上的单声道winforms应用程序,但我使用WMI来获取我的原始代码中的MAC地址和CPU ID,切换到Mono for Windows,它不工作。 我发现“System.Management.dll”API没有在Mono中实现。如何使用Mono for windows访问WMI以获取硬件ID?

我该怎么办?如何获取CPU ID,MAC地址,硬盘序列号和主板序列号与WMI?

回答

1

我不希望Mono会实现可以与WMI通信的代码,因为这是一个特定于平台的API。如果您的软件针对的是在Windows上运行,那么为什么不使用Microsoft .Net运行时?是否有一个特定的原因,你必须使用单声道?

最简单的答案就是使用Microsoft运行时(如果可以的话),因为您正在编写非平台无关的代码。

如果您确实必须使用单声道运行时,并且无法使用Microsoft实施System.Management.dll我认为您可能能够通过使用Interop服务获得您想要的。单声道可以与本地库http://www.mono-project.com/Interop_with_Native_Libraries进行交互。也可以通过COM接口使用WMI,Mono也可以这样做,因此您可能需要沿着该路线走下去。 http://www.mono-project.com/COM

Interop和COM都不会像使用System.Management.dll一样简单,但它是一种替代方案。