13996 Letture

Controllare la presenza di aggiornamenti software con uno script VBS

Abbiamo ricordato spessissimo quanto sia importante mantenere aggiornati tutti i software che si utilizzano per comunicare in Rete così come i plugin per il browser. "Navigare" in Rete utilizzando software obsoleti può rappresentare una pericolosa minaccia per la sicurezza del personal computer e dei dati in esso memorizzati.
Secunia PSI è un'applicazione gratuita (ved. questa pagina) che permette di stabilire quanti e quali programmi, presenti sul sistema in uso, non siano adeguati all'ultima versione rappresentando, quindi, un potenziale rischio.
Secunia PSI è un software eccellente, indicato soprattutto per coloro che non hanno la consapevolezza di quali applicazioni possono costituire un pericolo se non aggiornate in modo tempestivo.

Presentiamo uno script VBS, destinato principalmente agli amministratori di sistema, che consente di verificare se siano disponibili degli aggiornamenti per alcuni tra i più importanti software.
Lo script deve essere, ovviamente, personalizzato come meglio si crede dal momento che – a scopo esemplificativo – ci siamo limitati ad effettuare un controllo sull'addon Adobe Flash Player per Internet Explorer e gli altri browser aggiungendo poi Pidgin ed il client FTP FileZilla.


La chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall contiene le informazioni per l'eventuale disinstallazione delle applicazioni presenti sul sistema in uso. Controllando il contenuto della chiave con l'Editor del registro, si può ottenere la lista delle applicazioni installate.

Utilizzando dal prompt dei comandi le seguenti due istruzioni, si può ottenere – rispettivamente – il numero di versione corrispondente all'addon di Flash Player per Internet Explorer, Firefox e gli altri browser web:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Activex" /v DisplayVersion
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Plugin" /v DisplayVersion

Il file VBScript che segue (va salvato come file di testo quindi rinominato con estensione .VBS) consente di controllare il contenuto delle chiavi di registro che ospitano l'indicazione relativa al numero di versione di ciascun software quindi di verificare, sul sito web del produttore, se fosse disponibile una release più recente:


messaggio=""
const HKEY_LOCAL_MACHINE = &H80000002
strComputer="."

Function leggiregistro (strKeyPath,strValueName)
	Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
	objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, sValue
	Set objReg=Nothing
	leggiregistro=sValue
End Function

Function leggipagina (url)
	Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
	xmlhttp.open "GET", url, 0
	xmlhttp.send ""
	p=xmlhttp.responseText
	Set xmlhttp=Nothing
	leggipagina=p
End Function

chiave="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
valore="DisplayVersion"

registry_keys=array(chiave+"Adobe Flash Player Activex",chiave+"Adobe Flash Player Plugin",chiave+"Pidgin",chiave+"FileZilla Client")
urls=array("http://www.adobe.com/it/software/flash/about/","http://www.adobe.com/it/software/flash/about/","http://pidgin.im","http://filezilla-project.org/download.php?type=client")
pagina_intera=array(false,false,true,true)
sinizio=array("Internet Explorer (e altri browser che supportano i controlli e i plug-in di Internet Explorer ActiveX)</td>","Firefox, Mozilla, Netscape, Opera (e altri browser basati su plug-in)</td>","","")
sfine=array("</tr>","</tr>","","")
alerts=array("Flash Player per Internet Explorer non è aggiornato. ","Flash Player per Mozilla Firefox, Opera ed altri browser non è aggiornato. ","Pidgin non è aggiornato. ","FileZilla Client non è aggiornato. ")

lungh_array=ubound(registry_keys)

For i=0 to lungh_array
	versione=leggiregistro(registry_keys(i),valore)
	if versione then
		htmlpage=leggipagina(urls(i))

		if pagina_intera(i)=false then
			inizio=instr(htmlpage,sinizio(i))+len(sinizio(i))
			stringa=instr(inizio,htmlpage,sfine(i))

			update=replace(mid(htmlpage,inizio,stringa-inizio),vbcrlf,"")
			update=replace(update,"<td>","")
			update=replace(update,"</td>","")
			update=trim(update)
			
			if instr(update,versione)=0 then messaggio=messaggio+"- "+ alerts(i) +"Versione più recente: "+update+vbcrlf
		else
			update=htmlpage
			if instr(update,versione)=0 then messaggio=messaggio+"- "+ alerts(i) + vbcrlf
		end if

	end if
Next

if messaggio="" then
	WScript.Echo "Tutti i software controllati risultano aggiornati all'ultima versione"
else
	WScript.Echo messaggio
end if



Il funzionamento dello script poggia sul contenuto di alcuni array che contengono, rispettivamente, la chiave del registro da verificare e l'URL remoto al quale connettersi. I successivi array consentono di stabilire se il numero di versione del programma debba essere estratto tra delimitatori ben precisi (tag html) oppure se rilevabile immediatamente cercando all'interno della pagina html completa.

Il confronto tra il numero di versione del software installato localmente e quello annotato sulla pagina web viene effettuato solamente se la chiave del registro è stata rilevata (ossia se il programma risulta installato).


  1. Avatar
    Alex1395
    19/05/2012 13:49:51
    Ciao! Poichè a volte le chiavi di registro non corrispondono con il valore sul sito web, ci sarebbe un modo per salvare la versione di un file, per esempio di un eseguibile, in un altro file o in un valore di registro?
  2. Avatar
    Michele Nasi
    07/04/2011 15:43:03
    Per far funzionare lo script basta fare doppio clic sul file VBS. No, l'update automatico ancora non permette di farlo. E' uno script esemplificativo che ho realizzato rapidamente per mostrare come è possibile effettuare autonomamente, ed in modo molto veloce, controlli circa lo stato di aggiornamento di alcuni componenti od applicazioni molto comuni.
  3. Avatar
    Rrok
    07/04/2011 15:05:40
    si ma come far funzionare questo script?si fa l`update automatico o no?
  4. Avatar
    Alex1395
    27/03/2011 16:04:42
    grazie mille... :D :D :D
  5. Avatar
    Michele Nasi
    25/03/2011 16:59:56
    Ci faccio volentieri la "seconda puntata", Alex :D
  6. Avatar
    Alex1395
    25/03/2011 15:45:26
    è un bellissimo scipt, solo che non è spiegato come trasformare lo scipt in altri casi, come ricercare aggiornamenti per altri programmi. :D :D :D
Controllare la presenza di aggiornamenti software con uno script VBS - IlSoftware.it