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.

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).

Ti consigliamo anche

Link copiato negli appunti