Taming Windows in a Virtual Machine

When most people talk about virtual machines, they mean Linux based VMs in the cloud. But there’s much more that can be done with the technology. Before turning to the cloud, I’ve actually started using virtual machines many years ago on my Linux desktop to have access to a Windows environment to run a number of programs I need for work. It’s nice to have Windows in a VM rather than running it on bare metal, because it’s limited to the files in a configured directory tree and hence, things can be contained very nicely. Recently, I’ve also experimented with using Windows running in remote virtual machines and access them via RDP or VNC. This works great in general but there are a number of things that can be tweaked to improve the behavior when using the system over the Internet. And here are my top 3:

Disable Graphical Effects

Out of the box, Windows uses a number of nice graphical effects when Windows are opened, resized and moved on the desktop. This makes the use of the desktop over the Internet a bit sluggish. Fortunately, most effects can be switched-off, which greatly improves remote use. The screenshot below shows how graphical effects can be switched-off with the ‘sysdm.cpl’ application. Click on the ‘Advanced‘ Tab and then on the the Performance ‘Settings‘ button. When clicking on the ‘Adjust for best performance‘ button, all graphical effects are disabled. ‘Smooth edges of screen fonts‘ should be enabled again, however, as font anti-aliasing is otherwise disabled, which makes everything on the desktop and in applications look rather crude. After applying the settings, the remote desktop suddenly feels much more responsive!

Prevent Immediate Windows Updates After Starting An Instance

As I only use Windows VMs occasionally which are otherwise switched-off, the first thing that usually happens when I launch an instance is that Windows runs wild on the disk, downloads and installs software updates and then typically requires several reboots. Definitely not what I want when I spin-up a VM instance to get some work done. Windows Pro and Enterprise versions, however, can be configured for manual software update downloads and installations. Just what I need! To change the default setting, run ‘gpedit.msc‘ and then go to ‘Computer Configuration –> Administrative Templates –> Windows Components –> Windows Update‘. Then double click on ‘Configure Automatic Updates‘, set to ‘enabled‘ and select setting ‘2 – Notify for download and auto install ‘. A reboot might be required for the changes to take effect.

Disable Windows Defender Background Scans

Another annoying behavior when running Windows in a VM is that whenever it thinks the system is idle, it starts running some background tasks that hog massive amount of CPU and IO resources. Often enough, however, I work in the host OS and hence, guest OS background activity scheduled in ‘idle’ times is getting in the way. One such background task is the Windows defender background scan which can be disabled conveniently as follows:

Run ‘Task Scheduler‘ then select ‘Microsoft -> Windows -> Windows Defender‘. There, you will find 4 ‘Defender Tasks‘ and the one to deactivate is ‘Windows Defender Scheduled Scan‘. While this doesn’t stop all background tasks, it at least helps to stop this task which is frequently run after Windows is restarted and left alone for a few minutes.

So there we go, these are the top 3 improvements that people have told me about over time. If you know any other things that make work with a local or remote Windows installation in a VM even better, please consider leaving a comment. Thanks!