Ah ! le fou.... (utilisation de WMI et WBEM de Microsoft)

Programmation d'applications complexes
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Ah ! le fou.... (utilisation de WMI et WBEM de Microsoft)

Message par Golfy »

Bonjour !

Purebasicien depuis peu, je m'intéresse à la détection de l'état des antivirus, firewall et Windows update. Je voudrais avoir les mêmes informations que celles fournies par le Centre de Sécurité Micro$oft (désolé pour le $, une veille habitude qui m'a échappée ;) ).

Après recherche, j'ai compris que je devais m'orienter vers le WMI et WBem (qui sont en gros, une sorte de système SNMP orienté par et pour Microsoft)... malheureusement, je ne sait pas quelle classe est employée et c'est tellement gros qu'avant de me palucher ça à la main, j'espérai que l'un d'entre vous aurait une petite suggestion ou astuce à me passer :roll:

Merci d'avance,
Golfy
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

teste Scriptomatic2.exe
qui te renvoie des infos wmi via vbs

lance le vbs avec ça ( code pas de moi & à modifier )
tu récupère les infos et youpla

Code : Tout sélectionner

; Redirect Outputs into Memory 
; coded by Siegfried Rings march 2002 
; redirected the pipes 
; 
;see http://support.microsoft.com/default.aspx?scid=kb;EN-US;q173085 
; 

mCommand.s="net start" 

;Structure used by the CreateProcessA function 
;another then that Fred implemented ! 
Structure MySTARTUPINFO 
  cb.l 
  lpReserved.l 
  lpDesktop.l 
  lpTitle.l 
  dwX.l 
  dwY.l 
  dwXSize.l 
  dwYSize.l 
  dwXCountChars.l 
  dwYCountChars.l 
  dwFillAttribute.l 
  dwFlags.l 
  wShowWindow.w 
  cbReserved2.w 
  lpReserved2.l 
  hStdInput.l 
  hStdOutput.l 
  hStdError.l 
EndStructure 

proc.PROCESS_INFORMATION ;Process info filled by CreateProcessA 
ret.l ;long variable For get the Return value of the 
start.MySTARTUPINFO ;StartUp Info passed To the CreateProceeeA 
sa.SECURITY_ATTRIBUTES ;Security Attributes passeed To the 
hReadPipe.l ;Read Pipe handle created by CreatePipe 
hWritePipe.l ;Write Pite handle created by CreatePipe 
lngBytesread.l ;Amount of byte Read from the Read Pipe handle 
strBuff.s=Space(256) ;String buffer reading the Pipe 

;Consts For functions 
#NORMAL_PRIORITY_CLASS = $20 
#STARTF_USESTDHANDLES = $100 
#STARTF_USESHOWWINDOW = $1 

;Create the Pipe 
sa\nLength =SizeOf(SECURITY_ATTRIBUTES) ;Len(sa) 
sa\bInheritHandle = 1 
sa\lpSecurityDescriptor = 0 
ret = CreatePipe_(@hReadPipe, @hWritePipe, @sa, 0) 
If ret = 0 
  ;If an error occur during the Pipe creation exit 
  MessageRequester("info", "CreatePipe failed. Error: ",0) 
  End 
EndIf 


start\cb = SizeOf(MySTARTUPINFO) 
start\dwFlags = #STARTF_USESHOWWINDOW | #STARTF_USESTDHANDLES 

;set the StdOutput And the StdError output To the same Write Pipe handle 
start\hStdOutput = hWritePipe 
start\hStdError = hWritePipe 

;Execute the command 
ret = CreateProcess_(0, mCommand, sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc) 

If ret <> 1 
  MessageRequester("Info","File Or command not found", 0) 
  End 
Else 
  ;MessageRequester("Info","PRG started..:",0) 
EndIf 


;Now We can ... must close the hWritePipe 
ret = CloseHandle_(hWritePipe) 

mOutputs.s = "" 

;Read the ReadPipe handle 
While ret<>0 
  ret = ReadFile_(hReadPipe, strBuff, 255, @lngBytesread, 0) 
  If lngBytesread>0 
    mOutputs = mOutputs + Left(strBuff, lngBytesread) 
  EndIf 
Wend 

;Close the opened handles 
ret = CloseHandle_(proc\hProcess) 
ret = CloseHandle_(proc\hThread) 
ret = CloseHandle_(hReadPipe) 
;ret=CloseHandle_(hWritePipe) 

;Return the Outputs property with the entire DOS output 
MessageRequester("Info",mOutputs,0)
Répondre