Windows 10 : obtenir et imprimer la liste complète des programmes et applications (Win32 + Microsoft Store/UWP)

Besoin d’un inventaire fiable de tous vos logiciels Windows 10 (programmes Win32 et applications Microsoft Store/UWP) pour préparer une migration vers Windows 11 ? Voici des méthodes sûres, copiables et imprimables, sans pièges de guillemets courbes ni commandes ambiguës.

Sommaire

Vue d’ensemble

Objectif : produire une liste complète et imprimable des logiciels installés sur un PC Windows 10, incluant à la fois les programmes classiques (Win32) et les applications Microsoft Store/UWP. Nous couvrons les approches recommandées (winget), alternatives (PowerShell via le Registre, Get-AppxPackage pour UWP), l’outil historique (WMIC), un outil graphique, ainsi qu’un script tout‑en‑un à exécuter en administrateur qui fabrique automatiquement des fichiers TXT/CSV/JSON prêts à imprimer ou à importer sur le nouveau PC.

Procédure rapide (copier‑coller)

Ouvrez Invite de commandes ou PowerShell en administrateur, puis :

winget list > "%USERPROFILE%\Documents\Apps_winget.txt"
winget export -o "%USERPROFILE%\Documents\Apps_winget.json"

Pour les apps UWP (Store) :

PowerShell -NoLogo -NoProfile -Command "Get-AppxPackage | Select-Object Name, Version | Sort-Object Name | Out-File -Encoding utf8 $env:USERPROFILE\Documents\StoreApps.txt"

Vous pourrez ensuite imprimer ces fichiers depuis le Bloc‑notes (Ctrl+P) ou inviter l’impression par script (voir plus bas).

Tableau récapitulatif : besoins, commandes, points clés

BesoinCommande (en administrateur)Points clés / Compléments utiles
Programmes Win32 installés (MSI, InstallShield, etc.)winget list > "C:\Apps.txt"
winget export -o "C:\Apps.json"
Windows 10 2004+ inclut winget via App Installer. Si absent, installez/actualisez App Installer depuis le Microsoft Store. Le TXT/JSON s’ouvre et s’imprime facilement. JSON exploitable en audit et réimport winget import -i "C:\Apps.json" sur le nouveau PC.
Même liste avec l’outil WMIC (héritage)wmic /output:"C:\InstallList.txt" product get name,versionWMIC est en voie de retrait : résultats incomplets possibles et exécution lente. Utilisez plutôt winget/Powershell. L’exécution doit être élevée ; Access is denied = console non admin.
Inventaire flexible via PowerShell (Registre)PowerShell -NoProfile -Command "Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName} | Select-Object DisplayName,DisplayVersion,Publisher,InstallDate | Sort-Object DisplayName | Out-File -Encoding utf8 'C:\Apps_PowerShell.txt'"Couvre la plupart des applis x86/x64. Pour CSV : remplacer Out-File par Export-Csv -NoTypeInformation. Ajoutez HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* pour les installations « par utilisateur ».
Applications Microsoft Store (UWP)PowerShell -NoProfile -Command "Get-AppxPackage | Select-Object Name,Version,Publisher | Sort-Object Name | Out-File -Encoding utf8 'C:\StoreApps.txt'"
Pour tous les profils : Get-AppxPackage -AllUsers (admin requis)
Complète la liste Win32. Les versions récentes de winget couvrent souvent une partie du Store ; combinez au besoin.
Outil graphique tout‑en‑unUninstallView (NirSoft) → Menu : File > Save Selected Items (TXT/HTML/CSV)Pratique si vous préférez une interface : tri, filtre et export rapides (Win32 + composante UWP). Aucune ligne de commande à mémoriser.

Méthode recommandée : winget (rapide, fiable, ré‑importable)

Vérifier la disponibilité de winget

winget --version
  • Si la commande n’est pas trouvée, installez/actualisez App Installer depuis le Microsoft Store.
  • Mettez à jour les sources si besoin : winget source update

Lister et exporter

winget list > "%USERPROFILE%\Documents\Apps_winget.txt"
winget export -o "%USERPROFILE%\Documents\Apps_winget.json"

Avantages : format lisible pour impression (TXT) et format structuré (JSON) pour automatiser la réinstallation.

Importer sur le nouveau PC Windows 11

winget import -i "%USERPROFILE%\Documents\Apps_winget.json"

Options utiles : --accept-source-agreements et --accept-package-agreements pour supprimer les confirmations. Vous pouvez lancer l’import depuis une clé USB contenant le JSON exporté.

Imprimer la liste winget

notepad.exe "%USERPROFILE%\Documents\Apps_winget.txt"

Raccourci : Ctrl+P pour envoyer à l’imprimante par défaut. Pour imprimer en une ligne :

Start-Process -FilePath "$env:SystemRoot\System32\notepad.exe" -ArgumentList "/p `"%USERPROFILE%\Documents\Apps_winget.txt`""

Méthode PowerShell (Registre) : contrôle fin et CSV propres

Cette approche interroge les deux ruches du Registre (x64 et x86) qui référencent la majorité des programmes installés. Elle permet d’obtenir des colonnes utiles (éditeur, date d’installation) et de produire un CSV exploitable dans Excel.

PowerShell -NoProfile -Command ^
  "$out = Join-Path $env:USERPROFILE 'Documents'; ^
   $path = Join-Path $out 'Apps_Registry.csv'; ^
   $hklm64 = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'; ^
   $hklm32 = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'; ^
   $hkcu   = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'; ^
   Get-ItemProperty $hklm64,$hklm32,$hkcu | Where-Object {$_.DisplayName} | ^
   Select-Object @{n='Nom';e={$_.DisplayName}}, @{n='Version';e={$_.DisplayVersion}}, @{n='Éditeur';e={$_.Publisher}}, @{n='InstallDate';e={$_.InstallDate}} | ^
   Sort-Object Nom | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $path; ^
   Write-Host 'Export CSV :' $path"

Astuce : pour obtenir un TXT immédiatement imprimable :

PowerShell -NoProfile -Command ^
  "$out = Join-Path $env:USERPROFILE 'Documents\Apps_PowerShell.txt'; ^
   $hklm64 = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'; ^
   $hklm32 = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'; ^
   Get-ItemProperty $hklm64,$hklm32 | Where-Object {$_.DisplayName} | ^
   Sort-Object DisplayName | Format-Table DisplayName,DisplayVersion,Publisher -AutoSize | Out-String -Width 4096 | Set-Content -Encoding UTF8 $out; ^
   Write-Host 'Export TXT :' $out"

Applications Microsoft Store (UWP)

Les apps UWP ne figurent pas dans les clés « Uninstall » du Registre. Utilisez Get-AppxPackage :

PowerShell -NoProfile -Command ^
  "Get-AppxPackage | Select-Object Name,Version,Publisher | Sort-Object Name | Export-Csv -NoTypeInformation -Encoding UTF8 '$env:USERPROFILE\Documents\Apps_Store.csv'"

Pour inventorier tous les comptes locaux de la machine, exécutez en administrateur :

PowerShell -NoProfile -Command ^
  "Get-AppxPackage -AllUsers | Select-Object Name,Version,Publisher | Sort-Object Name | Export-Csv -NoTypeInformation -Encoding UTF8 '$env:USERPROFILE\Documents\Apps_Store_AllUsers.csv'"

Option avancée — apps provisionnées (modèles préinstallés pour les nouveaux profils) :

DISM /Online /Get-ProvisionedAppxPackages > "%USERPROFILE%\Documents\Apps_Provisioned.txt"

WMIC (héritage) : pour mémoire

wmic fonctionne encore sur certaines versions de Windows 10 mais sa dépréciation implique une couverture partielle et des lenteurs. Utilisez‑le uniquement si vos politiques d’entreprise l’exigent.

wmic /output:"%USERPROFILE%\Documents\InstallList.txt" product get name,version

Script complet : inventaire + fusion + impression (Win32 + Store)

Le script ci‑dessous crée un dossier daté dans Documents, génère quatre exports (winget TXT/JSON, Registre CSV, Store CSV), fusionne Win32 et UWP dans un CSV unifié, prépare un TXT lisible, et lance l’impression du TXT. À coller tel quel dans PowerShell (Exécuter en tant qu’administrateur).

$ErrorActionPreference = 'Stop'

# Dossier de sortie

$stamp = Get-Date -Format 'yyyyMMdd_HHmm'
$outDir = Join-Path $env:USERPROFILE "Documents\Inventaire_Apps_$stamp"
New-Item -ItemType Directory -Path $outDir -Force | Out-Null

# 1) winget (si disponible)

try {
winget --version | Out-Null
winget list | Out-File -Encoding utf8 (Join-Path $outDir 'Apps_winget.txt')
winget export -o (Join-Path $outDir 'Apps_winget.json')
} catch {
Write-Warning "winget introuvable ou échec de l'export. Étape ignorée."
}

# 2) Programmes Win32 (Registre)

$hklm64 = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall*'
$hklm32 = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*'
$hkcu   = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall*'

$regApps = Get-ItemProperty $hklm64,$hklm32,$hkcu -ErrorAction SilentlyContinue |
Where-Object { $*.DisplayName } |
Select-Object @{n='Nom';e={$*.DisplayName}},
@{n='Version';e={$*.DisplayVersion}},
@{n='Éditeur';e={$*.Publisher}},
@{n='InstallDate';e={$_.InstallDate}},
@{n='Type';e={'Win32'}},
@{n='Source';e={'Registre'}}

$regCsv = Join-Path $outDir 'Apps_Registry.csv'
$regApps | Sort-Object Nom | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $regCsv

# 3) Apps Microsoft Store (UWP)

$uwpApps = Get-AppxPackage -ErrorAction SilentlyContinue |
Select-Object @{n='Nom';e={$*.Name}},
@{n='Version';e={$*.Version}},
@{n='Éditeur';e={$_.Publisher}},
@{n='InstallDate';e={$null}},
@{n='Type';e={'Store (UWP)'}},
@{n='Source';e={'Get-AppxPackage'}}

$uwpCsv = Join-Path $outDir 'Apps_Store.csv'
$uwpApps | Sort-Object Nom | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $uwpCsv

# 4) Fusion Win32 + UWP

$all = @()
if ($regApps) { $all += $regApps }
if ($uwpApps) { $all += $uwpApps }

$mergedCsv = Join-Path $outDir 'Inventaire_Complet.csv'
$all | Sort-Object Nom, Type | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $mergedCsv

# 5) TXT lisible + impression

$txt = Join-Path $outDir 'Inventaire_Complet.txt'
$all | Sort-Object Nom, Type |
Format-Table Nom, Version, Éditeur, Type -AutoSize |
Out-String -Width 4096 | Set-Content -Encoding UTF8 $txt

# Imprimer via Notepad (imprimante par défaut)

Start-Process -FilePath "$env:SystemRoot\System32\notepad.exe" -ArgumentList "/p `"$txt`""

# Ouvrir le dossier de résultats

Start-Process $outDir

Write-Host "Inventaire terminé dans : $outDir" </code></pre>

<h2>Bonnes pratiques avant migration vers Windows&nbsp;11</h2>
<ul>
  <li><strong>Exécuter la console en administrateur</strong> (clic droit &gt; «&nbsp;Exécuter en tant qu’administrateur&nbsp;»), surtout pour <code>Get-AppxPackage -AllUsers</code>.</li>
  <li><strong>Éviter les guillemets typographiques</strong>&nbsp;: assurez‑vous d’utiliser <code>"</code> et non <code>”</code>/<code>«&nbsp;&nbsp;»</code>. Retapez les guillemets si vous copiez depuis le Web.</li>
  <li><strong>Chemin de sortie</strong>&nbsp;: si <code>C:\</code> est restreint, ciblez <code>%USERPROFILE%\Documents</code> ou un dossier de données approuvé.</li>
  <li><strong>Exporter plusieurs formats</strong>&nbsp;: TXT pour impression rapide, CSV pour Excel/Power Query, JSON pour <code>winget import</code>.</li>
  <li><strong>Conserver les licences</strong>&nbsp;: utilisez des utilitaires spécialisés (ex.&nbsp;récupération de clés produit) pour les logiciels commerciaux avant réinstallation.</li>
</ul>

<h2>Fusionner et comparer les listes (Excel/Power&nbsp;Query)</h2>
<ol>
  <li>Placez <code>Apps_Registry.csv</code> et <code>Apps_Store.csv</code> dans le même dossier.</li>
  <li>Dans Excel&nbsp;: <em>Données</em> &gt; <em>Obtenir des données</em> &gt; <em>À partir d’un fichier texte/CSV</em>, importez chaque fichier.</li>
  <li>Dans Power Query&nbsp;: <em>Accueil</em> &gt; <em>Combiner</em> &gt; <em>Ajouter des requêtes</em> pour concaténer les deux tables.</li>
  <li>Normalisez les colonnes <em>Nom</em> et <em>Version</em>, supprimez les doublons éventuels, chargez dans une feuille et imprimez.</li>
</ol>

<h2>Dépannage&nbsp;: erreurs courantes &amp; solutions</h2>
<ul>
  <li><strong>«&nbsp;Access is denied&nbsp;»</strong>&nbsp;: relancez <em>Invite de commandes</em> ou <em>PowerShell</em> en <em>administrateur</em>.</li>
  <li><strong>«&nbsp;winget n’est pas reconnu&nbsp;»</strong>&nbsp;: installez/actualisez <em>App Installer</em> et reconnectez‑vous. Vérifiez <code>winget --version</code>.</li>
  <li><strong>Caractères bizarres dans le fichier</strong>&nbsp;: forcez l’encodage <code>-Encoding utf8</code> et ouvrez avec le Bloc‑notes ou WordPad récents.</li>
  <li><strong>Portable apps invisibles</strong>&nbsp;: les exécutables «&nbsp;portables&nbsp;» (zippés sans installation) n’apparaissent pas toujours. En complément, scannez les répertoires&nbsp;:
    <pre><code>PowerShell -NoProfile -Command ^
  "Get-ChildItem 'C:\Program Files*','C:\Users\*\AppData\Local\Programs' -Recurse -Include *.exe -ErrorAction SilentlyContinue | ^
   Where-Object { $_.VersionInfo.ProductName } | ^
   Select-Object @{n='Produit';e={$_.VersionInfo.ProductName}}, @{n='Version';e={$_.VersionInfo.ProductVersion}}, FullName | ^
   Sort-Object Produit | Export-Csv -NoTypeInformation -Encoding UTF8 '$env:USERPROFILE\Documents\Apps_Portables.csv'"

Comparer deux machines : exportez les CSV de chaque PC puis comparez dans Excel (recherche V/XLOOKUP) ou Power Query (jointure).
Impression silencieuse : vérifiez la présence d’une imprimante par défaut ; Start-Process notepad.exe "/p &quot;fichier.txt&quot;" utilise ladite imprimante sans boîte de dialogue.

FAQ

Q : winget liste‑t‑il aussi les applications du Microsoft Store ?
R : Sur les versions récentes, oui en grande partie. Pour une couverture maximale, combinez avec Get-AppxPackage.

Q : Puis‑je réinstaller automatiquement mes logiciels sur Windows 11 ?
R : Oui : winget export sur l’ancien PC, puis winget import sur le nouveau. Quelques logiciels peuvent nécessiter une réactivation manuelle.

Q : Les résultats WMIC ne correspondent pas au Panneau de configuration ?
R : C’est attendu : WMIC est obsolète et n’indexe pas tous les installateurs modernes.

Q : Où enregistrer les fichiers si C:\ est verrouillé ?
R : Utilisez %USERPROFILE%\Documents ou un dossier approuvé par votre politique (OneDrive Entreprise, par exemple).

Checklist migration : ne rien oublier

  • Exécuter l’inventaire avec winget et PowerShell (Registre) + UWP.
  • Exporter en TXT, CSV et JSON.
  • Imprimer la liste signée/daté pour validation.
  • Archiver le JSON pour winget import sur Windows 11.
  • Sauvegarder les licences/clé produits et paramètres (profils, modèles, plugins).
  • Planifier les réinstallations nécessitant des comptes administrateur ou des agents d’entreprise.

En résumé

La combinaison winget list → TXT/JSON pour la majorité des programmes, Get-ItemProperty (Registre) pour un CSV riches en métadonnées, et Get-AppxPackage pour les apps UWP, constitue aujourd’hui l’approche la plus complète et imprimable sans outil tiers. Ajoutez le script tout‑en‑un ci‑dessus pour automatiser export, fusion et impression, et vous êtes prêt pour une migration Windows 11 propre et documentée.


Annexe : anti‑séche commande‑par‑commande

ActionCommande prête à copier
Liste rapide Win32 (TXT)winget list > "%USERPROFILE%\Documents\Apps_winget.txt"
Export ré‑importable (JSON)winget export -o "%USERPROFILE%\Documents\Apps_winget.json"
Import sur le nouveau PCwinget import -i "%USERPROFILE%\Documents\Apps_winget.json"
Registre → CSVPowerShell -NoProfile -Command "Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName} | Select-Object DisplayName,DisplayVersion,Publisher,InstallDate | Sort-Object DisplayName | Export-Csv -NoTypeInformation -Encoding UTF8 '%USERPROFILE%\Documents\Apps_Registry.csv'"
UWP (Store) → CSVPowerShell -NoProfile -Command "Get-AppxPackage | Select-Object Name,Version,Publisher | Sort-Object Name | Export-Csv -NoTypeInformation -Encoding UTF8 '%USERPROFILE%\Documents\Apps_Store.csv'"
Impression silencieuse (TXT)Start-Process -FilePath "$env:SystemRoot\System32\notepad.exe" -ArgumentList "/p `"%USERPROFILE%\Documents\Apps_winget.txt`""

Conseil final : conservez vos exports dans un dossier daté (ex. Documents\Inventaire_Apps_2025-10-18) et joignez‑les à votre ticket de migration pour une traçabilité parfaite.

Sommaire