# Guida all’installazione di AppUserList

- Link: https://www.silviobalduzzi.com/2024/11/guida-allinstallazione-di-appuserlist/
- Published: 2024-11-22T11:26:08+01:00
- Author: balduz84

Da un pò di tempo sto lavorando ad una applicazione nominata **AppUserList**, della
quale ho scritto qui diversi post, ma mi sono reso conto che non ho più aggiornato
la guida per come installarla correttamente.

Pertanto ho deciso che fosse ora di dedicare un pò di tempo per descrivere il processo
di installazione, così da renderla più facile da implementare, oltre a definire 
meglio i permessi necessari all’utente di servizio per poter lavorare correttamente.

Lo scopo di AppUserList è permettere agli amministratori di aver chiaro quali applicazioni
stiano utilizzando gli utenti, all’interno degli ambienti VDI o DaaS; aver chiare
queste informazioni può aiutare a comprendere dove sia possibile ottimizzare le 
macchine e comprendere quali software risultino non essere più utilizzati (disinstallandoli
dai desktop virtuali o non installandoli più, in seguito, su nuove postazioni, a
fronte di progetti di migrazione/aggiornamento).

Come descritto anche in precedenza, l’applicazione è composta dalle seguenti componenti:

 * **AULMonitor**: Database SQL dedicato alla storicizzazione delle informazioni;
 * **AULService**: servizio in esecuzione sulle VM Windows, dedicato alla raccolta
   delle applicazioni eseguite dagli utenti;
 * **AULReport**: console dedicata all’analisi dei dati raccolti e alla generazione
   di report;

Di seguito rappresento i flussi di funzionamento dell’applicazione:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-1.
png?resize=760%2C444&ssl=1)

**AULService** è un agente in esecuzione sulle macchine virtuali che erogano Desktop
e/o Applicazioni (per esempio in ambienti Citrix, Parallels RAS, Azure Virtual Desktop,
ecc…) e che ha lo scopo di monitorare l’utilizzo delle applicazioni da parte degli
utenti e comunicare le informazioni raccolte al DB AULMonitor.

**AULMonitor** è un Database SQL, in esecuzione in una istanza SQL Server, che ha
il compito di storicizzare i dati raccolti dai vari AULAgent.

**AULReport** è l’applicazione che permette una visualizzazione e veloce analisi
dei dati raccolti, nonché l’estrazione secondo diversi formati di report previsti.

Di seguito i prerequisiti necessari all’installazione del prodotto:

 * creazione di un utente che deve avere i seguenti permessi:
    - L’utente di servizio deve essere un utente di dominio, ma è sufficiente che
      sia un Domain User (non sono necessari permessi superiori);
    - Deve essere assegnato come db_owner del Database **AULMonitor**;
    - Deve essere amministratore locale delle macchine su cui viene messo in esecuzione
      la componente **AULService**;
 * Istanza SQL Server da cui erogare il DB **AULMonitor**. Non sono necessarie funzionalità
   particolari, per cui è sufficiente una istanza SQL Express;
 * Creazione di un DB vuoto, nominato **AULMonitor**;

Per poter procedere con l’installazione è possibile scaricare le ultime release 
dei pacchetti da me sviluppati, a disposizione nel mio GitHub:

 https://github.com/balduz84/AppUserList

Le versioni delle 3 componenti potrebbero non seguire un processo di avanzamento
di release identico, in quanto potrei, per esempio, pubblicare un aggiornamento 
di **AULReport** senza che esso abbia impatti su **AULService** o **AULMonitor**;
si consiglia per cui di eseguire l’ultima versione di ogni componente pubblicata,
così da avere in funzione la release più aggiornata e con eventuali bug risolti 
nel tempo.

## AULMonitor

Dopo aver creato manualmente il database SQL **AULMonitor**, possiamo eseguire lo
script AULMonitor.sql che si occuperà di generare le tabelle e le viste necessarie:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-2.
png?resize=760%2C441&ssl=1)

Dopo aver eseguito lo script AULMonitor.sql ci si troverà con una struttura del 
Database **AULMonitor** simile a questa:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-3.
png?resize=660%2C1024&ssl=1)

A questo punto possiamo aggiungere l’utente di dominio creato (nel mio caso l’ho
nominato “aulservice”) come utente con permessi sull’istanza SQL Server, ed assegnargli
come Default Schema “dbo” ed il ruolo di “db_owner” del database **AULMonitor**.

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-5.
png?resize=760%2C87&ssl=1)

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-4.
png?resize=760%2C297&ssl=1)

Così facendo stiamo autorizzando l’utente aulservice a lavorare in lettura e scrittura
sul DB **AULMonitor**, senza assegnargli alcun permesso sugli altri eventuali DB
presenti sull’istanza SQL Server.

## AULService

Ora procediamo con l’installazione di AULService.msi all’interno delle macchine 
da monitorare. Tale procedura può essere eseguita singolarmente in ogni VM dedicata
agli utenti, o all’interno delle master image (come nel caso di ambienti Citrix 
PVS o MCS). Installandola nelle master image potremo automaticamente monitorare 
tutte le istanze “figlie”.

L’installazione del pacchetto AULService.msi predispone i file necessari alla configurazione
ed esecuzione del servizio **AULService**, all’interno della posizione C:\Programmi\
Silvio Balduzzi\AULService\:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-6.
png?resize=760%2C255&ssl=1)

Il ruolo dei file presenti è il seguente:

 * AULService.exe – è l’eseguibile che viene avviato nelle VM utenti e che si occupa
   di monitorare le applicazioni avviate dagli utenti e comunicare con **AULMonitor**;
 * AULService-Test.ps1 – è un file powershell che può essere utilizzato per avviare
   AULService.exe in modalità di debug (in seguiro mostrerò come utilizzarlo);
 * TaskScheduler.exe – è un eseguibile che guida nella creazione del Task Scheduler,
   necessario all’avvio di **AULService** all’accensione della macchina;

Dopo aver eseguito l’installazione è necessario avviare manualmente TaskScheduler.
exe, compilati i dati richiesti e premere OK:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-7.
png?resize=760%2C383&ssl=1)

Per esempio, i dati potrebbero essere i seguenti:

 * SQL Server with instance: SERVERDB01\SQLExpress (in certi casi è sufficiente 
   indicare il nome del server, senza il nome dell’istanza, in base a come è stata
   configurata in fase di installazione)
 * Database: AULMonitor
 * TrustCertDB: True o False in base alla validità o meno dei certificati utilizzati
   per la connessione SQL al DB
 * CheckDBConnection: True (False solo per eventuali azioni di Debug mirate)
 * Work Folder: C:\AULService\Logs\ (funzionalità deprecata, ma non ancora rimossa
   dal TaskScheduler.exe)
 * Username: dominio\aulservice
 * Password: ********

Una volta compilati i dati e cliccato su “OK”, verrà automaticamente generato un
Task in Unità di pianificazione di Windows:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-8.
png?resize=760%2C101&ssl=1)

Il Task sarà automaticamente configurato per essere eseguito all’avvio del sistema,
con i permessi dell’utente “aulservice” (che, ricordo, deve essere amministratore
locale delle macchina Windows dove vogliamo eseguire **AULService**). E’ richiesto
il ruolo di amministratore locale per consentire al servizio **AULService** di accedere
a porzioni di registro della macchina, nel quale sono presenti chiavi in contesto
utente.

Prima di procedere con l’installazione “a tappeto” di **AULService** su tutte le
VM, possiamo eseguire il debug da una VM, avviando l’eseguibile tramite l’uso del
file AULService-Test.ps1

Aprendo il file AULService-Test.ps1 con un editor e compilando il contenuto con 
gli stessi dati inseriti in TaskScheduler.exe, potremo eseguire **AULService** in
modalità grafica e vederne il funzionamento; solitamente verrà invece eseguito in
background, senza GUI. E’ opportuno avviarlo tramite l’utente aulservice, sopra 
definito, così da replicare il funzionamento del Task Scheduler:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-9.
png?resize=760%2C439&ssl=1)

Se tutto comunica correttamente, dopo qualche secondo potrete vedere il processo
che scrive nel DB **AULMonitor**, durante la fase “Cache to DB Sync…” (sezione colorata
in viola):

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-10.
png?resize=760%2C439&ssl=1)

Il processo è scritto per analizzare, ogni pochi secondi, le applicazioni degli 
utenti connessi alla VM, scrivendo le informazioni in memoria e scaricandole verso
il DB **AULMonitor** solamente dopo alcuni cicli di esecuzione. Per ottimizzare 
l’applicazione, all’avvio **AULService** esegue la Cache in locale del contenuto
di alcune tabelle specifiche di **AULMonitor**, così da evitare continue query verso
il DB SQL.

Se tutto funziona correttamente, dovremmo iniziare a veder popolate le tabelle in**
AULMonitor**.

Ora possiamo chiudere l’applicazione in modalità Debug ed avviarla tramite il Task
schedulato. In seguito verrà avviata automaticamente all’accensione della VM.

Inizialmente **AULMonitor** potrebbe “subire” tante scritture, in quanto non “conoscerà”
nessuna applicazione. In seguito la cache di **AULService** eviterà l’invio verso**
AULMonitor** di informazioni non necessarie, riducendo le scritture verso il DB.
Nelle prima versioni dell’applicazione eseguivo letture e scritture continue da 
e verso **AULMonitor**, ma ciò causava un consumo maggiore di risorse da parte dell’applicazione**
AULService**.

## AULReport

Come detto, **AULReport** è il pacchetto che si occupa di eseguire le query verso**
AULMonitor** e mostrare i dati raccolti. Esso quindi può essere installato nelle
sole VM degli amministratori che necessitano di analizzare i dati.

Il pacchetto di installazione è AULReport.msi e l’installazione crea questi file:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-11.
png?resize=760%2C211&ssl=1)

Avviando AULReport.exe (di cui viene creato automaticamente un link anche nello 
Start Menu) si verrà guidati nella configurazione del puntamento verso **AULMonitor**
e all’attivazione del tool (free, ma mi piace avere una piccola evidenza di chi 
usa il mio prodotto).

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-12.
png?resize=760%2C597&ssl=1)

L’applicazione deve essere configurata con le stesse informazioni definite in precedenza
per **AULService**, più altri dettagli che vedremo tra poco. Tutte le configurazioni
potranno essere modificate anche in seguito, in caso di necessità.

Dopo aver cliccato su “Save and Close” verrà presentata la finestra di attivazione
della chiave di licenza:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-13.
png?resize=760%2C689&ssl=1)

L’attivazione può essere eseguita in due modalità:

 * Hostname dependent;
 * Hostname independent;

La prima modalità permette di attivare **AULReport** su una singola VM; l’attivazione
avverrà tramite validazione della licenza, in base all’hostname della VM in cui 
è in esecuzione.

La seconda modalità permette di generare un file di licenza che potrà essere utilizzato
su diverse VM in cui andremo ad eseguire **AULReport**.

In entrambi i casi è necessario inserire una email nella sezione alta della finestra
e seguire i passaggi relativi alla tipologia di attivazione definita. In caso di
necessità, in questo post precedente ho descritto come eseguire l’attivazione passo-
passo: [https://www.silviobalduzzi.com/2023/09/appuserlist-v2-2-application-user-list/](https://www.silviobalduzzi.com/2023/09/appuserlist-v2-2-application-user-list/)

Dopo aver configurato **AULReport** ed eseguita l’attivazione, sarà possibile iniziare
ad utilizzarlo, così da poter analizzare i dati raccolti dagli agent **AULService**
in esecuzione sulle VM degli utenti.

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-14.
png?resize=760%2C934&ssl=1)

Sarà quindi possibile eseguire report ed estrarli in formato Excel:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-17.
png?resize=760%2C521&ssl=1)

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-15.
png?resize=760%2C475&ssl=1)

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2024/11/image-16.
png?resize=760%2C418&ssl=1)

Per qualsiasi proposta o segnalazione, vi invito a scrivermi.
