1

我目前正在寻找用等效的 win32 api 调用替换我所有使用 WMI 的代码。我这样做是因为我注意到 WMI 调用的执行时间比 win32 api 调用要长得多一些例子可以在下面看到:

上市服务:

  • wmi:~4秒
  • winapi:~0.003 秒

列出打印机:

  • wmi:~0.5 秒
  • winapi:~0.009 秒

列出 Windows 用户:

  • wmi:~0.5 秒
  • winapi:~0.2 秒

是否可以替换所有 wmi 调用?作为一般规则,WMI 中可用的每个任务都可以通过 winapi 调用执行吗?

我已经设法替换了我的大部分 wmi 代码,但我还剩下以下内容:

  • 创建还原点
  • 枚举网络适配器
  • 枚举分区

我在枚举网络适配器时遇到了一些困难。

还值得一提的是,我正在使用 python (2.7) 来执行所有这些调用(使用 ctypes、windll 和 win32 api 库,如 win32net、win32service 等......)。

4

1 回答 1

4

:是否可以替换所有 wmi 调用?

:大多数 WMI 查询都可以用 WinAPI 方法替换,但有少数例外。

:作为一般规则,WMI 中可用的每个任务都可以通过 winapi 调用执行吗?

:不,不是所有的 WMI 类都有 WinAPI 等价物。例如,与 IIS 相关的任务只能使用IIS WMI Provider来执行。此外,没有用于枚举还原点的 WinAPI 方法,等等。

对于待处理的任务,您可以使用这些 WinAPI 方法:

于 2013-07-15T16:45:46.293 回答