Tuning Microsoft Windows 10 for VDI – Part3 : services and scheduled tasks

Tuning Microsoft Windows 10 for VDI – Part3 : services and scheduled tasks

This is the third part of the series about Microsoft Windows 10 for VDI, the first two parts were about setting up the virtual machine and installing Windows 10. This blogpost is about tuning the Microsoft Windows 10, so about Windows services and the schedules tasks. Tuning a VDI desktop is the most important task to do when setting up an environment. If you don’t tune you need a huge number of resources.  Still with Microsoft Windows 10 you need enough resources as it is eating them like hot buns. We deploy with RES One Automation and our job right now looks like this.


We need to combine a few tuning jobs, they grew larger and split up as we proceeded. This series is about this project, to deploy the perfect Golden image. This series consists of a couple of articles

  • Microsoft Windows builds, versions – Click here
  • Creating the virtual machine – Click here,
  • Installing Windows 10 – Click here.
  • Tuning Windows services and scheduled tasks, you’re reading it.
  • Deploying the golden image (coming soon…. )
  • Resource usage of Windows 10 in a VDI environment – link

So lets get started, the desktop is running… The RES ONE Automation agent is up and running so we can shoot some projects at it to tune it. Let’s start with the services. Microsoft Windows 10 has a lot of services you don’t need, on top of that they also added the Hyper-v services too, would be great if you could get a Windows 10 version without all the “extra’s”.

So the next services are safe to disable, mind you it’s a lengthy list;

Adobe ARMHyper-V Time SyncSSDP Discovery
AllJoyn routerHyper-V RDVUPnP Device Host
Application Layer GatewayHyper-V VMIPHelper
BitLocker Drive encryptionHyper-V HeartbeatVolume Shadow copy
Block Lever Backup EngineHyper-V ShutdownWindows Defender
Bluetooth HandsfreeHyper-V GuestWindows Connect now
BlueTooth SupportHyper-V KVP ExchangeWindows Media Player Networking
SuperFetchInternet connectionWindows Mobile hotspot
Diagnostics PolicyiSCSI InitiatorWindows Update
Diagnostics ServiceMicrosoft Software ShadowingWindows Search
Diagnostics SystemMicrosoft Storage SpacesWLAN AutoConfig
Diagnostics TrackingNetwork Services for XboxWWAN AutoConfig
Extensible AuthenticationNetwork Location AwarenessXbox live verification management
Geo LocationNetwork List Service
Google Update ServiceOffline files
HomeGroup ListenerOptimize Drives
HomeGroup ProviderRetail Demo Service
Hyper-V HostSensor Monitoring
Hyper-V VSSShell Hardware Detection

Was this long enough for you guys? Disable all these services to tune Microsoft Windows 10. My advice is to tune services after you install all the applications are installed, some of the applications will install services themselves. I like to tune a Golden image at the end so that the tuning is the closure.

I use RES ONE Automation for this, we got a project there that involves some steps, a step is a module.  I added some screenshots of the task we used, there is a guy in my project that took my Powershell script and expanded that into this module.. kudos to him as this is more workable as I can see which service isn’t disabled at the end.

The table is also found here as a HTML file, perhaps that is easier for you guys to read. Click on the link to get to the file – link.

So with this you can move on and disable the scheduled tasks in Microsoft Windows 10. If you browse through the scheduled tasks you get so many of them like the list never stops. I’ll put them in a table here and give you the command to disable them.

The Table below is a bit off because of the template of WordPress, so I exported it to HTML for you. The HTML file is found right here. – link .

Adobe Acrobat Update task\Microsoft\Windows\Windows Defender\Windows Defender Cache maintenance
GoogleUpdateTaskMachineCore\Microsoft\Windows\Windows Defender\Windows Defender CleanUp
GoogleUpdateTaskMachineUA\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan
klcp_update\Microsoft\Windows\Windows Defender\Windows Defender verification
\microsoft\Office\Office 15 Subscription Heartbeat\Microsoft\Windows\WCM\WiFiTask
\Microsoft\Office\OfficeTelemtryAgentFallback\Microsoft\Windows\UpdateOrchestrator\Schedule Scan
\Microsoft\Office\OfficeTelemetryAgentLogon\Microsoft\Windows\UpdateOrchestrator\Refresh Settings
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319\Microsoft\Windows\UpdateOrchestrator\Reboot
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 64Microsoft\Windows\Application Experience\Microsoft Compatibility
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 64 criticalMicrosoft\Windows\Application Experience\StartUpTask
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 critical\Microsoft\Windows\AutoChk\Proxy
\Microsoft\Windows\DiskCleanup\silentCleanup\Microsoft\Windows\Data Integrity scan\Data integrity scan
\Microsoft\Windows\RetailDemo\CleanupOfflineContent\Microsoft\Windows\Data Integrity scan\Data integrity scan for crash recovery
\Microsoft\Windows\WindowsUpdate\Automatic App Update\Microsoft\Mobile broadband Accounts\MNO Metadata parser
\Microsoft\Windows\WindowsUpdate\Scheduled Start\Microsoft\Windows\NlaSVC\WifiTask
\Microsoft\Windows\WindowsUpdate\sihMicrosoft\Power effiency diagnostics\analyze system
\Microsoft\Windows\Work Folders\Work Folders logon Synchronization\Microsoft\Windows\RecoveryEnvironment\VerifyWinRE
\Microsoft\Windows\Work Folders\Work Maintenance Work\Microsoft\Windows\Shell\FamilySafetyMonitor
\Microsoft\Windows\Defrag\ScheduledDefragOneDrive Standalone Update Task v2
\Microsoft\Windows\Windows Defender\MPIdleTask\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip
\Microsoft\Windows\Windows Defender\MP Scheduled Scan\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask
\Microsoft\Windows\Maintenance\WinSAT\Microsoft\Windows\Customer Experience Improvement Program\Consolidator
\Microsoft\Windows\Application Experience\AitAgent\Microsoft\Windows\Application Experience\ProgramDataUpdater

The command to execute this all is a Powershell script and the command is schtasks /change /tn “<\folder path\name of the scheduled task” /Disable. With this you disable the scheduled tasks.

Windows Tuning

So with those two in place you are left with the normal tuning things, What to do with the page file, Event logs and so on. Let’s dive into that a little bit right now. There is no definite guide to how to tune, you tune according to what your users need for an environment.

High performance plan

One of the things is a high performance plan, Microsoft Windows always has been on balanced and balanced is good for FAT clients. For a VDI environment we want performance, you set the Hypervisor to High performance as well so why not do the same with the VDI desktop?

Below is the Powershell command to set the high performance plan for a Windows machine… not something I got from SQLSoldier.net, kudos and credits to them. The Command is:

Try {
        $HighPerf = powercfg -l | %{if($_.contains("High performance")) {$_.split()[3]}}
        $CurrPlan = $(powercfg -getactivescheme).split()[3]
        if ($CurrPlan -ne $HighPerf) {powercfg -setactive $HighPerf}
    } Catch {
        Write-Warning -Message "Unable to set power plan to high performance"


One little warning about this… that’s why just copying is not working you need to think as well. As I’m running a Dutch (the 2nd best country— LOL ) version of Windows 10 my power plans are named differently. so we don’t have high performance but a Dutch variant of it. It is just reading the text and executing so make sure it is according to your local language.


From Jeroen Storm I got the comment that in my first article in this series I could have tuned a bit more, you can also set the num lock in the BIOS. He’s right of course and therefore I mention him here. In the environment I’m building we set the num lock position with a VBS script when people log on to the VDI desktop. reasons are laptop users in this environment but now you know two methods for doing so. Good to see he reads my articles.

So we have a VBS script and a REG file and execute a hidden program at startup to set the value.



This kinda sums up what I wanted to write in this part… Next part is about the deployment of the Golden Image to a VDI desktop. We got a VMware Horizon environment running (7.0.2) and we will deploy (recompose in this case) a VDI environment. Of course the fact that it is a VMware environment is nothing different than it being a Citrix one, deployment wise it apples or pears but both are fruit.

hope you enjoy reading this, there is more to come as for sure I forgot a dozen things to mention here… there might be an extra article with some extra information about tuning applications I think.

One thing to mention is something Thomas Poppelgaard mentioned, he had some performance issues when disabling Defender and search. So test before you deploy. We got some Excel 2013 CPU issues still under investigating and we are looking at what could be the issue… will do some testing and keep you posted.

5 Responses

  1. Two remarks:
    1. Disabling volume shadow copies will break Persona Management for those who use it;
    2. High Performance was the default up to vSphere 4. From 5 onwards, Balanced is the new High Performance, mostly because the CPU C states are required to get Turbo Boost modes.

  2. Visan says:

    Could you also post Part 4 of this topic?

    • Rob Beekmans says:

      Deploying the golden image? I was writing that but thought that one has Citrix and others have VMware. Was wondering if it was useful as there is nothing specific concerning Windows 10 with deployment. Let me see if I can create a blog about this.

  3. Tu Vu says:

    I tried to create a Citrix Catalog on Xendesktop 7.12 with a Windows 10 template and it failed with error about licensing. Then I tried to run the “Sysprep” and found it failed because the error “. Is there a way to fix this problem? Thanks!

    • Rob Beekmans says:


      Not sure where it went wrong with your image, i’ve seen the licensing thing happen a few times before. most of times Windows is activated a few moments later.
      Have you tried to active it manually?

Leave a Reply