Windows XP e il trucco nascosto dell'avatar dopo 25 anni: confronto con Windows 11

Raymond Chen svela come Windows XP sceglieva casualmente l'avatar dei nuovi account. Windows 11 usa oggi un sistema molto più articolato.
Windows XP e il trucco nascosto dell'avatar dopo 25 anni: confronto con Windows 11

Sembrava una scelta puramente estetica, quasi irrilevante. In realtà, dietro l’immagine assegnata automaticamente a un nuovo account di Windows XP c’era un piccolo algoritmo progettato con una certa attenzione all’efficienza. Raymond Chen, storico sviluppatore Microsoft e autore del blog The Old New Thing, ci delizia di una nuova curiosità sui sistemi operativi che hanno fatto la storia di Microsoft.

In risposta al noto leaker XenoPanther, Chen ha voluto ricostruire il funzionamento del meccanismo: Windows non associava l’avatar al nome dell’utente, al sesso, alla lingua o ad altre caratteristiche del profilo. Lo sceglieva a caso. E lo faceva con una tecnica algoritmica piuttosto curiosa.

Windows XP arrivò sul mercato il 25 ottobre 2001 e introdusse un’interfaccia molto più orientata alla personalizzazione rispetto ai predecessori destinati al grande pubblico.

La schermata di accesso mostrava gli account attraverso nomi e immagini colorate; nella configurazione standard Microsoft distribuiva 21 possibili immagini. A distanza di 25 anni scopriamo con precisione anche come il sistema decideva quale assegnare alla creazione di un account. La curiosità acquista ulteriore significato se confrontata con Windows 11, dove l’immagine utente esiste ancora ma dietro quella piccola icona lavora un’infrastruttura decisamente più articolata.

Windows XP pescava l’immagine da una cartella condivisa

Gli avatar predefiniti, nel caso di Windows XP, risiedevano nella directory %ALLUSERSPROFILE%\Application Data\Microsoft\User Account Pictures\Default Pictures. Durante la creazione dell’account, Windows scorreva i file disponibili e ne selezionava uno casualmente.

Chen aveva già raccontato questo particolare nel 2004, dopo che un utente aveva interpretato l’assegnazione di una determinata immagine come una decisione intenzionale del sistema operativo. In realtà non esisteva alcuna associazione semantica tra nome dell’account e avatar: tra le 21 immagini disponibili, il generatore casuale ne aveva semplicemente favorita una.

La spiegazione pubblicata da Chen a settembre 2026 aggiunge però il dettaglio che mancava: quale generatore veniva utilizzato e, soprattutto, come Windows effettuava la selezione senza dover prima conoscere il numero totale dei file.

Generazione di un numero pseudocasuale

Il codice utilizzava RtlRandomEx, una routine Windows che genera una sequenza pseudocasuale a partire da un valore iniziale, il cosiddetto seed.

Windows XP inizializzava il generatore di numeri casuali usando il valore restituito da GetTickCount(). La funzione fornisce il numero di millisecondi trascorsi dall’avvio del sistema e restituisce un DWORD a 32 bit. Il contatore torna quindi a zero dopo circa 49,7 giorni di funzionamento continuo; inoltre la sua risoluzione effettiva dipende dal timer di sistema e Microsoft indica tipicamente valori nell’ordine di 10-16 millisecondi.

Non stiamo parlando di casualità crittograficamente sicura: conoscendo o restringendo abbastanza il momento di esecuzione, un seed derivato dal tempo trascorso dall’avvio risulta relativamente prevedibile.

Per scegliere un avatar da abbinare all’account, però, non serviva alcuna proprietà crittografica; usare un generatore molto più costoso avrebbe soltanto complicato un’operazione priva di conseguenze in termini sicurezza.

Perché Windows XP non contava prima tutte le immagini

La parte più interessante riguarda il metodo usato per scegliere l’immagine per l’account. Una soluzione intuitiva sarebbe stata questa: enumerare l’intera directory, contare le immagini, estrarre un numero casuale compreso tra 1 e il totale dei file presente, infine scorrere nuovamente i file per raggiungere quello prescelto.

Funziona, ma richiede due passaggi e l’accesso al file system costa molto più di qualche semplice operazione aritmetica in memoria. Gli sviluppatori di Windows optarono quindi per una selezione in un solo passaggio.

La tecnica appartiene alla famiglia del reservoir sampling o “campionamento a serbatoio”. Funziona così: la prima immagine diventa automaticamente la candidata corrente. Quando arriva la seconda, ha probabilità 1/2 di sostituirla. La terza ha probabilità 1/3 di prendere il posto della candidata; la quarta 1/4, e così via. Terminata la procedura, ogni file esaminato possiede la stessa probabilità di risultare vincitore.

Immaginiamo di usare il metodo a due passaggi. Windows conta 21 file, genera casualmente il numero 18 e avvia una seconda enumerazione per recuperare il diciottesimo elemento. Nel frattempo qualcuno elimina o aggiunge un’immagine. L’ordine e il numero dei file possono cambiare; il valore estratto in precedenza non descrive più necessariamente la stessa raccolta. Con l’algoritmo a passaggio singolo il problema perde gran parte della sua importanza.

Microsoft introdusse anche una protezione ulteriore: il codice interrompeva il campionamento dopo 100 immagini. Se qualcuno avesse riempito la cartella Default Pictures con migliaia o milioni di file, Windows non avrebbe continuato indefinitamente a considerarli tutti.

Dal semplice avatar di Windows XP alle immagini degli account di Windows 11

Il confronto con Windows 11 mostra quanto sia cambiata la gestione dell’immagine dell’account. Come abbiamo spiegato di recente su IlSoftware.it analizzando il curioso supporto nascosto alle GIF animate, Windows 11 non lavora più soltanto con un file scelto da una directory comune.

Windows 11 mantiene riferimenti specifici per ogni utente all’interno del registro di sistema, nella chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\<SID>. Il SID identifica univocamente l’account e sotto la relativa chiave possono comparire valori come Image32, Image48, Image96 e ulteriori varianti fino a risoluzioni molto più elevate. Sono percorsi verso rappresentazioni dell’avatar preparate per le varie parti dell’interfaccia.

Le immagini utilizzate di recente compaiono inoltre nella cartella %appdata%\Microsoft\Windows\AccountPictures. Se l’account Windows è collegato a un account Microsoft entra in gioco anche la sincronizzazione del profilo, capace in determinate circostanze di ripristinare localmente l’immagine associata all’identità online.

Proprio studiando tali percorsi si scopre una particolarità: alcuni componenti dell’interfaccia di Windows 11 riescono a visualizzare direttamente una GIF animata quando i valori Image32, Image48, Image96 e simili puntano al file originale.

L’interfaccia standard delle Impostazioni, invece, produce rappresentazioni statiche e fa sparire l’animazione. Da qui nasce il trucco descritto nel nostro precedente approfondimento, che richiede la modifica della chiave AccountPicture con privilegi SYSTEM.

Un piccolo pezzo di codice racconta come è cambiato Windows

La scelta casuale dell’avatar di XP e la gestione delle immagini account in Windows 11 rispondono a esigenze molto diverse.

Nel primo caso Microsoft doveva semplicemente prendere una delle immagini disponibili e assegnarla al nuovo utente con poco lavoro; oggi entrano in gioco SID, copie a risoluzioni differenti, Registro di sistema, account online e più componenti dell’interfaccia.

Eppure c’è un filo comune. Le funzioni visibili all’utente spesso nascondono decisioni tecniche che continuano a emergere molti anni dopo.

Nel caso di XP, il dettaglio curioso non è tanto che l’immagine fosse casuale: lo sapevamo già. È il modo in cui Microsoft aveva implementato quella casualità, usando RtlRandomEx, un seed ricavato da GetTickCount e un algoritmo capace di scegliere equamente un elemento durante una sola scansione.

Per un avatar può sembrare persino eccessivo. Dal punto di vista di uno sviluppatore, invece, è un esempio didattico notevole: meno accessi al file system, nessuna necessità di conoscere in anticipo la dimensione della raccolta, comportamento corretto anche su una sequenza prodotta progressivamente e un limite esplicito per evitare casi estremi.

Ti consigliamo anche

Link copiato negli appunti