Windows Sandbox permet d’automatiser certaines actions dès l’ouverture de l’environnement isolé grâce à la balise <LogonCommand> dans le fichier .wsb. Cette fonctionnalité est très pratique pour préparer un environnement de test, lancer des scripts, installer des outils ou afficher automatiquement une interface lorsque la sandbox démarre.
Quand la sandbox s’ouvre, elle exécute automatiquement la commande définie dans :
<LogonCommand>
<Command>...</Command>
</LogonCommand>
La commande est exécutée dans le contexte de l’utilisateur de la sandbox (WDAGUtilityAccount), exactement comme si tu l’avais tapée dans la fenêtre exécuter ou dans un terminal.
<LogonCommand>
<Command>explorer.exe</Command>
</LogonCommand>
→ La sandbox démarre et ouvre automatiquement l'explorateur de fichiers.
<LogonCommand>
<Command>powershell.exe -NoExit</Command>
</LogonCommand>
→ PowerShell s’ouvre automatiquement et reste ouvert.
<LogonCommand>
<Command>powershell.exe -ExecutionPolicy Bypass -File "C:\Data\setup.ps1"</Command>
</LogonCommand>
⚠️ Le dossier C:\Data doit exister dans la sandbox, souvent grâce à un dossier mappé :
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Sandbox\Data</HostFolder>
<SandboxFolder>C:\Data</SandboxFolder>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>"C:\Install\setup.exe" /silent</Command>
</LogonCommand>
→ L’installation se lance dès l’ouverture.
<LogonCommand>
<Command>C:\Scripts\start.bat</Command>
</LogonCommand>
<LogonCommand> ?Si la commande pointe vers un fichier dans un dossier mappé, ce dossier doit :
<ProtectedClient>Enable</ProtectedClient> (mode sécurisé) coupe tous les dossiers mappés → dans ce cas, seules les commandes internes sont possibles.
Si la commande échoue silencieusement, la sandbox démarre quand même (aucun message d’erreur visible par défaut).
Les chemins doivent être absolus, comme dans tout fichier .wsb.
ReadOnly=true).-ExecutionPolicy Bypass pour éviter les blocages.C:\Data, C:\Scripts)..wsb avec une commande simple avant d’ajouter un script complexe.Voici un fichier .wsb complet qui :
Scripts,<Configuration>
<VGpu>Enable</VGpu>
<Networking>Default</Networking>
<ClipboardRedirection>Enable</ClipboardRedirection>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Sandbox\Scripts</HostFolder>
<SandboxFolder>C:\Scripts</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\init.ps1"</Command>
</LogonCommand>
</Configuration>
→ La sandbox démarre, le dossier est accessible, et le script init.ps1 se lance automatiquement.