2026-01-15 22:00:27 +01:00
<#
. SYNOPSIS
Win11 Style GUI for Microsoft Activation Scripts ( MAS )
. DESCRIPTION
A modern , Fluent-inspired interface for MAS with auto-detection of system status .
#>
# --- Self-Elevation ---
$currentPrincipal = New-Object Security . Principal . WindowsPrincipal ( [ Security.Principal.WindowsIdentity ] :: GetCurrent ( ) )
if ( -not $currentPrincipal . IsInRole ( [ Security.Principal.WindowsBuiltInRole ] :: Administrator ) ) {
$scriptPath = $MyInvocation . MyCommand . Path
Start-Process powershell . exe -ArgumentList " -NoProfile -ExecutionPolicy Bypass -File `" $scriptPath `" " -Verb RunAs
Exit
}
# --- Assemblies ---
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName System . Windows . Forms
Add-Type -AssemblyName System . Drawing
# --- Helper: Get System Info ---
function Get-SystemInfo {
try {
2026-01-15 22:03:59 +01:00
$os = Get-CimInstance Win32_OperatingSystem -ErrorAction Stops
$comp = Get-CimInstance Win32_ComputerSystem -ErrorAction Stop
2026-01-15 22:00:27 +01:00
$edition = $os . Caption -replace " Microsoft " , " "
$version = $os . Version
$build = $os . BuildNumber
# Simple Activation Check (Partial)
2026-01-15 22:03:59 +01:00
try {
# 1=Licensed
$license = Get-CimInstance SoftwareLicensingProduct -ErrorAction SilentlyContinue | Where-Object { $_ . PartialProductKey -and $_ . Name -like " Windows* " } | Select-Object -First 1
$status = " Unknown / Check manually "
if ( $null -ne $license ) {
if ( $license . LicenseStatus -eq 1 ) {
$status = " Permanently Activated "
if ( $license . GracePeriodRemaining -gt 0 -and $license . GracePeriodRemaining -lt 40000 ) {
# KMS usually has grace period in minutes ~ 259200 (180 days)
$status = " Volume/KMS Activated "
}
} else {
$status = " Not Activated "
}
}
} catch {
$status = " Detection Failed "
}
2026-01-15 22:00:27 +01:00
return @ {
Edition = $edition
Version = " Build $build "
Status = $status
PCName = $comp . Name
}
} catch {
2026-01-15 22:03:59 +01:00
return @ { Edition = " Unknown " ; Version = " Unknown " ; Status = " Unknown " ; PCName = " Unknown " }
2026-01-15 22:00:27 +01:00
}
}
$sysInfo = Get-SystemInfo
# --- XAML ---
[ xml ] $xaml = @"
< Window xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns : x = " http://schemas.microsoft.com/winfx/2006/xaml "
2026-01-15 22:03:59 +01:00
Title = " Microsoft Activation Scripts " Height = " 650 " Width = " 1000 "
2026-01-15 22:00:27 +01:00
WindowStartupLocation = " CenterScreen " ResizeMode = " CanResize "
Background = " #202020 " Foreground = " #FFFFFF " FontFamily = " Segoe UI Variable Display, Segoe UI, sans-serif " >
< Window . Resources >
< ! - - Win11 Palette - - >
< SolidColorBrush x: Key = " AppBackground " Color = " #202020 " / >
< SolidColorBrush x: Key = " NavBackground " Color = " #191919 " / >
< SolidColorBrush x: Key = " CardBackground " Color = " #272727 " / >
< SolidColorBrush x: Key = " CardBorder " Color = " #353535 " / >
< SolidColorBrush x: Key = " CardHover " Color = " #323232 " / >
< SolidColorBrush x: Key = " AccentColor " Color = " #60CDFF " / >
< SolidColorBrush x: Key = " TextPrimary " Color = " #FFFFFF " / >
< SolidColorBrush x: Key = " TextSecondary " Color = " #A0A0A0 " / >
< ! - - Win11 Button Style - - >
< Style TargetType = " Button " >
< Setter Property = " Background " Value = " {StaticResource CardBackground} " / >
< Setter Property = " Foreground " Value = " {StaticResource TextPrimary} " / >
< Setter Property = " BorderBrush " Value = " {StaticResource CardBorder} " / >
< Setter Property = " BorderThickness " Value = " 1 " / >
< Setter Property = " FontSize " Value = " 14 " / >
< Setter Property = " Padding " Value = " 12,8 " / >
< Setter Property = " Cursor " Value = " Hand " / >
< Setter Property = " Template " >
< Setter . Value >
< ControlTemplate TargetType = " Button " >
< Border x: Name = " border " Background = " {TemplateBinding Background} " BorderBrush = " {TemplateBinding BorderBrush} " BorderThickness = " {TemplateBinding BorderThickness} " CornerRadius = " 4 " >
< ContentPresenter HorizontalAlignment = " Center " VerticalAlignment = " Center " Margin = " {TemplateBinding Padding} " / >
< / Border >
< ControlTemplate . Triggers >
< Trigger Property = " IsMouseOver " Value = " True " >
< Setter TargetName = " border " Property = " Background " Value = " {StaticResource CardHover} " / >
< / Trigger >
< Trigger Property = " IsPressed " Value = " True " >
< Setter TargetName = " border " Property = " Background " Value = " #303030 " / >
< Setter TargetName = " border " Property = " BorderBrush " Value = " #505050 " / >
< / Trigger >
< / ControlTemplate . Triggers >
< / ControlTemplate >
< / Setter . Value >
< / Setter >
< / Style >
< ! - - Navigation RadioButton Style - - >
< Style x: Key = " NavButtonStyle " TargetType = " RadioButton " >
< Setter Property = " Background " Value = " Transparent " / >
< Setter Property = " Foreground " Value = " #D0D0D0 " / >
2026-01-15 22:03:59 +01:00
< Setter Property = " FontSize " Value = " 15 " / >
2026-01-15 22:00:27 +01:00
< Setter Property = " Margin " Value = " 5,2 " / >
2026-01-15 22:03:59 +01:00
< Setter Property = " Padding " Value = " 16,10 " / >
2026-01-15 22:00:27 +01:00
< Setter Property = " Cursor " Value = " Hand " / >
< Setter Property = " Template " >
< Setter . Value >
< ControlTemplate TargetType = " RadioButton " >
2026-01-15 22:03:59 +01:00
< Border x: Name = " border " Background = " {TemplateBinding Background} " CornerRadius = " 6 " >
2026-01-15 22:00:27 +01:00
< Grid >
< Grid . ColumnDefinitions >
< ColumnDefinition Width = " 4 " / >
< ColumnDefinition Width = " * " / >
< / Grid . ColumnDefinitions >
< Rectangle x: Name = " indicator " Grid . Column = " 0 " Fill = " {StaticResource AccentColor} " Height = " 16 " RadiusX = " 2 " RadiusY = " 2 " Visibility = " Collapsed " Margin = " 0,0,0,0 " / >
2026-01-15 22:03:59 +01:00
< ContentPresenter Grid . Column = " 1 " HorizontalAlignment = " Left " VerticalAlignment = " Center " Margin = " 12,0,0,0 " / >
2026-01-15 22:00:27 +01:00
< / Grid >
< / Border >
< ControlTemplate . Triggers >
< Trigger Property = " IsMouseOver " Value = " True " >
< Setter TargetName = " border " Property = " Background " Value = " #2D2D2D " / >
< Setter Property = " Foreground " Value = " White " / >
< / Trigger >
< Trigger Property = " IsChecked " Value = " True " >
2026-01-15 22:03:59 +01:00
< Setter TargetName = " border " Property = " Background " Value = " #333333 " / >
2026-01-15 22:00:27 +01:00
< Setter Property = " Foreground " Value = " White " / >
< Setter TargetName = " indicator " Property = " Visibility " Value = " Visible " / >
< / Trigger >
< / ControlTemplate . Triggers >
< / ControlTemplate >
< / Setter . Value >
< / Setter >
< / Style >
< ! - - Info Card Style - - >
< Style x: Key = " InfoCard " TargetType = " Border " >
< Setter Property = " Background " Value = " {StaticResource CardBackground} " / >
< Setter Property = " BorderBrush " Value = " {StaticResource CardBorder} " / >
< Setter Property = " BorderThickness " Value = " 1 " / >
< Setter Property = " CornerRadius " Value = " 8 " / >
2026-01-15 22:03:59 +01:00
< Setter Property = " Padding " Value = " 24 " / >
2026-01-15 22:00:27 +01:00
< Setter Property = " Margin " Value = " 0,0,0,15 " / >
2026-01-15 22:03:59 +01:00
< Setter Property = " Effect " >
< Setter . Value >
< DropShadowEffect BlurRadius = " 10 " ShadowDepth = " 2 " Direction = " 270 " Color = " Black " Opacity = " 0.2 " / >
< / Setter . Value >
< / Setter >
2026-01-15 22:00:27 +01:00
< / Style >
< ! - - Action Card Style - - >
< Style x: Key = " ActionCard " TargetType = " Button " >
< Setter Property = " Background " Value = " {StaticResource CardBackground} " / >
< Setter Property = " Height " Value = " Auto " / >
< Setter Property = " HorizontalContentAlignment " Value = " Stretch " / >
2026-01-15 22:03:59 +01:00
< Setter Property = " Margin " Value = " 0,0,0,15 " / >
2026-01-15 22:00:27 +01:00
< Setter Property = " Template " >
< Setter . Value >
< ControlTemplate TargetType = " Button " >
2026-01-15 22:03:59 +01:00
< Border x: Name = " border " Background = " {TemplateBinding Background} " BorderBrush = " {StaticResource CardBorder} " BorderThickness = " 1 " CornerRadius = " 8 " Padding = " 24 " >
2026-01-15 22:00:27 +01:00
< Grid >
< Grid . ColumnDefinitions >
< ColumnDefinition Width = " * " / >
< ColumnDefinition Width = " Auto " / >
< / Grid . ColumnDefinitions >
< ContentPresenter Grid . Column = " 0 " HorizontalAlignment = " Left " / >
2026-01-15 22:03:59 +01:00
< TextBlock Grid . Column = " 1 " Text = "  " FontFamily = " Segoe Fluent Icons, Segoe MDL2 Assets " FontSize = " 18 " Foreground = " {StaticResource AccentColor} " VerticalAlignment = " Center " / >
2026-01-15 22:00:27 +01:00
< / Grid >
< / Border >
< ControlTemplate . Triggers >
< Trigger Property = " IsMouseOver " Value = " True " >
< Setter TargetName = " border " Property = " Background " Value = " {StaticResource CardHover} " / >
< / Trigger >
< / ControlTemplate . Triggers >
< / ControlTemplate >
< / Setter . Value >
< / Setter >
< / Style >
< / Window . Resources >
< Grid Background = " {StaticResource NavBackground} " >
< Grid . ColumnDefinitions >
< ColumnDefinition Width = " 250 " / >
< ColumnDefinition Width = " * " / >
< / Grid . ColumnDefinitions >
< ! - - Sidebar - - >
< StackPanel Grid . Column = " 0 " Margin = " 10,20,10,20 " >
< ! - - App Title - - >
< StackPanel Orientation = " Horizontal " Margin = " 15,0,0,30 " >
< Border Width = " 24 " Height = " 24 " CornerRadius = " 12 " Background = " {StaticResource AccentColor} " Margin = " 0,0,10,0 " >
< TextBlock Text = " M " HorizontalAlignment = " Center " VerticalAlignment = " Center " FontWeight = " Bold " Foreground = " Black " / >
< / Border >
< TextBlock Text = " MAS " FontSize = " 18 " FontWeight = " SemiBold " VerticalAlignment = " Center " / >
< / StackPanel >
< ! - - Nav Items - - >
< RadioButton x: Name = " navHome " Content = " System Overview " Style = " {StaticResource NavButtonStyle} " IsChecked = " True " / >
< RadioButton x: Name = " navActivators " Content = " Activators " Style = " {StaticResource NavButtonStyle} " / >
< RadioButton x: Name = " navExtras " Content = " Troubleshoot & Extras " Style = " {StaticResource NavButtonStyle} " / >
< / StackPanel >
< ! - - Content Area - - >
< Border Grid . Column = " 1 " Background = " {StaticResource AppBackground} " CornerRadius = " 10,0,0,0 " Padding = " 40,30 " >
< Grid >
< ! - - Home View - - >
< StackPanel x: Name = " viewHome " Visibility = " Visible " >
< TextBlock Text = " System Overview " FontSize = " 26 " FontWeight = " SemiBold " Margin = " 0,0,0,20 " / >
< Border Style = " {StaticResource InfoCard} " >
< StackPanel >
< TextBlock Text = " Windows Information " FontSize = " 14 " FontWeight = " SemiBold " Foreground = " {StaticResource AccentColor} " Margin = " 0,0,0,10 " / >
< Grid Margin = " 0,5 " >
< Grid . ColumnDefinitions >
< ColumnDefinition Width = " Auto " / >
< ColumnDefinition Width = " * " / >
< / Grid . ColumnDefinitions >
< TextBlock Grid . Column = " 0 " Text = "  " FontFamily = " Segoe Fluent Icons, Segoe MDL2 Assets " FontSize = " 24 " VerticalAlignment = " Center " Margin = " 0,0,15,0 " Foreground = " {StaticResource TextSecondary} " / >
< StackPanel Grid . Column = " 1 " >
< TextBlock Text = " $( $sysInfo . Edition ) " FontSize = " 18 " FontWeight = " SemiBold " / >
< TextBlock Text = " $( $sysInfo . Version ) " FontSize = " 14 " Foreground = " {StaticResource TextSecondary} " / >
< / StackPanel >
< / Grid >
< / StackPanel >
< / Border >
< Border Style = " {StaticResource InfoCard} " >
< StackPanel >
< TextBlock Text = " Activation Status " FontSize = " 14 " FontWeight = " SemiBold " Foreground = " {StaticResource AccentColor} " Margin = " 0,0,0,10 " / >
< Grid Margin = " 0,5 " >
< Grid . ColumnDefinitions >
< ColumnDefinition Width = " Auto " / >
< ColumnDefinition Width = " * " / >
< / Grid . ColumnDefinitions >
< TextBlock Grid . Column = " 0 " Text = "  " FontFamily = " Segoe Fluent Icons, Segoe MDL2 Assets " FontSize = " 24 " VerticalAlignment = " Center " Margin = " 0,0,15,0 " Foreground = " {StaticResource TextSecondary} " / >
< StackPanel Grid . Column = " 1 " >
< TextBlock Text = " $( $sysInfo . Status ) " FontSize = " 18 " FontWeight = " SemiBold " / >
< TextBlock Text = " This information is detected automatically. " FontSize = " 14 " Foreground = " #666 " / >
< / StackPanel >
< / Grid >
< / StackPanel >
< / Border >
< TextBlock Text = " Quick Actions " FontSize = " 16 " FontWeight = " SemiBold " Margin = " 0,20,0,10 " / >
< Button x: Name = " btnHomeHWID " Style = " {StaticResource ActionCard} " Margin = " 0,5 " >
< StackPanel >
< TextBlock Text = " Activate Windows " FontSize = " 16 " FontWeight = " SemiBold " / >
< TextBlock Text = " Use HWID method (Recommended) " FontSize = " 13 " Foreground = " {StaticResource TextSecondary} " / >
< / StackPanel >
< / Button >
< / StackPanel >
< ! - - Activators View - - >
< StackPanel x: Name = " viewActivators " Visibility = " Collapsed " >
< TextBlock Text = " Activation Methods " FontSize = " 26 " FontWeight = " SemiBold " Margin = " 0,0,0,20 " / >
< ScrollViewer VerticalScrollBarVisibility = " Hidden " >
< StackPanel >
< ! - - HWID - - >
< TextBlock Text = " Windows 10 / 11 " FontSize = " 14 " Foreground = " {StaticResource TextSecondary} " Margin = " 0,10,0,5 " / >
< Button x: Name = " btnHWID " Style = " {StaticResource ActionCard} " Margin = " 0,0,0,15 " >
< StackPanel >
< TextBlock Text = " HWID Activation " FontSize = " 16 " FontWeight = " SemiBold " / >
< TextBlock Text = " Permanent digital license. Does not require renewal. " FontSize = " 13 " Foreground = " {StaticResource TextSecondary} " / >
< / StackPanel >
< / Button >
< ! - - Ohook - - >
< TextBlock Text = " Office " FontSize = " 14 " Foreground = " {StaticResource TextSecondary} " Margin = " 0,10,0,5 " / >
< Button x: Name = " btnOhook " Style = " {StaticResource ActionCard} " Margin = " 0,0,0,15 " >
< StackPanel >
< TextBlock Text = " Ohook Activation " FontSize = " 16 " FontWeight = " SemiBold " / >
< TextBlock Text = " Permanent Office activation (2013-2024, 365). " FontSize = " 13 " Foreground = " {StaticResource TextSecondary} " / >
< / StackPanel >
< / Button >
< ! - - KMS - - >
< TextBlock Text = " Volume / Enterprise " FontSize = " 14 " Foreground = " {StaticResource TextSecondary} " Margin = " 0,10,0,5 " / >
< Button x: Name = " btnKMS " Style = " {StaticResource ActionCard} " Margin = " 0,0,0,15 " >
< StackPanel >
< TextBlock Text = " Online KMS38 " FontSize = " 16 " FontWeight = " SemiBold " / >
< TextBlock Text = " Activates until 2038 or 180-days (Server/Enterprise). " FontSize = " 13 " Foreground = " {StaticResource TextSecondary} " / >
< / StackPanel >
< / Button >
< / StackPanel >
< / ScrollViewer >
< / StackPanel >
< ! - - Extras View - - >
< StackPanel x: Name = " viewExtras " Visibility = " Collapsed " >
< TextBlock Text = " Extras " FontSize = " 26 " FontWeight = " SemiBold " Margin = " 0,0,0,20 " / >
< WrapPanel >
< Button x: Name = " btnChangeWin " Content = " Change Windows Edition " Width = " 200 " Margin = " 0,0,10,10 " / >
< Button x: Name = " btnChangeOffice " Content = " Change Office Edition " Width = " 200 " Margin = " 0,0,10,10 " / >
< Button x: Name = " btnCheckStatus " Content = " Check Activation Status " Width = " 200 " Margin = " 0,0,10,10 " / >
< Button x: Name = " btnTroubleshoot " Content = " Troubleshoot " Width = " 200 " Margin = " 0,0,10,10 " / >
< Button x: Name = " btnOEM " Content = " Extract OEM Folder " Width = " 200 " Margin = " 0,0,10,10 " / >
< / WrapPanel >
< TextBlock Text = " Logs & Info " FontSize = " 16 " FontWeight = " SemiBold " Margin = " 0,20,0,10 " / >
< Border Background = " #252525 " Padding = " 15 " CornerRadius = " 4 " >
< TextBlock Text = " This GUI wraps the official MAS scripts. When you click an action, a terminal window will open to perform the operation safely and transparently. " TextWrapping = " Wrap " Foreground = " {StaticResource TextSecondary} " / >
< / Border >
< / StackPanel >
< / Grid >
< / Border >
< / Grid >
< / Window >
" @
# --- Load & Parse ---
$reader = ( New-Object System . Xml . XmlNodeReader $xaml )
try {
$window = [ Windows.Markup.XamlReader ] :: Load ( $reader )
} catch {
Write-Error " Failed to load XAML: $_ "
Exit
}
# --- Find Controls ---
$navHome = $window . FindName ( " navHome " )
$navActivators = $window . FindName ( " navActivators " )
$navExtras = $window . FindName ( " navExtras " )
$viewHome = $window . FindName ( " viewHome " )
$viewActivators = $window . FindName ( " viewActivators " )
$viewExtras = $window . FindName ( " viewExtras " )
$btnHomeHWID = $window . FindName ( " btnHomeHWID " )
$btnHWID = $window . FindName ( " btnHWID " )
$btnOhook = $window . FindName ( " btnOhook " )
$btnKMS = $window . FindName ( " btnKMS " )
$btnChangeWin = $window . FindName ( " btnChangeWin " )
$btnChangeOffice = $window . FindName ( " btnChangeOffice " )
$btnCheckStatus = $window . FindName ( " btnCheckStatus " )
$btnTroubleshoot = $window . FindName ( " btnTroubleshoot " )
$btnOEM = $window . FindName ( " btnOEM " )
# --- Logic: Navigation ---
function Switch-View {
param ( $view )
$viewHome . Visibility = " Collapsed "
$viewActivators . Visibility = " Collapsed "
$viewExtras . Visibility = " Collapsed "
$view . Visibility = " Visible "
}
$navHome . Add_Checked ( { Switch-View $viewHome } )
$navActivators . Add_Checked ( { Switch-View $viewActivators } )
$navExtras . Add_Checked ( { Switch-View $viewExtras } )
# --- Logic: Execution ---
function Invoke-MASScript {
param ( [ string ] $Path )
$fullPath = Join-Path $PSScriptRoot $Path
if ( Test-Path $fullPath ) {
Start-Process " cmd.exe " -ArgumentList " /c `" $fullPath `" "
} else {
[ System.Windows.MessageBox ] :: Show ( " Script not found at: `n $fullPath " , " Error " , [ System.Windows.MessageBoxButton ] :: OK , [ System.Windows.MessageBoxImage ] :: Error )
}
}
$btnHomeHWID . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Activators\HWID_Activation.cmd " } )
$btnHWID . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Activators\HWID_Activation.cmd " } )
$btnOhook . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Activators\Ohook_Activation_AIO.cmd " } )
$btnKMS . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Activators\Online_KMS_Activation.cmd " } )
$btnChangeWin . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Change_Windows_Edition.cmd " } )
$btnChangeOffice . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Change_Office_Edition.cmd " } )
$btnCheckStatus . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Check_Activation_Status.cmd " } )
$btnTroubleshoot . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Troubleshoot.cmd " } )
$btnOEM . Add_Click ( { Invoke-MASScript " MAS\Separate-Files-Version\Extract_OEM_Folder.cmd " } )
# --- Run ---
$window . ShowDialog ( ) | Out-Null