
In questo articolo, vedremo come rilevare le varie immagini che vengono utilizzate quando si imposta in Windows 11 lo sfondo del desktop con l’opzione, contenuti in evidenzia di Windows, come mostrato nella figura precedente.
Quando si imposta questa opzione, ogni giorno vengono visualizzate delle immagini, alcune davvero molto belle, che magari desideriamo tenerle da qualche parte nel nostro pc o unità esterna.
Se abbiamo impostato questa opzione, dopo circa 24 ore, verrà creata una cartella con delle prime immagini, cartella denominata IrisService, con all’interno una o più sottocartelle che contengono le immagini.
Di norma questo percorso con le relative immagini si trova in "C:\Users\NomeUtente\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService"
Dove “NomeUtente”, è il nome dell’utente con cui si è effettuato l’accesso al pc.
Per visualizzare le cartelle, dobbiamo impostare in esplora risorse la visualizzazione per le cartelle nascoste, in quanto si trovano sotto la cartella dati dell'utente.
L’esempio di codice utilizzato in questo articolo, è tramite il linguaggio di programmazione C#, con l'ultima versione del Framework, al momento la .NET 10, ed in un progetto di tipo Windows Application, permetterà di avere un applicativo per la copia di queste immagini, in un percorso di nostra scelta.
Creazione del progetto
Si crea un nuovo progetto di tipo App Windows Forms, dopo aver fatto click sul pulsante Avanti, impostiamo il nome e percorso del progetto, facciamo click sul pulsante “Avanti” e nella finestra successiva selezioniamo l’ultima versione del Framework, in questo momento in cui stiamo scrivendo è la versione .NET 10.
Dopo aver creato il progetto, aggiungiamo nella form, una label, con la proprietà text impostata su “Percorso dove salvare le immagini del desktop”, un controllo di tipo “textBox”, con la proprietà “Name” imposta con il valore “TxtPercorsoImmaginiSfondo” e la proprietà “readOnly” impostata a true. Aggiungiamo un controllo di tipo “button” e lo posizioniamo al lato del controllo Textbox. Questo controllo, avrà la proprietà “Name”, impostato con il valore “btnTrovaPercorso” e la proprietà “Text”, con il valore “…”. Infine aggiungiamo un altro controllo di tipo “Button”, con la proprietà “Name” impostata su “BtnEsegui” e la proprietà “Text” con il valore “Esegui”, il tutto come mostrato in figura 2.

Figura 2 - La form con i vari controlli
Stesura del codice
Dopo aver creato creato il progetto e posizionati i vari controlli nella form, non resta che scrivere il codice per eseguire le operazioni di copia dei file. Di seguito vediamo il codice del linguaggio di programmazione C#, per tale operazione. Facciamo doppio click sul pulsante relativo alla selezione del percorso dove salvare le immagini, quello con la proprietà impostata su “BtnTrovaPercorso”, in questo modo passiamo in visualizzazione codice dell’evento click.
In questo evento, tramite un oggetto di tipo “FolderBrowserDialog”, rileviamo la cartella dove salvare le immagini e la impostiamo nella casella di testo.
Si riporta il frammento di codice delle suddette operazioni.
C#
private void btnTrovaPercorso_Click(object sender, EventArgs e)
{
try
{
FolderBrowserDialog selezionaCartella = new FolderBrowserDialog();
selezionaCartella.Description = "Seleziona la cartella dove salvare le immagini";
selezionaCartella.RootFolder = Environment.SpecialFolder.Desktop;
if (selezionaCartella.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
TxtPercorsoImmaginiSfondo.Text = selezionaCartella.SelectedPath;
}
}
catch (Exception ex)
{
MessageBox.Show("Errore:" + ex.Message);
}
}
Torniamo in visualizzazione grafica, e facciamo doppio click sul pulsante “BtnEsegui”, in modo da passare in visualizzazione codice, dell’evento click del pulsante.
In questo evento verifichiamo la presenza delle cartelle, ed in caso della relativa presenza, copiamo i file nella cartella che abbiamo selezionato in precedenza.
Nel caso che sono presenti i file immagini, questi verranno copiati nella cartella di destinazione.
Per il percorso, possiamo usare due modalità di rilevamento, essendo un percorso che si trova nella cartella utente di coloro che hanno effettuato il login nel sistema operativo Windows 11, possiamo utilizzare il metodo “getFolderPath”, della classe "Environment", mettendo la proprietà Userprofile, seguita dal percorso, (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService";) ) oppure il metodo “ExpandEnvironmentVariables” passando il comando per rilevare la cartella utente seguita dal percorso delle cartelle ( Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService");
).
Di seguito si riporta il frammento di codice delle suddette operazioni per rilevare i file di tipo immagine nella cartella interessata, e nel caso che sono presenti, queste vengono copiate nel percorso che abbiamo selezionato nella casella di testo.
C#
private void BtnEsegui_Click(object sender, EventArgs e)
{
try
{
if (TxtPercorsoImmaginiSfondo.Text.Trim()=="")
{
MessageBox.Show("Inserire un percorso valido");
return;
}
if (!Directory.Exists(TxtPercorsoImmaginiSfondo.Text))
{
MessageBox.Show("Il percorso inserito non esiste");
return;
}
string percorso = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService");
//Oppure nel seguente modo
// string percorso = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService";
//Controllo se il percorso esiste
if (!Directory.Exists(percorso))
{
MessageBox.Show("Il percorso delle immagini di sfondo di Windows 11 non esiste");
return;
}
//Ciclo per tutte le sottocartelle e copio le immagini delle cartelle di sfondo di Windows 11 nella cartella selezionata
foreach (string cartella in Directory.GetDirectories(percorso))
{
foreach (string file in Directory.GetFiles(cartella))
{
if (file.EndsWith(".jpg") || file.EndsWith(".png"))
{
string nomeFile = Path.GetFileName(file);
string percorsoDestinazione = Path.Combine(TxtPercorsoImmaginiSfondo.Text, nomeFile);
File.Copy(file, percorsoDestinazione, true);
}
}
}
MessageBox.Show("Operazione completata con successo");
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show("Errore di accesso:" + ex.Message);
}
catch (IOException ex)
{
MessageBox.Show("Errore di gestione:" + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show("Errore:" + ex.Message);
}
}
A questo punto non resta che eseguire il nostro applicativo, impostando un percorso di destinazione e vedremo le immagine copiate, sempre che lo sfondo del desktop è impostato da oltre 24 ore su "Contenuti in evidenzia da Windows".
Conclusioni
L’articolo ha voluto fornire al lettore, la possibilità di creare un semplice applicativo o meccanismo automatico, per copiare le bellissime immagini di Windows 11, che vengono visualizzate quotidianamente, in caso che abbiamo impostato lo sfondo del desktop su “Contenuti in evidenzia di Windows".
L’esempio di codice, permette di recuperare le immagini, da salvare di volta in volta, visto che cambiano ogni giorno, senza dover aprire ogni volta Esplora File di Windows.