# DISM 🛠

Deployment Image Servicing and Management ou plutôt l'outil de manipulation et gestion de déploiment d'image est un outil à la ligne de commande en Windows permettant la manipulation de systèmes d'exploitation en ligne ou hors ligne (ex. image d'installation ou système Windows non démarré)  
  
La référence complète de DISM est disponible ici : https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/deployment-image-servicing-and-management--dism--command-line-options

# Manipulation de systèmes

DISM permet de manipuler des systèmes tant en ligne (celui en exécution) que hors ligne (soit une image d'installation ou un système installé accessible par un autre système).

#### Manipulation de systèmes en ligne

Lorsqu'utilisé pour la manipulation d'un système en ligne, DISM est généralement utilisé pour tenter de réparer des fichiers systèmes endommagés, exporter des paramètres tels que la disposition du menu démarrer et les associations d'application par défaut avec pour objectif d'injecter ces paramètres dans un autre système.

Pour manipuler un système en ligne, il suffit de mentionner "/Online" comme paramètre à la commande et celle-ci sera appliquée au système en cours d'exécution. À titre d'exemple, la commande suivante nous permettrait d'observer la langue appliquée à un système en exécution.

```
PS C:\WINDOWS\system32> DISM /Online /Get-Intl

Deployment Image Servicing and Management tool
Version: 10.0.26100.1150

Image Version: 10.0.26100.2894

Reporting online international settings.

Default system UI language : fr-CA
The UI language fallback is : fr-FR
System locale : fr-CA
Default time zone : Eastern Standard Time
Active keyboard(s) : 0c0c:00001009, 1009:00001009
Keyboard layered driver : Not installed.

Installed language(s): fr-CA
  Type : Partially localized language, MUI type.
  Fallback Languages fr-FR

The operation completed successfully.
```

La commande suivante permettrait d'exporter les associations d'applications par défaut (incluant le navigateur web par défaut) dans un fichier XML qui pourrait être appliqué à un autre système.

```
PS C:\WINDOWS\system32> DISM /Online /Export-DefaultAppAssociations:"$env:USERPROFILE\Associations.xml"

Deployment Image Servicing and Management tool
Version: 10.0.26100.1150

Image Version: 10.0.26100.2894

The operation completed successfully.
```

La commande suivante permettrait de vérifier l'état de santé des fichiers systèmes.

```
PS C:\WINDOWS\system32> DISM /Online /Cleanup-Image /RestoreHealth

Deployment Image Servicing and Management tool
Version: 10.0.26100.1150

Image Version: 10.0.26100.2894

[==========================100.0%==========================] The restore operation completed successfully.
The operation completed successfully.
```

#### Manipulation de système hors ligne

La manipulation d'un système hors ligne est généralement utilisé à fins de débogage, d'injection de paramètres ou d'installation de pilotes. Les mêmes commandes démontrées précédemment peuvent être exécutés depuis une autre installation de Windows ou un média d'installation de Windows (Shift+F10 pour accéder à un terminal de commandes en WinPE). La commande suivante permettrait de vérifier l'état des fichiers systèmes pour un système qui ne démarre plus à titre d'exemple.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/nIWimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/nIWimage.png)

#### Manipulation d'image d'installation

DISM peut être utilisé pour capturer une image système pour préparer un "install.wim" permettant de créer un média d'installation d'une image généralisée (sysprep). Il peut aussi être utilisé pour monter une image "install.wim" dans un dossier pour y appliquer des modifications et recompiler l'image d'installation.

Pour modifier un fichier d'installation de Windows (.wim contenu dans le dossier "Sources" sur le média d'installation), on doit extraire le ficheir de l'ISO d'installation et le monter avec DISM dans un dossier de "scratch" (dossier temporaire pour modification).

À l'aide des commandes suivantes, l'image ESD contenant plusieurs versions de Windows est extraite de l'ISO, convertie en WIM et montée dans un dossier pour modification.

```
PS F:\Lab-DISM> Mount-DiskImage F:\Lab-DISM\W11-24H2.iso


Attached          : True
BlockSize         : 0
DevicePath        : \\.\CDROM0
FileSize          : 4817092608
ImagePath         : F:\Lab-DISM\W11-24H2.iso
LogicalSectorSize : 2048
Number            : 0
Size              : 4817092608
StorageType       : 1
PSComputerName    :

PS F:\Lab-DISM> Copy-Item -Path G:\Sources\install.esd -Destination .\

PS F:\Lab-DISM> DISM /Get-WimInfo /WimFile:install.esd

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Details for image : install.esd

Index : 1
Name : Windows 11 Famille
Description : Windows 11 Famille
Size : 20,043,185,191 bytes

Index : 2
Name : Windows 11 Éducation
Description : Windows 11 Éducation
Size : 20,505,119,819 bytes

Index : 3
Name : Windows 11 Professionnel
Description : Windows 11 Professionnel
Size : 20,525,733,220 bytes

The operation completed successfully.

PS F:\Lab-DISM> DISM /Export-Image /SourceImageFile:install.esd /SourceIndex:3 /DestinationImageFile:install.wim /Compress:max /CheckIntegrity

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Exporting image
[==========================100.0%==========================]
The operation completed successfully.

PS F:\Lab-DISM> New-Item -Path E:\Scratch -ItemType Directory


    Directory: E:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2025-02-09   2:51 PM                Scratch

PS F:\Lab-DISM> DISM /Mount-Image /ImageFile:install.wim /Index:1 /MountDir:E:\Scratch

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Mounting image
[==========================100.0%==========================]
The operation completed successfully.

```

Une fois toutes les modifications appliquées, on peut démonter l'image et ces modifications s'appliqueront au .wim contenant le gabarit d'installation de Windows. Les commandes suivantes changent l'association d'applications par défaut de l'image d'installation et applique les modifications au WIM.

```
PS F:\Lab-DISM> DISM /Unmount-Image /MountDir:E:\Scratch /Commit

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.
```

Cette nouvelle image pourrait donc être réimportée dans un média d'installation Windows, qu'il s'agisse d'un ISO ou d'une clé USB.

# Capture d'une image généralisée

DISM peut être utilisé pour capturer une installation système modifiée et en créer un fichier d'image d'installation Windows. Ce processus parfois nommé "build and capture" ou "bâtir et capturer" permet de concevoir un gabarit pour une image d'installation généralisée (sysprep) et est surtout pertinente dans un contexte ou plusieurs machines ont besoin d'une installation standardisée (ex. un laboratoire informatique) sans être reliées à un domaine Active Directory. Certains outils facilitent ce processus tels que le Microsoft Deployment Toolkit et Configuration Manager mais DISM peut aussi être utilisé pour ce processus.

Le désavantage de cette méthode est que si l'ont veut mettre à jour la version de base du système ou la version déployée des applications, il sera nécessaire de recapturer une image mise à jour.

#### Préparation d'une image

##### Installation du système

Installez Windows normalement, ceci peut être effectué à partir d'une image personnalisée ou une image standard de Microsoft.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/qQ4image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/qQ4image.png)

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/Rojimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/Rojimage.png)

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/icvimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/icvimage.png)

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/bJKimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/bJKimage.png)

Il est possible d'utiliser un fichier de configuration "unattended" XML pour automatiser la configuration. Dans notre cas, redémarrons en mode d'audit.

##### Configuration de l'installation

Redémarrons en mode d'audit avec les touches "CTRL+Shift+F3" lors de la configuration système (aussi nommée OOBE). Ce mode d'audit créera un compte local "auditUser" et permettera de personnaliser le système sans passer par le guide de configuration initiale.

Appliquons ensuite nos modifications. Toute modification appliquée à l'ordinateur local (ex. installations de programmes dans les fichiers de programmes, modifications au registre pour HKLM et HKU\\.DEFAULT, etc.) seront prises en compte lors de la capture de l'image d'installation.

Retirons quelques applications, installons un navigateur et quelques applications, changeons les applications par défaut et ajoutons quelques paramètres au registre.

La commande "Get-AppxProvisionedPackage -Online" nous permet d'afficher les applications qui seront déployées à tous les utilisateurs. Retirons-en quelques unes

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/VY5image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/VY5image.png)

```
Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName
Remove-AppxProvisionedPackage -Online -PackageName "MSTeams_1.0.0.0_x64__8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Clipchamp.Clipchamp_3.0.10220.0_neutral_~_yxz26nhyzhsrt" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "MicrosoftCorporationII.QuickAssist_2024.309.159.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.YourPhone_1.24012.105.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.WindowsFeedbackHub_2024.125.1522.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.OutlookForWindows_1.0.0.0_neutral__8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.MicrosoftSolitaireCollection_4.19.3190.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.MicrosoftOfficeHub_18.2308.1034.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.GetHelp_10.2302.10601.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.BingNews_4.1.24002.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.GamingApp_2024.311.2341.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName

PS C:\Users\Administrateur> Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName

DisplayName
-----------
Microsoft.ApplicationCompatibilityEnhancements
Microsoft.AV1VideoExtension
Microsoft.AVCEncoderVideoExtension
Microsoft.BingSearch
Microsoft.BingWeather
Microsoft.DesktopAppInstaller
Microsoft.HEIFImageExtension
Microsoft.HEVCVideoExtension
Microsoft.MicrosoftEdge.Stable
Microsoft.MicrosoftStickyNotes
Microsoft.MPEG2VideoExtension
Microsoft.Paint
Microsoft.PowerAutomateDesktop
Microsoft.RawImageExtension
Microsoft.ScreenSketch
Microsoft.SecHealthUI
Microsoft.StorePurchaseApp
Microsoft.Todos
Microsoft.VP9VideoExtensions
Microsoft.WebMediaExtensions
Microsoft.WebpImageExtension
Microsoft.Windows.DevHome
Microsoft.Windows.Photos
Microsoft.WindowsAlarms
Microsoft.WindowsCalculator
Microsoft.WindowsCamera
Microsoft.WindowsNotepad
Microsoft.WindowsSoundRecorder
Microsoft.WindowsStore
Microsoft.WindowsTerminal
Microsoft.Xbox.TCUI
Microsoft.XboxGamingOverlay
Microsoft.XboxIdentityProvider
Microsoft.XboxSpeechToTextOverlay
Microsoft.ZuneMusic
MicrosoftWindows.Client.WebExperience
MicrosoftWindows.CrossDevice
```

Appliquons [certains paramètres](https://cours.alexarsenault.cf/attachments/17) de registre à la machine locale.

```ini
Windows Registry Editor Version 5.00

;Bloquer la télémétrie
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000

;Afficher les détails lors de la connexion
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"VerboseStatus"=dword:00000001

;Afficher les détails lors d'un bluescreen
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CrashControl]
"DisplayParameters"=dword:00000001
"DisableEmoticon"=dword:00000001

;Désactiver la limitation d'alimentation
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerThrottling]
"PowerThrottlingOff"=dword:00000001

;Désactiver la limitation d'utilisation réseau
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"NetworkThrottlingIndex"=dword:ffffffff

;Réduire le temps d'attente d'arrêt de services à l'arrêt du système
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control]
"WaitToKillServiceTimeout"="2000"

```

Appliquons [certains paramètres](https://cours.alexarsenault.cf/attachments/16) de registre à l'utilisateur par défaut.

```ini
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer]
;Désactiver la recherche en ligne
"DisableSearchBoxSuggestions"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;Afficher les secondes
"ShowSecondsInSystemClock"=dword:00000001
;Afficher les extensions de fichier
"HideFileExt"=dword:00000000
;Comportement et contenu de la barre des tâches
"TaskbarAl"=dword:00000000
"TaskbarMn"=dword:00000000
"TaskbarDa"=dword:00000000
"ShowCopilotButton"=dword:00000000

[HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32]
;Menu contextuel classique
@=""

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot]
;Désactiver Copilot
"TurnOffWindowsCopilot"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]
;Configuration du thème sombre
"SystemUsesLightTheme"=dword:00000000
"AppsUseLightTheme"=dword:00000000

```

Installons quelques applications et configurons les associations de fichiers et les applications par défaut. Notez le "--scope machine" à la fin de la commande. Les applications doivent être installées pour l'ensemble du système et non seulement pour un utilisateur. On peut aussi paramétrer nos applications si elles acceptent une configuration globale ou par défaut.

```
winget install Google.Chrome 7zip.7zip Microsoft.VisualStudioCode TheDocumentFoundation.LibreOffice VideoLAN.VLC Joplin.Joplin GIMP.GIMP BlenderFoundation.Blender --accept-source-agreements --accept-package-agreements --scope machine
```

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/VsUimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/VsUimage.png)

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/FY2image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/FY2image.png)

Une fois les associations de types de fichiers et assignations d'applications par défaut appliquées, exportons celle de notre utilisateur temporaire et importons-les commes associations par défaut.

```
DISM /Online /Export-DefaultAppAssociations:associations.xml
DISM /Online /Import-DefaultAppAssociations:associations.xml
```

Configurez la disposition de votre menu démarrer puis exportons-la et réimportons-la comme disposition par défaut.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/64yimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/64yimage.png)

```
Export-StartLayout -Path ".\LayoutModification.json"
Copy-Item -Path '.\LayoutModification.json' -Destination $env:SystemDrive'\Users\Default\Appdata\Local\Microsoft\Windows\Shell'
```

##### Généralisation de l'image

Puisque Winget a été utilisé, il faudra le désinstaller pour notre utilisateur ou l'installer pour tous les utilisateurs.

```
Get-AppxPackage | Where-Object Name -like *Winget* | Remove-AppxPackage
```

Une fois le système prêt, démarrons la généralisation du système.

```
C:\Windows\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
```

##### Capture de l'image

Montez le stockage du système préparé sur une autre machine ou démarrez la machine à l'aide d'un WinPE et assurez-vous d'avoir assez de stockage pour récupérer la nouvelle image du système.

Dans le cas suivant, nous avons redémarré dans un ISO de Windows, assigné la lettre de lecteur K: au système préparé et ajouté une clé USB pour le stockage de l'image avec la lettre C:

La commande suivante permet de démarrer la capture.

```
DISM /Capture-Image /ImageFile:"C:\custom.wim" /CaptureDIR:K:\ /Name:MonImage
```

Cette commande prendra un moment à s'exécuter.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/v1pimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/v1pimage.png)

# Manipulation d'une image d'installation

Il est possible avec DISM de monter un fichier d'installation de Windows ".wim" dans un dossier, de manipuler cette image et de créer un média d'installation personnalisé. L'avantage de ceci est qu'il est facile de réappliquer nos modifications lorsque l'on doit mettre à jour notre média plutôt que de réinstaller un système, recapturer son état et recréer un média d'installation complet.

##### Monter une image WIM

La commande "DISM /Mount-Image" permet d'accéder au contenu d'une image d'installation. Le dossier de montage doit être sur un volume supportant les points d'analyse. On ne peut donc pas monter un WIM sur un périphérique amovible. Elle peut être utilisée de la façon suivante :

```
PS F:\Lab-DISM> New-Item -Path E:\Scratch -Type Directory -Force


    Directory: E:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2025-02-09   3:09 PM                Scratch


PS F:\Lab-DISM> DISM /Mount-Image /ImageFile:install.wim /Index:1 /MountDir:E:\Scratch

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Mounting image
[==========================100.0%==========================]
The operation completed successfully.

PS F:\Lab-DISM> Get-ChildItem E:\Scratch


    Directory: E:\Scratch


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024-04-01   3:26 AM                PerfLogs
d-r---        2024-04-01   4:47 PM                Program Files
d-r---        2024-04-01   5:20 PM                Program Files (x86)
d-r---        2024-04-01   3:34 AM                Users
d-----        2024-10-04   8:34 PM                Windows
```

Il est maintenant possible de modifier ce qui sera copié sur le disque au moment de l'installation. On peut ici y modifier le registre, les AppxPackages, les squelettes de profil (HKU\\.DEFAULT et C:\\Users\\Default), etc.

##### Personnaliser une image WIM

Commençons tout d'abord par accéder aux registres de l'image d'installation montée. Il faudra tout d'abord s'accorder les permissions pour accéder aux fichiers de registre en question. La commande "reg load" permet ici de charger les ruches d'un autre système en pointant vers un fichier source.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/vi2image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/vi2image.png)

```
PS F:\Lab-DISM> reg load HKU\WIMDefault E:\Scratch\Users\Default\ntuser.dat
The operation completed successfully.

PS F:\Lab-DISM> reg load HKU\WIM-SOFTWARE E:\Scratch\Windows\System32\config\SOFTWARE
The operation completed successfully.

PS F:\Lab-DISM> reg load HKU\WIM-SYSTEM E:\Scratch\Windows\System32\config\SYSTEM
The operation completed successfully.

PS F:\Lab-DISM> New-PSDrive -Name HK-WIM-UDEFAULT -PSProvider Registry -Root HKEY_USERS\WIMDefault

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HK-WIM-...                             Registry      HKEY_USERS\WIMDefault


PS F:\Lab-DISM> New-PSDrive -Name HK-WIM-LMSOFTWARE -PSProvider Registry -Root HKEY_USERS\WIM-SOFTWARE

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HK-WIM-...                             Registry      HKEY_USERS\WIM-SOFTWARE


PS F:\Lab-DISM> New-PSDrive -Name HK-WIM-SYSTEM -PSProvider Registry -Root HKEY_USERS\WIM-SYSTEM

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HK-WIM-...                             Registry      HKEY_USERS\WIM-SYSTEM
```

Nous pourrons dorénavant appliquer des modifications de registre pour personnaliser le système avant même son installation.

Appliquons pour l'instant ces modifications.

```ini
Windows Registry Editor Version 5.00

[HKEY_USERS\WIM-SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000

[HKEY_USERS\WIM-SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"VerboseStatus"=dword:00000001

[HKEY_USERS\WIM-SYSTEM\ControlSet001\Control\CrashControl]
"DisplayParameters"=dword:00000001
"DisableEmoticon"=dword:00000001

[HKEY_USERS\WIM-SYSTEM\ControlSet001\Control\Power\PowerThrottling]
"PowerThrottlingOff"=dword:00000001

[HKEY_USERS\WIM-SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"NetworkThrottlingIndex"=dword:ffffffff

[HKEY_USERS\WIM-SYSTEM\ControlSet001\Control]
"WaitToKillServiceTimeout"="2000"

[HKEY_USERS\WIMDefault\Software\Policies\Microsoft\Windows\Explorer]
"DisableSearchBoxSuggestions"=dword:00000001

[HKEY_USERS\WIMDefault\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"ShowSecondsInSystemClock"=dword:00000001
"HideFileExt"=dword:00000000
"TaskbarAl"=dword:00000000
"TaskbarMn"=dword:00000000
"TaskbarDa"=dword:00000000
"ShowCopilotButton"=dword:00000000

[HKEY_USERS\WIMDefault\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32]
@=""

[HKEY_USERS\WIMDefault\Software\Policies\Microsoft\Windows\WindowsCopilot]
"TurnOffWindowsCopilot"=dword:00000001

[HKEY_USERS\WIMDefault\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]
"SystemUsesLightTheme"=dword:00000000
"AppsUseLightTheme"=dword:00000000
```

Retirons quelques AppxPackages pour alléger l'installation. Vérifions tout d'abord ce qui y est installé.

```
PS F:\Lab-DISM> Get-AppxProvisionedPackage -Path "E:\Scratch" | Select-Object -Property PackageName

PackageName
-----------
Clipchamp.Clipchamp_3.0.10220.0_neutral_~_yxz26nhyzhsrt
Microsoft.ApplicationCompatibilityEnhancements_1.2401.10.0_neutral_~_8wekyb3d8bbwe
Microsoft.AV1VideoExtension_1.1.61781.0_neutral_~_8wekyb3d8bbwe
Microsoft.AVCEncoderVideoExtension_1.0.271.0_neutral_~_8wekyb3d8bbwe
Microsoft.BingNews_4.1.24002.0_neutral_~_8wekyb3d8bbwe
Microsoft.BingSearch_2022.0.79.0_neutral_~_8wekyb3d8bbwe
Microsoft.BingWeather_4.53.52892.0_neutral_~_8wekyb3d8bbwe
Microsoft.DesktopAppInstaller_2024.112.2235.0_neutral_~_8wekyb3d8bbwe
Microsoft.GamingApp_2024.311.2341.0_neutral_~_8wekyb3d8bbwe
Microsoft.GetHelp_10.2302.10601.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEIFImageExtension_1.0.63001.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEVCVideoExtension_2.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.MicrosoftOfficeHub_18.2308.1034.0_neutral_~_8wekyb3d8bbwe
Microsoft.MicrosoftSolitaireCollection_4.19.3190.0_neutral_~_8wekyb3d8bbwe
Microsoft.MicrosoftStickyNotes_4.6.2.0_neutral_~_8wekyb3d8bbwe
Microsoft.MPEG2VideoExtension_1.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.OutlookForWindows_1.0.0.0_neutral__8wekyb3d8bbwe
Microsoft.Paint_11.2302.20.0_neutral_~_8wekyb3d8bbwe
Microsoft.PowerAutomateDesktop_11.2401.28.0_neutral_~_8wekyb3d8bbwe
Microsoft.RawImageExtension_2.3.171.0_neutral_~_8wekyb3d8bbwe
Microsoft.ScreenSketch_2022.2307.52.0_neutral_~_8wekyb3d8bbwe
Microsoft.SecHealthUI_1000.26100.1.0_x64__8wekyb3d8bbwe
Microsoft.StorePurchaseApp_22312.1400.6.0_neutral_~_8wekyb3d8bbwe
Microsoft.Todos_2.104.62421.0_neutral_~_8wekyb3d8bbwe
Microsoft.VP9VideoExtensions_1.1.451.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebMediaExtensions_1.0.62931.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebpImageExtension_1.0.62681.0_neutral_~_8wekyb3d8bbwe
Microsoft.Windows.DevHome_0.100.128.0_neutral_~_8wekyb3d8bbwe
Microsoft.Windows.Photos_24.24010.29003.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsAlarms_2022.2312.2.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsCalculator_2021.2311.0.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsCamera_2022.2312.3.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsFeedbackHub_2024.125.1522.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsNotepad_11.2312.18.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsSoundRecorder_2021.2312.5.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsStore_22401.1400.6.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsTerminal_3001.18.10301.0_neutral_~_8wekyb3d8bbwe
Microsoft.Xbox.TCUI_1.23.28005.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxGamingOverlay_2.624.1111.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxIdentityProvider_12.110.15002.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxSpeechToTextOverlay_1.97.17002.0_neutral_~_8wekyb3d8bbwe
Microsoft.YourPhone_1.24012.105.0_neutral_~_8wekyb3d8bbwe
Microsoft.ZuneMusic_11.2312.8.0_neutral_~_8wekyb3d8bbwe
MicrosoftCorporationII.QuickAssist_2024.309.159.0_neutral_~_8wekyb3d8bbwe
MicrosoftWindows.Client.WebExperience_424.1301.270.9_neutral_~_cw5n1h2txyewy
MicrosoftWindows.CrossDevice_1.23101.22.0_neutral_~_cw5n1h2txyewy
MSTeams_1.0.0.0_x64__8wekyb3d8bbwe
```

Retirons quelques unes d'entre elles. En voici trois exemples, beaucoup plus peuvent être retirées.

```
PS F:\Lab-DISM> Remove-AppxProvisionedPackage -Path "E:\Scratch" -PackageName "MicrosoftCorporationII.QuickAssist_2024.309.159.0_neutral_~_8wekyb3d8bbwe"


Path          : E:\Scratch
Online        : False
RestartNeeded : False



PS F:\Lab-DISM> Remove-AppxProvisionedPackage -Path "E:\Scratch" -PackageName "Microsoft.WindowsFeedbackHub_2024.125.1522.0_neutral_~_8wekyb3d8bbwe"


Path          : E:\Scratch
Online        : False
RestartNeeded : False



PS F:\Lab-DISM> Remove-AppxProvisionedPackage -Path "E:\Scratch" -PackageName "Microsoft.YourPhone_1.24012.105.0_neutral_~_8wekyb3d8bbwe"


Path          : E:\Scratch
Online        : False
RestartNeeded : False
```

Après un petit ménage, la liste est beaucoup moins longue.

```
PS F:\Lab-DISM> Get-AppxProvisionedPackage -Path "E:\Scratch" | Select-Object -Property PackageName

PackageName
-----------
Microsoft.ApplicationCompatibilityEnhancements_1.2401.10.0_neutral_~_8wekyb3d8bbwe
Microsoft.AV1VideoExtension_1.1.61781.0_neutral_~_8wekyb3d8bbwe
Microsoft.AVCEncoderVideoExtension_1.0.271.0_neutral_~_8wekyb3d8bbwe
Microsoft.BingWeather_4.53.52892.0_neutral_~_8wekyb3d8bbwe
Microsoft.DesktopAppInstaller_2024.112.2235.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEIFImageExtension_1.0.63001.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEVCVideoExtension_2.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.MicrosoftStickyNotes_4.6.2.0_neutral_~_8wekyb3d8bbwe
Microsoft.MPEG2VideoExtension_1.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.Paint_11.2302.20.0_neutral_~_8wekyb3d8bbwe
Microsoft.RawImageExtension_2.3.171.0_neutral_~_8wekyb3d8bbwe
Microsoft.ScreenSketch_2022.2307.52.0_neutral_~_8wekyb3d8bbwe
Microsoft.SecHealthUI_1000.26100.1.0_x64__8wekyb3d8bbwe
Microsoft.StorePurchaseApp_22312.1400.6.0_neutral_~_8wekyb3d8bbwe
Microsoft.Todos_2.104.62421.0_neutral_~_8wekyb3d8bbwe
Microsoft.VP9VideoExtensions_1.1.451.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebMediaExtensions_1.0.62931.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebpImageExtension_1.0.62681.0_neutral_~_8wekyb3d8bbwe
Microsoft.Windows.Photos_24.24010.29003.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsAlarms_2022.2312.2.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsCalculator_2021.2311.0.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsCamera_2022.2312.3.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsNotepad_11.2312.18.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsSoundRecorder_2021.2312.5.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsStore_22401.1400.6.0_neutral_~_8wekyb3d8bbwe
Microsoft.WindowsTerminal_3001.18.10301.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxGamingOverlay_2.624.1111.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxIdentityProvider_12.110.15002.0_neutral_~_8wekyb3d8bbwe
Microsoft.XboxSpeechToTextOverlay_1.97.17002.0_neutral_~_8wekyb3d8bbwe
Microsoft.ZuneMusic_11.2312.8.0_neutral_~_8wekyb3d8bbwe
MicrosoftWindows.Client.WebExperience_424.1301.270.9_neutral_~_cw5n1h2txyewy
MicrosoftWindows.CrossDevice_1.23101.22.0_neutral_~_cw5n1h2txyewy
```

Ajoutons quelques packages qui seront automatiquement installés. Il est possible de capturer les fichiers d'Appx téléchargés par le magasin d'applications Windows mais [ce site](https://store.rg-adguard.net/) permet de télécharger les fichiers par numéro de produit. Commençons tout d'abord par "[Microsoft PC Manager](https://apps.microsoft.com/detail/9pm860492szd?hl=en-US&gl=US)", une alternative officielle de Microsoft à CCleaner.

```
# Installation des dépendances
PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\MicrosoftPCManager\Microsoft.WindowsAppRuntime.1.5_5001.373.1736.0_x64__8wekyb3d8bbwe.Msix" -SkipLicense

Path          : E:\Scratch
Online        : False
RestartNeeded : False

# Installation de l'app
S F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\MicrosoftPCManager\Microsoft.MicrosoftPCManager_3.15.5.0_neutral_~_8wekyb3d8bbwe.Msixbundle" -SkipLicense

Path          : E:\Scratch
Online        : False
RestartNeeded : False
```

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/pRlimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/pRlimage.png)

Ajoutons Microsoft Whiteboard par la même occasion.

```
# Installation des dépendances
PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\Whiteboard\Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe.Appx" -SkipLicense

Path          : E:\Scratch
Online        : False
RestartNeeded : False


PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\Whiteboard\Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe.Appx" -SkipLicense


Path          : E:\Scratch
Online        : False
RestartNeeded : False

PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\Whiteboard\Microsoft.VCLibs.140.00_14.0.33519.0_x64__8wekyb3d8bbwe.Appx" -SkipLicense


Path          : E:\Scratch
Online        : False
RestartNeeded : False


# Installation de l'appli
PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\Whiteboard\Microsoft.Whiteboard_54.20907.567.0_neutral_~_8wekyb3d8bbwe.AppxBundle" -SkipLicense


Path          : E:\Scratch
Online        : False
RestartNeeded : False


PS F:\Lab-DISM> Get-AppxProvisionedPackage -Path "E:\Scratch" | Where-Object PackageName -like "*Whiteboard*" | Select-Object -Property PackageName

PackageName
-----------
Microsoft.Whiteboard_54.20907.567.0_neutral_~_8wekyb3d8bbwe
```

Nous pourrions aussi installer les extensions pour les types de fichiers multimédias de Microsoft.

```
PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\MediaExtensions\Microsoft.AV1VideoExtension_1.3.4.0_neutral_~_8wekyb3d8bbwe.AppxBundle" -SkipLicense


Path          : E:\Scratch
Online        : False
RestartNeeded : False



PS F:\Lab-DISM> Add-AppxProvisionedPackage -Path "E:\Scratch" -PackagePath "F:\Lab-DISM\MSIXBundles\MediaExtensions\Microsoft.MPEG2VideoExtension_1.0.61931.0_neutral_~_8wekyb3d8bbwe.AppxBundle" -SkipLicense


Path          : E:\Scratch
Online        : False
RestartNeeded : False



PS F:\Lab-DISM> Get-AppxProvisionedPackage -Path "E:\Scratch" | Where-Object PackageName -like "*Extension*" | Select-Object -Property PackageName

PackageName
-----------
Microsoft.AV1VideoExtension_1.3.4.0_neutral_~_8wekyb3d8bbwe
Microsoft.AVCEncoderVideoExtension_1.0.271.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEIFImageExtension_1.0.63001.0_neutral_~_8wekyb3d8bbwe
Microsoft.HEVCVideoExtension_2.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.MPEG2VideoExtension_1.0.61931.0_neutral_~_8wekyb3d8bbwe
Microsoft.RawImageExtension_2.3.171.0_neutral_~_8wekyb3d8bbwe
Microsoft.VP9VideoExtensions_1.1.451.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebMediaExtensions_1.0.62931.0_neutral_~_8wekyb3d8bbwe
Microsoft.WebpImageExtension_1.0.62681.0_neutral_~_8wekyb3d8bbwe
```

Ajoutons aussi un [fichier de disposition du menu démarrer](https://cours.alexarsenault.cf/attachments/18) pour éviter les suggestions d'apps à installer de Windows.

```
PS F:\Lab-DISM> Copy-Item -Path "F:\Lab-DISM\LayoutModification.json" -Destination "E:\Scratch\Users\Default\appdata\local\Microsoft\Windows\Shell" -Recurse -Force
```

##### Commettres des modifications à un WIM

Aucun fichier ne doit être en cours de modification. Déchargeons nos ruches de registre.

```
PS F:\Lab-DISM> reg unload HKEY_USERS\WIMDefault
The operation completed successfully.

PS F:\Lab-DISM> reg unload HKEY_USERS\WIM-SOFTWARE
The operation completed successfully.

PS F:\Lab-DISM> reg unload HKEY_USERS\WIM-SYSTEM
The operation completed successfully.
```

Il est possible d'appliquer les modifications à une image sans la démonter avec la commande /Commit

```
PS F:\Lab-DISM> DISM /Commit-Image /MountDir:E:\Scratch

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Saving image
[==========================100.0%==========================]
The operation completed successfully.
```

Lorsque l'ensemble des modifications sont terminées, il est bonne pratique de démonter l'image pour la compresser et retirer les traces laissées sur le système ayant modifié le WIM. On peut démonter l'image en commetant ou en omettant les changement avec la commande "Unmount-Wim"

```
# Il est possible ici de /Commit ou /Discard
PS F:\Lab-DISM> DISM /Unmount-Wim /Mountdir:E:\Scratch /Commit

Deployment Image Servicing and Management tool
Version: 10.0.22621.2792

Image File : F:\Lab-DISM\install.wim
Image Index : 1
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.
```

##### Créer un média d'installation avec la nouvelle image

La façon la plus simple de créer un média d'installation avec notre nouvelle image serait de remplacer le fichier .ESD ou .WIM d'un média d'installation existant à l'aide de votre méthode favorite. Dans mon cas, puisqu'il s'agit d'une clé USB, il suffit de copier-coller pour remplacer le fichier en question. S'il s'agissait d'un déploiment réseau, il suffirait de pointer le WinPE vers la bonne image à son exécution.

Il est important de noter que si le .wim est plus lourd que 8 gigaoctets, le média d'installation devra être une clé USB formatée en exFAT ou en NTFS.

```
PS F:\Lab-DISM> Remove-Item -Path I:\sources\install.esd
PS F:\Lab-DISM> Copy-Item -Path .\install.wim -Destination I:\sources
```

##### Résultat d'installation

La nouvelle image pourra être installée normalement et les modifications apportées devraient être appliquées au système.

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/scaled-1680-/qtvimage.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-02/qtvimage.png)