Всем привет! Кто-нибудь использовал WMI на асме? Ну или на Си. Короче, без использования OLE-Variant-типов, заложенных в язык (типа Delphi). Именно через WinAPI интересует технология работы.
Вот например кусок. Если надо отдельным исходником могу оформить. Код (Text): invoke CoInitialize,0 ;invoke CoInitializeSecurity,0,-1,0,0,RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE,0,EOAC_NONE,0 invoke CoInitializeSecurity,0,-1,0,0,RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE,0,EOAC_STATIC_CLOAKING,0 .if eax<>0 & eax<>RPC_E_TOO_LATE pushdata pszErrorCanNotInitializeSecurity,db 'ERROR: CoInitializeSecurity() <> S_OK'\,0x0d\,0x0a\,0 stdcall [.MainWindowInfo.method_write_message],esp popdata .else pushdata pbinCLSID_WbemLocator,MIDL_INTERFACE 4590f811-1d3a-11d0-891f-00aa004b2e24 pushdata pbinIID_WbemLocator,MIDL_INTERFACE dc12a687-737f-11cf-884d-00aa004b2e24 lea eax,[WbemLocator] mov DWORD[eax],0 invoke CoCreateInstance,[pbinCLSID_WbemLocator],0,CLSCTX_INPROC_SERVER,[pbinIID_WbemLocator],eax popdata popdata .if eax <> 0 pushdata pszErrorCanNotCreateWbemLocator,db 'ERROR: CoCreateInstance() <> S_OK'\,0x0d\,0x0a\,0 stdcall [.MainWindowInfo.method_write_message],esp popdata .else pushdata puszWbemPathValue,du 'ROOT\CIMV2'\,0 invoke SysAllocString,esp mov [puszWbemPath],eax popdata lea eax,[WbemServices] mov DWORD[eax],0 cominvk WbemLocator,ConnectServer,[puszWbemPath],0,0,0,0,0,0,eax .if eax <> 0 pushdata pszErrorCanNotConnectServer,db 'ERROR: IWbemLocator.ConnectServer() <> WBEM_S_NO_ERROR'\,0x0d\,0x0a\,0 stdcall [.MainWindowInfo.method_write_message],esp popdata .else pushdata pusWqlValue,du 'WQL'\,0 invoke SysAllocString,esp mov [puszWql],eax popdata pushdata puszQuerySelectValue,du 'Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE'\,0 ;pushdata puszQuerySelectValue,du 'Select * from Win32_NetworkAdapterConfiguration where InterfaceIndex=3'\,0 invoke SysAllocString,esp mov [puszQuerySelect],eax popdata lea eax,[EnumWbemClassObject] mov DWORD[eax],0 cominvk WbemServices,ExecQuery,[puszWql],[puszQuerySelect],WBEM_FLAG_RETURN_IMMEDIATELY,0,eax .if eax <> 0 pushdata pszErrorCanNotExecQuery,db 'ERROR: IWbemServices.ExecQuery() <> WBEM_S_NO_ERROR'\,0x0d\,0x0a\,0 stdcall [.MainWindowInfo.method_write_message],esp popdata О, а даже есть отдельным наброском.
Я пока не смотрел, просто взглядом окинул, не нашёл слова WMI, подумал, что просто OLE. Но потом уже увидел WBEM