掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
「特定の」ネットワークインターフェイスの設置をWMIのメソッドから変更するには? (ID:67274)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 WMIをつかって、特定のインターフェイスのネットワークの設定を変更するツ ールを作成しようとしています。 単純にWMIからメソッドを実行する方法についてはMSDNの http://msdn2.microsoft.com/en-us/library/aa390421(VS.85).aspx を参考に実現できたのですが、Win32_NetworkAdapterConfigurationのように、 メソッドを実行するインターフェイスを指定しなければならない場合、どのよ うにすればよいかわからず・・・。 VBScriptなどは Set objShare = objWMIService.Get("Win32_NetworkAdapterConfiguration.Index='12'") といったようにIndexを指定してメソッドを実行できるみたいですが・・・ 試しに IWbemLocator *l_pLoc = NULL; IWbemServices *l_pSvc = NULL; IWbemClassObject *l_pclsObj = NULL; IWbemClassObject *l_pInParamsDefinition = NULL; BSTR l_Class = SysAllocString(L"Win32_NetworkAdapterConfiguration.Index='1'"); BSTR l_Method = SysAllocString(L"EnableDHCP"); if(FAILED(CoInitializeEx(0, COINIT_MULTITHREADED))) { SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } else { if(FAILED(CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL))) { CoUninitialize(); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } } if(FAILED(CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &l_pLoc))) { CoUninitialize(); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } //WMIに接続 if(FAILED(l_pLoc->ConnectServer( _bstr_t(L"ROOT\\CIMV2"), NULL, NULL, _bstr_t(L"MS_409"), NULL, 0, 0, &l_pSvc))) { InitObj(l_pLoc); //オブジェクトをReleaseするためのマクロを定義しています CoUninitialize(); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } if(FAILED(CoSetProxyBlanket(l_pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE))) { InitObj(l_pSvc); InitObj(l_pLoc); CoUninitialize(); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } if(FAILED(l_pSvc->GetObject(l_Class, 0, NULL, &l_pclsObj, NULL))) { InitObj(l_pclsObj); InitObj(l_pSvc); InitObj(l_pLoc); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } if(FAILED(l_pclsObj->GetMethod(l_Method, 0, &l_pInParamsDefinition, NULL))) { InitObj(l_pInParamsDefinition); InitObj(l_pclsObj); InitObj(l_pSvc); InitObj(l_pLoc); SysFreeString(l_Method); SysFreeString(l_Class); return FALSE; } ・・・・もろもろの処理 CoUninitialize(); というように作成しているのですが(中途半端にはしょっていてすみません)、 GetMethodの部分で失敗してしまいます。 戻り値を確認したところ-2147217378となっていました。 http://msdn2.microsoft.com/en-us/library/aa391443(VS.85).aspx にあるGetMethodの戻り値と比較してみたのですが、該当する値が見つからず ・・・。 このようなあるWMIオブジェクトにおいて「特定の」ものに対してのみメソッ ドを実行する場合はどのようにすればよいのでしょうか? 参考になるURLなどだけでもよいので、ご存じの方いらっしゃいましたらご教 授いただけますでしょうか? 開発環境はWindows XP Pro With SP4、Visual Studio.NET 2003 Enterprise です。 お手数をおかけしますが、よろしくおねがいいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.