Skip to content

Commit ccca54f

Browse files
authored
Merge pull request #30
Update v5
2 parents faa9023 + 9d71855 commit ccca54f

7 files changed

Lines changed: 557 additions & 47 deletions

File tree

.github/scripts/validate_bat.py

Lines changed: 312 additions & 5 deletions
Large diffs are not rendered by default.

.github/workflows/validate.yml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Validate win11-setup.bat
1+
name: 🛡️ Validation win11-setup.bat
22

33
on:
44
push:
@@ -9,17 +9,27 @@ on:
99

1010
jobs:
1111
validate:
12-
name: Static validation
12+
name: "🔍 43 vérifications automatiques"
1313
runs-on: ubuntu-latest
1414

1515
steps:
16-
- name: Checkout
16+
- name: "📥 Récupération du code"
1717
uses: actions/checkout@v4
1818

19-
- name: Set up Python
19+
- name: "🐍 Préparation Python"
2020
uses: actions/setup-python@v5
2121
with:
2222
python-version: "3.x"
2323

24-
- name: Run static validation
25-
run: python .github/scripts/validate_bat.py
24+
- name: "🧪 Validation statique (43 tests)"
25+
run: |
26+
echo "## 🚀 Démarrage de la validation..." >> $GITHUB_STEP_SUMMARY
27+
echo "" >> $GITHUB_STEP_SUMMARY
28+
echo "| Info | Valeur |" >> $GITHUB_STEP_SUMMARY
29+
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
30+
echo "| 📄 Script | \`win11-setup.bat\` |" >> $GITHUB_STEP_SUMMARY
31+
echo "| 📏 Taille | $(wc -l < win11-setup.bat) lignes |" >> $GITHUB_STEP_SUMMARY
32+
echo "| 📋 Règles | \`prerequis_WIN11.md\` |" >> $GITHUB_STEP_SUMMARY
33+
echo "| 🤖 Validateur | \`.github/scripts/validate_bat.py\` |" >> $GITHUB_STEP_SUMMARY
34+
echo "" >> $GITHUB_STEP_SUMMARY
35+
python .github/scripts/validate_bat.py

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
__pycache__/
2+
*.pyc
3+
*.pyo

CLAUDE.md

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,22 @@ Il n'existe pas d'`autounattend.xml` dans ce dépôt (fichier séparé, hors dé
3434
| 2 | Point de restauration — **toujours en premier** |
3535
| 3 | Suppression fichiers Panther (mot de passe en clair 25H2) |
3636
| 4 | Pagefile fixe 6 Go — vérification 10 Go libres avant |
37-
| 5 | Mémoire : compression, SysMain/Prefetch désactivés |
38-
| 6 | Télémétrie / Copilot / Recall / IA 25H2 |
39-
| 7 | AutoLoggers (DiagTrack, DiagLog, SQMLogger, WiFiSession, CloudExperienceHostOobe, NtfsLog, ReadyBoot, AppModel, LwtNetLog) |
37+
| 5 | Mémoire : compression, SysMain/Prefetch désactivés, `SwapfileControl=0` (swapfile.sys UWP ~256 Mo) |
38+
| 6 | Télémétrie / Copilot / Recall / IA 25H2 / EventTranscript / MRT / TailoredExperiences / DesktopAnalytics |
39+
| 7 | AutoLoggers (DiagTrack, DiagLog, SQMLogger, WiFiSession, CloudExperienceHostOobe, NtfsLog, ReadyBoot, AppModel, LwtNetLog, RadioMgr, RdrLog) |
4040
| 8 | Windows Search — désactive web/Bing/Search Highlights (WSearch reste actif) |
4141
| 9 | GameDVR, Delivery Optimization, Edge démarrage anticipé/arrière-plan (HKCU) |
4242
| 10 | Politiques Windows Update |
4343
| 11 | Vie privée, sécurité, WER, ContentDelivery, AppPrivacy |
44-
| 11b | CDP, Clipboard (Win+V local activé, cloud désactivé), ContentDeliveryManager, HKCU privacy, Ink Workspace, Peernet, TCP sécurité, LLMNR, WPAD, SMBv1, Biométrie |
44+
| 11b | CDP, Clipboard (Win+V local activé, cloud désactivé), ContentDeliveryManager, HKCU privacy, Spotlight suggestions (ActionCenter/Settings/TailoredExperiences HKCU), ShowSyncProviderNotifications=0, PreventDeviceMetadataFromNetwork=1, Ink Workspace, Peernet, TCP sécurité, LLMNR, WPAD, SMBv1, Biométrie |
4545
| 12 | Interface Win10 (taskbar, widgets, menu contextuel, hibernation) |
46-
| 13 | CPU : `SystemResponsiveness=10`, PowerThrottling off, sécurité TCP/IP (`DisableIPSourceRouting`, `EnableICMPRedirect=0`) |
46+
| 13 | CPU : `SystemResponsiveness=10`, PowerThrottling off, sécurité TCP/IP (`DisableIPSourceRouting`, `EnableICMPRedirect=0`), `DisableBandwidthThrottling=1` (LanmanWorkstation), TCP Keep-Alive (`KeepAliveTime=300000`, `KeepAliveInterval=1000`) |
4747
| 13b | Config avancée : bypass TPM/RAM, PasswordLess, NumLock, Snap Assist, menu alimentation, RDP conditionnel |
48-
| 14 | Services → `Start=4` (90+ services, effectif après reboot) |
49-
| 15 | `sc stop` immédiat + `sc failure DiagTrack` |
50-
| 16 | Fichier `hosts` — blocage 57+ domaines télémétrie |
48+
| 14 | Services → `Start=4` (113+ services, effectif après reboot) dont WinRM, RasAuto, RasMan, iphlpsvc, IKEEXT, PolicyAgent, fhsvc, AxInstSV, MSiSCSI, TextInputManagementService, GraphicsPerfSvc, NcdAutoSetup, lmhosts, CertPropSvc, AppReadiness, WorkFoldersSvc, RmSvc, SgrmBroker, NPSMSvc, AssignedAccessManagerSvc, autotimesvc, NetSetupSvc, RpcLocator, UmRdpService (conditionnel NEED_RDP=0) |
49+
| 15 | `sc stop` immédiat (incluant les 24 nouveaux services v2+v3+v4+v5) + `sc failure DiagTrack` |
50+
| 16 | Fichier `hosts` — blocage 72+ domaines télémétrie dont `eu/us.vortex-win.data.microsoft.com`, `inference.microsoft.com`, `arc.msn.com`, `redir.metaservices.microsoft.com`, `dmd.metaservices.microsoft.com`, `tsfe.trafficshaping.microsoft.com`, `rad.msn.com`, `ads.msn.com`, `adnxs.com`, `pipe.aria.microsoft.com`, `mobile.pipe.aria.microsoft.com` |
5151
| 17a | GPO AppCompat (`DisableUAR`, `DisableInventory`, `DisablePCA`) |
52-
| 17 | 73+ tâches planifiées désactivées (`schtasks /Change /Disable`) |
52+
| 17 | 93+ tâches planifiées désactivées (`schtasks /Change /Disable`) |
5353
| 18 | Suppression apps UWP (PowerShell `Remove-AppxPackage`) |
5454
| 19 | Vidage `C:\Windows\Prefetch\` |
5555
| 19b | Vérification intégrité système (SFC/DISM) + restart Explorer |
@@ -65,10 +65,52 @@ set NEED_PRINTER=1 # 0 = désactiver Spooler (pas d'imprimante)
6565
set BLOCK_ADOBE=0 # 1 = activer le bloc Adobe dans hosts
6666
```
6767

68+
## CI / Validation automatique
69+
70+
| Fichier | Rôle |
71+
|---|---|
72+
| `.github/workflows/validate.yml` | Déclenche `validate_bat.py` sur push/PR vers `Update` et `main` |
73+
| `.github/scripts/validate_bat.py` | 43 tests statiques — règles lues depuis `prerequis_WIN11.md` + checks hardcodés + rapport GitHub Step Summary |
74+
75+
Tests clés : valeurs registre interdites, services protégés, apps protégées, WU intouché, hosts WU jamais bloqués, structure 20 sections, optimisations obligatoires, services v2/v3/v4/v5 désactivés, hosts v2/v3/v4/v5 bloqués, apps v3 présentes, tâches v4/v5 désactivées.
76+
6877
## Conventions de code
6978

7079
- Chaque section se termine par une ligne `echo [%date% %time%] Section N : ... >> "%LOG%"`
7180
- Toutes les commandes redirigent vers `>nul 2>&1`
7281
- Les services conditionnels utilisent `if "%NEED_X%"=="0" reg add ...`
7382
- Les tâches planifiées avec espaces dans le chemin → appels `schtasks` individuels (pas de boucle `for`)
7483
- Les clés HKCU s'appliquent à l'utilisateur courant (contexte FirstLogonCommands = premier utilisateur)
84+
85+
## Règles opérationnelles — Git et validation
86+
87+
Ces règles sont issues de problèmes concrets rencontrés lors de modifications sur ce dépôt. Elles sont **obligatoires**.
88+
89+
### 1. Toujours pousser les fichiers volumineux via `git` directement
90+
91+
Les outils MCP (`create_or_update_file`) ne peuvent pas gérer fiablement des fichiers de 90 Ko+ avec des caractères Unicode. Le contenu est tronqué ou corrompu silencieusement.
92+
93+
**Règle** : pour `win11-setup.bat`, `validate_bat.py` et tout fichier > 10 Ko, utiliser exclusivement :
94+
```bash
95+
git add <fichier>
96+
git commit -m "message"
97+
git push -u origin <branche>
98+
```
99+
Ne jamais passer le contenu d'un grand fichier en paramètre inline d'un outil MCP ou d'un agent.
100+
Ne jamais mentionner Claude (claude.ai/code) dans le "message" de commit
101+
102+
### 2. Ne jamais lancer d'agents en arrière-plan sur les mêmes fichiers
103+
104+
Un agent lancé en arrière-plan (`run_in_background`) peut lire un état stale du dépôt (avant un commit récent) et pousser une version corrompue ou périmée du fichier, écrasant les corrections.
105+
106+
**Règle** : toute opération qui lit, modifie ou pousse `win11-setup.bat` ou `validate_bat.py` doit être effectuée **séquentiellement dans la session principale**. Aucun agent parallèle ou arrière-plan pour ces fichiers.
107+
108+
### 3. Exécuter le validateur avant tout premier push
109+
110+
Une clé registre interdite (ex. `DisableWindowsSpotlightFeatures`) qui passe inaperçue en local fait échouer la CI. Corriger en CI = commits supplémentaires inutiles.
111+
112+
**Règle** : avant le premier `git push` de toute modification de `win11-setup.bat`, toujours exécuter :
113+
```bash
114+
python3 .github/scripts/validate_bat.py
115+
```
116+
et vérifier que tous les tests passent (0 FAIL). Ne pousser qu'après validation locale réussie.

README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,23 @@ Le script est organisé en **20 sections** qui s'exécutent séquentiellement :
3737
| 2 | Création d'un point de restauration système (obligatoire avant toute modification) |
3838
| 3 | Suppression des fichiers Panther (`C:\Windows\Panther`) — sécurité : mot de passe admin en clair (25H2) |
3939
| 4 | Pagefile fixe à 6 Go sur C: (uniquement si ≥ 10 Go d'espace libre) |
40-
| 5 | Optimisation mémoire : compression activée, Prefetch désactivé, SysMain arrêté, opt-out télémétrie PowerShell |
41-
| 6 | Zéro télémétrie : 20+ clés registre — Copilot, Recall, DiagTrack, IA 25H2, Spotlight, Cloud Search, collecte Microsoft |
42-
| 7 | AutoLoggers désactivés : DiagTrack, DiagLog, SQMLogger, WiFiSession, NtfsLog, ReadyBoot, AppModel, LwtNetLog, CloudExperienceHostOobe |
40+
| 5 | Optimisation mémoire : compression activée, Prefetch désactivé, SysMain arrêté, opt-out télémétrie PowerShell, `SwapfileControl=0` (swapfile.sys UWP désactivé, ~256 Mo libérés) |
41+
| 6 | Zéro télémétrie : 25+ clés registre — Copilot, Recall, DiagTrack, IA 25H2, Spotlight, Cloud Search, EventTranscript, MRT, TailoredExperiences, DesktopAnalytics |
42+
| 7 | AutoLoggers désactivés : DiagTrack, DiagLog, SQMLogger, WiFiSession, NtfsLog, ReadyBoot, AppModel, LwtNetLog, CloudExperienceHostOobe, RadioMgr, RdrLog |
4343
| 8 | Windows Search : désactivation recherche web, Bing, Search Highlights animés (WSearch reste actif) |
4444
| 9 | GameDVR désactivé, Delivery Optimization désactivé, Edge démarrage anticipé/arrière-plan off (HKCU) |
4545
| 10 | Politiques Windows Update : redémarrage rapide, réseau mesuré autorisé, notifications conservées |
4646
| 11 | Vie privée & sécurité : Cortana, ID publicitaire, historique d'activité, géolocalisation, RemoteAssistance, saisie, AutoPlay, contenu cloud, cartes hors ligne, modèle vocal |
47-
| 11b | CDP, Presse-papiers local Win+V activé (cloud/cross-device désactivé), ContentDeliveryManager, HKCU privacy, LLMNR, WPAD, SMBv1, Biométrie |
47+
| 11b | CDP, Presse-papiers local Win+V activé (cloud/cross-device désactivé), ContentDeliveryManager, HKCU privacy, Spotlight suggestions (ActionCenter/Settings), notifications sync provider (OneDrive/tiers), métadonnées matériel réseau, LLMNR, WPAD, SMBv1, Biométrie |
4848
| 12 | Interface Win10 : barre à gauche (HKLM), widgets supprimés, Teams/Copilot masqués, menu contextuel classique, "Ce PC" par défaut, Galerie/Réseau masqués, son démarrage off, hibernation off, Fast Startup off — centre de notifications conservé |
49-
| 13 | Priorité CPU : `SystemResponsiveness = 10`, PowerThrottling off, TCP security |
49+
| 13 | Priorité CPU : `SystemResponsiveness = 10`, PowerThrottling off, TCP security, `DisableBandwidthThrottling=1`, TCP Keep-Alive 5 min |
5050
| 13b | Config système avancée : bypass TPM/RAM, PasswordLess, NumLock, Snap Assist, menu alimentation, RDP conditionnel |
51-
| 14 | 90+ services désactivés via registre (`Start=4`) |
52-
| 15 | Arrêt immédiat des services désactivés + `sc failure DiagTrack` |
53-
| 16 | Fichier `hosts` : 57+ domaines de télémétrie bloqués en `0.0.0.0` (+ bloc Adobe optionnel) |
51+
| 14 | 113+ services désactivés via registre (`Start=4`) dont WinRM, RasAuto, RasMan, iphlpsvc, IKEEXT, PolicyAgent, fhsvc, AxInstSV, MSiSCSI, TextInputManagementService, GraphicsPerfSvc, **NcdAutoSetup**, **lmhosts**, **CertPropSvc**, AppReadiness, WorkFoldersSvc, RmSvc, SgrmBroker, NPSMSvc, AssignedAccessManagerSvc, autotimesvc, **NetSetupSvc**, **RpcLocator**, **UmRdpService** (conditionnel NEED_RDP=0) |
52+
| 15 | Arrêt immédiat des services désactivés (incluant les 24 nouveaux v2+v3+v4+v5) + `sc failure DiagTrack` |
53+
| 16 | Fichier `hosts` : 72+ domaines de télémétrie bloqués en `0.0.0.0` dont `eu/us.vortex-win.data.microsoft.com`, `inference.microsoft.com`, `arc.msn.com`, `redir.metaservices.microsoft.com`, `dmd.metaservices.microsoft.com`, `tsfe.trafficshaping.microsoft.com`, `rad.msn.com`, `ads.msn.com`, `adnxs.com`, **`pipe.aria.microsoft.com`**, **`mobile.pipe.aria.microsoft.com`** (+ bloc Adobe optionnel) |
5454
| 17a | GPO AppCompat : `DisableUAR`, `DisableInventory`, `DisablePCA`, `AITEnable=0` |
55-
| 17 | 73+ tâches planifiées désactivées (télémétrie, CEIP, Recall, Copilot, Xbox, IA 25H2, MDM, Work Folders) |
56-
| 18 | Suppression de 73 applications bloatware (UWP) via PowerShell |
55+
| 17 | 93+ tâches planifiées désactivées (télémétrie, CEIP, Recall, Copilot, Xbox, IA 25H2, MDM, Work Folders, Input sync, LiveKernelReports, HelloFace, Sysmain, SpacePort, BrokerInfrastructure, CloudContent, WlanSvc/CDSSync, **SdbinstMergeDbTask**, **AutoEnrollmentTask**, **UserTask**, **NetworkStateChangeTask**, **UsersOptInToMapsUpdatesTask**) |
56+
| 18 | Suppression de 74 applications bloatware (UWP) via PowerShell (dont Microsoft.MicrosoftJournal) |
5757
| 19 | Nettoyage du dossier `C:\Windows\Prefetch` |
5858
| 19b | Vérification intégrité système (SFC/DISM) + restart Explorer |
5959
| 20 | Résumé d'exécution dans le log + fin du script |
@@ -145,11 +145,11 @@ Sur un Windows 11 déjà installé :
145145

146146
| Catégorie | Quantité |
147147
|---|---|
148-
| Clés registre modifiées | 135+ |
149-
| Services désactivés | 90+ |
150-
| Tâches planifiées désactivées | 73+ |
151-
| Applications (UWP) supprimées | 73+ |
152-
| Domaines de télémétrie bloqués | 57+ |
148+
| Clés registre modifiées | 160+ |
149+
| Services désactivés | 113+ |
150+
| Tâches planifiées désactivées | 93+ |
151+
| Applications (UWP) supprimées | 74+ |
152+
| Domaines de télémétrie bloqués | 72+ |
153153
| Options de configuration | 5 |
154154

155155
---
@@ -158,7 +158,7 @@ Sur un Windows 11 déjà installé :
158158

159159
| Fichier | Description |
160160
|---|---|
161-
| `win11-setup.bat` | Script principal d'optimisation post-installation (~997 lignes) |
161+
| `win11-setup.bat` | Script principal d'optimisation post-installation (~1135 lignes) |
162162
| `prerequis_WIN11.md` | Document de spécification : règles de conception, listes d'apps/services/tâches, contraintes techniques |
163163
| `CLAUDE.md` | Fichier de configuration interne — structure du script, règles absolues, conventions |
164164

@@ -168,7 +168,7 @@ Sur un Windows 11 déjà installé :
168168

169169
### Pourquoi pas de boucle pour les clés registre ?
170170

171-
Les 135+ appels `reg add` sont écrits individuellement et non factorisés dans une boucle `for`. Ce choix est délibéré :
171+
Les 150+ appels `reg add` sont écrits individuellement et non factorisés dans une boucle `for`. Ce choix est délibéré :
172172

173173
- **Chemins et types hétérogènes** — chaque clé a sa propre ruche (`HKLM`, `HKCU`), son propre chemin, son type (`REG_DWORD`, `REG_SZ`, `REG_MULTI_SZ`) et sa valeur. Une boucle nécessiterait un tableau de paramètres plus complexe à maintenir que les appels directs.
174174
- **Lisibilité et auditabilité** — un script de sécurité/optimisation doit pouvoir être relu ligne par ligne. Chaque `reg add` est explicite : on voit immédiatement ce qui est modifié, où et avec quelle valeur.

prerequis_WIN11.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ Ces services ne doivent **jamais** être désactivés :
230230
| `TapiSrv` | Telephony (TAPI) — inutile sur PC de bureau sans modem/RNIS/softphone |
231231
| `WFDSConMgrSvc` | Wi-Fi Direct Services Connection Manager — inutile sur PC de bureau fixe |
232232
| `SessionEnv` | Remote Desktop Configuration — conditionnel `NEED_RDP=0` (complément TermService) |
233+
| `NetSetupSvc` | Network Setup Service — ne tourne qu'à la configuration réseau initiale, inutile post-setup |
234+
| `RpcLocator` | Remote Procedure Call Locator — service déprécié depuis Vista, inutile sur réseau moderne |
235+
| `UmRdpService` | RDP User Mode Port Redirector — conditionnel `NEED_RDP=0` (inutile si RDP désactivé) |
233236

234237
> ⚠️ `WSearch` : **NE PAS ajouter à cette liste** — toujours conservé sans exception
235238
@@ -310,6 +313,11 @@ Ces services ne doivent **jamais** être désactivés :
310313
| `\Microsoft\Windows\DUSM\dusmtask` | Maintenance Data Usage Service — complément DusmSvc désactivé |
311314
| `\Microsoft\Windows\Management\Provisioning\Cellular` | Approvisionnement réseau cellulaire — inutile sur PC de bureau |
312315
| `\Microsoft\Windows\Management\Provisioning\Logon` | MDM provisioning au logon — inutile hors Intune/SCCM |
316+
| `\Microsoft\Windows\Application Experience\SdbinstMergeDbTask` | Fusion base compatibilité applicative/télémétrie — v5 |
317+
| `\Microsoft\Windows\CertificateServicesClient\AutoEnrollmentTask` | Inscription auto certificats Active Directory — inutile hors entreprise — v5 |
318+
| `\Microsoft\Windows\CertificateServicesClient\UserTask` | Tâche utilisateur inscription certificats — inutile hors entreprise — v5 |
319+
| `\Microsoft\Windows\SettingSync\NetworkStateChangeTask` | Synchronisation paramètres déclenchée sur changement réseau — v5 |
320+
| `\Microsoft\Windows\Maps\UsersOptInToMapsUpdatesTask` | Opt-in mises à jour cartographiques (MapsBroker déjà désactivé) — v5 |
313321

314322
---
315323

@@ -351,6 +359,8 @@ Ces services ne doivent **jamais** être désactivés :
351359
| `outlookads.live.com` | Publicités Outlook |
352360
| `fp.msedge.net` | CDN télémétrie Edge |
353361
| `nexus.officeapps.live.com` | Télémétrie Office |
362+
| `pipe.aria.microsoft.com` | Pipeline ARIA principal (hors Edge-spécifique) — v5 |
363+
| `mobile.pipe.aria.microsoft.com` | Pipeline ARIA mobile — v5 |
354364

355365
> Adobe (commenté par défaut — activer si pas de logiciel Adobe) :
356366
> `lmlicenses.wip4.adobe.com`, `lm.licenses.adobe.com`, `practivate.adobe.com`, `activate.adobe.com`

0 commit comments

Comments
 (0)