Click here to Skip to main content
15,886,963 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: WMI,gni gni gni gni gni Pin
David Crow14-Sep-05 3:12
David Crow14-Sep-05 3:12 
GeneralRe: WMI,gni gni gni gni gni Pin
toxcct14-Sep-05 3:17
toxcct14-Sep-05 3:17 
GeneralRe: WMI,gni gni gni gni gni Pin
Tcpip200514-Sep-05 3:27
Tcpip200514-Sep-05 3:27 
GeneralRe: WMI,gni gni gni gni gni Pin
toxcct14-Sep-05 3:33
toxcct14-Sep-05 3:33 
GeneralRe: WMI,gni gni gni gni gni Pin
Tcpip200514-Sep-05 3:57
Tcpip200514-Sep-05 3:57 
GeneralRe: WMI,gni gni gni gni gni Pin
Tcpip200514-Sep-05 4:06
Tcpip200514-Sep-05 4:06 
GeneralRe: WMI,gni gni gni gni gni Pin
Tcpip200514-Sep-05 3:22
Tcpip200514-Sep-05 3:22 
GeneralSorry,I'm so sorry.Code here Pin
Tcpip200514-Sep-05 3:53
Tcpip200514-Sep-05 3:53 
#define  _WIN32_DCOM  
#include  <Wbemidl.h>  
#pragma  comment(lib,"Wbemuuid.lib")  
#include  <atlbase.h>  
//#include  "wbemcli.h"  
#include  "objbase.h"  
#include  <windows.h>  
#include  <comutil.h>  
#pragma  comment(lib,  "comsupp.lib")  
void  CreateOneElementBstrArray(VARIANT*  v,  LPCWSTR  s)    
{    	
	SAFEARRAYBOUND  bound[1];    
	SAFEARRAY*  array;    
	bound[0].lLbound  =  0;    
	bound[0].cElements  =  1;    
	array  =  SafeArrayCreate(VT_BSTR,  1,  bound);    
	long  index  =  0;    
	BSTR  bstr  =  SysAllocString(s);    
	SafeArrayPutElement(array,  &index,  bstr);    
	SysFreeString(bstr);    
	VariantInit(v);    
	v->vt  =  VT_BSTR    |  VT_ARRAY;    
	v->parray  =  array;    
}    
HRESULT  __fastcall  UnicodeToAnsi(LPCOLESTR  pszW,  LPSTR*  ppszA)  
{  	
	ULONG  cbAnsi,  cCharacters;  
	DWORD  dwError;  
	
	if  (pszW  ==  NULL)  
	{  
		*ppszA  =  NULL;  
		return  NOERROR;  
	}  
	
	cCharacters  =  wcslen(pszW)+1;  
 
	cbAnsi  =  cCharacters*2;  
	
	*ppszA  =  (LPSTR)  CoTaskMemAlloc(cbAnsi);  
	if  (NULL  ==  *ppszA)  
		return  E_OUTOFMEMORY;  
	

	if  (0  ==  WideCharToMultiByte(CP_ACP,  0,  pszW,  cCharacters,  *ppszA,  
		cbAnsi,  NULL,  NULL))  
	{  
		dwError  =  GetLastError();  
		CoTaskMemFree(*ppszA);  
		*ppszA  =  NULL;  
		return  HRESULT_FROM_WIN32(dwError);  
	}  
	return  NOERROR;  
	
}    
void  PrintWMIError(HRESULT  hr)  
{  
	IWbemStatusCodeText  *  pStatus  =  NULL;  
	HRESULT  hres  =  CoCreateInstance(CLSID_WbemStatusCodeText,  0,  
		CLSCTX_INPROC_SERVER,IID_IWbemStatusCodeText,  (LPVOID  *)  &pStatus);  
	if(S_OK  ==  hres)  
	{  
		BSTR  bstrError;  
		hres  =  pStatus->GetErrorCodeText(hr,  0,  0,  &bstrError);  
		if(S_OK  !=  hres)  
			bstrError  =  SysAllocString(L"Get  last  error  failed");  
		LPSTR  pszStatusTextA;  
		UnicodeToAnsi(bstrError,  &pszStatusTextA);  
		printf("%s\n",pszStatusTextA);  
		CoTaskMemFree(pszStatusTextA);  
		pStatus->Release();  
		SysFreeString(bstrError);  
	}  
}	
HRESULT  ConfigNet()  
{  	
	IWbemLocator  *pLocator=NULL;    
	IWbemServices  *pNamespace=NULL;    
	IWbemClassObject  *pClass=NULL;    
	IWbemClassObject  *pInputParamClass=NULL;    
	IWbemClassObject  *pInputParamInstance=NULL;    
	IWbemClassObject  *  pOutInst  =  NULL;  
	BSTR  InstancePath  =  SysAllocString(L"Win32_NetworkAdapterConfiguration=2");  
	HRESULT  hr;    
	BSTR  Path  =  SysAllocString(L"\\\\MyComputerName\\root\\cimv2");        
	BSTR  ClassPath  =  SysAllocString(L"Win32_NetworkAdapterConfiguration");    
	BSTR  MethodName  =  SysAllocString(L"EnableStatic");    
	LPCWSTR  Arg1Name  =  L"IPAddress";    
	VARIANT  var1;    
	LPCWSTR  Arg2Name  =  L"SubnetMask";    
	VARIANT  var2;    
	__try  
	{  
		CreateOneElementBstrArray(&var1,  L"19.9.20.19");    
		CreateOneElementBstrArray(&var2,  L"255.255.0.0");    
		
		CoCreateInstance(CLSID_WbemLocator,  0,  CLSCTX_INPROC_SERVER,    
			IID_IWbemLocator,  (void**)&pLocator);    
		hr  =  pLocator->ConnectServer(Path,NULL,  NULL,  NULL,  0,  NULL,  NULL,    
			&pNamespace);    
		if(!SUCCEEDED(hr))            
		{
			PrintWMIError(hr);
			return  hr;
		}  
		hr  =  CoSetProxyBlanket(  pNamespace,    
			RPC_C_AUTHN_WINNT,      
			RPC_C_AUTHZ_NONE,    
			NULL,    
			RPC_C_AUTHN_LEVEL_CALL,  
			RPC_C_IMP_LEVEL_IMPERSONATE,    
			NULL,  
			EOAC_NONE);  
		
		if(!SUCCEEDED(hr))            
		{
			PrintWMIError(hr);
			return  hr;
		}  
		if(SUCCEEDED(hr))  
		{
			hr  =  pNamespace->GetObject(ClassPath,  0,  NULL,  &pClass,  NULL);    
		}
		if(!SUCCEEDED(hr))
		{
			PrintWMIError(hr);
			return  hr;
		}    
		if(SUCCEEDED(hr))  
		{
			hr  =  pClass->GetMethod(MethodName,  0,  &pInputParamClass,  NULL);    
		}
		if(!SUCCEEDED(hr))  
		{
			PrintWMIError(hr);
			return  hr;
		}  
		if(SUCCEEDED(hr)) 
		{
			hr  =  pInputParamClass->SpawnInstance(0,  &pInputParamInstance);    
		}
		if(!SUCCEEDED(hr))
		{
			PrintWMIError(hr);
			return  hr;
		}    
		if(SUCCEEDED(hr)) 
		{
			hr  =  pInputParamInstance->Put(Arg1Name,  0,  &var1,  0);    
		}
		if(!SUCCEEDED(hr))
		{
			PrintWMIError(hr);
			return  hr;
		}    
		if(SUCCEEDED(hr))  
		{
			hr  =  pInputParamInstance->Put(Arg2Name,  0,  &var2,  0);    
		}
		if(!SUCCEEDED(hr))
		{
			PrintWMIError(hr);
			return  hr;
		}  
		if(SUCCEEDED(hr))
		{
			hr  =  pNamespace->ExecMethod(InstancePath,  MethodName,  0,  NULL,    
					pInputParamInstance,  &pOutInst,  NULL);    
		}
		if(!SUCCEEDED(hr))
		{
			PrintWMIError(hr);
			return  hr;
		}  
	}  
	__finally  
	{              
		if(pInputParamInstance)  
			pInputParamInstance->Release();    
		if(pInputParamClass)  
			pInputParamClass->Release();    
		if(pClass)  
			pClass->Release();    
		if(pNamespace)  
			pNamespace->Release();    
		if(pLocator)  
			pLocator->Release();    
	}  
	return  hr;  
} 
int  _tmain(int  argc,  _TCHAR*  argv[])  
{  
	
	CoInitialize(NULL);  
	ConfigNet();  
	CoUninitialize();  
	printf("Program  end\n");  
	return  0;  
}

GeneralRe: Sorry,I'm so sorry.Code here Pin
David Crow14-Sep-05 8:41
David Crow14-Sep-05 8:41 
GeneralRe: Sorry,I'm so sorry.Code here Pin
G Haranadh15-Sep-05 1:10
G Haranadh15-Sep-05 1:10 
QuestionSOCKETS SUPPORT Pin
REU14-Sep-05 2:22
REU14-Sep-05 2:22 
AnswerRe: SOCKETS SUPPORT Pin
charlieg14-Sep-05 12:04
charlieg14-Sep-05 12:04 
QuestionHow to settle this problem Pin
momer14-Sep-05 1:17
momer14-Sep-05 1:17 
AnswerRe: How to settle this problem Pin
prasad_som14-Sep-05 1:52
prasad_som14-Sep-05 1:52 
QuestionLogin Dialog! Pin
DerDachs14-Sep-05 1:13
DerDachs14-Sep-05 1:13 
AnswerRe: Login Dialog! Pin
prasad_som14-Sep-05 1:40
prasad_som14-Sep-05 1:40 
AnswerRe: Login Dialog! Pin
ThatsAlok14-Sep-05 18:16
ThatsAlok14-Sep-05 18:16 
GeneralRe: Login Dialog! Pin
prasad_som14-Sep-05 20:41
prasad_som14-Sep-05 20:41 
QuestionHelp using sockets Pin
REU14-Sep-05 1:12
REU14-Sep-05 1:12 
QuestionI've written a service and it can't access mapped network drives. Why? Pin
Member 290251014-Sep-05 1:01
Member 290251014-Sep-05 1:01 
Questionword moving Pin
Balaji Krishna14-Sep-05 0:47
Balaji Krishna14-Sep-05 0:47 
AnswerRe: word moving Pin
Cedric Moonen14-Sep-05 1:02
Cedric Moonen14-Sep-05 1:02 
AnswerRe: word moving Pin
Eytukan14-Sep-05 3:05
Eytukan14-Sep-05 3:05 
GeneralRe: word moving Pin
ThatsAlok14-Sep-05 18:20
ThatsAlok14-Sep-05 18:20 
QuestionAbout Dialog Box : Plz Help Urgent Pin
parims14-Sep-05 0:26
parims14-Sep-05 0:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.