00-admin-account: empty password (SecureString), FullName via ADSI SetInfo() 07-backinfo: new script replacing 07-desktop-info - copies assets, sets registry OSName, creates Startup shortcut, launches BackInfo immediately Deploy-Windows.ps1: step 7 now calls 07-backinfo.ps1 (desktopInfo->backinfo) 03-system-registry: full Edge policy set - favorites bar, Google search, show/hide toolbar buttons per spec, telemetry/content policies, removed old Edge policies TODO note web/spec: step-00 OK, step-07 OK, step-03 Edge rows updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
126 lines
5 KiB
PowerShell
126 lines
5 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Deploys BackInfo.exe to C:\Program Files\Backinfo\ and configures auto-start.
|
|
|
|
.DESCRIPTION
|
|
Copies the BackInfo folder from assets to Program Files, writes the OS name
|
|
to the registry (HKLM\SOFTWARE\BackInfo\OSName) so BackInfo can display it,
|
|
and creates a Startup shortcut so BackInfo launches on every user logon.
|
|
BackInfo renders a BMP wallpaper overlay with hostname, username, OS, HW info,
|
|
and network info - configured via BackInfo.ini.
|
|
|
|
.ITEMS
|
|
kopirovat-assets-backinfo-do-program-fil: Copies all files from assets\Backinfo\ to C:\Program Files\Backinfo\. Includes BackInfo.exe, BackInfo.ini, and backinfo_W11.ps1. Creates the target directory if it does not exist.
|
|
registry-osname-hklm-software-backinfo: Detects Windows build number and edition, writes OSName string to HKLM\SOFTWARE\BackInfo\OSName (and WOW6432Node). BackInfo.ini references %OSName% to display the correct OS on the wallpaper.
|
|
startup-shortcut-backinfo-exe: Creates a shortcut at C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BackInfo.lnk pointing to C:\Program Files\Backinfo\BackInfo.exe. Ensures BackInfo starts for every user on logon.
|
|
07-desktop-info-ps1-smazat-nahrazeno: 07-desktop-info.ps1 is superseded by this script. BackInfo.exe is the preferred approach - stable on Win10 and Win11, configurable via INI, already present in assets.
|
|
#>
|
|
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
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Copy BackInfo assets to Program Files
|
|
# -----------------------------------------------------------------------
|
|
$assetsBackinfo = Join-Path $PSScriptRoot "..\assets\Backinfo"
|
|
$destBackinfo = "C:\Program Files\Backinfo"
|
|
|
|
Write-Log "Deploying BackInfo to $destBackinfo" -Level INFO
|
|
|
|
if (-not (Test-Path $assetsBackinfo)) {
|
|
Write-Log " Assets not found: $assetsBackinfo" -Level ERROR
|
|
exit 1
|
|
}
|
|
|
|
try {
|
|
if (-not (Test-Path $destBackinfo)) {
|
|
New-Item -ItemType Directory -Path $destBackinfo -Force | Out-Null
|
|
}
|
|
Copy-Item -Path "$assetsBackinfo\*" -Destination $destBackinfo -Recurse -Force
|
|
Write-Log " Copied BackInfo assets to $destBackinfo" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " Failed to copy BackInfo assets: $_" -Level ERROR
|
|
exit 1
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Detect OS name and write to registry (BackInfo reads this via %OSName%)
|
|
# -----------------------------------------------------------------------
|
|
Write-Log "Detecting OS for BackInfo registry" -Level INFO
|
|
|
|
try {
|
|
$cvPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
|
|
$cv = Get-ItemProperty -Path $cvPath
|
|
$build = [int]$cv.CurrentBuild
|
|
|
|
$osBase = if ($build -ge 22000) { "Windows 11" } else { "Windows 10" }
|
|
|
|
$edition = switch ($cv.EditionID) {
|
|
"Professional" { "Pro" }
|
|
"ProfessionalN" { "Pro N" }
|
|
"Core" { "Home" }
|
|
"CoreN" { "Home N" }
|
|
"Enterprise" { "Enterprise" }
|
|
"Education" { "Education" }
|
|
default { $cv.EditionID }
|
|
}
|
|
|
|
$osName = "$osBase $edition"
|
|
|
|
foreach ($regPath in @("HKLM:\SOFTWARE\BackInfo", "HKLM:\SOFTWARE\WOW6432Node\BackInfo")) {
|
|
if (-not (Test-Path $regPath)) {
|
|
New-Item -Path $regPath -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path $regPath -Name "OSName" -Value $osName -Type String -Force
|
|
}
|
|
Write-Log " OSName set to: $osName" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " Failed to set BackInfo registry: $_" -Level ERROR
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Create Startup shortcut for all users
|
|
# -----------------------------------------------------------------------
|
|
Write-Log "Creating BackInfo startup shortcut" -Level INFO
|
|
|
|
try {
|
|
$backInfoExe = "$destBackinfo\BackInfo.exe"
|
|
$shortcutPath = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BackInfo.lnk"
|
|
|
|
$wsh = New-Object -ComObject WScript.Shell
|
|
$shortcut = $wsh.CreateShortcut($shortcutPath)
|
|
$shortcut.TargetPath = $backInfoExe
|
|
$shortcut.WorkingDirectory = $destBackinfo
|
|
$shortcut.Description = "BackInfo system info wallpaper"
|
|
$shortcut.Save()
|
|
|
|
Write-Log " Startup shortcut created: $shortcutPath" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " Failed to create startup shortcut: $_" -Level ERROR
|
|
}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Launch BackInfo now to render initial wallpaper
|
|
# -----------------------------------------------------------------------
|
|
Write-Log "Launching BackInfo for initial render" -Level INFO
|
|
try {
|
|
Start-Process -FilePath "$destBackinfo\BackInfo.exe" -ErrorAction Stop
|
|
Write-Log " BackInfo launched" -Level OK
|
|
}
|
|
catch {
|
|
Write-Log " BackInfo launch failed (non-fatal): $_" -Level WARN
|
|
}
|
|
|
|
Write-Log "Step 7 complete" -Level OK
|