- config-editor.hta: lightweight WYSIWYG HTA editor for config.json - Step on/off toggles with info tooltips - Editable software list (winget packages) - Settings: timezone, admin account, desktopInfo, PDF default - Run.cmd: USB launcher with UAC auto-elevation and deployment menu - flash/: minimal USB-ready subset (Deploy, scripts, config, GUI, launcher) - config.json: add steps section for per-step enable/disable - Deploy-Windows.ps1: read steps from config, CLI switches override - 03-system-registry.ps1: add SearchOnTaskbarMode HKLM policy (Win11 search fix) - 04-default-profile.ps1: fix systray - clear TrayNotify cache + proper Explorer restart - 06-scheduled-tasks.ps1: fix Register-Task trigger array, ShowAllTrayIcons Win11 fix, PDF-DefaultApp runs as SYSTEM via HKCR (bypasses UserChoice Hash validation) - 02-software.ps1: remove unreliable UserChoice ProgId write without Hash Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
172 lines
6.8 KiB
PowerShell
172 lines
6.8 KiB
PowerShell
param(
|
|
[object]$Config,
|
|
[string]$LogFile
|
|
)
|
|
|
|
$ErrorActionPreference = "Continue"
|
|
|
|
function Write-Log {
|
|
param([string]$Message, [string]$Level = "INFO")
|
|
$line = "[$(Get-Date -Format 'HH:mm:ss')] [$Level] $Message"
|
|
Add-Content -Path $LogFile -Value $line -Encoding UTF8
|
|
}
|
|
|
|
# Accent color #223B47 stored as ABGR DWORD: 0xFF473B22
|
|
# A=FF B=47 G=3B R=22 -> 0xFF473B22 = 4283612962
|
|
$AccentColorABGR = 0xFF473B22
|
|
|
|
# Gradient colors (Windows generates these automatically but we set them explicitly)
|
|
# AccentPalette is 32 bytes - 8 shades of the accent color (BGRA each)
|
|
# We use the same color for all shades as a safe default
|
|
$AccentColorHex = "#223B47"
|
|
|
|
function Set-Reg {
|
|
param([string]$Path, [string]$Name, $Value, [string]$Type = "DWord")
|
|
try {
|
|
if (-not (Test-Path $Path)) { New-Item -Path $Path -Force | Out-Null }
|
|
Set-ItemProperty -Path $Path -Name $Name -Value $Value -Type $Type -Force
|
|
Write-Log " SET $Path\$Name = $Value" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " FAILED $Path\$Name - $_" -Level ERROR
|
|
}
|
|
}
|
|
|
|
function Apply-ThemeSettings {
|
|
param([string]$HiveRoot) # "HKCU:" or "Registry::HKU\DefaultProfile"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# System theme - Dark (taskbar, Start, action center)
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" `
|
|
-Name "SystemUsesLightTheme" -Value 0
|
|
|
|
# -----------------------------------------------------------------------
|
|
# App theme - Light
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" `
|
|
-Name "AppsUseLightTheme" -Value 1
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Accent color on Start and taskbar
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" `
|
|
-Name "ColorPrevalence" -Value 1
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Transparency effects - disabled
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" `
|
|
-Name "EnableTransparency" -Value 0
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Accent color
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\DWM" `
|
|
-Name "AccentColor" -Value $AccentColorABGR -Type "DWord"
|
|
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\DWM" `
|
|
-Name "ColorizationColor" -Value $AccentColorABGR -Type "DWord"
|
|
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\DWM" `
|
|
-Name "ColorizationAfterglow" -Value $AccentColorABGR -Type "DWord"
|
|
|
|
# Accent color on title bars and borders
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\DWM" `
|
|
-Name "ColorPrevalence" -Value 1
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Wallpaper - solid color #223B47 (fallback before DesktopInfo runs)
|
|
# -----------------------------------------------------------------------
|
|
# Background color as decimal RGB
|
|
Set-Reg -Path "$HiveRoot\Control Panel\Colors" `
|
|
-Name "Background" -Value "34 59 71" -Type "String"
|
|
|
|
Set-Reg -Path "$HiveRoot\Control Panel\Desktop" `
|
|
-Name "WallpaperStyle" -Value "0" -Type "String"
|
|
|
|
Set-Reg -Path "$HiveRoot\Control Panel\Desktop" `
|
|
-Name "TileWallpaper" -Value "0" -Type "String"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Desktop icons - show This PC
|
|
# -----------------------------------------------------------------------
|
|
Set-Reg -Path "$HiveRoot\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" `
|
|
-Name "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" -Value 0
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Load Default hive
|
|
# -----------------------------------------------------------------------
|
|
$hivePath = "C:\Users\Default\NTUSER.DAT"
|
|
$hiveKey = "DefaultProfile"
|
|
|
|
Write-Log "Loading Default hive for personalization" -Level INFO
|
|
|
|
& reg unload "HKU\$hiveKey" 2>&1 | Out-Null
|
|
$loadResult = & reg load "HKU\$hiveKey" $hivePath 2>&1
|
|
if ($LASTEXITCODE -ne 0) {
|
|
Write-Log "Failed to load Default hive: $loadResult" -Level ERROR
|
|
Write-Log "Applying personalization to current user only" -Level WARN
|
|
|
|
Write-Log "Applying theme to current user (HKCU)" -Level STEP
|
|
Apply-ThemeSettings -HiveRoot "HKCU:"
|
|
|
|
# Set wallpaper via SystemParametersInfo for current user
|
|
Add-Type -TypeDefinition @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
public class WallpaperHelper {
|
|
[DllImport("user32.dll", CharSet=CharSet.Auto)]
|
|
public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
|
|
}
|
|
"@ -ErrorAction SilentlyContinue
|
|
[WallpaperHelper]::SystemParametersInfo(20, 0, "", 3) | Out-Null
|
|
exit 0
|
|
}
|
|
|
|
try {
|
|
Write-Log "Applying theme to Default hive" -Level STEP
|
|
Apply-ThemeSettings -HiveRoot "Registry::HKU\DefaultProfile"
|
|
|
|
Write-Log "Applying theme to current user (HKCU)" -Level STEP
|
|
Apply-ThemeSettings -HiveRoot "HKCU:"
|
|
}
|
|
finally {
|
|
[GC]::Collect()
|
|
[GC]::WaitForPendingFinalizers()
|
|
Start-Sleep -Milliseconds 500
|
|
|
|
$unloadResult = & reg unload "HKU\$hiveKey" 2>&1
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Log "Default hive unloaded" -Level OK
|
|
} else {
|
|
Write-Log "Failed to unload Default hive: $unloadResult" -Level ERROR
|
|
}
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Apply wallpaper (solid color) to current desktop session
|
|
# -----------------------------------------------------------------------
|
|
Write-Log "Setting desktop wallpaper to solid color" -Level INFO
|
|
|
|
try {
|
|
Add-Type -TypeDefinition @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
public class WallpaperHelper {
|
|
[DllImport("user32.dll", CharSet=CharSet.Auto)]
|
|
public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
|
|
}
|
|
"@ -ErrorAction SilentlyContinue
|
|
|
|
# SPI_SETDESKTOPWALLPAPER=20, SPIF_UPDATEINIFILE|SPIF_SENDCHANGE=3
|
|
# Empty string = solid color defined in Control Panel\Colors\Background
|
|
[WallpaperHelper]::SystemParametersInfo(20, 0, "", 3) | Out-Null
|
|
Write-Log " Desktop wallpaper updated" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " Failed to update wallpaper: $_" -Level WARN
|
|
}
|
|
|
|
Write-Log "Step 5 complete" -Level OK
|