Pagine

lunedì 25 maggio 2020

Outlook: Individuare i file PST connessi al profilo Outlook tramite registro di sistema

Ogni volta che viene aggiunto un file PST ad Outlook, viene generata una nuova chiave all'interno del registro di sistema. Il nome della chiave, per questioni di sicurezza, viene generato in maniera casuale mentre il percorso e il nome del file PST connesso al profilo Outlook è contenuto all'interno del valore binario 001f6700.

Per ricercare manualmente il valore possiamo avviare l'editor del registro di sistema (regedit.exe) e posizionarci sulla chiave di registro del nostro profilo di posta. Il percorso del profilo varia in base alla versione di Outlook:

Per Outlook 2010 posizionarsi su
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\<nome_profilo_posta>]

Per Outlook 2013 e successivi la chiave di registro contenente il profilo è del tipo
[HKEY_CURRENT_USER\Software\Microsoft\Office\<versione>\Outlook\Profiles\<nome_profilo_posta>]
Ad esempio, per Outlook 2013 è
[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\<nome_profilo_posta>]
mentre per Outlook 2016 la chiave è
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles\<nome_profilo_posta>]


Una volta in posizione possiamo ricercare il valore binario 001f6700
Editor del Registro di sistema, valore 001f6700
FIG 1 - Editor del Registro di sistema, valore 001f6700

Un modo più semplice consiste nell'utilizzare uno script che, fornita la chiave di registro relativa al profilo Outlook, si occupa di individuare tutti i valori 001f6700 e trasformarli da valori binari in stringhe. Di seguito è riportato un semplcie script PowerShell che permette di automatizzare l'operazione.


$keys = Get-ChildItem HKCU:\software\microsoft\office\16.0\OUTLOOK\profiles\Posta -rec -ea SilentlyContinue | Where-Object {(Get-ItemProperty -path $_.PSPath) -match "001f6700"} | select -Property Property, Name, PSPath
foreach($chiave in $KEYS.PSPath){
  $valore = Get-ItemPropertyValue $chiave -Name 001f6700
  [Text.Encoding]::unicode.getString($valore.syncroot) 
}


Per individuare le chiavi di registro che contengono i valori 001f6700 ci avvaliamo dell'utilizzo dei cmdlet Get-ChildItem e Get-ItemProperty. A Get-ChildItem passiamo la chiave di registro relativa al profilo Outlook che vogliamo analizzare (HKCU:\software\microsoft\office\16.0\OUTLOOK\profiles\Posta), indichiamo che la ricerca deve essere effettuata anche sulle sottochiavi (-rec o -recurse) e che in caso di errore intendiamo proseguire senza visualizzare alcun messaggio (-ea SilentlyContinue oppure -ErrorAction SilentlyContinue).
Con la condizione Where-Object e Get-ItemProperty andiamo ad individuare solo le chiavi che contengono valori 001f6700.
Con il ciclo foreach scorriamo tutte le chiavi di registro individuate dall'istruzione precedente, estraiamo il contenuto del valore 001f6700 con Get-ItemPropertyValue e trasformiamo il valore binario in stringa in modo da renderlo leggibile. In output avremo l'elenco dei file PST connessi al profilo di Outlook specificato.





Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.