【问题标题】:How to call WMI using MinGW如何使用 MinGW 调用 WMI
【发布时间】:2012-04-03 15:52:44
【问题描述】:

在网上搜索了几天(包括 MSDN)寻找使用 C++ 获取硬件唯一 ID 的方法后,我发现我需要使用 WMI。实际上,我也可以找到一些很好的例子,比如this 之一。问题是:我不能使用 MinGW 编译它,但是它在 Visual Studio 上使用 Microsoft 编译器运行得很好,但是使用 MinGW(我的应用程序是用它编译的)它给了我几十个错误。 这听起来可能是一个老问题,但不幸的是,经过几天的网络搜索,到目前为止我还没有找到解决方案。我在 Windows 7 上使用 MinGW。

【问题讨论】:

  • 你在说什么信息? C Win32 API提供了很多从系统获取信息的函数。
  • 你应该自己想清楚你需要使用WMI。没有特别的原因不适用于 MinGW,它只是 COM 调用。这里真正的问题是什么?
  • @SirDarius 信息,例如处理器 ID、主板序列号、MAC 地址。
  • @HansPassant 你说得对,我知道我需要使用 WMI。如果编译器有任何特定配置,请给我一个带有源代码的示例并提供指导。谢谢
  • C++ 示例很容易在 WMI 文档中找到。不需要特殊的编译器配置。你试过这个吗?

标签: c++ windows gcc wmi mingw


【解决方案1】:

MinGW 不支持 WMI。在 MinGW64 中做了一些努力,但仍然不能称为完整(例如,缺少 wbemuuid.lib)。

一些项目通过使用来自 Microsoft WMI SDK 或 MinGW64 的缺失 WMI 库扩展 MinGW 来解决此问题(有关示例,请参见 this projectthis thread)。

获取具体任务的设备 UID 的另一种解决方案可能是使用 MinGW 很好支持的 Windows Setup API。 on CodeProject site 是一个很好的使用示例。

【讨论】:

    【解决方案2】:

    MinGW 应该允许您在不需要 Visual Studio 的情况下访问 Win32 api。

    以下内容应使用 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;
    }
    

    Additional reading to help you get started.

    【讨论】:

      【解决方案3】:

      查看微软参考

      Win API System Information

      【讨论】:

        猜你喜欢
        • 2014-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多