wmi 和 API 有什么不同
what is different between wmi and API
我使用 C++ 编程,我用一个例子来理解我的问题的主要部分。
假设,我们想在windows操作系统中获取当前用户名,我们可以使用以下代码:
#include <windows.h>
#include <Lmcons.h>
char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);
此外,我们可以按照 here and use Win32_ComputerSystem.UserName 上解释的说明使用 wmi。
所以,我希望你已经完全理解,wmi 和使用 api 或任何其他方式有什么不同?
感谢您的回复。
Windows Management Instrumentation (WMI) 是 Microsoft 的一组规范,用于整合来自 Windows 计算系统的网络中设备和应用程序的管理。
它是基于 Web 的企业管理的 Microsoft 实现。
WMI - 在 Windows OS 上安装了服务,但可以关闭该服务。因此,如果用户禁用该服务,您将不会获得有关系统的任何信息。它仅用于报告目的。
而 API 是 Microsoft 提供对本地应用程序信息的访问权限的方式,以及一些您还可以操作所提供信息的方式。
WMI 是基于查询的,它的 运行 非常慢,而 API 比 运行 快得多。
例如:- 如果您想在启动前检查应用程序中的某些系统规范,您最好使用 APIs 。这将使您的应用程序启动更快。
WMI 优于 api 调用 WMI 信息更丰富且易于阅读,要获得相同的结果,我们必须进行多次 api 调用。
GetUserName API 只是对 Advapi32.dll 导出的属于基本内核函数的函数的调用。
使用 Win32_ComputerSystem class you are going to query Windows Management Instrumentation,这是一项复杂而全面的基础设施服务,可处理 Windows 上的大部分管理任务。
向 WMI 发布查询涉及更多的资源和执行时间,因此,如果您的目标只是获取 用户名 ,我建议您依赖 GetUserName API.
缺点:
- 速度(主要是劣势)
- 如果用户关闭 wmi 服务,wmi 将无法工作。
优势:
- 包装原生 API
- 更丰富的数据,如果使用wmi,可以获得更丰富的数据
- 标准化,所有'entities'都以标准化的方式表示
这些是使用wmi最重要的问题
我使用 C++ 编程,我用一个例子来理解我的问题的主要部分。
假设,我们想在windows操作系统中获取当前用户名,我们可以使用以下代码:
#include <windows.h>
#include <Lmcons.h>
char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);
此外,我们可以按照 here and use Win32_ComputerSystem.UserName 上解释的说明使用 wmi。
所以,我希望你已经完全理解,wmi 和使用 api 或任何其他方式有什么不同?
感谢您的回复。
Windows Management Instrumentation (WMI) 是 Microsoft 的一组规范,用于整合来自 Windows 计算系统的网络中设备和应用程序的管理。
它是基于 Web 的企业管理的 Microsoft 实现。 WMI - 在 Windows OS 上安装了服务,但可以关闭该服务。因此,如果用户禁用该服务,您将不会获得有关系统的任何信息。它仅用于报告目的。
而 API 是 Microsoft 提供对本地应用程序信息的访问权限的方式,以及一些您还可以操作所提供信息的方式。
WMI 是基于查询的,它的 运行 非常慢,而 API 比 运行 快得多。 例如:- 如果您想在启动前检查应用程序中的某些系统规范,您最好使用 APIs 。这将使您的应用程序启动更快。
WMI 优于 api 调用 WMI 信息更丰富且易于阅读,要获得相同的结果,我们必须进行多次 api 调用。
GetUserName API 只是对 Advapi32.dll 导出的属于基本内核函数的函数的调用。
使用 Win32_ComputerSystem class you are going to query Windows Management Instrumentation,这是一项复杂而全面的基础设施服务,可处理 Windows 上的大部分管理任务。
向 WMI 发布查询涉及更多的资源和执行时间,因此,如果您的目标只是获取 用户名 ,我建议您依赖 GetUserName API.
缺点:
- 速度(主要是劣势)
- 如果用户关闭 wmi 服务,wmi 将无法工作。
优势:
- 包装原生 API
- 更丰富的数据,如果使用wmi,可以获得更丰富的数据
- 标准化,所有'entities'都以标准化的方式表示
这些是使用wmi最重要的问题