我使用c ++编程,我用一个例子来理解我的问题的主要内容。
假设我们要在Windows操作系统中获取当前用户名,可以使用以下代码:
#include <windows.h>
#include <Lmcons.h>
char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);
此外,我们可以按照here上的说明使用wmi并使用Win32_ComputerSystem.UserName。
所以,我希望您已完全理解, wmi与使用api或任何其他方式有什么区别?
感谢您的回应。
答案 0 :(得分:2)
缺点:
优势:
这些是使用wmi的最重要问题。
答案 1 :(得分:1)
Windows Management Instrumentation(WMI)是Microsoft的一组规范,用于整合Windows计算系统对网络中设备和应用程序的管理。
它是基于Web的企业管理的Microsoft实现。 WMI-服务已安装在Windows操作系统上,但可以关闭该服务。因此,如果用户禁用了该服务,则不会获得有关系统的任何信息。它仅用于报告目的。
鉴于API是Microsoft提供访问本地应用程序信息的途径,您还可以使用这些API来操纵提供的信息。
答案 2 :(得分:1)
WMI是基于查询的,其运行速度非常慢,而API的运行速度要快得多。 例如:-如果您想在启动前检查应用程序中的某些系统规范,则最好使用API。这将使您的应用启动速度更快。
WMI优于api调用WMI信息更丰富且易于阅读,要获得相同的结果,我们必须进行几次api调用。
答案 3 :(得分:1)
GetUserName API只是对 Advapi32.dll 导出的函数的调用,该函数属于基本内核函数。
您将使用Win32_ComputerSystem class查询Windows Management Instrumentation,这是一项复杂而全面的基础结构服务,可处理Windows上的大多数管理任务。
向WMI发布查询涉及更多的资源和执行时间,因此,如果您的目标只是获取用户名,我建议您依靠 GetUserName API