VDIWarmUp improves logon times for users by pre-logging onto the VM at system startup.
The VDIWarmUp user connects to the VM via RDP and optionally runs a profile logon script that calls common processes to improve application launch times for subsequent users.
Watch the Video - Windows 11 Multi-User in Treacle Mode
Warning: If you run this video in Full Screen you may receive a scareware blocker warning as the video appears to be emulating your desktop while obscuring your real desktop.
When deploying with AVDTurbo, AVD-Config can disable the Remote Desktop Agent Bootloader service to prevent connections while VDIWarmUp is running. VDIWarmUp can enable and start the service when complete, enabling AVD logons.
If the Master Image will join Microsoft Active Directory or Entra ID, select the appropriate option. This prevents VDIWarmUp from interrupting the image deployment process. It will also prevent VDIWarmUp from running at startup when updating the Master Image.
If using Citrix PVS or MCS, you can disable the Citrix Desktop Service in the Master Image to prevent connections while VDIWarmUp is running. VDIWarmUp can enable and start the service when complete, enabling Citrix logons.
Specify a maximum session duration. This should be greater than the time required to run the logon script.
Click Next
Click Close.
When installation is complete.
Modify C:\Windows\System32\Repl\Import\Scripts\VDIWarmUp.cmd based on your application environment.
Run VDIWarmUp.exe /config (as Administrator) to create the VDIWarmUpConfig user and VDIWarmUp Scheduled Tasks.
Run VDIWarmUp.exe /test (as Administrator) to launch an RDP Connection, create the VDIWarmUp user profile and validate your configuration.
Check that VDIWarmUp is a member of Administrators and that the Profile Logon script is set correctly.
The password is rotated to a new random complex value at every launch. (Contains at least five uppercase letters, five lowercase letters, five numbers, and five special characters)
You can manually generate a new password by running VDIWarmUp.exe /config (as Administrator)
Validate the VDIWarmUpConfig scheduled task.
The VDIWarmUpConfig scheduled task runs as SYSTEM. It updates the VDIWarmup scheduled task, then starts the VDIWarmup scheduled task.
Validate the VDIWarmUp scheduled task.
You can run either task manually. No connection window will be visible however you can monitor progress by watching the Users tab in Task Manager and by reviewing the VDIWarmUp-SYSTEM.log and VDIWarmUp-VDIWarmUp.log files.
No Trigger.
The VDIWarmUpConfig scheduled task invokes the VDIWarmUp scheduled task
All properties are located inHKEY_LOCAL_MACHINE\Software\Chawn\VDIWarmUp\Settings
String
Enabled
Disabled
Run Logon Script
RUNSCRIPT
1
0 or Null
Start AVD Agent if disabled
STARTAVDAGENT
1
0 or Null
Start only if Active Directory Joined
WAITONAD
1
0 or Null
Start only if Entra Joined
WAITONENTRA
1
0 or Null
Start Citrix Desktop Service if disabled
STARTCITRIX
1
0 or Null
Session Duration
RDPTIMEOUT
Minimum 60 Maximum 600 Recommended 120
File Configuration
VDIWarmUp.exeand supporting files are located inC:\Program Files\Chawn\VDIWarmUp
The profile logon script (VDIWarmUp.cmd) is located inC:\Windows\System32\Repl\Import\Scripts
ModifyVDIWarmUp.cmdbased on your application environment. It is recommeded to retain the shutdown /l command for a faster log off, instead of waiting for the session duration (RDPTIMEOUT)to expire.
Events from the VDIWarmUpConfig scheduled task are logged to C:\Windows\Temp\VDIWarmUp-SYSTEM.log
Events from the VDIWarmUp scheduled task are logged to C:\Windows\Temp\VDIWarmUp-VDIWarmUp.log
Command line parameters
"C:\Program Files\Chawn\VDIWarmUp\VDIWarmUp.exe"
/config
Creates VDIWarmUp user, creates VDIWarmUpConfig and VDIWarmUp Scheduled Tasks. Does not connect via RDP.
/launch
Updates VDIWarmUp user and VDIWarmUp Scheduled Task. Connects via RDP and respects all configured parameters.
/test
Same as /launch except that STARTAVDAGENT, STARTCITRIX, WAITONAD and WAITONENTRA parameters are ignored.
/config may be run as an Administrator or run as a Scheduled Task as SYSTEM
/launch may be run as an Administrator or run as a Scheduled Task as VDIWarmUp. Respects all parameters.
/test may be run as an Administrator or run as a Scheduled Task as VDIWarmUp. Ignores all parameters except for RUNSCRIPT and RDPTIMEOUT.
VDIWarmUp.cmd (Profile Logon Script)
Add common and core application processes to the logon script.
Don't run processes that don't return after launching. This will pause the script indefinitely.
Use start to launch processes asynchronously
Adjust the timeout value in the script based on testing on a cold machine
Adjust the VDIWarmUp RDPTimeOut value to a greater value than is required to run the logon script
rem Chawn VDIWarmUp Logon Script
rem ------------------------------------------------------Start common apps.
start notepad
start explorer
start msedge
start taskmgr
start ms-settings:
start eventvwr
rem ------------------------------------------------------Start your apps. Edit as necessary
start winword
start excel
start outlook
start acrobat
rem ------------------------------------------------------Wait for apps to load
timeout /t 30 /nobreak
rem ------------------------------------------------------LogOff
shutdown /l
Testing
On a Multi-User operating system or Server operating system, the VDIWarmUp window will open interactively and display the logon and logoff process.
On a single user operating system, Windows will not permit more than one RDP connection so the following is displayed.
This is a successful test. You can either click OK or wait 60 seconds until disconnection.
Reboot the VM and review VDIWarmUp.log to confirm a successful configuration.
VDIWarmUp.exe /test will ignore the following parameters.
STARTAVDAGENT
WAITONAD
WAITONENTRA
STARTCITRIX
User Profile Management
To prevent logon issues with User Profile Management, ensure that VDIWarmUp or members of Administrators are excluded from User Profile Management.
e.g. With FSLogix, either add VDIWarmup or Local Account and members of Administrators group to FSLogix Profile Exclude List and FSLogix ODFC Exclude List local groups in your master image.
Create an Image that is configured for either Active Directory or Entra ID
Prevent user connections until VDIWarmUp has completed
Install VDIWarmup. During installation, set 'Start only if Active Directory joined' (WAITONAD=1), even if you intend to join Entra ID, and 'Start AVD Agent if disabled' (STARTAVDAGENT=1).
Create C:\Scripts\AVD-Config.ps1.
AVD-Turbo will run AVD-Config.ps1 after joining Active Directory or Entra ID and optionally joining an AVD Host Pool.
Add the following text to AVD-Config.ps1to stop and disable the 'Remote Desktop Agent Bootloader' service.
This will prevent user connections while VDIWarmUp is running.