如何使用MinGW调用WMI

经过几天的searchnetworking(包括MSDN)的方式获得硬件唯一ID使用C ++,我发现我需要使用WMI。 其实我可以find一些很好的例子,就像这个一样。 问题是:我不能使用MinGW进行编译,但使用Microsoft编译器在Visual Studio上运行得很好,但是使用MinGW(我的应用程序编译时)却给了我几十个错误。 这听起来可能是一个老问题,但不幸的是,在search网页后的几天里,我找不到解决scheme。 我在Windows 7上使用MinGW。

Solutions Collecting From Web of "如何使用MinGW调用WMI"

MinGW应该允许你访问Win32 API而不需要Visual Studio。

下面应该用MinGW编译并运行。

#include <windows.h> #include <stdio.h> int main() { SYSTEM_INFO siSysInfo; // Copy the hardware information to the SYSTEM_INFO structure. GetSystemInfo(&siSysInfo); // Display the contents of the SYSTEM_INFO structure. printf("Hardware information: \n"); printf(" OEM ID: %u\n", siSysInfo.dwOemId); printf(" Number of processors: %u\n", siSysInfo.dwNumberOfProcessors); printf(" Page size: %u\n", siSysInfo.dwPageSize); printf(" Processor type: %u\n", siSysInfo.dwProcessorType); printf(" Minimum application address: %lx\n", siSysInfo.lpMinimumApplicationAddress); printf(" Maximum application address: %lx\n", siSysInfo.lpMaximumApplicationAddress); printf(" Active processor mask: %u\n", siSysInfo.dwActiveProcessorMask); return 0; } 

额外的阅读,以帮助您开始。

MinGW不支持WMI。 在MinGW64中有一些努力,但仍然不能完成(例如,错过了wbemuuid.lib)。

有些项目通过从Microsoft WMI SDK或MinGW64(参见这个项目或这个线程的例子)中遗漏了WMI库来扩展MinGW来解决这个问题。

为您的具体任务获取设备UID的另一个解决方案可能是使用MinGW良好支持的Windows安装程序API。 在CodeProject站点上可以找到使用它的一个很好的例子。

查看Microsoft参考

Win API系统信息