diff --git a/.gitignore b/.gitignore
index 89e143f..f82dfd0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,6 @@ manifests/*.json
plugin.hwm
plugin.pwd
plugin.pwi
+
+crash.log
+tmp/
diff --git a/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl b/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl
index 26a5260..7f699f9 100644
--- a/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl
+++ b/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl
@@ -1,220 +1,690 @@
-
-
-
-
-
- ${vm_inst_os_language}
-
- ${vm_inst_os_keyboard}
- ${vm_inst_os_language}
- ${vm_inst_os_language}
- ${vm_inst_os_language}
- ${vm_inst_os_language}
-
-
-
-
- F:\viostor\w11\amd64\
-
-
- F:\NetKVM\w11\amd64\
-
-
-
-
-
-
- 0
- true
-
-
-
- 1
- Primary
- 550
-
-
-
- 2
- EFI
- 100
-
-
-
- 3
- MSR
- 128
-
-
-
- 4
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- NTFS
- DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
-
-
-
- 2
- 2
-
- FAT32
-
-
-
- 3
- 3
-
-
-
- 4
- 4
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- ${vm_inst_os_image}
-
-
-
- 0
- 4
-
-
-
-
-
- 1
-
- cmd /c powercfg.exe /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
-
-
-
- true
- ${build_username}
- ${build_username}
- %{if vm_inst_os_eval != true ~}
-
- ${vm_inst_os_key}
- OnError
-
- %{ endif ~}
-
- false
-
-
-
-
- false
-
-
-
-
- 1
-
-
-
-
-
- false
-
- ${vm_guest_os_timezone}
-
-
-
- true
-
-
- true
-
-
- true
-
-
-
-
- ${vm_guest_os_keyboard}
- ${vm_guest_os_language}
- ${vm_guest_os_language}
- ${vm_guest_os_language}
- ${vm_guest_os_language}
-
-
-
-
- ${build_password}
- true
-
- true
- ${build_username}
-
-
- true
- true
- true
- true
- true
- Work
- 2
-
-
-
- ${build_password}
- true
-
-
-
-
- ${build_password}
- true
-
- administrators
- ${build_username}
- ${build_username}
- Build Account
-
-
-
-
-
- %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"
- Set Execution Policy 64-Bit
- 1
- true
-
-
- %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"
- Set Execution Policy 32-Bit
- 2
- true
-
-
- %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File E:\windows-virtio.ps1
- 3
- Install VMware Tools
-
-
- %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File E:\windows-init.ps1
- 4
- Initial Configuration
-
-
-
-
-
+
+
+
+
+
+
+ fr-FR
+
+
+
+
+
+ 0
+ 3
+
+
+
+
+
+ VK7JG-NPHTM-C97JM-9MPGT-3V66T
+ OnError
+
+ true
+
+ false
+
+
+ 1
+ reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
+
+
+ 2
+ reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
+
+
+ 3
+ reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
+
+
+ 4
+ cmd.exe /c >>X:\diskpart.txt (echo:SELECT DISK=0&echo:CLEAN&echo:CONVERT GPT&echo:CREATE PARTITION EFI SIZE=300&echo:FORMAT QUICK FS=FAT32 LABEL=^"System^"&echo:ASSIGN LETTER=S&echo:CREATE PARTITION MSR SIZE=16&echo:CREATE PARTITION PRIMARY)
+
+
+ 5
+ cmd.exe /c >>X:\diskpart.txt (echo:FORMAT QUICK FS=NTFS LABEL=^"Windows^"&echo:ASSIGN LETTER=W)
+
+
+ 6
+ cmd.exe /c "diskpart.exe /s "X:\diskpart.txt" >>"X:\diskpart.log" || ( type "X:\diskpart.log" & echo diskpart encountered an error. & pause & exit /b 1 )"
+
+
+ 7
+ cmd.exe /c >>X:\defender.vbs (echo:WScript.Echo ^"Scanning for newly created SYSTEM registry hive file to disable Windows Defender services...^"&echo:Set fso = CreateObject(^"Scripting.FileSystemObject^"^))
+
+
+ 8
+ cmd.exe /c >>X:\defender.vbs (echo:Set existing = CreateObject(^"Scripting.Dictionary^"^)&echo:Function Execute(command^)&echo:WScript.Echo ^"Running command '^" + command + ^"'^"&echo:Set shell = CreateObject(^"WScript.Shell^"^))
+
+
+ 9
+ cmd.exe /c >>X:\defender.vbs (echo:Set exec = shell.Exec(command^)&echo:Do While exec.Status = 0&echo:WScript.Sleep 100&echo:Loop&echo:WScript.Echo exec.StdOut.ReadAll&echo:WScript.Echo exec.StdErr.ReadAll&echo:Execute = exec.ExitCode&echo:End Function)
+
+
+ 10
+ cmd.exe /c >>X:\defender.vbs (echo:Function FindHiveFiles&echo:Set FindHiveFiles = CreateObject(^"Scripting.Dictionary^"^)&echo:For Each drive In fso.Drives&echo:If drive.IsReady And drive.DriveLetter ^<^> ^"X^" Then)
+
+
+ 11
+ cmd.exe /c >>X:\defender.vbs (echo:For Each folder In Array(^"$Windows.~BT\NewOS\Windows^", ^"Windows^"^)&echo:file = fso.BuildPath(fso.BuildPath(drive.RootFolder, folder^), ^"System32\config\SYSTEM^"^))
+
+
+ 12
+ cmd.exe /c >>X:\defender.vbs (echo:If fso.FileExists(file^) And fso.FileExists(file + ^".LOG1^"^) And fso.FileExists(file + ^".LOG2^"^) Then&echo:FindHiveFiles.Add file, Nothing&echo:End If&echo:Next&echo:End If&echo:Next&echo:End Function)
+
+
+ 13
+ cmd.exe /c >>X:\defender.vbs (echo:For Each file In FindHiveFiles&echo:WScript.Echo ^"Will ignore file at '^" + file + ^"' because it was already present when Windows Setup started.^"&echo:existing.Add file, Nothing&echo:Next&echo:Do)
+
+
+ 14
+ cmd.exe /c >>X:\defender.vbs (echo:For Each file In FindHiveFiles&echo:If Not existing.Exists(file^) Then&echo:ret = 1&echo:While ret ^> 0&echo:WScript.Sleep 500&echo:ret = Execute(^"reg.exe LOAD HKLM\mount ^" + file^)&echo:Wend)
+
+
+ 15
+ cmd.exe /c >>X:\defender.vbs (echo:For Each service In Array(^"Sense^", ^"WdBoot^", ^"WdFilter^", ^"WdNisDrv^", ^"WdNisSvc^", ^"WinDefend^"^))
+
+
+ 16
+ cmd.exe /c >>X:\defender.vbs (echo:ret = Execute(^"reg.exe ADD HKLM\mount\ControlSet001\Services\^" + service + ^" /v Start /t REG_DWORD /d 4 /f^"^)&echo:Next&echo:ret = Execute(^"reg.exe UNLOAD HKLM\mount^"^))
+
+
+ 17
+ cmd.exe /c >>X:\defender.vbs (echo:WScript.Echo ^"Found and successfully modified SYSTEM registry hive file at '^" + file + ^"'. This window will now close.^"&echo:WScript.Sleep 5000&echo:Exit Do&echo:End If&echo:WScript.Sleep 1000&echo:Next&echo:Loop)
+
+
+ 18
+ cmd.exe /c "start /MIN cscript.exe //E:vbscript X:\defender.vbs"
+
+
+
+
+
+
+
+
+
+ 1
+ powershell.exe -WindowStyle "Normal" -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"
+
+
+ 2
+ powershell.exe -WindowStyle "Normal" -ExecutionPolicy "Unrestricted" -NoProfile -File "C:\Windows\Setup\Scripts\Specialize.ps1"
+
+
+ 3
+ reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"
+
+
+ 4
+ powershell.exe -WindowStyle "Normal" -ExecutionPolicy "Unrestricted" -NoProfile -File "C:\Windows\Setup\Scripts\DefaultUser.ps1"
+
+
+ 5
+ reg.exe unload "HKU\DefaultUser"
+
+
+
+
+ Romance Standard Time
+
+
+
+
+
+
+ 040c:0000040c;0409:00000409
+ fr-FR
+ fr-FR
+ fr-FR
+
+
+
+
+
+ Admin
+
+ Administrators
+
+
+ true
+
+
+
+ Installer
+ Installer
+ Users
+
+ Stid_2026-03
+ true
+
+
+
+
+
+ Admin
+ true
+ 1
+
+
+ true
+
+
+
+ 3
+ true
+ true
+ false
+
+
+
+ 1
+ powershell.exe -WindowStyle "Normal" -ExecutionPolicy "Unrestricted" -NoProfile -File "C:\Windows\Setup\Scripts\FirstLogon.ps1"
+
+
+
+
+
+
+
+ b5944ad0b8d26588e78d963562e0f80ee2e33aeb
+ https://github.com/cschneegans/unattend-generator/commit/b5944ad0b8d26588e78d963562e0f80ee2e33aeb
+
+
+
+param(
+ [xml] $Document
+);
+
+foreach( $file in $Document.unattend.Extensions.File ) {
+ $path = [System.Environment]::ExpandEnvironmentVariables( $file.GetAttribute( 'path' ) );
+ mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue';
+ $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
+ { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
+ { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
+ default { [System.Text.Encoding]::Default; }
+ };
+ $bytes = $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() );
+ [System.IO.File]::WriteAllBytes( $path, $bytes );
+}
+
+
+$selectors = @(
+ 'Microsoft.Microsoft3DViewer';
+ 'Microsoft.BingSearch';
+ 'Microsoft.WindowsCalculator';
+ 'Microsoft.WindowsCamera';
+ 'Clipchamp.Clipchamp';
+ 'Microsoft.Copilot';
+ 'Microsoft.549981C3F5F10';
+ 'Microsoft.Windows.DevHome';
+ 'MicrosoftCorporationII.MicrosoftFamily';
+ 'Microsoft.WindowsFeedbackHub';
+ 'Microsoft.Edge.GameAssist';
+ 'Microsoft.GetHelp';
+ 'Microsoft.Getstarted';
+ 'microsoft.windowscommunicationsapps';
+ 'Microsoft.WindowsMaps';
+ 'Microsoft.MixedReality.Portal';
+ 'Microsoft.BingNews';
+ 'Microsoft.MicrosoftOfficeHub';
+ 'Microsoft.Office.OneNote';
+ 'Microsoft.OutlookForWindows';
+ 'Microsoft.Paint';
+ 'Microsoft.MSPaint';
+ 'Microsoft.People';
+ 'Microsoft.Windows.Photos';
+ 'Microsoft.PowerAutomateDesktop';
+ 'MicrosoftCorporationII.QuickAssist';
+ 'Microsoft.SkypeApp';
+ 'Microsoft.ScreenSketch';
+ 'Microsoft.MicrosoftSolitaireCollection';
+ 'Microsoft.MicrosoftStickyNotes';
+ 'Microsoft.WindowsStore';
+ 'Microsoft.StorePurchaseApp';
+ 'MicrosoftTeams';
+ 'MSTeams';
+ 'Microsoft.Todos';
+ 'Microsoft.WindowsSoundRecorder';
+ 'Microsoft.Wallet';
+ 'Microsoft.BingWeather';
+ 'Microsoft.Xbox.TCUI';
+ 'Microsoft.XboxApp';
+ 'Microsoft.XboxGameOverlay';
+ 'Microsoft.XboxGamingOverlay';
+ 'Microsoft.XboxIdentityProvider';
+ 'Microsoft.XboxSpeechToTextOverlay';
+ 'Microsoft.GamingApp';
+ 'Microsoft.YourPhone';
+ 'Microsoft.ZuneMusic';
+ 'Microsoft.ZuneVideo';
+);
+$getCommand = {
+ Get-AppxProvisionedPackage -Online;
+};
+$filterCommand = {
+ $_.DisplayName -eq $selector;
+};
+$removeCommand = {
+ [CmdletBinding()]
+ param(
+ [Parameter( Mandatory, ValueFromPipeline )]
+ $InputObject
+ );
+ process {
+ $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
+ }
+};
+$type = 'Package';
+$logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $removeCommand;
+ if( $? ) {
+ $result.Message = "$type removed.";
+ } else {
+ $result.Message = "$type not removed.";
+ $result.Error = $Error[0];
+ }
+ } else {
+ $result.Message = "$type not installed.";
+ }
+ $result | ConvertTo-Json -Depth 3 -Compress;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> $logfile;
+
+
+$selectors = @(
+ 'Print.Fax.Scan';
+ 'Language.Handwriting';
+ 'Browser.InternetExplorer';
+ 'MathRecognizer';
+ 'OneCoreUAP.OneSync';
+ 'OpenSSH.Client';
+ 'Microsoft.Windows.MSPaint';
+ 'App.Support.QuickAssist';
+ 'Microsoft.Windows.SnippingTool';
+ 'Language.Speech';
+ 'Language.TextToSpeech';
+ 'App.StepsRecorder';
+ 'Hello.Face.18967';
+ 'Hello.Face.Migration.18967';
+ 'Hello.Face.20134';
+ 'Media.WindowsMediaPlayer';
+ 'Microsoft.Windows.WordPad';
+);
+$getCommand = {
+ Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @(
+ 'NotPresent';
+ 'Removed';
+ );
+};
+$filterCommand = {
+ ($_.Name -split '~')[0] -eq $selector;
+};
+$removeCommand = {
+ [CmdletBinding()]
+ param(
+ [Parameter( Mandatory, ValueFromPipeline )]
+ $InputObject
+ );
+ process {
+ $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
+ }
+};
+$type = 'Capability';
+$logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $removeCommand;
+ if( $? ) {
+ $result.Message = "$type removed.";
+ } else {
+ $result.Message = "$type not removed.";
+ $result.Error = $Error[0];
+ }
+ } else {
+ $result.Message = "$type not installed.";
+ }
+ $result | ConvertTo-Json -Depth 3 -Compress;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> $logfile;
+
+
+$selectors = @(
+ 'MediaPlayback';
+ 'Microsoft-RemoteDesktopConnection';
+ 'Recall';
+ 'Microsoft-SnippingTool';
+);
+$getCommand = {
+ Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @(
+ 'Disabled';
+ 'DisabledWithPayloadRemoved';
+ );
+};
+$filterCommand = {
+ $_.FeatureName -eq $selector;
+};
+$removeCommand = {
+ [CmdletBinding()]
+ param(
+ [Parameter( Mandatory, ValueFromPipeline )]
+ $InputObject
+ );
+ process {
+ $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue';
+ }
+};
+$type = 'Feature';
+$logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $removeCommand;
+ if( $? ) {
+ $result.Message = "$type removed.";
+ } else {
+ $result.Message = "$type not removed.";
+ $result.Error = $Error[0];
+ }
+ } else {
+ $result.Message = "$type not installed.";
+ }
+ $result | ConvertTo-Json -Depth 3 -Compress;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> $logfile;
+
+
+$excludes = Get-ChildItem -LiteralPath 'Registry::HKU\DefaultUser\AppEvents\EventLabels' |
+ Where-Object -FilterScript { ($_ | Get-ItemProperty).ExcludeFromCPL -eq 1; } |
+ Select-Object -ExpandProperty 'PSChildName';
+Get-ChildItem -Path 'Registry::HKU\DefaultUser\AppEvents\Schemes\Apps\*\*' |
+ Where-Object -Property 'PSChildName' -NotIn $excludes |
+ Get-ChildItem -Include '.Current' | Set-ItemProperty -Name '(Default)' -Value '';
+
+
+& {
+ foreach( $letter in 'DEFGHIJKLMNOPQRSTUVWXYZ'.ToCharArray() ) {
+ $exe = "${letter}:\virtio-win-guest-tools.exe";
+ if( Test-Path -LiteralPath $exe ) {
+ Start-Process -FilePath $exe -ArgumentList '/passive', '/norestart' -Wait;
+ return;
+ }
+ }
+ 'VirtIO Guest Tools image (virtio-win-*.iso) is not attached to this VM.';
+} *>&1 | Out-String -Width 1KB -Stream >> 'C:\Windows\Setup\Scripts\VirtIoGuestTools.log';
+
+
+$json = '{"pinnedList":[]}';
+if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) {
+ return;
+}
+$key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start';
+New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue';
+Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String';
+
+
+$scripts = @(
+ {
+ reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f;
+ };
+ {
+ ReAgentc.exe /disable;
+ Remove-Item -LiteralPath 'C:\Windows\System32\Recovery\Winre.wim' -Force -ErrorAction 'SilentlyContinue';
+ };
+ {
+ Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue';
+ };
+ {
+ Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue';
+ };
+ {
+ Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue';
+ };
+ {
+ reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f;
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\RemovePackages.ps1';
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1';
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1';
+ };
+ {
+ net.exe accounts /maxpwage:UNLIMITED;
+ };
+ {
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Notifications" /v DisableNotifications /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f
+ };
+ {
+ netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes;
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f;
+ };
+ {
+ Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force;
+ };
+ {
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f;
+ };
+ {
+ reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\BootAnimation" /v DisableStartupSound /t REG_DWORD /d 1 /f;
+ reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\EditionOverrides" /v UserSetting_DisableStartupSound /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKLM\Software\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKLM\Software\Policies\Microsoft\Edge\Recommended" /v BackgroundModeEnabled /t REG_DWORD /d 0 /f;
+ reg.exe add "HKLM\Software\Policies\Microsoft\Edge\Recommended" /v StartupBoostEnabled /t REG_DWORD /d 0 /f;
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\SetStartPins.ps1';
+ };
+ {
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ControlAnimations" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\AnimateMinMax" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TaskbarAnimations" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMAeroPeekEnabled" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\MenuAnimation" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TooltipAnimation" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\SelectionFade" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMSaveThumbnailEnabled" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\CursorShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ThumbnailsOrIcon" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewAlphaSelect" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DragFullWindows" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ComboBoxAnimation" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\FontSmoothing" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListBoxSmoothScrolling" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DropShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Id 0 -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete;
+ '*** Will now execute command «{0}».' -f $(
+ $script.ToString().Trim() -replace '\s+', ' ' -replace '^(.{99})(.+)$', '$1…';
+ );
+ $start = [datetime]::Now;
+ & $script;
+ '*** Finished executing command after {0:0} ms.' -f [datetime]::Now.Subtract( $start ).TotalMilliseconds;
+ "`r`n" * 3;
+ $complete += $increment;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> "C:\Windows\Setup\Scripts\Specialize.log";
+
+
+$scripts = @(
+ {
+ Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;
+ };
+ {
+ Set-ItemProperty -LiteralPath 'Registry::HKCU\AppEvents\Schemes' -Name '(Default)' -Type 'String' -Value '.None';
+ };
+ {
+ reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /ve /f;
+ };
+ {
+ Set-ItemProperty -LiteralPath 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name 'VisualFXSetting' -Type 'DWord' -Value 2 -Force;
+ };
+ {
+ Get-Process -Name 'explorer' -ErrorAction 'SilentlyContinue' | Where-Object -FilterScript {
+ $_.SessionId -eq ( Get-Process -Id $PID ).SessionId;
+ } | Stop-Process -Force;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Id 0 -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete;
+ '*** Will now execute command «{0}».' -f $(
+ $script.ToString().Trim() -replace '\s+', ' ' -replace '^(.{99})(.+)$', '$1…';
+ );
+ $start = [datetime]::Now;
+ & $script;
+ '*** Finished executing command after {0:0} ms.' -f [datetime]::Now.Subtract( $start ).TotalMilliseconds;
+ "`r`n" * 3;
+ $complete += $increment;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> "$env:TEMP\UserOnce.log";
+
+
+$scripts = @(
+ {
+ reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f;
+ };
+ {
+ reg.exe add "HKU\DefaultUser\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore" /f;
+ };
+ {
+ Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue';
+ };
+ {
+ reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f;
+ };
+ {
+ reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f;
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\TurnOffSystemSounds.ps1';
+ };
+ {
+ $names = @(
+ 'ContentDeliveryAllowed';
+ 'FeatureManagementEnabled';
+ 'OEMPreInstalledAppsEnabled';
+ 'PreInstalledAppsEnabled';
+ 'PreInstalledAppsEverEnabled';
+ 'SilentInstalledAppsEnabled';
+ 'SoftLandingEnabled';
+ 'SubscribedContentEnabled';
+ 'SubscribedContent-310093Enabled';
+ 'SubscribedContent-338387Enabled';
+ 'SubscribedContent-338388Enabled';
+ 'SubscribedContent-338389Enabled';
+ 'SubscribedContent-338393Enabled';
+ 'SubscribedContent-353694Enabled';
+ 'SubscribedContent-353696Enabled';
+ 'SubscribedContent-353698Enabled';
+ 'SystemPaneSuggestionsEnabled';
+ );
+
+ foreach( $name in $names ) {
+ reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f;
+ }
+ };
+ {
+ reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -WindowStyle \""Normal\"" -ExecutionPolicy \""Unrestricted\"" -NoProfile -File \""C:\Windows\Setup\Scripts\UserOnce.ps1\""" /f;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Id 0 -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
+ '*** Will now execute command «{0}».' -f $(
+ $script.ToString().Trim() -replace '\s+', ' ' -replace '^(.{99})(.+)$', '$1…';
+ );
+ $start = [datetime]::Now;
+ & $script;
+ '*** Finished executing command after {0:0} ms.' -f [datetime]::Now.Subtract( $start ).TotalMilliseconds;
+ "`r`n" * 3;
+ $complete += $increment;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> "C:\Windows\Setup\Scripts\DefaultUser.log";
+
+
+$scripts = @(
+ {
+ Set-ItemProperty -LiteralPath 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name 'AutoLogonCount' -Type 'DWord' -Force -Value 0;
+ };
+ {
+ Disable-ComputerRestore -Drive 'C:\';
+ };
+ {
+ & 'C:\Windows\Setup\Scripts\VirtIoGuestTools.ps1';
+ };
+ {
+ Remove-Item -LiteralPath @(
+ 'C:\Windows\Panther\unattend.xml';
+ 'C:\Windows\Panther\unattend-original.xml';
+ 'C:\Windows\Setup\Scripts\Wifi.xml';
+ ) -Force -ErrorAction 'SilentlyContinue' -Verbose;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Id 0 -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete;
+ '*** Will now execute command «{0}».' -f $(
+ $script.ToString().Trim() -replace '\s+', ' ' -replace '^(.{99})(.+)$', '$1…';
+ );
+ $start = [datetime]::Now;
+ & $script;
+ '*** Finished executing command after {0:0} ms.' -f [datetime]::Now.Subtract( $start ).TotalMilliseconds;
+ "`r`n" * 3;
+ $complete += $increment;
+ }
+} *>&1 | Out-String -Width 1KB -Stream >> "C:\Windows\Setup\Scripts\FirstLogon.log";
+
+
+
diff --git a/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl.old b/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl.old
new file mode 100644
index 0000000..26a5260
--- /dev/null
+++ b/builds/windows/desktop/11/data/autounattend.pkrtpl.hcl.old
@@ -0,0 +1,220 @@
+
+
+
+
+
+ ${vm_inst_os_language}
+
+ ${vm_inst_os_keyboard}
+ ${vm_inst_os_language}
+ ${vm_inst_os_language}
+ ${vm_inst_os_language}
+ ${vm_inst_os_language}
+
+
+
+
+ F:\viostor\w11\amd64\
+
+
+ F:\NetKVM\w11\amd64\
+
+
+
+
+
+
+ 0
+ true
+
+
+
+ 1
+ Primary
+ 550
+
+
+
+ 2
+ EFI
+ 100
+
+
+
+ 3
+ MSR
+ 128
+
+
+
+ 4
+ Primary
+ true
+
+
+
+
+
+ 1
+ 1
+
+ NTFS
+ DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
+
+
+
+ 2
+ 2
+
+ FAT32
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+ C
+ NTFS
+
+
+
+
+
+
+
+
+ /IMAGE/NAME
+ ${vm_inst_os_image}
+
+
+
+ 0
+ 4
+
+
+
+
+
+ 1
+
+ cmd /c powercfg.exe /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
+
+
+
+ true
+ ${build_username}
+ ${build_username}
+ %{if vm_inst_os_eval != true ~}
+
+ ${vm_inst_os_key}
+ OnError
+
+ %{ endif ~}
+
+ false
+
+
+
+
+ false
+
+
+
+
+ 1
+
+
+
+
+
+ false
+
+ ${vm_guest_os_timezone}
+
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+
+
+ ${vm_guest_os_keyboard}
+ ${vm_guest_os_language}
+ ${vm_guest_os_language}
+ ${vm_guest_os_language}
+ ${vm_guest_os_language}
+
+
+
+
+ ${build_password}
+ true
+
+ true
+ ${build_username}
+
+
+ true
+ true
+ true
+ true
+ true
+ Work
+ 2
+
+
+
+ ${build_password}
+ true
+
+
+
+
+ ${build_password}
+ true
+
+ administrators
+ ${build_username}
+ ${build_username}
+ Build Account
+
+
+
+
+
+ %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"
+ Set Execution Policy 64-Bit
+ 1
+ true
+
+
+ %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"
+ Set Execution Policy 32-Bit
+ 2
+ true
+
+
+ %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File E:\windows-virtio.ps1
+ 3
+ Install VMware Tools
+
+
+ %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File E:\windows-init.ps1
+ 4
+ Initial Configuration
+
+
+
+
+
diff --git a/builds/windows/desktop/11/variables.pkr.hcl b/builds/windows/desktop/11/variables.pkr.hcl
index 09f39dc..293fc2e 100644
--- a/builds/windows/desktop/11/variables.pkr.hcl
+++ b/builds/windows/desktop/11/variables.pkr.hcl
@@ -318,7 +318,7 @@ variable "vm_boot_order" {
variable "vm_boot_wait" {
type = string
description = "The time to wait before boot."
- default = "5s"
+ default = "10s"
}
variable "vm_boot_command" {
diff --git a/builds/windows/desktop/11/windows.pkr.hcl b/builds/windows/desktop/11/windows.pkr.hcl
index 25a6691..cf522a0 100644
--- a/builds/windows/desktop/11/windows.pkr.hcl
+++ b/builds/windows/desktop/11/windows.pkr.hcl
@@ -111,7 +111,7 @@ source "proxmox-iso" "windows-desktop-pro" {
// Removable Media Settings
additional_iso_files {
- iso_file = "${var.common_iso_storage}:iso/virtio-win.iso"
+ iso_file = "${var.common_iso_storage}:iso/virtio-win-0.1.285.iso"
iso_storage_pool = var.common_iso_storage
cd_label = "VirtIO"
unmount = true
@@ -223,7 +223,7 @@ source "proxmox-iso" "windows-desktop-ent" {
// Removable Media Settings
additional_iso_files {
- iso_file = "${var.common_iso_storage}:iso/virtio-win.iso"
+ iso_file = "${var.common_iso_storage}:iso/virtio-win-0.1.285.iso"
iso_storage_pool = var.common_iso_storage
cd_label = "VirtIO"
unmount = true