掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
「特定の」ネットワークインターフェイスの設置をWMIのメソッドから変更するには? (ID:67277)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> これって、引数を必要なメソッドの場合のみ、GetObject以降が必要になるんですかね? そのようですね。 GetMethod でメソッドの引数の情報を取得して、SpawnInstance で引数オブジェクトのインスタンスを作って、実際の引数は引数オブジェクトのプロパティに設定しているんですね。 クラスもインスタンスも引数もすべて IWbemClassObject なんですね。ややこしいなぁ。 さて、最初に提示されたコードが失敗した理由です。 上記のように、クラスもインスタンスも IWbemClassObject で表されますが、メソッドを持っているのはクラスだけです。 Win32_NetworkAdapterConfiguration.Index='12' という文字列は、Index プロパティでインスタンスを特定していますから、この文字列から GetObject で得られるのはインスタンスです。 インスタンスはメソッドを持たないので失敗していたのですね。 ちなみに、-2147217378 は WBEM_E_ILLEGAL_OPERATION です。 ですから、GetMethod を成功させるためには、クラス名にインスタンスを特定するプロパティをつけず、Win32_NetworkAdapterConfiguration を渡してやればいいわけです。 が、ExecMethod はインスタンスを要求しますから、ExecMethod の第一引数には .Index='XX' をつけてやる必要があります。 その場合に、どのインスタンスに対してメソッドを実行するかを決定するには、何らかの方法でインスタンスを列挙する必要がありますね。 たぶん、IWbemServices::CreateInstanceEnum を使うんだと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.