Chrome - Come verificare lo stato di una estensione

Le informazioni sullo stato delle estensioni sono raggruppate nel file "Preferences" presente nel percorso %userprofile%\AppData\Local\Google\Chrome\User Data\Default .

 

E' possibile recuperare lo stato di attivazione/disattivazione di un'estensione andando a leggere particolari informazioni contenute in una sequenza di stringhe. Proviamo qui ad utilizzare le espressioni regolari (regular expression) che permettono di generalizzare quanto possibile eventuali informazioni dinamiche all'interno di cotesti con determinate caratteristiche.

 

Vediamo un esempio.

Nel nostro file Preferences abbiamo queste sequenze di stringhe:

"path":"pjkljhegncpnkpknbcohdijeoejaedia\\8.2_1","preferences":{},"regular_only_preferences":{},"state":0

"path":"kglbdihdcnciobeihioplammnkknjmbd\\15.0.2.3123_0","preferences":{},"regular_only_preferences":{},"state":1

 

Si possono notare alcune stringhe fisse, che sono i nomi delle chiavi, a cui corrispondono dei valori. Per il nostro caso partiremo in realtà dall'id dell'estensione, il valore alfabetico molto lungo che si può tranquillamente vedere navigando su chrome alla pagina chrome://extensions/ .

 

La struttura segue quindi questo pattern: ID+\\\\[\d-\.\_]{1,}\W{1,}\w{1,}\W{1,}\{\}\W{1,}\w{1,}\W{1,}\{\}\W{1,}\w{1,}\W{1,}\d{1}  Sono abbastanza certo si possa migliorare ma le espressioni regolari sono sempre state una brutta bestia per gli sviluppatori. 

 

Vediamo adesso il codice del vbscript che consisterà in una funzione che restituisce una stringa che indica se l'estensione è Attiva o Non Attiva.

 

'Program to check Extension Chrome State

'Information about chrome extensions are under %userprofile%\AppData\Local\Google\Chrome\User Data\Default into Preferences file

'Const CHRM_EXT_ID    = "pjkljhegncpnkpknbcohdijeoejaedia"   'Extension ID

Const CHRM_EXT_ID    = "kglbdihdcnciobeihioplammnkknjmbd"   'Extension ID

Const CHRM_STD_PATTERN = "\\\\[\d-\.\_]{1,}\W{1,}\w{1,}\W{1,}\{\}\W{1,}\w{1,}\W{1,}\{\}\W{1,}\w{1,}\W{1,}\d{1}"

Const CHRM_PATH    = "\AppData\Local\Google\Chrome\User Data\Default\"

Const CHRM_PREF_FILE   = "Preferences"

 

'Creation of objects to interact with file and to read the value of %userprofile% environment variable

Dim fso : set fso = createobject("Scripting.FileSystemObject")

Dim myShell : set myShell = WScript.CreateObject("WScript.Shell")

 

'definition and initialization of the variable that will contain the value of the environment variable

Dim usrProfPath : usrProfPath = myShell.ExpandEnvironmentStrings("%userprofile%")

 

'message that give us the information we need.

wscript.echo "Status of " & CHRM_EXT_ID & " is: " & ReadChromeExtensionStatus(CHRM_EXT_ID, CHRM_STD_PATTERN)

 

set myShell = nothing           

set fso = nothing

wscript.quit

 

'CORE: this function returns a string ("Active|NotActive") about the state of the plugin (0=NotActive, 1=Active)

Function ReadChromeExtensionStatus(plugin, ptrn)

Dim strRes : strRes = "Not Active" 'return value of the function - default is "Not Active"

Dim PATTERN_CHROME  : PATTERN_CHROME = plugin & ptrn 'this is the complete pattern to use for the Regular Expression test

 

dim RE : set RE = CreateObject("VBScript.RegExp") 'Regular Expression object

dim colMatch 'the match collection

 

'Open the file Preferences for reading

Dim myFile : set myFile = fso.opentextfile(usrProfPath & CHRM_PATH & CHRM_PREF_FILE, 1)

 

'Create the loop to read the file

Do while not(myFile.AtEndOfStream)

tmpLine = myFile.ReadLine  'it is a looong line 

with RE

.Pattern = PATTERN_CHROME

.IgnoreCase = True

.Global     = True

end with

 

if (RE.Test(tmpLine)) then 'I test if in the line there is almost a match 

set colMatch = RE.Execute(tmpLine) 'load the collection

for m=0 to colMatch.Count-1  'Do a for cycle for each match (there should only be one match)

'the colMatch.Item(0).Value returns all the string, but I need only the last value (0/1)

if int(right(colMatch.Item(m).Value,1)) = 1 then

strRes = "Active"  'update the result

end if

next

end if

Loop  

myFile.close

set myFile = nothing

ReadChromeExtensionStatus = strRes  'return the value

End Function

 

Pag: <<  <   >