# Run as Admin
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Warning "You need to run this script as an Administrator!"
    exit
}

# Load Windows Forms assembly for MessageBox
Add-Type -AssemblyName System.Windows.Forms

# Define the restore point description and type
$description = "Bloatynosy NueEx Restore Point"
$restorePointType = 12  # MODIFY_SETTINGS = 12

# Function to create restore point with progress reporting
function Create-RestorePoint {
    Write-Host "Starting to create restore point..." -ForegroundColor Yellow

    # Simulate progress
    for ($i = 0; $i -le 100; $i += 10) {
        Write-Progress -Activity "Creating Restore Point" -Status "$i% Complete" -PercentComplete $i
        Start-Sleep -Milliseconds 300  # Simulate some work being done
    }

    # WMI query to create the restore point
    $restorePoint = Get-WmiObject -List Win32_SystemRestore | ForEach-Object {
        $_.CreateRestorePoint($description, $restorePointType, 100)
    }

    Write-Host "Restore point created successfully." -ForegroundColor Green

    # Show completion message
    [System.Windows.Forms.MessageBox]::Show("Restore point has been created successfully!", "Completion", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
}

# Execute the restore point creation
Create-RestorePoint