# crea_comptes_peda.ps1
# A lancer en tant qu'administrateur sur chaque PC
# Vérifie qu'on est bien en admin
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {
Write-Error "Merci de lancer ce script en tant qu'administrateur."
exit 1
}
Write-Host "=== Création / vérification des comptes eleve et prof ===`n"
# Mots de passe
$elevePassword = "eleve"
$profPassword = "prof"
# Crée un compte local si absent
function Ensure-LocalUser {
param(
[string]$UserName,
[string]$Password,
[string]$FullName
)
if (-not (Get-LocalUser -Name $UserName -ErrorAction SilentlyContinue)) {
Write-Host "Création du compte $UserName ..."
net user $UserName $Password /add /y /fullname:"$FullName" /passwordchg:no /passwordreq:yes | Out-Null
# Ajout dans le groupe Users (standard)
net localgroup "Users" $UserName /add | Out-Null
}
else {
Write-Host "Le compte $UserName existe déjà, je ne le recrée pas."
}
}
# 1) Création des comptes
Ensure-LocalUser -UserName "eleve" -Password $elevePassword -FullName "Compte eleve"
Ensure-LocalUser -UserName "prof" -Password $profPassword -FullName "Compte prof"
Write-Host "`n=== Application des restrictions (si profils déjà créés) ===`n"
function Lockdown-UserProfile {
param(
[string]$ProfilePath,
[string]$HiveName
)
$ntuserPath = Join-Path $ProfilePath "NTUSER.DAT"
if (-not (Test-Path $ntuserPath)) {
Write-Host "Profil $ProfilePath non prêt (pas encore de NTUSER.DAT). Connecte-toi une fois avec ce compte puis relance le script."
return
}
Write-Host "Chargement de la ruche du profil: $ProfilePath"
# Charge la ruche dans HKU\<HiveName>
reg load "HKU\$HiveName" "$ntuserPath" > $null 2>&1
try {
# Dossiers policies
$explorerKey = "Registry::HKU\$HiveName\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
$systemKey = "Registry::HKU\$HiveName\Software\Microsoft\Windows\CurrentVersion\Policies\System"
$sysPolKey = "Registry::HKU\$HiveName\Software\Policies\Microsoft\Windows\System"
New-Item -Path $explorerKey -Force | Out-Null
New-Item -Path $systemKey -Force | Out-Null
New-Item -Path $sysPolKey -Force | Out-Null
# Interdit Panneau de configuration
New-ItemProperty -Path $explorerKey -Name "NoControlPanel" -PropertyType DWord -Value 1 -Force | Out-Null
# Cache la commande Exécuter, certains menus
New-ItemProperty -Path $explorerKey -Name "NoRun" -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path $explorerKey -Name "NoViewContextMenu" -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path $explorerKey -Name "NoFileMenu" -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path $explorerKey -Name "NoChangeStartMenu" -PropertyType DWord -Value 1 -Force | Out-Null
# Interdit le gestionnaire des tâches
New-ItemProperty -Path $systemKey -Name "DisableTaskMgr" -PropertyType DWord -Value 1 -Force | Out-Null
# Interdit CMD (disable complet)
# 0 = autorisé, 1 = interdit mais les scripts fonctionnent, 2 = tout interdit
New-ItemProperty -Path $sysPolKey -Name "DisableCMD" -PropertyType DWord -Value 2 -Force | Out-Null
Write-Host "Restrictions appliquées sur le profil: $ProfilePath"
}
finally {
# Décharge la ruche
reg unload "HKU\$HiveName" > $null 2>&1
}
}
# 2) Application des restrictions sur eleve et prof si leur profil existe
$eleveProfile = "C:\Users\eleve"
$profProfile = "C:\Users\prof"
if (Test-Path $eleveProfile) {
Lockdown-UserProfile -ProfilePath $eleveProfile -HiveName "EleveHive"
} else {
Write-Host "Le dossier $eleveProfile n'existe pas encore. Connecte-toi une fois avec le compte 'eleve', puis relance le script."
}
if (Test-Path $profProfile) {
Lockdown-UserProfile -ProfilePath $profProfile -HiveName "ProfHive"
} else {
Write-Host "Le dossier $profProfile n'existe pas encore. Connecte-toi une fois avec le compte 'prof', puis relance le script."
}
Write-Host "`nTerminé."
Write-Host "Rappel :"
Write-Host "1) Lancer ce script en admin -> crée les comptes."
Write-Host "2) Se connecter une fois avec 'eleve' et 'prof' (pour créer leurs profils)."
Write-Host "3) Relancer ce script en admin -> applique les blocages (CMD, Panneau de config, etc.)."