UPCleaner un tool per l’eliminazione ed il clear dei profili utente

L’eliminazione dei profili utente è un’operazione che non deve essere fatta eliminando la relativa directory in Documents and Settings o in Users, ma va utilizzato i tab Avanzate dell’applet Sistema del Pannello di controllo per eliminare anche i riferimenti del profilo nel registro di sistema.

A volte nasce però l’esigenza di eliminare un certo numero di profili utente e di farlo in modo automatizzato. Questo può accadere in ambienti Remote Desktop Services dove può essere necessario eliminare profili utenti di account dismessi che altrimenti occuperebbero spazio.

In Windows 2000, Windows XP e Windows Server 2003era disponibile l’utility Delprof.exe che permetteva l’eliminazione di profili locali e roaming inutilizzati da un certo numero di giorni. Per i dettagli sull’utilizzo si veda How To Delete User Profiles by Using the User Profile Deletion Utility (Delprof.exe) in Windows 2000.

Tale utility non più supportata in Windows Server 2008, Windows Vista, Windows 7 e Windows Server 2008 R2.

Ho quindi deciso di creare UPCleaner un tool basato sul .NET Framework 2.0 che è possibile scaricare al seguente link UPCleaner Download.

[Update 01]

Il tool è adesso disponibile anche come progetto su CodePlex al seguente link http://upcleaner.codeplex.com.

L’utility può essere avviata senza parametri per operare tramite interfaccia grafica e configurarne la modalità di utilizzo.

image

E’ possibile impostare la visualizzazione dei soli profili utenti non utilizzati da un numero di giorni prefissati ed escluderne alcuni (per esempio i profili utenti di account amministrativi).

image

Le impostazioni permettono di abilitare il log su file (creati nella directory del tool) e se utilizzare un unico file di log o se creare un log per ogni esecuzione mantenendone un numero prefissato (i log storicizzati saranno rinominati in .1, .2 e così via)

image

Oltre all’eliminazione del profilo utente esiste anche la modalità di clear delle subdirectory dello stesso

image

In questa modalità verranno eliminati i file e le subdirectory specificate dei profili che risultano non utilizzati per il numero di giorni impostato.

image

Ovviamente per funzionare correttamente l’utility deve essere eseguita con privilegi amministrativi.

E’ possibile eseguire l’utility senza visualizzare l’interfaccia grafica avviandola da riga di comando con il parametro /b.

Dettagli Tecnici

  • La ricerca dei profili avviene mediante l’esplorazione della chiave di registry HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
  • L’individuazione della data di ultimo utilizzo del profilo utente avviene utilizzando le chiavi di registro HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfileLoadTimeLow e HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfileLoadTimeHigh o nel caso queste siano a 0 (per esempio nel caso di avvio di sessioni RDP che aprano un’applicazione e non un ambiente desktop) viene utilizzato la data di ultimo accesso alla directory TEMP del profilo.
  • L’eliminazione del profilo avviene invocando l’API DeleteProfile.
  • Il profilo dell’utente con tramite cui viene eseguito il tool e i profili il cui SID non iniziano per S-1-5-21 non vengono presi in considerazione (ciò permette di escludere gli account di sistema per maggiori informazioni sui SID si veda Well-known security identifiers in Windows operating systems).