sauvegarde de la disposition des icones sur l'explorateur

Pour tous les autres souci de PC : plantage, ralentissement, bug, galère, c'est par là !
Règles du forum
Pour toute demande d'aide commencez par indiquer :
  • votre matériel complet et votre système d'exploitation.
  • Si ces conditions ne sont pas remplies, où bien incomplètes le sujet ne sera pas traité.
  • Et surtout donnez de vos nouvelles sans laisser traîner pendant des semaines, voire des mois !
Répondre
Avatar du membre
rayman95
Modérateur
Modérateur
Messages : 1877
Enregistré le : mer. 9 déc. 2020 22:41
A remercié : 584 fois
A été remercié : 1175 fois
    Windows 10 Firefox

sauvegarde de la disposition des icones sur l'explorateur

Message par rayman95 »

est ce que quelqu'un sait si c'est possible de sauvegarder les icones dans l'epinglage rapide
chaque fois que j'utilise un logiciel de nettoyage, tout est viré et je me retrouve avec les 3 dossiers d'origine..

Image
Avatar du membre
pboulanger
Administrateur du site
Administrateur du site
Messages : 1294
Enregistré le : mar. 17 mars 2020 11:49
A remercié : 217 fois
A été remercié : 277 fois
    Linux Firefox

Re: sauvegarde de la disposition des icones sur l'explorateur

Message par pboulanger »

Bonjour,

Oui, normalement c’est possible de conserver ces épinglages. Le souci vient probablement du logiciel de nettoyage qui supprime l’historique de l’Explorateur Windows et/ou les Jump Lists, où sont mémorisés les éléments épinglés.

Avant de chercher à les sauvegarder et les restaurer à chaque nettoyage, le plus simple serait sans doute d’empêcher leur suppression.

Peux-tu nous préciser quel logiciel de nettoyage tu utilises ? On pourra regarder quelle option désactiver ou quelle exclusion ajouter pour conserver tes épinglages. 😉

À bientôt.
Amicalement,

Pierre
Avatar du membre
rayman95
Modérateur
Modérateur
Messages : 1877
Enregistré le : mer. 9 déc. 2020 22:41
A remercié : 584 fois
A été remercié : 1175 fois
    Android Chrome

Re: sauvegarde de la disposition des icones sur l'explorateur

Message par rayman95 »

Ouh là je me sers de 5 ou 6 logiciels de nettoyage, mais pas tous me font sauter les dossiers épinglés.
fluent cleaner, cleanmgr++, Bleachbit, glary utilities.le script de Titou est le dernier que j ai utilisé, qui me fait ça..mais maintenant que je sais que ça s'appelle les jump list, je vais fouiller sans les paramètres de nettoyage de chaque programme.
Merci de l info patron..🥸
Avatar du membre
pboulanger
Administrateur du site
Administrateur du site
Messages : 1294
Enregistré le : mar. 17 mars 2020 11:49
A remercié : 217 fois
A été remercié : 277 fois
    Windows 10 Firefox

Re: sauvegarde de la disposition des icones sur l'explorateur

Message par pboulanger »

Bonjour,

Pour la disposition des icônes sur le bureau, tu as ce petit freeware "DesktopOK" (dernière MàJ 10-08-2026) :

https://www.softwareok.com/?seite=Freeware%2FDesktopOK

Pour les épinglages, voici un petit topo sur les Jump Lists :

Windows 11 conserve une bonne partie des données des Jump Lists dans :

  • %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations

et :
  • %APPDATA%\Microsoft\Windows\Recent\CustomDestinations


Les fichiers présents ne portent malheureusement pas des noms très parlants : ils utilisent des identifiants correspondant aux applications.

Et on peut les sauvegarder ?

Oui, avec quelques réserves.

On peut sauvegarder les deux dossiers AutomaticDestinations et CustomDestinations, puis les restaurer.
Mais ce n'est pas un système de sauvegarde très convivial : les fichiers sont liés aux applications et à leur fonctionnement interne.

Pour quelqu'un qui utilise régulièrement un logiciel de nettoyage, la meilleure solution reste donc d'exclure les Jump Lists du nettoyage, plutôt que de devoir les restaurer après chaque passage.

Mais au cas où tu n'aurais pas de solution dans les multiples outils, je te propose un petit script "brut de fonderie" pour tester la logique des sauvegardes.
Fais nous un retour sur cette approche...

Bonne journée

Livré AS IS, non testé


Fermeture/relance de l'Explorateur
: Stop-WindowsExplorer tue explorer.exe juste avant la restauration (avec une petite pause pour laisser les fichiers se libérer), et Start-WindowsExplorer le relance systématiquement à la fin — même en cas d'erreur, grâce à un bloc try/finally. La sauvegarde simple, elle, n'a pas besoin de ça (lecture seule).

Confirmation avant restauration : demande explicite (O/N) avant d'écraser quoi que ce soit.
Copy-FolderSafely : nouvelle fonction qui copie fichier par fichier avec try/catch, compte les copies réussies et affiche les erreurs sans arrêter le script.
Création automatique des dossiers cibles si AutomaticDestinations/CustomDestinations n'existent pas au moment de la restauration.
Retours plus précis à l'écran (nombre de fichiers copiés/restaurés à chaque étape).

Un point à garder en tête : fermer explorer.exe fait disparaître temporairement la barre des tâches et le bureau pendant 1-2 secondes — c'est normal et sans risque, mais autant prévenir l'utilisateur (c'est fait dans le message de confirmation).

Code : Tout sélectionner

# =====================================================================
#  JumpLists-Backup.ps1
#  Version : 1.0 _ PiB-08-2026
#
#  Objet :
#    Sauvegarder et restaurer les Jump Lists de Windows 11.
#
#  Les Jump Lists sont principalement stockées dans :
#
#    %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations
#    %APPDATA%\Microsoft\Windows\Recent\CustomDestinations
#
#  ATTENTION :
#    Ce script sauvegarde les fichiers utilisés par Windows.
#    Il ne cherche pas à analyser ou modifier leur contenu.
#
#  Nouveautes de la version 2.0 :
#    - Fermeture automatique de l'Explorateur avant restauration
#      (les Jump Lists sont verrouillees tant qu'explorer.exe tourne)
#      et relance automatique une fois l'operation terminee.
#    - Demande de confirmation explicite avant d'ecraser les
#      Jump Lists actuelles.
#    - Creation automatique des dossiers de destination s'ils
#      n'existent pas (evite un echec de Copy-Item).
#    - Gestion d'erreurs avec try/catch et compte-rendu du nombre
#      de fichiers effectivement copies.
#
# =====================================================================


# ---------------------------------------------------------------------
# CONFIGURATION
# ---------------------------------------------------------------------

# Dossier dans lequel seront enregistrées les sauvegardes.
# Par défaut :
# Documents\Sauvegarde-JumpLists
#
$BackupRoot = Join-Path ([Environment]::GetFolderPath("MyDocuments")) `
                        "Sauvegarde-JumpLists"


# Emplacement des Jump Lists Windows
$RecentFolder = Join-Path $env:APPDATA "Microsoft\Windows\Recent"

$AutomaticSource = Join-Path $RecentFolder "AutomaticDestinations"
$CustomSource    = Join-Path $RecentFolder "CustomDestinations"


# ---------------------------------------------------------------------
# FONCTION : Pause
# ---------------------------------------------------------------------
# Permet simplement d'attendre que l'utilisateur appuie sur Entrée.
#
function Pause-Script {

    Write-Host ""
    Read-Host "Appuyez sur Entree pour continuer"

}


# ---------------------------------------------------------------------
# FONCTION : Création du dossier principal de sauvegarde
# ---------------------------------------------------------------------
function Initialize-BackupFolder {

    if (-not (Test-Path $BackupRoot)) {

        New-Item `
            -ItemType Directory `
            -Path $BackupRoot `
            -Force | Out-Null

    }

}


# ---------------------------------------------------------------------
# FONCTION : Copie sécurisée d'un dossier avec compte-rendu
# ---------------------------------------------------------------------
# Copie le contenu de $Source vers $Destination.
# Retourne le nombre de fichiers copiés avec succès.
# Les erreurs (fichier verrouillé, accès refusé, etc.) sont
# affichées mais n'interrompent pas le reste du script.
#
function Copy-FolderSafely {

    param(
        [string]$Source,
        [string]$Destination
    )

    $CopiedCount = 0

    if (-not (Test-Path $Source)) {
        return $CopiedCount
    }

    # On s'assure que le dossier de destination existe,
    # sinon Copy-Item avec "\*" en source echoue silencieusement.
    if (-not (Test-Path $Destination)) {

        New-Item `
            -ItemType Directory `
            -Path $Destination `
            -Force | Out-Null

    }

    $Files = Get-ChildItem -Path $Source -File -ErrorAction SilentlyContinue

    foreach ($File in $Files) {

        try {

            Copy-Item `
                -Path $File.FullName `
                -Destination $Destination `
                -Force `
                -ErrorAction Stop

            $CopiedCount++

        }
        catch {

            Write-Host "  [ERREUR] Impossible de copier $($File.Name) : $($_.Exception.Message)" -ForegroundColor Yellow

        }

    }

    return $CopiedCount

}


# ---------------------------------------------------------------------
# FONCTION : Fermeture de l'Explorateur Windows
# ---------------------------------------------------------------------
# Les fichiers de Jump Lists sont ouverts/verrouillés par explorer.exe
# en permanence. Pour garantir une copie ou une suppression fiable
# (notamment lors de la restauration), on ferme le processus le
# temps de l'operation, puis on le relance systematiquement apres,
# meme en cas d'erreur (bloc finally cote appelant).
#
function Stop-WindowsExplorer {

    Write-Host "Fermeture de l'Explorateur Windows..."

    try {

        Stop-Process -Name "explorer" -Force -ErrorAction Stop

        # Petite pause pour laisser le temps au processus de
        # relacher completement les fichiers.
        Start-Sleep -Milliseconds 1500

    }
    catch {

        Write-Host "  [AVERTISSEMENT] Impossible de fermer l'Explorateur : $($_.Exception.Message)" -ForegroundColor Yellow

    }

}


# ---------------------------------------------------------------------
# FONCTION : Relance de l'Explorateur Windows
# ---------------------------------------------------------------------
function Start-WindowsExplorer {

    Write-Host "Relance de l'Explorateur Windows..."

    # Si explorer.exe tourne deja (cas rare), on ne relance pas
    # une deuxieme instance inutilement.
    $AlreadyRunning = Get-Process -Name "explorer" -ErrorAction SilentlyContinue

    if (-not $AlreadyRunning) {

        Start-Process "explorer.exe"

        Start-Sleep -Milliseconds 1000

    }

}


# ---------------------------------------------------------------------
# FONCTION : Sauvegarde des Jump Lists
# ---------------------------------------------------------------------
function Backup-JumpLists {

    Clear-Host

    Write-Host "=========================================="
    Write-Host "      SAUVEGARDE DES JUMP LISTS"
    Write-Host "=========================================="
    Write-Host ""

    Initialize-BackupFolder


    # Création d'un nom de dossier contenant la date et l'heure.
    #
    # Exemple :
    # Backup_2026-08-14_10-30-00
    #
    $Date = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"

    $BackupFolder = Join-Path $BackupRoot "Backup_$Date"


    # Création du dossier de sauvegarde
    New-Item `
        -ItemType Directory `
        -Path $BackupFolder `
        -Force | Out-Null


    # -------------------------------------------------------------
    # Sauvegarde des AutomaticDestinations et CustomDestinations
    # -------------------------------------------------------------
    #
    # Remarque : la sauvegarde (simple lecture) ne necessite pas
    # de fermer l'Explorateur. Seule la restauration (ecriture /
    # suppression) l'exige vraiment. On copie donc directement.

    Write-Host "Sauvegarde de AutomaticDestinations..."

    $AutomaticBackupFolder = Join-Path $BackupFolder "AutomaticDestinations"
    $CountAuto = Copy-FolderSafely -Source $AutomaticSource -Destination $AutomaticBackupFolder

    if ($CountAuto -eq 0 -and -not (Test-Path $AutomaticSource)) {
        Write-Host "  Dossier AutomaticDestinations introuvable."
    }
    else {
        Write-Host "  $CountAuto fichier(s) copie(s)."
    }


    Write-Host "Sauvegarde de CustomDestinations..."

    $CustomBackupFolder = Join-Path $BackupFolder "CustomDestinations"
    $CountCustom = Copy-FolderSafely -Source $CustomSource -Destination $CustomBackupFolder

    if ($CountCustom -eq 0 -and -not (Test-Path $CustomSource)) {
        Write-Host "  Dossier CustomDestinations introuvable."
    }
    else {
        Write-Host "  $CountCustom fichier(s) copie(s)."
    }


    Write-Host ""
    Write-Host "Sauvegarde terminee."
    Write-Host ""
    Write-Host "Emplacement :"
    Write-Host $BackupFolder

    Pause-Script

}


# ---------------------------------------------------------------------
# FONCTION : Restauration des Jump Lists
# ---------------------------------------------------------------------
function Restore-JumpLists {

    Clear-Host

    Write-Host "=========================================="
    Write-Host "      RESTAURATION DES JUMP LISTS"
    Write-Host "=========================================="
    Write-Host ""


    # Vérification de l'existence du dossier principal
    if (-not (Test-Path $BackupRoot)) {

        Write-Host "Aucune sauvegarde disponible."

        Pause-Script
        return

    }


    # Recherche de toutes les sauvegardes existantes
    # (on exclut les dossiers "Avant_Restauration_*" qui sont des
    # sauvegardes de securite techniques, pas des sauvegardes
    # a proposer pour une restauration manuelle)
    $Backups = Get-ChildItem `
        -Path $BackupRoot `
        -Directory `
        -Filter "Backup_*" |
        Sort-Object Name -Descending


    if ($Backups.Count -eq 0) {

        Write-Host "Aucune sauvegarde disponible."

        Pause-Script
        return

    }


    # -------------------------------------------------------------
    # Affichage des sauvegardes disponibles
    # -------------------------------------------------------------

    Write-Host "Sauvegardes disponibles :"
    Write-Host ""

    for ($i = 0; $i -lt $Backups.Count; $i++) {

        Write-Host "[$($i + 1)] $($Backups[$i].Name)"

    }

    Write-Host ""

    $Choice = Read-Host "Numero de la sauvegarde a restaurer"


    # Vérification de la saisie
    $Number = 0

    if (-not [int]::TryParse($Choice, [ref]$Number)) {

        Write-Host ""
        Write-Host "Choix incorrect."

        Pause-Script
        return

    }


    if (($Number -lt 1) -or ($Number -gt $Backups.Count)) {

        Write-Host ""
        Write-Host "Choix incorrect."

        Pause-Script
        return

    }


    $SelectedBackup = $Backups[$Number - 1].FullName


    # -------------------------------------------------------------
    # Confirmation explicite avant d'écraser les données actuelles
    # -------------------------------------------------------------

    Write-Host ""
    Write-Host "Vous allez restaurer : $($Backups[$Number - 1].Name)" -ForegroundColor Cyan
    Write-Host "Cette operation va REMPLACER vos Jump Lists actuelles." -ForegroundColor Cyan
    Write-Host "L'Explorateur Windows va etre ferme puis relance automatiquement." -ForegroundColor Cyan
    Write-Host ""

    $Confirm = Read-Host "Confirmer la restauration ? (O/N)"

    if ($Confirm -notmatch "^[Oo]$") {

        Write-Host ""
        Write-Host "Restauration annulee."

        Pause-Script
        return

    }


    # -------------------------------------------------------------
    # Fermeture de l'Explorateur pour liberer les fichiers verrouilles
    # -------------------------------------------------------------
    #
    # On utilise try/finally : quoi qu'il arrive pendant la
    # restauration (erreur, interruption...), l'Explorateur sera
    # systematiquement relance a la fin.

    Stop-WindowsExplorer

    try {

        # ---------------------------------------------------------
        # Sauvegarde de sécurité avant restauration
        # ---------------------------------------------------------
        #
        # Très important :
        # avant d'écraser les Jump Lists actuelles, nous en faisons
        # automatiquement une copie.

        $SafetyDate = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"

        $SafetyFolder = Join-Path `
            $BackupRoot `
            "Avant_Restauration_$SafetyDate"

        New-Item `
            -ItemType Directory `
            -Path $SafetyFolder `
            -Force | Out-Null

        Write-Host ""
        Write-Host "Sauvegarde de securite de l'etat actuel..."

        $SafetyAutoFolder   = Join-Path $SafetyFolder "AutomaticDestinations"
        $SafetyCustomFolder = Join-Path $SafetyFolder "CustomDestinations"

        Copy-FolderSafely -Source $AutomaticSource -Destination $SafetyAutoFolder | Out-Null
        Copy-FolderSafely -Source $CustomSource    -Destination $SafetyCustomFolder | Out-Null


        # ---------------------------------------------------------
        # Restauration
        # ---------------------------------------------------------

        Write-Host "Restauration en cours..."

        $AutomaticBackup = Join-Path $SelectedBackup "AutomaticDestinations"
        $CustomBackup    = Join-Path $SelectedBackup "CustomDestinations"


        # AutomaticDestinations
        if (Test-Path $AutomaticBackup) {

            # On s'assure que le dossier cible existe (il devrait
            # toujours exister sous Windows, mais on securise).
            if (-not (Test-Path $AutomaticSource)) {

                New-Item `
                    -ItemType Directory `
                    -Path $AutomaticSource `
                    -Force | Out-Null

            }

            # Suppression du contenu actuel
            Remove-Item `
                "$AutomaticSource\*" `
                -Force `
                -ErrorAction SilentlyContinue

            # Copie de la sauvegarde
            $RestoredAuto = Copy-FolderSafely -Source $AutomaticBackup -Destination $AutomaticSource
            Write-Host "  AutomaticDestinations : $RestoredAuto fichier(s) restaure(s)."

        }


        # CustomDestinations
        if (Test-Path $CustomBackup) {

            if (-not (Test-Path $CustomSource)) {

                New-Item `
                    -ItemType Directory `
                    -Path $CustomSource `
                    -Force | Out-Null

            }

            Remove-Item `
                "$CustomSource\*" `
                -Force `
                -ErrorAction SilentlyContinue

            $RestoredCustom = Copy-FolderSafely -Source $CustomBackup -Destination $CustomSource
            Write-Host "  CustomDestinations : $RestoredCustom fichier(s) restaure(s)."

        }

        Write-Host ""
        Write-Host "Restauration terminee."
        Write-Host ""
        Write-Host "Une sauvegarde de securite a ete creee dans :"
        Write-Host $SafetyFolder

    }
    finally {

        # Quoi qu'il arrive (succes ou erreur), on relance
        # systematiquement l'Explorateur Windows.
        Start-WindowsExplorer

    }

    Write-Host ""
    Pause-Script

}


# =====================================================================
# MENU PRINCIPAL
# =====================================================================

do {

    Clear-Host

    Write-Host "=========================================="
    Write-Host "        JUMP LISTS BACKUP - V1.0"
    Write-Host "              Windows 11"
    Write-Host "=========================================="
    Write-Host ""
    Write-Host "[1] Sauvegarder les Jump Lists"
    Write-Host "[2] Restaurer les Jump Lists"
    Write-Host "[3] Ouvrir le dossier des sauvegardes"
    Write-Host "[4] Quitter"
    Write-Host ""

    $MenuChoice = Read-Host "Votre choix"


    switch ($MenuChoice) {

        "1" {

            Backup-JumpLists

        }


        "2" {

            Restore-JumpLists

        }


        "3" {

            Initialize-BackupFolder

            Start-Process explorer.exe $BackupRoot

        }


        "4" {

            Write-Host ""
            Write-Host "Fin du programme."

        }


        default {

            Write-Host ""
            Write-Host "Choix incorrect."

            Start-Sleep -Seconds 1

        }

    }

}
while ($MenuChoice -ne "4")
Amicalement,

Pierre
Avatar du membre
pboulanger
Administrateur du site
Administrateur du site
Messages : 1294
Enregistré le : mar. 17 mars 2020 11:49
A remercié : 217 fois
A été remercié : 277 fois
    Windows 10 Firefox

Re: sauvegarde de la disposition des icones sur l'explorateur

Message par pboulanger »

Dans le script de @titou

Ce qui pose problème est à l'étape 8, le script supprime directement les Jump Lists (Recent, AutomaticDestinations, CustomDestinations) sans jamais fermer explorer.exe avant :

Code : Tout sélectionner

del /f /q /s /a "%AppData%\Microsoft\Windows\Recent\*.*" >nul 2>&1
del /s /f /q /a "%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\*.*" >nul 2>&1
del /s /f /q /a "%AppData%\Microsoft\Windows\Recent\CustomDestinations\*.*" >nul 2>&1
Résultats :
avec /f (force), beaucoup de fichiers seront quand même supprimés, mais ceux activement verrouillés par l'Explorateur au moment précis de l'exécution risquent d'échouer silencieusement (les erreurs sont noyées par >nul 2>&1), donc l'utilisateur croit que le nettoyage est complet alors qu'il ne l'est que partiellement.

La première ligne, del ... "%AppData%\Microsoft\Windows\Recent\*.*", avec /s (récursif), redescend aussi dans les sous-dossiers AutomaticDestinations et CustomDestinations et supprime leur contenu même si tu retires les deux lignes suivantes. Le *.* combiné à /s parcourt toute l'arborescence sous Recent, pas seulement les fichiers à la racine.

Donc pour vraiment préserver les Jump Lists, il faut soit :
  • Option A - Supprimer seulement les .lnk à la racine, sans toucher aux sous-dossiers (retire /s)
  • Option B - Ne rien toucher à Recent du tout, si tu veux garder à la fois les fichiers récents classiques et les Jump Lists
Amicalement,

Pierre
Avatar du membre
rayman95
Modérateur
Modérateur
Messages : 1877
Enregistré le : mer. 9 déc. 2020 22:41
A remercié : 584 fois
A été remercié : 1175 fois
    Android Chrome

Re: sauvegarde de la disposition des icones sur l'explorateur

Message par rayman95 »

Merci pour tes réponses, mais je suis pas a la maison actuellement..je testerai ça dès que je serai de retour..
Répondre