Есть код: (проверки на ошибки опустил) | Код |
IWbemLocator *pIWbemLocator = NULL; IWbemServices *pSvc = NULL; HRESULT hr;
hr = CoInitializeEx(0, COINIT_MULTITHREADED); HRESULT hRes = CoCreateInstance ( CLSID_WbemAdministrativeLocator, NULL , CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER , IID_IUnknown , ( void ** ) &pIWbemLocator ) ;
if (SUCCEEDED(hRes)) { hRes = pIWbemLocator->ConnectServer( L"root\\CIMV2", // Namespace NULL, // Userid NULL, // PW NULL, // Locale 0, // flags NULL, // Authority NULL, // Context &pSvc );
pIWbemLocator->Release();
BSTR MethodName = SysAllocString(L"EnableStatic"); BSTR ClassName = SysAllocString(L"Win32_NetWorkAdapterConfiguration");
IWbemClassObject* pClass = NULL; hres = pSvc->GetObject(ClassName, 0, NULL, &pClass, NULL);
IWbemClassObject* pInParamsDefinition = NULL; hres = pClass->GetMethod(MethodName, 0, &pInParamsDefinition, NULL);
IWbemClassObject* pClassInstance = NULL; hres = pInParamsDefinition->SpawnInstance(0, &pClassInstance); BSTR ip = SysAllocString(L"10.0.0.3"); BSTR mask = SysAllocString(L"255.255.0.0");
long index[]={0};
SAFEARRAY *ip_list = SafeArrayCreateVector(VT_BSTR,0,1); SafeArrayPutElement(ip_list,index,ip);
SAFEARRAY *mask_list = SafeArrayCreateVector(VT_BSTR,0,1); SafeArrayPutElement(mask_list,index,mask);
VARIANT arg1; arg1.vt = VT_ARRAY|VT_BSTR; arg1.parray = ip_list; hres = pClassInstance->Put(_T("IPAddress"), 0, &arg1, 0);
VARIANT arg2; arg2.vt = VT_ARRAY|VT_BSTR; arg2.parray = mask_list; hres = pClassInstance->Put(_T("SubNetMask"), 0, &arg2, 0);
pSvc->Release(); } }
|
т.е. через WMI хочу поменять IP, все операции выполняются без ошибок, тока нихрена ничего не меняется :yes-sad:
|