Torno dopo qualche tempo con un nuovo post dedicato alla mia applicazione AppUserList. Nella nuova azienda dove sono approdato da qualche mese, ho trovato nuovi colleghi, tra cui uno in particolare che ha molta più esperienza di me in ambito sviluppo.
Qualche giorno fa gli ho parlato del mio progetto personale, AppUserList, e si è subito reso disponibile nel supportarmi nello sviluppo, con l’obiettivo di aumentarne le funzionalità ed ottimizzarne il funzionamento. Spesso avere “belle idee” non è sufficiente per saperle realizzare al meglio.
Abbiamo dedicato qualche ora del nostro tempo libero (purtroppo poco) a rivedere insieme il codice sorgente dell’agent AULService. Grazie alle sue competenze ho riscritto parte dello stesso per far sì che funzioni meglio, consumando una minor quantità di risorse di sistema.
Ieri sera ho rilasciato in GitHub la nuova versione di AULService v2.0.54 che rimuove l’uso di SQLite come DB di cache locale, sostituendolo con l’uso di Hashtable in memoria.
Tale soluzione permette ad AULService di essere molto più reattivo, meno “goffo” (lavorare continuamente con le Query SQL si è dimostrato non essere agevole quanto sperassi) e, sopratutto, meno esoso di risorse.
Ora AULService lavora in questa modalità:
- All’avvio della macchina viene avviato anche AULService; appena avviato AULService esegue alcune query verso AULMonitor ed effettua il caching dei dati utili all’interno delle Hashtable, mantenute in memoria;
- Dopo aver eseguito il caching delle informazioni, parte il processo continuo che mantiene monitorate le sessioni degli utenti connessi alla macchina in analisi ed inserisce in cache (Hashtable) i dati delle applicazioni avviate dagli utenti stessi (confrontando i dati con ciò che è già presente in cache, evitando doppioni);
- Con cadenza costante, AULService sincronizza questa cache verso AULMonitor, salvando nel DB centrale solo le modifiche rispetto a ciò che ha precaricato nella cache all’avvio. Il processo di monitoraggio delle sessioni sfrutta due funzioni, una che monitorizza le chiavi di registro (come indicato nei post precedenti) ed una seconda che sfrutta la funzione Get-WmiObject Win32_Process, estraendo i processi avviati dall’utente in sessione;
Grazie alla presenza delle due funzioni, ora AULService riesce ad intercettare il 100% degli eseguibili avviati dall’utente, sia applicazioni di terze parti che eseguibili di sistema operativo. Resta poi a disposizione in AULReport la possibilità di escludere dai report eventuali processi non utili ai fini di reportistica.
Grazie al supporto del collega, ho intenzione di rivisitare anche altre parti del tool, per provare a renderlo sempre più utile ed ottimizzato.
- 12 mesi ago Update AULService update