@echo off
setlocal EnableDelayedExpansion
title Creation point de restauration

:: =================================================================
       ::  CLUB INFORMATIQUE DES CLAYES-SOUS-BOIS
:: =================================================================
::  CREATION AUTOMATIQUE D'UN POINT DE RESTAURATION SYSTEME
::  Lecteur : C:
::  Prerequis : Droits Administrateur
::  Compatible : Windows 10 et Windows 11
:: =================================================================
echo =================================================================
echo         CLUB INFORMATIQUE DES CLAYES-SOUS-BOIS - Mars 2026
echo =================================================================
echo       CREATION AUTOMATIQUE D'UN POINT DE RESTAURATION SYSTEME

:: -----------------------------------------------------------------
:: Verification des droits Administrateur
:: -----------------------------------------------------------------
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo  [ERREUR] Ce script necessite les droits Administrateur.
    echo.
    echo  Solution : Clic droit sur le fichier .bat
    echo             puis "Executer en tant qu administrateur"
    echo.
    pause
    exit /b 1
)

echo.
echo  =================================================================
echo   CREATION D UN POINT DE RESTAURATION  --  Lecteur C:
echo  =================================================================
echo.


:: -----------------------------------------------------------------
:: ETAPE 1 : Verifier si des Points de restauration existent
::
::   On interroge la classe WMI SystemRestore via PowerShell.
::   PowerShell est present sur tous les Windows 10/11.
::   Si au moins un point existe, la restauration etait active.
:: -----------------------------------------------------------------
echo   [1/3]  Verification de l etat de la restauration sur C: ...

set "SR_ETAIT_ACTIVE=0"
powershell -NoProfile -ExecutionPolicy Bypass -Command "try { $r = Get-CimInstance -Namespace root\default -ClassName SystemRestore -ErrorAction Stop; if ($r) { exit 0 } else { exit 1 } } catch { exit 1 }"
if %errorlevel% equ 0 (
    set "SR_ETAIT_ACTIVE=1"
    echo         Resultat : ACTIVE  ^(points de restauration systeme detectes^)
) else (
    echo         Resultat : INACTIVE  ^(aucun point de restauration systeme trouve^)
)


:: -----------------------------------------------------------------
:: ETAPE 2 : Activer la restauration et supprimer le delai 24h
:: -----------------------------------------------------------------
echo.
echo   [2/3]  Activation de la restauration si necessaire ...

powershell -NoProfile -ExecutionPolicy Bypass -Command "Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore' -Name 'SystemRestorePointCreationFrequency' -Value 0 -Type DWord -Force -ErrorAction SilentlyContinue; Enable-ComputerRestore -Drive 'C:\' -ErrorAction SilentlyContinue"

echo         Restauration activee sur C: ^(sans effet si deja active^).


:: -----------------------------------------------------------------
:: ETAPE 3 : Creer le point de restauration avec label date
:: -----------------------------------------------------------------
echo.
echo   [3/3]  Creation du point de restauration ...

powershell -NoProfile -ExecutionPolicy Bypass -Command "$e = [char]0xe9; $label = 'Point cr' + $e + $e + ' par batch le ' + (Get-Date -Format 'dd/MM/yyyy'); Write-Host ('         Label : ' + $label); Checkpoint-Computer -Description $label -RestorePointType 'MODIFY_SETTINGS' -ErrorAction Stop"

set "CREATE_CODE=%errorlevel%"

for /f %%d in ('powershell -NoProfile -Command "Get-Date -Format 'dd/MM/yyyy'"') do set "TODAY=%%d"


:: -----------------------------------------------------------------
:: BILAN FINAL
:: -----------------------------------------------------------------
echo.
echo  =================================================================
echo   BILAN DE L OPERATION
echo  =================================================================
echo.

if %CREATE_CODE% equ 0 (

    echo   SUCCES : Le point de restauration a ete cree avec succes.
    echo.
    echo   Disque protege  :  C:
    echo   Label           :  Point cree par batch le %TODAY%
    echo.
    echo  -----------------------------------------------------------------

    if "!SR_ETAIT_ACTIVE!"=="1" (
        echo   Etat avant execution  :  ACTIVE
        echo.
        echo   La restauration etait deja active.
        echo   Les points de restauration precedents sont conserves.
    ) else (
        echo   Etat avant execution  :  INACTIVE
        echo.
        echo   La restauration a ete activee automatiquement par ce script.
        echo.
        echo   ATTENTION : il n existe qu UN SEUL point de restauration.
        echo   Pensez a en creer d autres au fil du temps, notamment :
        echo     - avant l installation d un logiciel ou d un pilote
        echo     - avant une mise a jour importante de Windows
        echo     - avant toute modification sensible du systeme
    )

) else (

    echo   ECHEC : La creation du point de restauration a echoue.
    echo.
    echo   Causes possibles :
    echo    - Espace disque insuffisant sur C: ^(minimum 300 Mo requis^)
    echo    - Service VSS ^(Volume Shadow Copy^) arrete ou desactive
    echo    - Restrictions par strategie de groupe ^(GPO^)
    echo.
    echo   Solutions :
    echo    - Liberer de l espace sur C:
    echo    - Verifier le service VSS via services.msc
    echo    - Reessayer en tant qu Administrateur

)

echo  =================================================================
echo.
pause