1

現在、WMI を使用するすべてのコードを同等の win32 API 呼び出しに置き換えようとしています。これを行っているのは、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、およびwin32net、win32serviceなどのwin32 APIライブラリを使用して...)。

4

1 に答える 1

4

Q : すべての wmi 呼び出しを置き換えることは可能ですか?

A : ほとんどの WMI クエリは、いくつかの例外を除いて、WinAPI メソッドに置き換えることができます。

Q : 原則として、WMI で利用可能なすべてのタスクは winapi 呼び出しで実行できますか?

A : いいえ、すべての WMI クラスに同等の WinAPI があるわけではありません。たとえば、IIS 関連のタスクは、IIS WMI プロバイダーを使用してのみ実行できます。また、復元ポイントなどを列挙するための WinAPI メソッドもありません。

保留中のタスクには、次の WinAPI メソッドを使用できます。

于 2013-07-15T16:45:46.293 に答える