Welcome To Remote Desktop Services
Welcome To Remote Desktop Services
Welcome To Remote Desktop Services
Remote Desktop Services (RDS) is the platform of choice for building virtualization solutions for every end
customer need, including delivering individual virtualized applications, providing secure mobile and remote
desktop access, and providing end users the ability to run their applications and desktops from the cloud.
RDS offers deployment flexibility, cost efficiency, and extensibility—all delivered through a variety of
deployment options, including Windows Server 2016 for on-premises deployments, Microsoft Azure for cloud
deployments, and a robust array of partner solutions.
Depending on your environment and preferences, you can set up the RDS solution for session-based
virtualization, as a virtual desktop infrastructure (VDI), or as a combination of the two:
Session-based vir tualization : Leverage the compute power of Windows Server to provide a cost-effective
multi-session environment to drive your users' everyday workloads.
VDI : Leverage Windows client to provide the high performance, app compatibility, and familiarity that your
users have come to expect of their Windows desktop experience.
Within these virtualization environments, you have additional flexibility in what you publish to your users:
Desktops : Give your users a full desktop experience with a variety of applications that you install and
manage. Ideal for users that rely on these computers as their primary workstations or that are coming from
thin clients, such as with MultiPoint Services.
RemoteApps : Specify individual applications that are hosted/run on the virtualized machine but appear as if
they're running on the user's desktop like local applications. The apps have their own taskbar entry and can
be resized and moved across monitors. Ideal for deploying and managing key applications in the secure,
remote environment while allowing users to work from and customize their own desktops.
For environments where cost-effectiveness is crucial and you want to extend the benefits of deploying full
desktops in a session-based virtualization environment, you can use MultiPoint Services to deliver the best
value.
With these options and configurations, you have the flexibility to deploy the desktops and applications your
users need in a remote, secure, and cost-effective fashion.
Next steps
Here are some next steps to help you get a better understanding of RDS and even start deploying your own
environment:
Understand the supported configurations for RDS with the various Windows and Windows Server versions
Plan and design an RDS environment to accommodate various requirements, such as high availability and
multi-factor authentication.
Review the Remote Desktop Services architecture models that work best for your desired environment.
Start to deploy your RDS environment with ARM and Azure Marketplace.
Get started with Remote Desktop Services in
Windows Server 2016
11/2/2020 • 2 minutes to read • Edit Online
Use the following information to begin exploring and using Remote Desktop Services in Windows Server 2016.
What's new in Remote Desktop Services? - Check out the new features added in Windows Server 2016, as
well as improvements to existing features and scenarios.
Remote Desktop Services planning poster - We've created a poster that walks you through all the
considerations for planning your Remote Desktop Deployment.
Host Windows desktops and applications - learning path - Need to create a desktop hosting solution on
virtual machines? Learn about the new Remote Desktop Services learning path, as well as identify partners
that can help you build your environment.
Once you've reviewed the information about, take the next step and start planning your deployment.
What's new in Remote Desktop Services
11/2/2020 • 2 minutes to read • Edit Online
Remote Desktop Services (RDS) built on Windows Server 2016 is a virtualization platform enabling a wide
range of customer scenarios. Improvements in the overall RDS solution incorporates the work done by both the
Remote Desktop team and other technology partners at Microsoft. The following scenarios and technologies are
new or improved in Windows Server 2016.
Also be sure to check out our session from Ignite 2016: Harness RDS improvements in Windows Server 2016. In
this video, the product team reviews all of the new and improved features in Remote Desktop Services,
including vGPU support.
Azure SQL Database - the new database for your highly available
environment
The RD Connection Broker is able to store all of the deployment information (like connection states and
user/host mappings) in a shared SQL database, such as an Azure SQL database. Ditch the SQL Server Always On
Availability Group deployment manual, grab the connection string to the Azure SQL database, and start using
your highly available environment.
Additional information: Use Azure SQL DB for your Remote Desktop Connection Broker high availability
environment
When it comes to supported configurations for Remote Desktop Services environments, the largest concern
tends to be version interoperability. Most environments include multiple versions of Windows Server - for
example, you may have an existing Windows Server 2012 R2 RDS deployment but want to upgrade to Windows
Server 2016 to take advantage of the new features (like support for OpenGL\OpenCL, Discrete Device
Assignment, or Storage Spaces Direct). The question then becomes, which RDS components can work with
different versions and which need to be the same?
So with that in mind, here are basic guidelines for supported configurations of Remote Desktop Services in
Windows Server.
NOTE
Make sure to review the system requirements for Windows Server 2016 and system requirements for Windows Server
2019.
Best practices
Use Windows Server 2019 for your Remote Desktop infrastructure (the Web Access, Gateway,
Connection Broker, and license server). Windows Server 2019 is backward-compatible with these
components, which means a Windows Server 2016 or Windows Server 2012 R2 RD Session Host can
connect to a 2019 RD Connection Broker, but not the other way around.
For RD Session Hosts - all Session Hosts in a collection need to be at the same level, but you can have
multiple collections. You can have a collection with Windows Server 2016 Session Hosts and one with
Windows Server 2019 Session Hosts.
If you upgrade your RD Session Host to Windows Server 2019, also upgrade the license server.
Remember that a 2019 license server can process CALs from all previous versions of Windows Server,
down to Windows Server 2003.
Follow the upgrade order recommended in Upgrading your Remote Desktop Services environment.
If you are creating a highly available environment, all of your Connection Brokers need to be at the same
OS level.
RD Connection Brokers
Windows Server 2016 removes the restriction for the number of Connection Brokers you can have in a
deployment when using Remote Desktop Session Hosts (RDSH) and Remote Desktop Virtualization Hosts
(RDVH) that also run Windows Server 2016. The following table shows which versions of RDS components
work with the 2016 and 2012 R2 versions of the Connection Broker in a highly available deployment with three
or more Connection Brokers.
3+ C O N N EC T IO N B RO K ERS
IN H A RDSH O R RDVH 2019 RDSH O R RDVH 2016 RDSH O R RDVH 2012 R2
F EAT URE W IN DO W S 7 SP 1 W IN DO W S 8. 1 W IN DO W S 10
NOTE
Because of security concerns, RemoteFX vGPU is disabled by default on all versions of Windows starting with the July 14,
2020 Security Update. To learn more, see KB 4570006.
Remote Desktop Services supports RemoteFX vGPUs when VM is running as a Hyper-V guest on Windows
Server 2012 R2 or Windows Server 2016. The following guest operating systems have RemoteFX vGPU
support:
Windows 7 SP1
Windows 8.1
Windows 10 1703 or later
Windows Server 2016 in a single-session deployment only
Discrete Device Assignment support
Remote Desktop Services supports Physical GPUs presented with Discrete Device Assignment from Windows
Server 2016 or Windows Server 2019 Hyper-V hosts. See Plan for deploying Discrete Device Assignment for
more details.
NOTE
Remote Desktop Services doesn't support heterogeneous session collections. The OSes of all VMs in a collection must
be the same version.
You can have separate homogeneous collections with different guest OS versions on the same host.
The Hyper-V host used to run VMs must be the same version as the Hyper-V host used to create the original VM
templates.
Single sign-on
Windows Server 2016 and Windows Server 2019 RDS supports two main SSO experiences:
In-app (Remote Desktop application on Windows, iOS, Android, and Mac)
Web SSO
Using the Remote Desktop application, you can store credentials either as part of the connection info (Mac) or as
part of managed accounts (iOS, Android, Windows) securely through the mechanisms unique to each OS.
To connect to desktops and RemoteApps with SSO through the inbox Remote Desktop Connection client on
Windows, you must connect to the RD Web page through Internet Explorer. The following configuration options
are required on the server side. No other configurations are supported for Web SSO:
RD Web set to Forms-Based Authentication (Default)
RD Gateway set to Password Authentication (Default)
RDS Deployment set to "Use RD Gateway credentials for remote computers" (Default) in the RD Gateway
properties
NOTE
Due to the required configuration options, Web SSO is not supported with smartcards. Users who login via smartcards
might face multiple prompts to login.
For more information about creating VDI deployment of Remote Desktop Services, check out Supported
Windows 10 security configurations for Remote Desktop Services VDI.
Windows 10 and Windows Server 2016 have new layers of protection built into the operating system to further
safeguard against security breaches, help block malicious attacks and enhance the security of virtual machines,
applications, and data.
NOTE
Make sure to review the Remote Desktop Services supported configuration information.
The following table outlines which of these new features are supported in a VDI deployment using RDS.
Remote Credential No No No No
Guard
NOTE
If you have a Connection Broker in a single-instance environment, and the DNS name matches the computer name, you
may be able to use Remote Credential Guard, although this is not supported.
You can get a copy of the poster by right-clicking the image and saving it to your local system.
Recently, Microsoft delivered a new learning path within the Microsoft Partner Network: "Hosting Windows
Desktop and Applications using Remote Desktop Services in Azure."
If you are a Microsoft partner and want to be included in the list of partners who have passed the assessment,
here are the steps you can take to complete the learning path:
1. Become a Microsoft Partner, if you're not already.
2. Watch the Hosting Windows and Applications using Remote Desktop Services in Azure training session.
3. Take the technical assessment.
4. Make sure you meet the requirements for the Cloud Platform competency.
Already a Microsoft Partner and have questions? Contact the Remote Desktop team at
[email protected].
A highly scalable Remote Desktop deployment requires the use of specific patterns and practices. Designing for
optimal performance and scale-out is key. Use the scenarios below to help you envision, architect, and
continually refine your deployment.
Use the following information to plan and design your deployment:
Build anywhere
Network guidance
Access from anywhere
High availability
MultiFactor Authentication
Secure data storage
GPU acceleration
Connect from any device
Choose how you pay
Be sure to also review the Desktop Hosting Reference Architecture, which provides an overview of the Remote
Desktop architecture and helps you plan a hybrid RDS environment that includes Azure infrastructure.
Remote Desktop Services - Build anywhere
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Deploy on-premises, in the cloud, or a hybrid of the two. Modify your deployment as your business needs
change.
Regardless of where you are, the underlying architecture of the Remote Desktop Services environment remains
the same:
You still must have an internet-facing server to utilize RD Web Access and RD Gateway for external users
You still must have an Active Directory and--for highly available environments--a SQL database to house
user and Remote Desktop properties
You still must have communication access between the RD infrastructure roles (RD Connection Broker, RD
Gateway, RD Licensing, and RD Web Access) and the end RDSH or RDVH hosts to be able to connect end-
users to their desktops or applications.
This flexibility allows you to get the best of both worlds:
The simplicity and pay-as-you-go methods associated with the cloud and the online world.
The familiarity and hassle-free way of leveraging heavy resources that already exist on-premises.
For additional information, look at how to build and deploy your Remote Desktop Services deployment.
Remote Desktop workloads
11/2/2020 • 2 minutes to read • Edit Online
Users can run different types of workloads on the virtual machines managed by Remote Desktop Services or
Windows Virtual Desktop. Scale your deployment depending on the expected need of each type of user. The
following table provides examples of a range of workload types to help you estimate what size your virtual
machines need to be. After you set up your virtual machines, you should continually monitor their actual usage
and adjust their size accordingly. If you end up needing a bigger or smaller virtual machine, you can easily scale
your existing deployment up or down in Azure.
The following table describes each workload. "Example users" are the types of users that might find each
workload most helpful. "Example apps" are the kinds of apps that work best for each workload.
Light Users doing basic data entry tasks Database entry applications,
command-line interfaces
For information about sizing recommendations, see Virtual machine sizing guidance.
Network guidelines
11/2/2020 • 2 minutes to read • Edit Online
When using a remote Windows session, your network's available bandwidth greatly impacts the quality of your
experience. Different applications and display resolutions require different network configurations, so it's
important to make sure your network is configured to meet your needs.
NOTE
The following recommendations apply to networks with less than 0.1% loss. These recommendations apply regardless of
how many sessions you're hosting on your virtual machines (VMs).
Applications
The following table lists the minimum recommended bandwidths for a smooth user experience. These
recommendations are based on the guidelines in Remote Desktop workloads.
Medium 3 Mbps
Heavy 5 Mbps
Power 15 Mbps
Keep in mind that the stress put on your network depends on both your app workload's output frame rate and
your display resolution. If either the frame rate or display resolution increases, the bandwidth requirement will
also rise. For example, a light workload with a high-resolution display requires more available bandwidth than a
light workload with regular or low resolution.
Other scenarios can have their bandwidth requirements change depending on how you use them, such as:
Voice or video conferencing
Real-time communication
Streaming 4K video
Make sure to load test these scenarios in your deployment using simulation tools like Login VSI. Vary the load
size, run stress tests, and test common user scenarios in remote sessions to better understand your network's
requirements.
Display resolutions
Different display resolutions require different available bandwidths. The following table lists the bandwidths we
recommend for a smooth user experience at typical display resolutions with a frame rate of 30 frames per
second (fps). These recommendations apply to single and multiple user scenarios. Keep in mind that scenarios
involving a frame rate under 30 fps, such as reading static text, require less available bandwidth.
T Y P IC A L DISP L AY RESO L UT IO N S AT 30 F P S REC O M M EN DED B A N DW IDT H
Assistive technologies
Assistive technology workloads, like using Narrator in the remote session, require connections with a
connection round trip time (RTT) of 20 milliseconds (ms) or better for the best user experience.
Virtual machine sizing guidelines
3/5/2021 • 4 minutes to read • Edit Online
Whether you're running your virtual machine on Remote Desktop Services or Windows Virtual Desktop,
different types of workloads require different session host virtual machine (VM) configurations. For the best
possible experience, scale your deployment depending on your users' needs.
Multi-session recommendations
The examples in this section are generic guidelines and you should only use them for initial performance
estimates. The following tables list the maximum suggested number of users per virtual central processing unit
(vCPU) and the minimum VM configuration for each workload. These recommendations are based on Remote
Desktop workloads.
The following table shows an example of a smaller, proof-of-concept scenario with a user workload of less than
20 users:
This table shows examples of standard or larger user workloads with 20 or more users:
Single-session recommendations
For VM sizing recommendations for single-session scenarios, we recommend at least two physical CPU cores
per VM (typically four vCPUs with hyperthreading). If you need more specific VM sizing recommendations for
single-session scenarios, ask the software vendors specific to your workload. VM sizing for single-session VMs
will likely align with physical device guidelines.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
End users can connect to internal network resources securely from outside the corporate firewall through RD
Gateway.
Regardless of how you configure the desktops for your end-users, you can easily plug the RD Gateway into the
connection flow for a fast, secure connection. For end-users connecting through published feeds, you can
configure the RD Gateway property as you configure the overall deployment properties. For end-users
connecting through to their desktops without a feed, they can easily add the name of the organization's RD
Gateway as a connection property no matter which Remote Desktop client application they use.
The three primary purposes of the RD Gateway, in the order of the connection sequence, are:
1. Establish an encr ypted SSL tunnel between the end-user's device and the RD Gateway Ser ver : In
order to connect through any RD Gateway server, the RD Gateway server must have a certificate installed
that the end-user's device recognizes. In testing and proofs of concepts, self-signed certificates can be used,
but only publicly trusted certificates from a certificate authority should be used in any production
environment.
2. Authenticate the user into the environment : The RD Gateway uses the inbox IIS service to perform
authentication, and can even utilize the RADIUS protocol to leverage multi-factor authentication solutions
such as Azure MFA. Aside from the default policies created, you can create additional RD Resource
Authorization Policies (RD RAPs) and RD Connection Authorization Policies (RD CAPs) to more specifically
define which users should have access to which resources within the secure environment.
3. Pass traffic back and for th between the end-user's device and the specified resource : The RD
Gateway continues to perform this task for as long as the connection is established. You can specify different
timeout properties on the RD Gateway servers to maintain the security of the environment in case the user
walks away from the device.
You can find additional details on the overall architecture of a Remote Desktop Services deployment in the
desktop hosting reference architecture.
Remote Desktop Services - High availability
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Failures and throttling are unavoidable in large-scale systems. It's simple to set up Remote Desktop
infrastructure roles to support high availability and allow end users to connect seamlessly, every time.
In Remote Desktop Services, the following items represent the Remote Desktop infrastructure roles, with their
respective guidance to establish high availability:
Remote Desktop Connection Broker
Remote Desktop Gateway
Remote Desktop Licensing
Remote Desktop Web Access
High availability is established by duplicating each of the roles services on a second machines. In Azure, you can
receive a guaranteed uptime by placing the set of the two virtual machines (hosting the same role) in an
availability sets.
Along with availability sets, you can now leverage the power of Azure SQL Database and its Azure-backed SLA
to ensure that you always have connection information and can redirect users to their desktops and
applications.
For best practices on creating your RDS environment, please see the desktop hosting architecture.
Remote Desktop Services - Multi-Factor
Authentication
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Leverage the power of Active Directory with Multi-Factor Authentication to enforce high security protection of
your business resources.
For your end-users connecting to their desktops and applications, the experience is similar to what they already
face as they perform a second authentication measure to connect to the desired resource:
Launch a desktop or RemoteApp from an RDP file or through a Remote Desktop client application
Upon connecting to the RD Gateway for secure, remote access, receive an SMS or mobile application MFA
challenge
Correctly authenticate and get connected to their resource!
For more details on the configuration process, check out Integrate your Remote Desktop Gateway infrastructure
using the Network Policy Server (NPS) extension and Azure AD.
Remote Desktop Services - Secure data storage
with UPDs
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Store business resources, user personalization data, and settings securely on-premises or in Azure. RD Session
Hosts use AD authentication and empower users with the resources they need in a personalized environment,
securely.
Ensuring users have a consistent experience, regardless of the endpoint from which they access their remote
resources, is an important aspect of managing an RDS deployment. User Profile Disks (UPDs) allow user data,
customizations, and application settings to follow a user within a single collection. A UPD is a per-user, per-
collection VHD file saved in a central share that is mounted to a user's session when they sign in - the UPD is
treated as a local drive for the duration of that session.
From the user's perspective, the UPD provides a famililar experience - they save their documents to their
Documents folder (on what appears to be a local drive), change their app settings as usual, and make any
customizations to their Windows environment. All this data, including the registry hive, is stored on the UPD and
persists in a central network share. UPDs are only available to the user when the user is actively connected to a
desktop or RemoteApp. UPDs can only roam within a collection because the user's entire C:\Users\<username\>
directory (including AppData\Local) is stored on the UPD.
You can use PowerShell cmdlets to designate the path to the central share, the size of each UPD, and which
folders should be included or excluded from the user profile saved to the UPD. Alternatively, you can enable
UPDs through Server Manager by going to Remote Desktop Ser vices > Collections > Desktop Collection
> Desktop Collection Proper ties > User Profile Disks . Note that you enable or disable UPDs for all users
of an entire collection, not for specific users in that collection. UPDs must be stored on a central file share where
the servers in the collection have full control permissions.
You can achieve high availability for your UPDs by storing them in Azure with Storage Spaces Direct.
Remote Desktop Services - GPU acceleration
11/2/2020 • 2 minutes to read • Edit Online
Remote Desktop Services works with native graphics acceleration as well as the graphics virtualization
technologies supported by Windows Server. For information on those technologies, their differences, and how
to deploy them, see Plan for GPU acceleration in Windows Server.
When planning for graphics acceleration in your RDS environment, your choice of user scale and user
workloads will drive your choice of graphics rendering technology:
Remote Desktop Services - Connect from any
device
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Access corporate resources from any Windows, Apple, or Android computer, tablet, or phone. Enable users to
easily see their available desktops and applications from any device through RD Web Feed.
Learn more about Microsoft Remote Desktop clients.
Remote Desktop Services - Choose how you pay
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Choose your licensing based on what makes sense for your company. License per user to enable users to
remote on any of their devices in a BYOD scenario. License per device if users share the same devices. If you are
a service provider (HSP or MSP) or ISV, choose the per user SALs license for a flexible, pay-as-you-go model.
For more information, check out License your RDS deployment with client access licenses (CALs).
Desktop Hosting Reference Architecture
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
This article defines a set of architectural blocks for using Remote Desktop Services (RDS) and Microsoft Azure
virtual machines to create multitenant, hosted Windows desktop and application services, which we call
"desktop hosting." You can use this architecture reference to create highly secure, scalable, and reliable desktop
hosting solutions for small- and medium-sized organizations with 5 to 5000 users.
The primary audience for this reference architecture are hosting providers who want to leverage Microsoft
Azure Infrastructure Services to deliver desktop hosting services and Subscriber Access Licenses (SALs) to
multiple tenants via the Microsoft Service Provider Licensing Agreement (SPLA) program. A second audience
for this reference architecture are end customers who want to create and manage desktop hosting solutions in
Microsoft Azure Infrastructure Services for their own employees using RDS User CALs extended rights through
Software Assurance (SA).
To deliver a desktop hosting solutions, hosting partners and SA customers leverage Windows Server to deliver
Windows users an application experience that is familiar to business users and consumers. Built on the
foundations of Windows 10, Windows Server 2016 provides familiar application support and user experience.
The scope of this document is limited to:
Architectural design guidance for a desktop hosting service. Detailed information, such as deployment
procedures, performance, and capacity planning is explained in separate documents. For more general
information about Azure Infrastructure Services, see Microsoft Azure Virtual Machines.
Session-based desktops, RemoteApp applications, and server-based personal desktops that use Windows
Server 2016 Remote Desktop Session Host (RD Session Host). Windows client-based virtual desktop
infrastructures are not covered because there is no Service Provider License Agreement (SPLA) for
Windows client operating systems. Windows Server-based virtual desktop infrastructures are allowed
under the SPLA, and Windows client-based virtual desktop infrastructures are allowed on dedicated
hardware with end-customer licenses in certain scenarios. However, client-based virtual desktop
infrastructures are out-of-scope for this document.
Microsoft products and features, primarily Windows Server 2016 and Microsoft Azure Infrastructure
Services.
Desktop hosting services for tenants ranging in size from 5 to 5000 users. For larger tenants, you may
need to modify this architecture to provide adequate performance. The Server Manager RDS graphical
user interface (GUI) is not recommended for deployments over 500 users. PowerShell is recommended
for managing RDS deployments between 500 and 5000 users.
The minimum set of components and services required for a desktop hosting service. There are many
optional components and services that can be added to enhance a desktop hosting service, but these are
out-of-scope for this document.
After reading this document, the reader should understand:
The building blocks that are necessary to provide a secure, reliable, multitenant desktop hosting solution
based in Microsoft Azure Services.
The purpose of each building block and how they fit together.
There are multiple ways to build a desktop hosting solution based on this architecture. This architecture outlines
integration and improvements in Azure with Windows Server 2016. Other deployment options are available
with the Desktop Hosting Reference Architecture Guide for Windows Server 2012 R2.
The following topics are covered:
Desktop hosting logical architecture
Understand the RDS Roles
Understand the desktop hosting environment
Azure services and considerations for desktop hosting
Remote Desktop Services architecture
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Below are various configurations for deploying Remote Desktop Services to host Windows apps and desktops
for end-users.
NOTE
The architecture diagrams below show using RDS in Azure. However, you can deploy Remote Desktop Services on-
premises and on other clouds. These diagrams are primarily intended to illustrate how the RDS roles are colocated and
use other services.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
This article will tell you more about the desktop hosting service's components.
Tenant environment
As described in Remote Desktop service roles, each role plays a distinct part in the tenant envrionment.
The provider's desktop hosting service is implemented as a set of isolated tenant environments. Each tenant's
environment consists of a storage container, a set of virtual machines, and a combination of Azure services, all
communicating over an isolated virtual network. Each virtual machine contains one or more of the components
that make up the tenant's hosted desktop environment. The following subsections describe the components that
make up each tenant's hosted desktop environment.
SQL database
A highly-available SQL database is used by the Remote Desktop Connection Broker to store deployment
information, such as the mapping of current users' connections to the host servers.
There are multiple ways to deploy an SQL database:
1. Create an Azure SQL Database in the tenant's environment. This provides you with the functionality of a
redundant SQL database without you having to manage the servers themselves. This also allows you to pay
for what you consume instead of investing in infrastructure.
2. Create an SQL Server AlwaysOn cluster. This allows you to leverage existing SQL Server infrastructure and
gives you complete control over the SQL Server instances.
For more information about how to set up a highly-available SQL database infrastructure, see the following
articles:
What is the Azure SQL Database service?
Creation and configuration of availability groups (SQL Server).
Add the RD Connection Broker server to the deployment and configure high availability.
File server
The file server uses the Server Message Block (SMB) 3.0 protocol to provide shared folders. These shared
folders are used to create and store user profile disk files (.vhdx) to back up data and let users share data with
each other within the tenant's cloud service.
The virtual machine that deploys the file server must have an Azure data disk attached and configured with
shared folders. Azure data disks use write-through caching, guaranteeing that writes to the disk will not be
erased whenever the virtual machine is restarted.
Small tenants can reduce costs by combining the file server and RD Licensing role on a single virtual machine in
the tenant's environment.
For more information, see the following articles:
Storage in Windows Server
How to attach a managed data disk to a Windows VM in the Azure portal
User profile disks
User profile disks allow users to save personal settings and files when they are signed in to a session on an RD
Session Host server in one collection, then access the same settings and files when signing in to a different RD
Session Host server in the collection. When the user first signs in, the tenant's file server creates a user profile
disk that gets mounted to the RD Session Host server that the user is currently connected to. For each
subsequent sign-in, the user profile disk is mounted to the appropriate RD Session host server, and it is
unmounted with each sign-out. Only the user can access the profile disk's contents.
Remote Desktop Services roles
3/5/2021 • 7 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
This article describes the roles within a Remote Desktop Services environment.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Azure portal
After the provider creates an Azure subscription, the Azure portal can be used to manually create each tenant's
environment. This process can also be automated using PowerShell scripts.
For more information, visit the Microsoft Azure website.
Security considerations
This Azure Desktop Hosting Reference Architecture Guide is designed to provide a highly secure and isolated
environment for each tenant. System security also depends on safeguards taken by the provider during
deployment and operation of the hosted service. The following list describes some considerations the provider
should take to keep their desktop hosting solution based on this reference architecture secure.
All administrative passwords must be strong, ideally randomly generated, changed frequently, and saved in a
secure central location only accessible to a select few provider administrators.
When replicating the tenant environment for new tenants, avoid using the same or weak administrative
passwords.
The RD Web Access site URL, name, and certificates must be unique and recognizable to each tenant to
prevent spoofing attacks.
During the normal operation of the desktop hosting service, all public IP addresses should be deleted for all
virtual machines except the RD Web and RD Gateway virtual machine that lets users securely connect to the
tenant's desktop hosting cloud service. Public IP addresses may be temporarily added when necessary for
management tasks, but they should always be deleted afterwards.
For more information, see the following articles:
Security and protection
Security best practices for IIS 8
Secure Windows Server 2012 R2
Design considerations
It's important to consider the constraints of Microsoft Azure Infrastructure Services when designing a
multitenant desktop hosting service. The following list describes considerations the provider must take to
achieve a functional and cost-effective desktop hosting solution based on this reference architecture.
An Azure subscription has a maximum number of virtual networks, VM cores, and Cloud Services that can be
used. If a provider needs more resources than this, they may need to create multiple subscriptions.
An Azure Cloud Service has a maximum number of virtual machines that can be used. The provider may
need to create multiple Cloud Services for larger tenants that exceed the maximum.
Azure deployment costs are based partially on the number and size of virtual machines. The provider should
optimize the number and size of the virtual machines for each tenant to provide a functional and highly
secure Desktop Hosting environment at the lowest cost.
The physical computer resources in the Azure data center are virtualized by using Hyper-V. Hyper-V hosts are
not configured in host clusters, so the availability of the virtual machines is dependent on the availability of
the individual servers used in the Azure infrastructure. To provide higher availability, multiple instances of
each role service virtual machine can be created in an availability set, then guest clustering can be
implemented within the virtual machines.
In a typical storage configuration, a service provider will have a single storage account with multiple
containers (for example, one for each tenant), and multiple disks within each container. However, there is a
limit to the total storage and performance that can be achieved for a single storage account. For service
providers that support large numbers of tenants or tenants with high storage capacity or performance
requirements, the service provider may need to create multiple storage accounts.
For more information, see the following articles:
Sizes for Cloud Services
Microsoft Azure virtual machine pricing details
Hyper-V overview
Azure Storage scalability and performance targets
A Remote Desktop Services deployment is the infrastructure used to share apps and resources with your users.
Depending on the experience you want to provide, you can make it as small or complex as you need. Remote
Desktop deployments are easily scaled. You can increase and decrease Remote Desktop Web Access, Gateway,
Connection Broker and Session Host servers at will. You can use Remote Desktop Connection Broker to
distribute workloads. Active Directory based authentication provides a highly secure environment.
Remote Desktop clients enable access from any Windows, Apple, or Android computer, tablet, or phone.
See Remote Desktop Services architecture for a detailed discussion of the different pieces that work together to
make up your Remote Desktop Services deployment.
Have an existing Remote Desktop deployment built on a previous version of Windows Server? Check out your
options for moving to WIndows Server 2016, where you can take advantage of new and better functionality
around performance and scale:
Migrate your RDS deployment to Windows Server 2016
Upgrade your RDS deployment to Windows Server 2016
Want to create a new Remote Desktop deployment? Use the following information to deploy Remote Desktop in
Windows Server 2016:
Deploy the Remote Desktop Services infrastructure
Create a session collection to hold the apps and resources you want to share
License your RDS deployment
Have your users install a Remote Desktop client so they can access the apps and resources.
Enable high availability by adding additional Connection Brokers and Session Hosts:
Scale out an existing RDS collection with an RD Session Host farm
Add high availability to the RD Connection Broker infrastructure
Add high availability to the RD Web and RD Gateway web front
Deploy a two-node Storage Spaces Direct file system for UPD storage
If you're a hosting partner interested in using Remote Desktop to provide apps and resources to customers or a
customer looking for someone to host your apps, check out Remote Desktop Services hosting partners for
information about an assessment you can take about using RDS in Azure as a hosting environment, as well as a
list of partners who've passed it.
Seamlessly deploy RDS with ARM and Azure
Marketplace
11/2/2020 • 4 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016,
Windows Server 2012 R2
Remote Desktop Services (RDS) is the platform of choice to cost-effectively host Windows desktops and
applications. You can use an Azure Marketplace offering or a quickstart template to quickly create an RDS on
Azure IaaS deployment. Azure marketplace creates a test domain for you, making it a simple and easy
mechanism for testing and proof-of-concepts. The quickstart templates, on the other hand, allow you to use an
existing domain, making them a great tool to build out a production environment. Once set up, you can connect
to the published desktops and applications from various platforms and devices, using the Microsoft Remote
Desktop apps for Windows, Mac, iOS, and Android.
TIP
Forget the domain name or admin user? You can go back to the new Resource Group in the portal, click
Deployments , and then view the parameters you entered.
Now that you have an RDS deployment, you can add and manage users.
Now that you have an RDS deployment, you can add and manage users.
Migrate your Remote Desktop Services deployment
to Windows Server 2016
11/2/2020 • 5 minutes to read • Edit Online
If you are currently running Remote Desktop Services in Windows Server 2012 R2, you can move to Windows
Server 2016 to take advantage of new features like support for Azure SQL and Storage Spaces Direct.
Migration for a Remote Desktop Services deployment is supported from source servers running Windows
Server 2016 to destination servers running Windows Server 2016. In other words, there is no direct in-place
migration from RDS in Windows Server 2012 R2 to Windows Server 2016. Instead, for most of the RDS
components, you first upgrade to Windows Server 2016 and then migrate data and licenses. The only
components with a direct migration are RD Web, RD Gateway, and the licensing server.
For more information on the upgrade process and requirements, see upgrading your Remote Desktop Services
deployments to Windows Server 2016.
Use the following steps to migrate your Remote Desktop Services deployment:
Migrate RD Connection Broker servers
Migrate session collections
Migrate virtual desktop collections
Migrate RD Web Access servers
Migrate RD Gateway servers
Migrate RD Licensing servers
Migrate certificates
IMPORTANT
The Remote Desktop Connection Broker (RD Connection Broker) source servers must be configured for high availability to
support migration. For more information, see Deploy a Remote Desktop Connection Broker cluster.
1. If you have more than one RD Connection Broker server in the high availability setup, remove all the
RD Connection Broker servers except the one that is currently active.
2. Upgrade the remaining RD Connection Broker server in the deployment to Windows Server 2016.
3. Add Windows Server 2016 RD Connection Broker servers into the high availability deployment.
NOTE
A mixed high availability configuration with Windows Server 2016 and Windows Server 2012 R2 is not supported for
RD Connection Broker servers. An RD Connection Broker running Windows Server 2016 can serve session collections
with RD Session Host servers running Windows Server 2012 R2, and it can serve virtual desktop collections with
RD Virtualization Host servers running Windows Server 2012 R2.
IMPORTANT
Migrate session collections only after successfully completing the previous step, Migrate RD Connection Broker servers.
1. Upgrade the session collection from Windows Server 2012 R2 to Windows Server 2016.
2. Add the new RD Session Host server running Windows Server 2016 to the session collection.
3. Sign out of all sessions in the RD Session Host servers, and remove the servers that require migration
from the session collection.
NOTE
If the UVHD template (UVHD-template.vhdx) is enabled in the session collection and the file server has been
migrated to a new server, update the User Profile Disks: Location collection property with the new path. The User
Profile Disks must be available at the same relative path in the new location as they were on the source server.
A session collection of RD Session Host servers with a mix of servers running Windows Server 2012 R2 and
Windows Server 2016 is not supported.
IMPORTANT
Migrate virtual desktop collections only after successfully completing the previous step, Migrate RD Connection Broker
servers.
1. Upgrade the virtual desktop collection from the server running Windows Server 2012 R2 to Windows
Server 2016.
2. Add the new Windows Server 2016 RD Virtualization Host servers to the virtual desktop collection.
3. Migrate all virtual machines in the current virtual desktop collection that are running on RD Virtualization
Host servers to the new servers.
4. Remove all RD Virtualization Host servers that required migration from the virtual desktop collection in
the source server.
NOTE
If the UVHD template (UVHD-template.vhdx) is enabled in the session collection and the file server has been migrated to
a new server, update the User Profile Disks: Location collection property with the new path. The User Profile Disks must
be available at the same relative path in the new location as they were on the source server.
A virtual desktop collection of RD Virtualization Host servers with a mix of servers running Windows Server 2012 R2 and
Windows Server 2016 is not supported.
Migrate certificates
Successful certificate migration requires both the actual process of migrating certificates and updating
certificate information in the Remote Desktop Services Deployment Properties.
Typical certificate migration includes the following steps:
Export the certificate to a PFX file with the private key.
Import the certificate from a PFX file.
After migrating the appropriate certificates, update the following required certificates for the Remote Desktop
Services deployment in server manager or PowerShell:
RD Connection Broker - single sign-on
RD Connection Broker - RDP file publishing
RD Gateway - HTTPS connection
RD Web Access - HTTPS connection and RemoteApp/desktop connection subscription
Migrate your Remote Desktop Services Client
Access Licenses (RDS CALs)
11/2/2020 • 6 minutes to read • Edit Online
IMPORTANT
Keep a copy of the license key pack ID. Having this information with you facilitates communications with the
Microsoft Clearinghouse, should you need assistance with recovering RDS CALs.
8. On the same Obtain Client License Key Pack page, enter the license key pack ID, and then click Next
to migrate the RDS CALs to your license server.
9. Click Finish to complete the RDS CAL migration process.
Using a telephone
1. On the Obtain Client License Key Pack page, use the displayed telephone number to call the
Microsoft Clearinghouse. Give the representative your Remote Desktop license server ID and the required
information for the licensing program through which you purchased your RDS CALs. The representative
then processes your request to migrate the RDS CALs, and gives you a unique ID for the RDS CALs. This
unique ID is referred to as the license key pack ID .
IMPORTANT
Keep a copy of the license key pack ID. Having this information with you facilitates communications with the
Microsoft Clearinghouse should you need assistance with recovering RDS CALs.
2. On the same Obtain Client License Key Pack page, enter the license key pack ID, and then click Next
to migrate the RDS CALs to your license server.
3. Click Finish to complete the RDS CAL migration process.
Upgrading your Remote Desktop Services
deployments to Windows Server 2016
3/5/2021 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
NOTE
It is mandatory to upgrade RD Connection Broker servers. We do not support Windows Server 2012 R2 RD
Connection Broker servers in a mixed deployment with Windows Server 2016 servers. Once the RD Connection
Broker server(s) are running Windows Server 2016 the deployment will be functional, even if the rest of the
servers in the deployment are still running Windows Server 2012 R2.
2. RD License ser vers should be upgraded before you upgrade your RD Session Host servers.
NOTE
Windows Server 2012 and 2012 R2 RD license servers will work with Windows Server 2016 deployments, but
they can only process CALs from Windows Server 2012 R2 and older. They cannot use Windows Server 2016
CALs. See License your RDS deployment with client access licenses (CALs) for more information about RD license
servers.
3. RD Session Host ser vers can be upgraded next. To avoid down time during upgrade the admin can
split the servers to be upgraded in 2 steps as detailed below. All will be functional after the upgrade. To
upgrade, use the steps described in Upgrading Remote Desktop Session Host servers to Windows Server
2016.
4. RD Vir tualization Host ser vers can be upgraded next. To upgrade, use the steps described in
Upgrading Remote Desktop Virtualization Host servers to Windows Server 2016.
5. RD Web Access ser vers can be upgraded anytime.
NOTE
Upgrading RD Web may reset IIS properties (such as any configuration files). To not lose your changes, make
notes or copies of customizations done to the RD Web site in IIS.
NOTE
Windows Server 2012 and 2012 R2 RD Web Access servers will work with Windows Server 2016 deployments.
NOTE
Windows Server 2016 does not include Network Access Protection (NAP) policies - they will have to be removed.
The easiest way to remove the correct policies is by running the upgrade wizard. If there are any NAP policies you
must delete, the upgrade will block and create a text file on the desktop that includes the specific policies. To
manage NAP policies, open the Network Policy Server tool. After deleting them, click Refresh in the Setup tool to
continue with the upgrade process.
NOTE
Windows Server 2012 and 2012 R2 RD Gateway servers will work with Windows Server 2016 deployments.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
IMPORTANT
All applications must be uninstalled before the upgrade and reinstalled after the upgrade to avoid any app compatibility
issues that may rise because of the upgrade.
IMPORTANT
Ensure this path is to an empty folder for the specific VM.
NOTE
As mentioned, you will need to have already created a new destination sub folder prior to this step. The
Select Folder dialog will not allow you to create a sub folder in this step.
NOTE
Heterogeneous Hyper-V servers in a cluster are not supported.
Deploy your Remote Desktop environment
11/2/2020 • 5 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Use the following steps to deploy the Remote Desktop servers in your environment. You can install the server
roles on physical machines or virtual machines, depending on whether you are creating an on-premises, cloud-
based, or hybrid environment.
If you are using virtual machines for any of the Remote Desktop Services servers, make sure you have prepared
those virtual machines.
1. Add all the servers you're going to use for Remote Desktop Services to Server Manager:
a. In Server Manager, click Manage > Add Ser vers .
b. Click Find Now .
c. Click each server in the deployment (for example, Contoso-Cb1, Contoso-WebGw1, and Contoso-Sh1)
and click OK .
2. Create a session-based deployment to deploy the Remote Desktop Services components:
a. In Server Manager, click Manage > Add Roles and Features .
b. Click Remote Desktop Ser vices installation , Standard Deployment , and Session-based
desktop deployment .
c. Select the appropriate servers for the RD Connection Broker server, RD Web Access server, and RD
Session Host server (for example, Contoso-Cb1, Contoso-WebGw1, and Contoso-SH1, respectively).
d. Select Restar t the destination ser ver automatically if required , and then click Deploy .
e. Wait for the deployment to complete successfully
3. Add RD License Server:
a. In Server Manager, click Remote Desktop Ser vices > Over view > +RD Licensing .
b. Select the virtual machine where the RD license server will be installed (for example, Contoso-Cb1).
c. Click Next , and then click Add .
4. Activate the RD License Server and add it to the License Servers group:
a. In Server Manager, click Tools > Terminal Ser vices > Remote Desktop Licensing Manager .
b. In RD Licensing Manager, select the server, and then click Action > Activate Ser ver .
c. Accept the default values in the Activate Server Wizard. Continue accepting default values until you
reach the Company information page. Then, enter your company information.
d. Accept the defaults for the remaining pages until the final page. Clear Star t Install Licenses Wizard
now , and then click Finish .
e. Click Action > Review Configuration > Add to Group > OK . Enter credentials for a user in the
AAD DC Administrators group, and register as SCP. This step might not work if you are using Azure AD
Domain Services, but you can ignore any warnings or errors.
5. Add the RD Gateway server and certificate name:
a. In Server Manager, click Remote Desktop Ser vices > Over view > + RD Gateway .
b. In the Add RD Gateway Servers wizard, select the virtual machine where you want to install the RD
Gateway server (for example, Contoso-WebGw1).
c. Enter the SSL certificate name for the RD Gateway server using the external fully qualified DNS Name
(FQDN) of the RD Gateway server. In Azure, this is the DNS name label and uses the format
servicename.location.cloudapp.azure.com. For example, contoso.westus.cloudapp.azure.com.
d. Click Next , and then click Add .
6. Create and install self-signed certificates for the RD Gateway and RD Connection Broker servers.
NOTE
If you are providing and installing certificates from a trusted certificate authority, perform the procedures from
step h to step k for each role. You will need to have the .pfx file available for each of these certificates.
a. In Server Manager, click Remote Desktop Ser vices > Over view > Tasks > Edit Deployment
Proper ties .
b. Expand Cer tificates , and then scroll down to the table. Click RD Gateway > Create new
cer tificate .
c. Enter the certificate name, using the external FQDN of the RD Gateway server (for example,
contoso.westus.cloudapp.azure.com) and then enter the password.
d. Select Store this cer tificate and then browse to the shared folder you created for certificates in a
previous step. (For example,\Contoso-Cb1\Certificates.)
e. Enter a file name for the certificate (for example, ContosoRdGwCert), and then click Save .
f. Select Allow the cer tificate to be added to the Trusted Root Cer tificate Authorities
cer tificate store on the destination computers , and then click OK .
g. Click Apply , and then wait for the certificate to be successfully applied to the RD Gateway server.
h. Click RD Web Access > Select existing cer tificate .
i. Browse to the certificate created for the RD Gateway server (for example, ContosoRdGwCert), and
then click Open .
j. Enter the password for the certificate, select Allow the cer tificate to be added to the Trusted
Root Cer tificate store on the destination computers , and then click OK .
k. Click Apply , and then wait for the certificate to be successfully applied to the RD Web Access server.
l. Repeat substeps 1-11 for the RD Connection Broker - Enable Single Sign On and RD
Connection Broker - Publishing ser vices , using the internal FQDN of the RD Connection Broker
server for the new certificate's name (for example, Contoso-Cb1.Contoso.com).
7. Export self-signed public certificates and copy them to a client computer. If you are using certificates from
a trusted certificate authority, you can skip this step.
a. Launch certlm.msc.
b. Expand Personal , and then click Cer tificates .
c. In the right-hand pane right-click the RD Connection Broker certificate intended for client
authentication, for example Contoso-Cb1.Contoso.com .
d. Click All Tasks > Expor t .
e. Accept the default options in the Certificate Export Wizard accept defaults until you reach the File to
Expor t page.
f. Browse to the shared folder you created for certificates, for example \Contoso-Cb1\Certificates.
g. Enter a File name, for example ContosoCbClientCert, and then click Save .
h. Click Next , and then click Finish .
i. Repeat substeps 1-8 for the RD Gateway and Web certificate, (for example
contoso.westus.cloudapp.azure.com), giving the exported certificate an appropriate file name, for
example ContosoWebGwClientCer t .
j. In File Explorer, navigate to the folder where the certificates are stored, for example \Contoso-
Cb1\Certificates.
k. Select the two exported client certificates, then right-click them, and click Copy .
l. Paste the certifcates on the local client computer.
8. Configure the RD Gateway and RD Licensing deployment properties:
a. In Server Manager, click Remote Desktop Ser vices > Over view > Tasks > Edit Deployment
Proper ties .
b. Expand RD Gateway and clear the Bypass RD Gateway ser ver for local addresses option.
c. Expand RD licensing and select Per User
d. Click OK .
9. Create a session collection. These steps create a basic collection. Check out Create a Remote Desktop
Services collection for desktops and apps to run for more information about collections.
a. In Server Manager, click Remote Desktop Ser vices > Collections > Tasks > Create Session
Collection .
b. Enter a collection Name (for example, ContosoDesktop).
c. Select an RD Session Host Server (Contoso-Sh1), accept the default user groups (Contoso\Domain
Users), and enter the Universal Naming Convention (UNC) Path to the user profile disks created above
(\Contoso-Cb1\UserDisks).
d. Set a Maximum size, and then click Create .
You've now created a basic Remote Desktop Services infrastructure. If you need to create a highly-available
deployment, you can add a connection broker cluster or a second RD Session Host server.
Create a Remote Desktop Services collection for
desktops and apps to run
3/5/2021 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Use the following steps to create a Remote Desktop Services session collection. A session collection holds the
apps and desktops you want to make available to users. After you create the collection, publish it so users can
access it.
Before you create a collection, you need to decide what kind of collection you need: pooled desktop sessions or
personal desktop sessions.
Use pooled desktop sessions for session-based vir tualization : Leverage the compute power of
Windows Server to provide a cost-effective multi-session environment to drive your users' everyday
workloads
Use personal desktop sessions for to create a vir tual desktop infrastructure (VDI) : Leverage
Windows client to provide the high performance, app compatibility, and familiarity that your users have
come to expect of their Windows desktop experience.
With a pooled session, multiple users access a shared pool of resources, while with a personal desktop session,
users are assigned their own desktop from within the pool. The pooled session provides lower overall cost,
while personal sessions enable users to customize their desktop experience.
If you need to share graphics-intensive hosted applications, you can combine personal session desktops with
the new Discrete Device Assignment (DDA) capability to also provide support for hosted applications that
require accelerated graphics. Check out Which graphics virtualization technology is right for you for more
information.
Regardless of the type of collection you choose, you'll populate those collections with RemoteApps - programs
and resources that users can access from any supported device and work with as though the program was
running locally.
The Remote Desktop web client lets users access your organization's Remote Desktop infrastructure through a
compatible web browser. They'll be able to interact with remote apps or desktops like they would with a local PC
no matter where they are. Once you set up your Remote Desktop web client, all your users need to get started is
the URL where they can access the client, their credentials, and a supported web browser.
IMPORTANT
The web client does support using Azure AD Application Proxy but does not support Web Application Proxy at all. See
Using RDS with application proxy services for details.
IMPORTANT
If you used the web client during the preview period and installed a version prior to 1.0.0, you must first uninstall the old
client before moving to the new version. If you receive an error that says "The web client was installed using an older
version of RDWebClientManagement and must first be removed before deploying the new version," follow these steps:
1. Open an elevated PowerShell prompt.
2. Run Uninstall-Module RDWebClientManagement to uninstall the new module.
3. Close and reopen the elevated PowerShell prompt.
4. Run Install-Module RDWebClientManagement -RequiredVersion <old version> to install the old
module.
5. Run Uninstall-RDWebClient to uninstall the old web client.
6. Run Uninstall-Module RDWebClientManagement to uninstall the old module.
7. Close and reopen the elevated PowerShell prompt.
8. Proceed with the normal installation steps as follows.
How to publish the Remote Desktop web client
To install the web client for the first time, follow these steps:
1. On the RD Connection Broker server, obtain the certificate used for Remote Desktop connections and
export it as a .cer file. Copy the .cer file from the RD Connection Broker to the server running the RD Web
role.
2. On the RD Web Access server, open an elevated PowerShell prompt.
3. On Windows Server 2016, update the PowerShellGet module since the inbox version doesn't support
installing the web client management module. To update PowerShellGet, run the following cmdlet:
IMPORTANT
You'll need to restart PowerShell before the update can take effect, otherwise the module may not work.
4. Install the Remote Desktop web client management PowerShell module from the PowerShell gallery with
this cmdlet:
5. After that, run the following cmdlet to download the latest version of the Remote Desktop web client:
Install-RDWebClientPackage
6. Next, run this cmdlet with the bracketed value replaced with the path of the .cer file that you copied from
the RD Broker:
7. Finally, run this cmdlet to publish the Remote Desktop web client:
Make sure you can access the web client at the web client URL with your server name, formatted as
https://server_FQDN/RDWeb/webclient/index.html . It's important to use the server name that matches the
RD Web Access public certificate in the URL (typically the server FQDN).
NOTE
When running the Publish-RDWebClientPackage cmdlet, you may see a warning that says per-device CALs
are not supported, even if your deployment is configured for per-user CALs. If your deployment uses per-user
CALs, you can ignore this warning. We display it to make sure you're aware of the configuration limitation.
8. When you're ready for users to access the web client, just send them the web client URL you created.
NOTE
To see a list of all supported cmdlets for the RDWebClientManagement module, run the following cmdlet in PowerShell:
Install-RDWebClientPackage
2. Optionally, you can publish the client for testing before official release by running this cmdlet:
The client should appear on the test URL that corresponds to your web client URL (for example,
https://server_FQDN/RDWeb/webclient-test/index.html).
3. Publish the client for users by running the following cmdlet:
This will replace the client for all users when they relaunch the web page.
Uninstall-RDWebClient
NOTE
You still need an admin PC with internet access to download the necessary files before transferring them to the offline
server.
NOTE
The end-user PC needs an internet connection for now. This will be addressed in a future release of the client to provide a
complete offline scenario.
3. Download the latest version of the Remote Desktop web client for installation on a different device:
Save-RDWebClientPackage "C:\WebClient\"
Copy the downloaded RDWebClientManagement folder to one of the local PowerShell module folders
listed under $env:psmodulePath , or add the path to the folder with the downloaded files to the
$env:psmodulePath .
5. Deploy the latest version of the Remote Desktop web client from the local folder (replace with the
appropriate zip file):
NOTE
To check if the certificate has been bound correctly, run the following command:
In the list of SSL Certificate bindings, ensure that the correct certificate is bound to port 3392.
In the list of SSL Certificate bindings, ensure that the correct certificate is bound to port 3392.
NOTE
If both the RD Session Host and the RD Broker server share the same machine, set the RD Broker server
certificate only. If the RD Session Host and RD Broker server use different machines, both must be configured with
unique certificates.
The Subject Alternative Name (SAN) for each certificate must be set to the machine's Fully
Qualified Domain Name (FQDN) . The Common Name (CN) must match the SAN for each
certificate.
By default, the user may select to enable or disable telemetry. A boolean value $false will match the default
client behavior. A boolean value $true disables telemetry and restricts the user from enabling telemetry.
Remote resource launch method
NOTE
This setting currently only works with the RDS web client, not the Windows Virtual Desktop web client.
By default, users may choose to launch remote resources (1) in the browser or (2) by downloading an .rdp file to
handle with another client installed on their machine. As an administrator, you can choose to restrict the remote
resource launch method for your deployment with the following PowerShell command:
By default, the user may select either launch method. A boolean value $true will force the user to launch
resources in the browser. A boolean value $false will force the user to launch resources by downloading an .rdp
file to handle with a locally installed RDP client.
Reset RDWebClientDeploymentSetting configurations to default
To reset a deployment-level web client setting to the default configuration, run the following PowerShell cmdlet
and use the -name parameter to specify the setting you want to reset:
Troubleshooting
If a user reports any of the following issues when opening the web client for the first time, the following sections
will tell you what to do to fix them.
What to do if the user's browser shows a security warning when they try to access the web client
The RD Web Access role might not be using a trusted certificate. Make sure the RD Web Access role is
configured with a publicly trusted certificate.
If that doesn't work, your server name in the web client URL might not match the name provided by the RD
Web certificate. Make sure your URL uses the FQDN of the server hosting the RD Web role.
What to do if the user can't connect to a resource with the web client even though they can see the items
under All Resources
If the user reports that they can't connect with the web client even though they can see the resources listed,
check the following things:
Is the RD Gateway role properly configured to use a trusted public certificate?
Does the RD Gateway server have the required updates installed? Make sure that your server has the
KB4025334 update installed.
If the user gets an "unexpected server authentication certificate was received" error message when they try to
connect, then the message will show the certificate's thumbprint. Search the RD Broker server's certificate
manager using that thumbprint to find the right certificate. Verify that the certificate is configured to be used for
the RD Broker role in the Remote Desktop deployment properties page. After making sure the certificate hasn't
expired, copy the certificate in .cer file format to the RD Web Access server and run the following command on
the RD Web Access server with the bracketed value replaced by the certificate's file path:
Have you ever had trouble getting your end users connected to their published RDS feed, either because of a
single missing character in the feed URL or because they lost the email with the URL? Nearly all Remote Desktop
client applications support finding your subscription by entering your email address, making it easier than ever
to get your users connected to their RemoteApps and desktops.
Before you set up email discovery, do the following:
Make sure you have permission to add a TXT record to the domain associated with your email (for example,
if your users have @contoso.com email addresses, you would need permissions for the contoso.com
domain)
Create an RD Web feed URL (https://<rdweb-dns-name>.domain/RDWeb/Feed/webfeed.aspx, such as
https://rdweb.contoso.com/RDWeb/Feed/webfeed.aspx)
NOTE
If you're using Windows Virtual Desktop instead of Remote Desktop, you'll want to use these URLs instead:
If you're using Windows Virtual Desktop (classic):
https://rdweb.wvd.microsoft.com/api/feeddiscovery/webfeeddiscovery.aspx
If you're using Windows Virtual Desktop: https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Each user and device that connects to a Remote Desktop Session host needs a client access license (CAL). You
use RD Licensing to install, issue, and track RDS CALs.
When a user or a device connects to an RD Session Host server, the RD Session Host server determines if an
RDS CAL is needed. The RD Session Host server then requests an RDS CAL from the Remote Desktop license
server. If an appropriate RDS CAL is available from a license server, the RDS CAL is issued to the client, and the
client is able to connect to the RD Session Host server and from there to the desktop or apps they're trying to
use.
There is a licensing grace period of 180 Days during which no license server is required. Once the grace period
ends, clients must have a valid RDS CAL issued by a license server before they can log on to an RD Session Host
server.
Use the following information to learn about how client access licensing works in Remote Desktop Services and
to deploy and manage your licenses:
License your RDS deployment with client access licenses (CALs)
Understanding the RDS CAL model
RDS CAL version compatibility
P ER DEVIC E P ER USER
RDS CALs are physically assigned to each device. RDS CALs are assigned to a user in Active Directory.
RDS CALs are tracked by the license server. RDS CALs are tracked by the license server.
RDS CALs can be tracked regardless of Active Directory RDS CALs cannot be tracked within a workgroup.
membership.
You can revoke up to 20% of RDS CALs. You cannot revoke any RDS CALs.
Temporary RDS CALs are valid for 52–89 days. Temporary RDS CALs are not available.
RDS CALs cannot be overallocated. RDS CALs can be overallocated (in breach of the Remote
Desktop licensing agreement).
When you use the Per Device model, a temporary license is issued the first time a device connects to the RD
Session Host. The second time that device connects, as long as the license server is activated and there are
available RDS CALs, the license server issues a permanent RDS Per Device CAL.
When you use the Per User model, licensing is not enforced and each user is granted a license to connect to an
RD Session Host from any number of devices. The license server issues licenses from the available RDS CAL
pool or the Over-Used RDS CAL pool. It's your responsibility to ensure that all of your users have a valid license
and zero Over-Used CALs—otherwise, you're in violation of the Remote Desktop Services license terms.
An example of where one would use the Per Device model would be in an environment where there are two or
more shifts using the same computers to access the RD Session Host(s). The Per User model would be best for
environments where users have their own dedicated Windows device to access the RD Session Host(s).
To ensure you are in compliance with the Remote Desktop Services license terms, track the number of RDS Per
User CALs used in your organization and be sure to have enough RDS Per User CALs installed on the license
server for all of your users.
You can use the Remote Desktop Licensing Manager to track and generate reports on RDS Per User CALs.
RDS 2008 R2 A N D
EA RL IER C A L RDS 2012 C A L RDS 2016 C A L RDS 2019 C A L
You must install your RDS CAL on a compatible RD license server. Any RDS license server can host licenses from
all previous versions of Remote Desktop Services and the current version of Remote Desktop Services. For
example, a Windows Server 2016 RDS license server can host licenses from all previous versions of RDS, while
a Windows Server 2012 R2 RDS license server can only host licenses up to Windows Server 2012 R2.
The following table shows which RDS CAL and license server versions are compatible with each other.
RDS 2008 R2 A N D
EA RL IER C A L RDS 2012 C A L RDS 2016 C A L RDS 2019 C A L
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
The Remote Desktop Services license server issues client access licenses (CALs) to users and devices when they
access the RD Session Host. You can activate the license server by using the Remote Desktop Licensing Manager.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Use the following information to install Remote Desktop Services client access licenses (CALs) on the license
server. Once the CALs are installed, the license server will issue them to users as appropriate.
Note you need Internet connectivity on the computer running Remote Desktop Licensing Manager but not on
the computer running the license server.
1. On the license server (usually the first RD Connection Broker), open the Remote Desktop Licensing Manager.
2. Right-click the license server, and then click Install licenses .
3. Click Next on the welcome page.
4. Select the program you purchased your RDS CALs from, and then click Next . If you are a service provider,
select Ser vice Provider License Agreement .
5. Enter the information for your license program. In most cases, this will be the license code or an agreement
number, but this varies depending on the license program you're using.
6. Click Next .
7. Select the product version, license type, and number of licenses for your environment, and then click Next .
The license manager contacts the Microsoft Clearinghouse to validate and retrieve your licenses.
8. Click Finish to complete the process.
Track your Remote Desktop Services client access
licenses (RDS CALs)
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can use the Remote Desktop Licensing Manager tool to create reports to track the RDS Per User CALs that
have been issued by a Remote Desktop license server.
NOTE
If you are using Azure AD Domain Services in your environment, the Remote Desktop Licensing Manager tool won't work
to obtain Per User CALs. Instead, you need to track licensing manually, either through logon events, polling active Remote
Desktop connections through the Connection Broker, or another mechanism that works for you.
Windows Server 2016 combines the powerful secure delivery of desktops and apps through Remote Desktop
Services with the flexible, scalable services provided by Microsoft Azure. You can deploy RDS with Azure
services to help reduce infrastructure maintenance cost for on-premises servers, increase stability by using
Azure services to ensure high availability, improve security by using Multi-factor Authentication, and improve
your users' experience by using existing identities to access resources in RDS.
Use the following information to integrate Azure into your Remote Desktop deployment:
Learn how to use Multi-factor Authentication with RDS
Integrate Azure AD Domain Services with your RDS deployment
Publish Remote Desktop with Azure AD Application Proxy
To see how these services simplify the architecture of your Remote Desktop deployment, check out RDS
architectures with unique Azure PaaS roles.
Integrate Azure AD Domain Services with your RDS
deployment
11/2/2020 • 2 minutes to read • Edit Online
You can use Azure AD Domain Services (Azure AD DS) in your Remote Desktop Services deployment in the
place of Windows Server Active Directory. Azure AD DS lets you use your existing Azure AD identities in with
classic Windows workloads.
With Azure AD DS you can:
Create an Azure environment with a local domain for born-in-the-cloud organizations.
Create an isolated Azure environment with the same identities used for your on-premises and online
environment, without needing to create a site-to-site VPN or ExpressRoute.
When you finish integrating Azure AD DS into your Remote Desktop deployment, your architecture will look
something like this:
To see how this architecture compares with other RDS deployment scenarios, check out Remote Desktop
Services architectures.
To get a better understanding of Azure AD DS, check out the Azure AD DS overview and How to decide if Azure
AD DS is right for your use-case.
Use the following information to deploy Azure AD DS with RDS.
Prerequisites
Before you can bring your identities from Azure AD to use in an RDS deployment, configure Azure AD to save
the hashed passwords for your users' identities. Born-in-the-cloud organizations don't need to make any
additional changes in their directory; however, on-premises organizations need to allow password hashes to be
synchronized and stored in Azure AD, which may not be permissible to some organizations. Users will have to
reset their passwords after making this configuration change.
NOTE
Right now this has to be the same resource group where the Azure resource manager
virtual network exists.
Dns Label Prefix : Enter the URL that you want users to use to access RD Web.
Ad Domain Name : Enter the full name of your Azure AD instance, for example,
"contoso.onmicrosoft.com" or "contoso.com".
Ad Vnet Name and Ad Subnet Name : Enter the same values that you used when
you created the Azure resource manager virtual network. This is the subnet to which
the RDS resources will connect.
Admin Username and Admin Password : Enter the credentials for an admin user
that's a member of the AAD DC Administrators group in Azure AD.
Template
Remove all properties of dnsSer vers : after selecting Edit template from the Azure
quickstart template page, search for "dnsServers" and remove the property.
For example, before removing the dnsSer vers property:
And here's the same file after removing the property:
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can improve the availability and scale of your RDS deployment by adding a Remote Desktop Session Host
(RDSH) farm.
Use the following steps to add another RD Sesssion Host to your deployment:
1. Create a server to host the second RD Session Host. If you are using Azure virtual machines, make sure to
include the new VM in the same availability set that holds your first RD Session Host.
2. Enable remote management on the new server or virtual machine:
a. In Server Manager, click Local Ser ver > Remote management current setting (disabled) .
b. Select Enable remote management for this ser ver , and then click OK .
c. Optional: You can temporarily set Windows Update to not automatically download and install updates.
This helps prevent changes and system restarts while you deploy the RDSH server. In Server Manager,
click Local Ser ver > Windows Update current setting . Click Advanced options > Defer
upgrades .
3. Add the server or vm to the domain:
a. In Server Manager, click Local Ser ver > Workgroup current setting .
b. Click Change > Domain , and then enter the domain name (for example, Contoso.com).
c. Enter the domain administrator credentials.
d. Restart the server or vm.
4. Add the new RD Session Host to the farm:
NOTE
Step 1, creating a public IP address for the RDMS virtual machine, is only necessary if you are using a vm for the
RDMS and if it does not already have an IP address assigned.
a. Create a public IP address for the virtual machine running Remote Desktop Management Services
(RDMS). The RDMS virtual machine will typically be the virtual machine running the first instance of
the RD Connection Broker role.
a. In the Azure portal, click Browse > Resource groups , click the resource group for the
deployment and then click the RDMS virtual machine (for example, Contoso-Cb1).
b. Click Settings > Network interfaces , and then click the corresponding network interface.
c. Click Settings > IP address .
d. For Public IP address , select Enabled , and then click IP address .
e. If you have an existing public IP address you want to use, select it from the list. Otherwise, click
Create new , enter a name, and then click OK and then Save .
b. Sign into the RDMS.
c. Add the new RDSH server to Server Manager:
a. Launch Server Manager, click Manage > Add Ser vers .
b. In the Add Servers dialog, click Find Now .
c. Select the server you want to use for the RD Session Host or the newly created virtual machine
(for example, Contoso-Sh2) and click OK .
d. Add the RDSH server to the deployment
a. Launch Server Manager .
b. Click Remote Desktop Ser vices > Over view > Deployment Ser vers > Tasks > Add RD
Session Host Ser vers .
c. Select the new server (for example, Contoso-Sh2), and then click Next .
d. On the Confirmation page, select Restar t remote computers as needed , and then click
Add .
e. Add RDSH server to the collection farm:
a. Launch Server Manager.
b. Click Remote Desktop Ser vices and then click the collection to which you want to add the
newly created RDSH server (for example, ContosoDesktop).
c. Under Host Ser vers , click Tasks > Add RD Session Host Ser vers .
d. Select the newly created server (for example, Contoso-Sh2), and then click Next .
e. On the Confirmation page, click Add .
Add the RD Connection Broker server to the
deployment and configure high availability
3/5/2021 • 6 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can deploy a Remote Desktop Connection Broker (RD Connection Broker) cluster to improve the availability
and scale of your Remote Desktop Services infrastructure.
Pre-requisites
Set up a server to act as a second RD Connection Broker—this can be either a physical server or a VM.
Set up a database for the Connection Broker. You can use Azure SQL Database instance or SQL Server in your
local environment. We talk about using Azure SQL below, but the steps still apply to SQL Server. You'll need to
find the connection string for the database and make sure you have the correct ODBC driver.
e. Replace "your_password_here" with the actual password. You'll use this entire string, with your
included password, when connecting to the database.
2. Install the ODBC driver on the new Connection Broker:
a. If you are using a VM for the Connection Broker, create a public IP address for the first RD Connection
Broker. (You only have to do this if the RDMS virtual machine does not already have a public IP
address to allow RDP connections.)
a. In the Azure portal, click Browse > Resource groups , click the resource group for the
deployment, and then click the first RD Connection Broker virtual machine (for example,
Contoso-Cb1).
b. Click Settings > Network interfaces , and then click the corresponding network interface.
c. Click Settings > IP address .
d. For Public IP address , select Enabled , and then click IP address .
e. If you have an existing public IP address you want to use, select it from the list. Otherwise, click
Create new , enter a name, and then click OK and then Save .
b. Connect to the first RD Connection Broker:
a. In the Azure portal, click Browse > Resource groups , click the resource group for the
deployment, and then click the first RD Connection Broker virtual machine (for example,
Contoso-Cb1).
b. Click Connect > Open to open the Remote Desktop client.
c. In the client, click Connect , and then click Use another user account . Enter the user name
and password for a domain administrator account.
d. Click Yes when warned about the certificate.
c. Download the ODBC driver for SQL Server that matches the version in the ODBC connection string.
For the example string above, we need to install the version 13 ODBC driver.
d. Copy the sqlincli.msi file to the first RD Connection Broker server.
e. Open the sqlincli.msi file and install the native client.
f. Repeat steps 1-5 for each additional RD Connection Brokers (for example, Contoso-Cb2).
g. Install the ODBC driver on each server that will run the connection broker.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can deploy a Remote Desktop Web Access (RD Web Access) and Remote Desktop Gateway (RD Gateway)
farm to improve the availability and scale of a Windows Server Remote Desktop Services (RDS) deployment
Use the following steps to add an RD Web and Gateway server to an existing Remote Desktop Services basic
deployment.
Pre-requisites
Set up a server to act as an additional RD Web and RD Gateway - this can be either a physical server or VM. This
includes joining the server to the domain and enabling remote management.
NOTE
If your previous server running RD Web and RD Gateway was already set up behind an external load balancer, skip ahead
to step 4, select the existing backend pool, and add the new server to the pool.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
Remote Desktop Services (RDS) requires a domain-joined file server for user profile disks (UPDs). To deploy a
high availability domain-joined scale-out file server (SOFS) in Azure, use Storage Spaces Direct with Windows
Server 2016. If you're not familiar with UPDs or Remote Desktop Services, check out Welcome to Remote
Desktop Services.
NOTE
Microsoft just published an Azure template to deploy a Storage Spaces Direct scale-out file server! You can use the
template to create your deployment, or use the steps in this article.
We recommend deploying your SOFS with DS-series VMs and premium storage data disks, where there are the
same number and size of data disks on each VM. You will need a minimum of two storage accounts.
For small deployments, we recommend a 2-node cluster with a cloud witness, where the volume is mirrored
with 2 copies. Grow small deployments by adding data disks. Grow larger deployments by adding nodes (VMs).
These instructions are for a 2-node deployment. The following table shows the VM and disk sizes you'll need to
store UPDs for the number of users in your business.
Use the following steps to create a domain controller (we called ours "my-dc" below) and two node VMs ("my-
fsn1" and "my-fsn2") and configure the VMs to be a 2-node Storage Spaces Direct SOFS.
1. Create a Microsoft Azure subscription.
2. Sign into the Azure portal.
3. Create an Azure storage account in Azure Resource Manager. Create it in a new resource group and use the
following configurations:
Deployment model: Resource Manager
Type of storage account: General purpose
Performance tier: Premium
Replication option: LRS
4. Set up an Active Directory forest by either using a quickstart template or deploying the forest manually.
Deploy using an Azure quickstart template:
Create an Azure VM with a new AD forest
Create a new AD domain with 2 domain controllers (for high availability)
Manually deploy the forest with the following configurations:
Create the virtual network in the same resource group as the storage account.
Recommended size: DS2 (increase the size if the domain controller will host more domain
objects)
Use an automatically generated VNet.
Follow the steps to install AD DS.
5. Set up the file server cluster nodes. You can do this by deploying the Windows Server 2016 Storage Spaces
Direct SOFS cluster Azure template or by following steps 6-11 to deploy manually.
6. To manually set up the file server cluster nodes:
a. Create the first node:
a. Create a new virtual machine using the Windows Server 2016 image. (Click New > Vir tual
Machines > Windows Ser ver 2016. Select Resource Manager , and then click Create .)
b. Set the basic configuration as follows:
Name: my-fsn1
VM disk type SSD
Use an existing resource group, the one that you created in step 3.
c. Size: DS1, DS2, DS3, DS4, or DS5 depending on your user needs (see table at beginning of
these instructions). Ensure premium disk support is selected.
d. Settings:
Storage account: Choose the storage account you created in step 3.
High Availability - create a new availability set. (Click High Availability > Create new ,
and then enter a name (for example, s2d-cluster). Use the default values for Update
domains and Fault domains .)
b. Create the second node. Repeat the step above with the following changes:
Name: my-fsn2
High Availability - select the availability set you created above.
7. Attach data disks to the cluster node VMs according to your user needs (as seen in the table above). After the
data disks are created and attached to the VM, set host caching to None .
8. Set IP addresses for all VMs to static .
a. In the resource group, select a VM, and then click Network interfaces (under settings ). Select the
listed network interface, and then click IP Configurations . Select the listed IP configuration, select
static , and then click Save .
b. Note the domain controller (my-dc for our example) private IP address (10.x.x.x).
9. Set primary DNS server address on NICs of the cluster node VMs to the my-dc server. Select the VM, and
then click Network Interfaces > DNS ser vers > Custom DNS . Enter the private IP address you noted
above, and then click Save .
10. Create an Azure storage account to be your cloud witness. (If you use the linked instructions, stop when you
get to "Configuring Cloud Witness with Failover Cluster Manager GUI" - we'll do that step below.)
11. Set up the Storage Spaces Direct file server. Connect to a node VM, and then run the following Windows
PowerShell cmdlets.
a. Install Failover Clustering Feature and File Server Feature on the two file server cluster node VMs:
c. Configure the cloud witness. Use your cloud witness storage account name and access key.
Enable-ClusterS2D
To view information about the cluster shared volume on the SOFS cluster, run the following
cmdlet:
Get-ClusterSharedVolume
You now have a share at \\my-sofs1\UpdStorage , which you can use for UPD storage when you enable UPD for
your users.
Use personal session desktops with Remote Desktop
Services
11/2/2020 • 3 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can deploy server-based personal desktops in a cloud-computing environment by using personal session
desktops. (A cloud-computing environment has a separation between the fabric Hyper-V servers and the guest
virtual machines, such as Microsoft Azure Cloud or the Microsoft Cloud Platform.) The personal session desktop
capability extends the session-based desktop deployment scenario in Remote Desktop Services to create a new
type of session collection where each user is assigned to their own personal session host with administrative
rights.
Use the following information to create and manage a personal session desktop collection.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can install Remote Desktop Services components on physical servers or on virtual machines.
The first step is to create Windows Server virtual machines in Azure. You'll want to create three VMs: one for the
RD Session Host, one for the Connection Broker, and one for the RD Web and RD Gateway. To ensure the
availability of your RDS deployment, create an availability set (under High availablility in the VM creation
process) and group multiple VMs in that availability set.
After you create your VMs, use the following steps to prepare them for RDS.
1. Connect to the virtual machine using the Remote Desktop Connection (RDC) client:
a. In the Azure portal open the Resource groups view, and then click the resource group to use for the
deployment.
b. Select the new RDSH virtual machine (for example, Contoso-Sh1).
c. Click Connect > Open to open the Remote Desktop client.
d. In the client, click Connect , and then click Use another user account . Enter the user name and
password for the local administrator account.
e. Click Yes when warned about the certificate.
2. Enable remote management:
a. In Server Manager, click Local Ser ver > Remote management current setting (disabled) .
b. Select Enable remote management for this ser ver .
c. Click OK .
3. Optional: You can temporarily set Windows Update to not automatically download and install updates. This
helps prevent changes and system restarts while you deploy the RDSH server.
a. In Server Manager, click Local Ser ver > Windows Update current setting .
b. Select Advanced options > Defer upgrades .
4. Add the server to the domain:
a. In Server Manager, click Local Ser ver > Workgroup current setting .
b. Click Change > Domain , and then enter the domain name (for example, Contoso.com).
c. Enter the domain administrator credentials.
d. Restart the virtual machine.
5. Repeat steps 1 through 4 for the RD Web and GW virtual machine.
6. Repeat steps 1 through 4 for the RD Connection Broker virtual machine.
7. Initialize and format the attached disk on the RD Connection Broker virtual machine:
a. Connect to the RD Connection Broker virtual machine (step 1 above).
b. In Server Manager, click Tools > Computer Management .
c. Click Disk Management .
d. Select the attached disk, then MBR (Master Boot Record) , and then click OK .
e. Right-click the new disk (marked as Unallocated ) and click New Simple Volume .
f. In the New Simple Volume wizard, accept the default values but provide a applicable name for the
Volume label (like Shares).
8. On the RD Connection Broker virtual machine create file shares for the user profile disks and certificates:
a. Open File Explorer, click This PC , and open the disk that you added for file shares.
b. Click Home and New Folder .
c. Enter a name for the user disks folder, for example, UserDisks .
d. Right-click the new folder and click Proper ties > Sharing > Advanced Sharing .
e. Select Share this folder and click Permissions .
f. Select Ever yone , and then click Remove . Now click Add , enter Domain Admins , and click OK .
g. Select Allow Full Control , and then click OK > OK > Close .
h. Repeat steps c. to g. to create a shared folder for certificates.
Configure disaster recovery for Remote Desktop
Services
11/2/2020 • 2 minutes to read • Edit Online
When you deploy Remote Desktop Services into your environment, it becomes a critical part of your
infrastructure, particularly the apps and resources that you share with users. If the RDS deployment goes down
due to anything from a network failure to a natural disaster, users can't access those apps and resources, and
your business is negatively impacted. To avoid this, you can configure a disaster recovery solution that allows
you to failover your deployment - if your RDS deployment is unavailable, for whatever reason, there is a backup
available to automatically take over.
To keep your RDS deployment running in the case of a single component or machine going down, we
recommend configuring your RDS deployment for high availability. You can do this by setting up an RDSH farm
and ensuring your Connection Brokers are clustered for high availability.
The disaster recovery solutions we recommend here are to protect your deployment from catastrophic disaster
- something that takes down your entire RDS deployment (including redundant roles configured for high
availability). If such a disaster hits, having a disaster recovery solution built into your deployment will allow you
to failover the entire deployment and quickly get apps and resources up and running for your users.
Use the following information to deploy disaster recovery solutions in RDS:
Leverage multiple Azure data centers to ensure users can access your RDS deployment, even if one Azure
data center goes down (geo-redundancy)
Deploy Azure Site Recovery to provide failover for RDS components in site-to-site or site-to-Azure failovers
Create a geo-redundant, multi-data center RDS
deployment for disaster recovery
11/2/2020 • 11 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can enable disaster recovery for your Remote Desktop Services deployment by leveraging multiple data
centers in Azure. Unlike a standard highly available RDS deployment (as outlined in the Remote Desktop
Services architecture), which uses data centers in a single Azure region (for example, Western Europe), a multi-
data center deployment uses data centers in multiple geographic locations, increasing the availability of your
deployment - one Azure data center might be unavailable, but it is unlikely that multiple regions would go down
at the same time. By deploying a geo-redundant RDS architecture, you can enable failover in the case of
catastrophic failure of an entire region.
You can use the instructions below to leverage Microsoft Azure infrastructure services and RDS to deliver geo-
redundant desktop hosting services and Subscriber Access Licenses (SALs) to multiple tenants through the
Microsoft Service Provider License Agreement (SPLA) program. You can also use the steps below to create a
geo-redundant hosting service for your own employees using RDS User CALs extended rights through Software
Assurance.
Deployment steps
Create the following resources in Azure to create a geo-redundant multi-data center RDS deployment:
1. Two resource groups in two separate Azure regions. For example RG A (the active deployment, RG stands
for "resource group") and RG B (the passive deployment).
2. A highly-available Active Directory deployment in RG A. You can use the New AD Domain with 2 Domain
Controllers template to create the deployment.
3. A highly-available RDS deployment in RG A. Use the RDS farm deployment using existing active directory
template to create the basic RDS deployment, and then follow the information in Remote Desktop
Services - High availability to configure the other RDS components for high availability.
4. A VNet in RG B - make sure to use an address space that does not overlap the deployment in RG A.
5. A VNet-to-VNet connection between the two resource groups.
6. Two AD virtual machines in an availability set in RG B - make sure the VM names are different from the
AD VMs in RG A. Deploy two Windows Server 2016 VMs in a single availability set, install the Active
Directory Domain Services role, and then promote them to the domain controller in the domain you
created in step 1.
7. A second highly-available RDS deployment in RG B.
a. Use the RDS farm deployment using existing active directory template again, but this time make the
following changes. (To customize the template, select it in the gallery, click Deploy to Azure and then
Edit template .)
a. Adjust the address space of the DNS server private IP to correspond to the VNet in RG B.
Search for "dnsServerPrivateIp" in variables. Edit the default IP (10.0.0.4) to correspond to
the address space you defined in the VNet in RG B.
b. Edit the computer names so that they don't collide with those in the deployment in RG A.
Locate the VMs in the Resources section of the template. Change the computerName
field under osProfile . For example, "gateway" can become"gateway-b "; "[concat('rdsh-',
copyIndex())]" can become "[concat('rdsh-b-', copyIndex())]", and "broker" can become
"broker-b ".
(You can also change the names of the VMs manually after you run the template.)
b. As in step 3 above, use the information in Remote Desktop Services - High availability to configure the
other RDS components for high availability.
8. A Storage Spaces Direct scale-out file server with Storage Replica across the two deployments. Use the
PowerShell script to deploy the template across the resource groups.
NOTE
You can provision storage manually (instead of using the PowerShell script and template):
1. Deploy a two-node Storage Spaces Direct SOFS in RG A to store your user profile disks (UPDs).
2. Deploy a second, identical Storage Spaces Direct SOFS in RG B - make sure to use the same amount of storage
in each cluster.
3. Set up Storage Replica with asynchronous replication between the two.
Enable UPDs
Storage Replica replicates data from a source volume (associated with the primary/active deployment) to a
destination volume (associated with the secondary/passive deployment). By design, the destination cluster
appears as Online (No Access) - Storage Replica dismounts the destination volumes and their drive letters or
mount points. This means that enabling UPDs for the secondary deployment by providing the file share path
will fail, because the volume is not mounted.
Want to learn more about managing replication? Check out Cluster to cluster Storage Replication.
To enable UPDs on both deployments, do the following:
1. Run the Set-RDSessionCollectionConfiguration cmdlet to enable the user profile disks for the primary
(active) deployment - provide a path to the file share on the source volume (which you created in Step 7
in the deployment steps).
2. Reverse the Storage Replica direction so that the destination volume becomes the source volume (this
mounts the volume and makes it accessible by the secondary deployment). You can run Set-
SRPar tnership cmdlet to do this. For example:
3. Enable the user profile disks in the secondary (passive) deployment. Use the same steps as you did for
the primary deployment, in step 1.
4. Reverse the Storage Replica direction again, so the original source volume is again the source volume in
the SR Partnership, and the primary deployment can access the file share. For example:
By deploying Azure Traffic Manager with the Priority routing method, you prevent end users from accessing the
passive deployment while the active deployment is functional. If end users access the passive deployment and
the Storage Replica direction hasn't been switched for failover, the user sign-in hangs as the deployment tries
and fails to access the file share on the passive Storage Spaces Direct cluster - eventually the deployment will
give up and give the user a temporary profile.
Deallocate VMs to save resources
After you configure both deployments, you can optionally shut down and deallocate the secondary RDS
infrastructure and RDSH VMs to save cost on these VMs. The Storage Spaces Direct SOFS and AD server VMs
must always stay running in the secondary/passive deployment to enable user account and profile
synchronization.
When a failover occurs, you'll need to start the deallocated VMs. This deployment configuration has the
advantage of being lower cost, but at the expense of fail-over time. If a catastrophic failure occurs in the active
deployment, you'll have to manually start the passive deployment, or you'll need an automation script to detect
the failure and start the passive deployment automatically. In either case, it may take several minutes to get the
passive deployment running and available for users to sign in, resulting in some downtime for the service. This
downtime depends on the amount of time it takes to start the RDS infrastructure and RDSH VMs (typically 2-4
minutes, if the VMs are started in parallel rather than serially), and the time to bring the passive cluster online
(which depends on the size of the cluster, typically 2-4 minutes for a 2-node cluster with 2 disks per node).
Active Directory
The Active Directory servers in each deployment are replicas within the same Forest/Domain. Active Directory
has a built-in synchronization protocol to keep the four domain controllers in sync. However, there may be some
lag so that if a new user is added to one AD server, it may take some time to replicate across all the AD servers
in the two deployments. Consequently, be sure to warn users to not try to sign in immediately after being added
to the domain.
RD License Server
Provide a per-user RD CAL for each named user that is authorized to access the geo-redundant deployment.
Distribute the per user CALs evenly across the two RD License Servers in the active deployment. Then, duplicate
these CALs to the two RD License Servers in the passive deployment. Because the CALs are duplicated between
the active and passive deployment, at any given time only one deployment can be active with users connecting;
otherwise, you violate the license agreement.
Image Management
As you update your RDSH images to provide software updates or new applications, you'll need to separately
update the RDSH collections in each deployment to maintain a common user experience across both
deployments. You can use the Update RDSH collection template, but note that the passive deployment's RDS
infrastructure and RDSH VMs must be running to run the template.
Failover
In the case of the Active-Passive deployment, failover requires you to start the VMs of the secondary
deployment. You can do this manually or with an automation script. In the case of a catastrophic failover of the
Storage Spaces Direct SOFS, change the Storage Replica partnership direction, so that the destination volume
becomes the source volume. For example:
RG B is now the active primary deployment. To switch back to RG A as the primary deployment:
1. Switch the SR Partnership direction (cluster-a-s2d-c becomes the source volume):
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can use Azure Site Recovery to create a disaster recovery solution for your Remote Desktop Services
deployment.
Azure Site Recovery is an Azure-based service that provides disaster recovery capabilities by orchestrating
replication, failover, and recovery of virtual machines. Azure Site Recovery supports a number of replication
technologies to consistently replicate, protect, and seamlessly failover virtual machines and applications to
private/public or hoster's clouds.
Use the following information to create and validate the disaster recovery solution.
Prerequisites
Before you can configure Azure Site Recovery for your deployment, make sure you meet the following
requirements:
Create an on-premises RDS deployment.
Add Azure Site Recovery Services vault to your Microsoft Azure subscription.
If you are going to use Azure as your recovery site, run the Azure Virtual Machine Readiness Assessment tool
on your VMs to ensure they are compatible with Azure VMs and Azure Site Recovery Services.
Implementation checklist
We'll cover the various steps to enable Azure Site Recovery Services for your RDS deployment in more detail,
but here are the high-level implementation steps.
Hyper-V - Download the Microsoft Azure Site Recovery Provider. Install it on your VMM server or Hyper-V host. See
Prerequisites for replication to Azure by using Azure Site Recovery for information.
Hyper-V - Download the Microsoft Azure Recovery Services agent and install it on Hyper-V host servers.
Enable protection for VMs in VMM cloud, Hyper-V sites, or VMWare sites.
Test the recovery plan by creating a test failover. Ensure all VMs can access required resources, like Active Directory. Ensure
network redirections are configured and working for RDS. For detailed steps on testing your recovery plan, see Run a test
failover
Run a disaster recovery drill using planned and unplanned failovers. Ensure that all VMs have access to required resources,
such as Active Directory. Ensure that all VMs have access to required resources, such as Active Directory. For detailed steps on
failovers and how to run drills, see Failover in Site Recovery.
Enable disaster recovery of RDS using Azure Site
Recovery
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
To ensure that your RDS deployment is adequately configured for disaster recovery, you need to protect all of
the components that make up your RDS deployment:
Active Directory
SQL Server tier
RDS components
Network components
DEP LO Y M EN T T Y P E P ROT EC T IO N ST EP S
Personal virtual desktop (unmanaged) 1. Make sure all virtualization hosts are ready with the RDVH
role installed.
2. Connection Broker.
3. Personal desktops.
4. Gold template VM.
5. Web Access, License server, and Gateway server
DEP LO Y M EN T T Y P E P ROT EC T IO N ST EP S
Pooled virtual desktop (managed with no UPD) 1. All virtualization hosts are ready with the RDVH role
installed.
2. Connection Broker.
3. Gold template VM.
4. Web Access, License server, and Gateway server.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
You can create a disaster recovery plan in Azure Site Recovery to automate the failover process. Add all RDS
component VMs to the recovery plan.
Use the following steps in Azure to create your recovery plan:
1. Open Azure Site Recovery Vault in the Azure portal, and then click Recover y Plans .
2. Click Create and enter a name for the plan.
3. Select your Source and Target . The target is either a secondary RDS site or Azure.
4. Select the VMs that host your RDS components, and then click OK .
The following sections provide additional information about creating recovery plans for the different types of
RDS deployment.
ipconfig /registerdns
Broker - broker.contoso.com
Virtualization host - VH1.contoso.com
ipmo RemoteDesktop;
add-rdserver –ConnectionBroker broker.contoso.com –Role RDS-VIRTUALIZATION –Server VH1.contoso.com
ipmo virtualmachinemanager;
Foreach($vm in $VMsAsTemplate)
{
Get-SCVirtualMachine -ID $vm | Stop-SCVirtualMachine –Force
}
ipmo RemoteDesktop
$desktops = Get-RDVirtualDesktop -CollectionName Win8Desktops;
Foreach($vm in $desktops){
Remove-RDVirtualDesktopFromCollection -CollectionName Win8Desktops -VirtualDesktopName
$vm.VirtualDesktopName –Force
}
ipmo RemoteDesktop;
Add-RDVirtualDesktopToCollection -CollectionName Win8Desktops -VirtualDesktopAllocation
@{"RDVH1.contoso.com" = 1}
ipconfig /registerdns
Broker - broker.contoso.com
Virtualization host - VH1.contoso.com
ipmo RemoteDesktop;
add-rdserver –ConnectionBroker broker.contoso.com –Role RDS-VIRTUALIZATION –Server VH1.contoso.com
ipmo virtualmachinemanager;
Foreach($vm in $VMsAsTemplate)
{
Get-SCVirtualMachine -ID $vm | Stop-SCVirtualMachine –Force
}
ipmo RemoteDesktop
$desktops = Get-RDVirtualDesktop -CollectionName CEODesktops;
Export-RDPersonalVirtualDesktopAssignment -CollectionName CEODesktops -Path ./Desktopallocations.txt
-ConnectionBroker broker.contoso.com
Foreach($vm in $desktops){
Remove-RDVirtualDesktopFromCollection -CollectionName CEODesktops -VirtualDesktopName
$vm.VirtualDesktopName –Force
}
Tuning your deployment takes time and requires instrumentation and monitoring. Use the processes below to
refine your Remote Desktop deployment, keep it running and enable scaling out (and in) as needed.
It's a good practice to continually assess the metrics and balance against running costs.
Use the following information to manage a personal desktop session collection in Remote Desktop Services.
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016,
Windows 10
Microsoft Desktop Virtualization automatically detects device configurations and network conditions to get
users up and running sooner by enabling the instant setup of corporate applications and desktops, and it equips
IT to provide access to legacy applications during migration to Windows 10.
Although the Windows 10 operating system is very well tuned out of the box, there are opportunities for you to
refine it further specifically for the corporate Microsoft Virtual Desktop Infrastructure (VDI) environment. In the
VDI environment, many background services and tasks are disabled from the beginning.
This topic is not a blueprint, but rather a guide or starting point. Some recommendations might disable
functionality that you would prefer to use, so you should consider the cost versus the benefit of adjusting any
particular setting in your scenario.
These instructions and recommended settings are relevant to Windows 10 1607 (version 10.0.1393).
NOTE
Any settings not specifically mentioned in this topic can be left at their default values (or set per your requirements and
policies) without appreciable impact on VDI functionality.
When you create an image to base the VDI deployment, be sure to use the Current Branch . For more
information about Current Branch, see Windows 10 release information.
In "Customize settings"
You can also adjust these after installation with Group Policy Editor; see the "Group Policy settings" section of
this topic.
Personalization
SET T IN G DEFA ULT VA L UE REC O M M EN DED VA L UE F O R VDI USE
Location
Once installation is complete, you can continue adjusting settings starting with Windows Settings .
In Windows Settings
To access Windows Settings, click Star t (the Windows icon on the taskbar), and then click the Settings icon
(shaped like a gear).
In the "System" area of Windows Settings
In Windows Settings area, clicking the System icon gives you access to a number of system-related settings.
Not all of them need adjustment for optimum VDI use--these settings are the most important:
Apps and features
To remove an app, thereby excluding it from your VDI image, click the app, and then click Uninstall . If Uninstall
is grayed out, you cannot remove it by this method; you might be able to remove it with Windows PowerShell,
or try these steps:
1. Click Manage optional features (immediately below the Apps and features heading on the same page).
2. Click the optional feature, and then click Uninstall .
Features to consider removing (if present) include the following:
Contact suppor t
English (United States) Retail Demo Content
Neutral Retail Demo Content
Quick Assist
Default apps
This area defines the app to be used by default for certain generic functions such as e-mail, web browsing, and
maps. If you want a different app to be used for a particular function, click the current entry, and then click the
app you prefer to be used in the VDI image. For a non-Microsoft app to be an available choice, you must install
the app prior to adjusting this setting.
Notifications and actions
These recommended values will reduce notifications and background network activity in a VDI environment:
Offline maps
This setting is only applicable if the Maps app is installed. Its default value is On ; for VDI use the recommended
value is Off .
Tablet mode
When I sign in Use the appropriate mode for my Use desktop mode
hardware
SET T IN G DEFA ULT VA L UE REC O M M EN DED VA L UE F O R VDI USE
When this device automatically Always ask me before switching Don't ask me and don't switch
switches mode on or off
Taskbar
The default setting is to use large taskbar buttons (that is, a value of "Off" for Use small taskbar buttons ). This
setting causes the Cortana item to use a lot of taskbar area. To avoid this, set Use small taskbar buttons to
"On." If you prefer that the taskbar items stay larger, but prefer not to have Cortana taking up so much space,
right-click the taskbar, point to Cor tana , and in the menu that flies out, select Hidden .
In the "Privacy" area of Windows Settings
In Windows Settings area, clicking the Privacy icon gives you access to a number of system-related settings.
Not all of them need adjustment for optimum VDI use--these settings are the most important:
General
Some of these settings are also set from the "Customize settings" window, discussed at the beginning of this
topic.
Camera
The default value for "Let apps use my camera" is On ; for VDI use the recommended value is Off .
Microphone
The default value for "Let apps use my microphone" is On ; for VDI use the recommended value is Off .
Notifications
The default value for "Let apps access my notifications" is On ; for VDI use the recommended value is Off .
Contacts
The default value for "Let apps access my contacts" is On ; for VDI use the recommended value is Off .
Calendar
The default value for "Let apps access my calendar" is On ; for VDI use the recommended value is Off .
Call history
The default value for "Let apps access my call history" is On ; for VDI use the recommended value is Off .
Email
The default value for "Let apps access and send email" is On ; for VDI use the recommended value is Off .
Messaging
The default value for "Let apps read or send messages (text or MMS)" is On ; for VDI use the recommended
value is Off .
Radios
The default value for "Let apps control radios" is On ; for VDI use the recommended value is Off .
Other devices
The default value for "Let your apps automatically share and sync info with wireless devices that don't explicitly
pair with your PC, tablet, or phone" is On ; for VDI use the recommended value is Off .
Feedback and diagnostics
The default value for "Windows should ask for my feedback" is Automatically ; for VDI use, the recommended
value is Never .
Background apps
Listed apps have a default value of On , which allows them to receive information, send notifications, and update
themselves whether they are being used or not. You should disable (set to Off ) any apps you don't want running
in the background in the VDI image.
Update and security
Windows Update
In the Update settings area, click Advanced options to adjust these settings:
On the Advanced options page, click Choose how updates are delivered to access the setting for "Updates
from more than one place." The default value is On ; for VDI use the recommended value is Off .
NOTE
Any settings not specifically mentioned in this topic can be left at their default values (or set per your requirements and
policies) without appreciable impact on VDI functionality.
Task Scheduler
The fastest way to open Task Scheduler is to push the Windows button and type task scheduler or taskschd.msc.
In the results that return, click Task Scheduler to open the utility. In Task Scheduler, expand Task Scheduler
Librar y , expand Microsoft , and then expand Windows . You now have access to the list of task collections. To
change the state of each scheduled task, right-click it, and then click the desired state (typically, Disabled for VDI
use).
Customer Experience
Improvement Program
Defrag
Location
Maintenance
Maps
Mobile Broadband
Accounts
Recovery Environment
Retail Demo
Shell
Click Windows again to collapse it, then click XblGameSave . This gives you access to the tasks
XBLGameSaveTask and XBLGameSaveTaskLogon ; both of these can be set to Disabled .
Performance Monitor
The fastest way to open Performance Monitor is to push the Windows button and type performance monitor or
perfmon.msc. In the results that return, click Performance Monitor . In Performance Monitor, click Data
Collector Sets and then double-click Event Trace Sessions . Right-click WiFiSession ; if it is in the default
state of Running , then click Stop .
Click Star tupEventTraceSessions , then right-click ReadyBoot ; if it is running, click Stop . Click Event Trace
Sessions , right-click ReadyBoot , and then click Proper ties . In the dialog that opens, click the Trace Session
tab. Clear the Enabled check box.
Services
The fastest way to manage Services is to push the Windows button and type services. In the results that return,
click Ser vices . The following services are good candidates to disable for use in VDI scenarios; however, you
might need to do some testing to verify that they aren't needed for your purposes. To disable a service, in the
Ser vices snap-in, right-click the service name, and then click Proper ties . On the General tab, click the
Star tup type pull-down menu, and then click Disabled . Click OK .
BranchCache
Delivery Optimization
Diagnostic Service Host
Windows Mobile Hotspot Service
Xbox Live Auth Manager
Xbox Live Game Save
Xbox Live Networking Service
File Explorer Options
Push the Windows button and type control panel. In the results that return, click Control Panel . In Control
Panel, click File Explorer Options . In the dialog that opens, click the Search tab, and then in the When
searching non-indexed locations area, clear the check box for Include system directories . Click OK to
save.
Flash settings
Push the Windows button and type control panel. In the results that return, click Control Panel . In Control
Panel, click Flash Player to open the Flash Player Settings Manager. On the Storage tab, select the radio button
for Block all sites from storing information on this computer . In the dialog that opens, click OK .
On the Camera and Mic tab, in the Camera and Microphone Settings area, select the radio button for
Block all sites from using the camera and microphone .
On the Playback tab, in the Peer-assisted Networking area, select the radio button for Block all sites from
using peer-assisted networking . Close the Flash Player Settings Manager.
Internet Options
Push the Windows button and type control panel. In the results that return, click Control Panel . In Control
Panel, click Internet Options to open Internet Properties. In the Home page area, enter the URL for the web
site you want users to see as the home page in browsers. This could be a web site for your company or you can
set it to a blank home page by entering about:blank.
In the Browsing histor y area, select the check box for Delete browsing histor y on exit .
Power Options
Push the Windows button and type control panel. In the results that return, click Control Panel . In Control
Panel, click Power Options to open the Power Options control panel. In the Choose or customize a power
plan area, click the down arrow for Show additional plans , and then select the radio button for High
performance . This setting will have very little impact on the VDI host.
System
Push the Windows button and type control panel. In the results that return, click Control Panel . In Control
Panel, click System to open the System control panel. In the left pane, click Advanced system settings . In the
dialog that opens, click the Advanced tab. In the Performance area, click the Settings button, then on Visual
Effects tab in the dialog that opens, select the Adjust for best performance radio button. Click OK to save
and exit.
NOTE
Any settings not specifically mentioned in this topic can be left at their default values (or set per your requirements and
policies) without appreciable impact on VDI functionality.
Under Computer Configuration , expand Windows Settings , and then expand Security Settings . Click
Network List Manager Policies , and then double-click All Networks . In the dialog that opens, in the
Network location area, select the radio button for User cannot change location . Click the OK button to
save.
Collapse Windows Settings , and then expand Administrative Templates . Click or expand Network , and
then adjust each setting as follows by double-clicking it, then selecting the radio button for the indicated value
and clicking the OK button:
BranchCache
Hotspot Authentication
Offline Files
SET T IN G A REA SET T IN G REC O M M EN DED VA L UE F O R VDI USE
Collapse Network , and then expand System . Adjust each setting as follows double-clicking it, then selecting
the radio button for the indicated value and clicking the OK button:
Device Installation
Expand Filesystem , double-click NTFS , double-click Shor t name creation options , select the radio button
for Enabled , and then use the Options pull-down menu to select Enable on all volumes . Click the OK button
to save.
Collapse Filesystem , and then expand Internet Communication Management . Click Internet
Communication settings . Adjust each setting as follows by double-clicking it, then selecting the radio button
for Enabled , and then clicking the OK button:
Turn off Event Viewer "Events.asp" links
Turn off handwriting personalization data sharing
Turn off handwriting recognition error reporting
Turn off Help and Support Center "Did you know?" content
Turn off Help and Support Center Microsoft Knowledge Base search
Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com
Turn off Internet download for Web publishing and online ordering wizards
Turn off Internet File Association service
Turn off Registration if URL connection is referring to Microsoft.com
Turn off the "Order Prints" picture task
Turn off the "Publish to Web" task for files and folders
Turn off the Windows Messenger Customer Experience Improvement Program
Turn off Windows Customer Experience Improvement Program
Turn off Windows Error Reporting
Turn off Windows Update device driver searching
Click Power Management and then double-click Select an active power plan . Select the radio button for
Enabled , and then use the Options pull-down menu to select High Performance . Click the OK button to save.
Click Recover y , and then double-click Allow restore of system to default state . Select the radio button for
Enabled , and then click the OK button to save.
Expand Troubleshooting and Diagnostics . Click Scheduled Maintenance , double-click Configure
Scheduled Maintenance Behavior , and then select the radio button for Disabled . Click the OK button to
save.
For each of the following settings areas, click it, then double-click Configure Scenario Execution Level , select
the radio button for Disabled , and then click the OK button to save:
Windows Boot Performance Diagnostics
Windows Memory Leak Diagnostics
Windows Resource Exhaustion Detection and Resolution
Windows Shutdown Performance Diagnostics
Windows Standby/Resume Performance Diagnostics
Windows System Responsiveness Performance Diagnostics
Collapse System , and then expand Windows Components . Adjust each setting as follows by double-clicking
it, then selecting the radio button for the indicated value and clicking the OK button:
Autoplay Policies
Set the default behavior for AutoRun Enabled, then use the Options pull-
down menu to select Do not execute
any autorun commands
Cloud Content
Edge UI
File Explorer
Game Explorer
Homegroup
Internet Explorer
Prevent running First Run wizard Go Enabled, then use the Options pull-
directly to home page down menu to select Go directly to
home page
Set tab process growth Enabled, then type the following in the
Tab Process Growth box: Low.
Specify default behavior for a new tab Enabled, then use the Options pull-
down menu to select New tab page
At the same level as the Internet Explorer settings you just adjusted in the preceding table, note another level
of folders ranging from Accelerators to Toolbars . In other words, you are now at Local Computer Policy >
Computer Configuration > Administrative Templates > Windows Components > Internet Explorer.
Open the Delete Browsing Histor y folder, double-click Allow deleting browsing histor y on exit , select
Enable , and then click OK to save and exit.
Use the back arrow in the upper left of Local Group Policy Editor to go back to the Internet Explorer level.
Double-click Internet Settings , double-click Advanced Settings , and then adjust the settings in the
subfolders as follows:
Browsing
Multimedia
Go back up to the level of Internet Explorer , then double-click Internet Settings . In this folder, set these two
settings under AutoComplete to Enabled :
Turn off URL Suggestions
Turn off Windows Search AutoComplete
Go back up four levels to Windows Components , double-click Location and Sensors , and then set these
three settings to Enabled (for each, click OK to save and exit):
Turn off location
Turn off location scripting
Turn off sensors
While at the level of Location and Sensors , double-click Windows Location Provider and set Turn off
Windows Location Provider to Enabled . Click OK to save and exit.
In the left pane, click Maps , set these settings to Enabled ; for each, then click OK to save and exit:
Turn off Automatic Download and Update of Map Data
Turn off unsolicited network traffic on the Offline Maps settings page
Using the left pane, enter each of the following settings subfolders and adjust the individual settings as follows:
OneDrive
RSS Feeds
Search
Store
Windows Installer
Control maximum size of baseline file Enabled, then use the spin box in the
cache Options area to set Baseline file
cache maximum size to 5.
Windows Mail
Windows Update
Select when feature updates are Enabled, then in the Options area,
received use the Select the branch
readiness level for the feature
updates you want to receive pull-
down menu to select Current Branch
for Business . Set the After a
feature update is released, defer
receiving it for this many days
spin box to 180 days.
Select when Quality Updates are Enabled, then in the Options area, Set
received the After a quality update is
released, defer receiving it for
this many days spin box to 30 days
and select the check box for Pause
quality updates .
In the left pane of Local Group Policy Editor, click User Configuration . Using the left pane, click
Administrative Templates and then enter each of the following settings subfolders and adjust the individual
settings as follows:
Desktop
Cloud Content
File Explorer
NOTE
Don't remove system apps such as the Store app. They are difficult to reinstall. Other apps are easily reinstallable from the
Store.
This article is intended to provide suggestions for configurations for Windows 10, build 2004, for optimal
performance in Virtualized Desktop environments, including Virtual Desktop Infrastructure (VDI) and Windows
Virtual Desktop. All settings in this guide are suggested optimization settings only and are in no way
requirements.
The information in this guide is pertinent to Windows 10, version 2004, operating system (OS) build 19041.
The guiding principles to optimize performance of Windows 10 in a virtual desktop environment are to
minimize graphic redraws and effects, background activities that have no major benefit to the virtual desktop
environment, and generally reduce running processes to the bare minimum. A secondary goal is to reduce disk
space usage in the base image to the bare minimum. With virtual desktop implementations, the smallest
possible base, or "gold" image size, can slightly reduce memory utilization on the host system, as well as a small
reduction in overall network operations required to deliver the desktop environment to the consumer.
No optimizations should reduce the user experience. Each optimization setting has been carefully reviewed to
ensure that there is no appreciable degradation to the user experience.
NOTE
The settings in this article can be applied to other Windows 10 installations, such as version 1909, physical devices, or
other virtual machines. There are no recommendations in this article that should affect supportability of Windows 10 in a
virtual desktop environment.
NOTE
There is a set of scripts available at GitHub.com, that will do all the work items documented in this paper. The Internet URL
for the optimization scripts can be found at https://github.com/The-Virtual-Desktop-Team/Virtual-Desktop-Optimization-
Tool. This script was designed to be easily customizable for your environment and requirements. The main code is
PowerShell, and the work is done by calling input files, which are plain text (now .JSON), with also Local Group Policy
Object (LGPO) tool export files. These text files contain lists of the apps to be removed, services to be disabled, and so on.
If you don't want to remove a particular app or disable a particular service, you can edit the corresponding text file and
remove the item you do not want acted upon. Finally, there is an export of local policy settings that can be imported into
your environment machines. It's better to have some of the settings within the base image, than to have the settings
applied through group policy, as some of the settings take effect on the next restart or when a component is first used.
NOTE
Windows 10 performs a set of maintenance tasks, automatically, on a periodic basis. There is a scheduled task that is set
to run at 3:00 AM every day by default. This scheduled task performs a list of tasks, including Windows Update cleanup.
You can view all the categories of maintenance that take place automatically with this PowerShell command:
NOTE
If preparing an image using virtualization, and if connected to the Internet during image creation process, on first logon
you should postpone Feature Updates by going to Settings > Windows Update .
Get-AppxProvisionedPackage -Online
DisplayName : Microsoft.3DBuilder
Version : 13.0.10349.0
Architecture : neutral
ResourceId : \~
PackageName : Microsoft.3DBuilder_13.0.10349.0_neutral_\~_8wekyb3d8bbwe
Regions :
DisplayName : Microsoft.Appconnector
Version : 2015.707.550
Architecture : neutral
ResourceId : \~
PackageName : Microsoft.Appconnector_2015.707.550.0_neutral_\~_8wekyb3d8bbwe
Regions :
...
UWP apps that are provisioned to a system can be removed during OS installation as part of a task sequence, or
later after the OS is installed. This may be the preferred method because it makes the overall process of creating
or maintaining an image modular. Once you develop the scripts, if something changes in a subsequent build you
edit an existing script rather than repeat the process from scratch.
If you want to learn more, here are some resources that can help you:
Removing Windows 10 in-box apps during a task sequence
Removing Built-in apps from Windows 10 WIM-File with PowerShell - Version 1.3
Windows 10 1607: Keeping apps from coming back when deploying the feature update
Removing Windows 10 in-box apps during a task sequence
Then run the following PowerShell command to remove UWP app payloads:
As a final note on this topic, each UWP app should be evaluated for applicability in each unique environment.
You will want to install a default installation of Windows 10, version 2004, then note which apps are running and
consuming memory. For example, you may want to consider removing apps that start automatically, or apps
that automatically display information on the Start Menu, such as Weather and News, and that may not be of
use in your environment.
NOTE
If you're using the scripts from GitHub, you can easily control which apps are removed before running the script. After
downloading the script files, locate the AppxPackage.json file, edit that file, and remove entries for apps that you want to
keep, such as Calculator, Sticky Notes, and so on.
Get-WindowsOptionalFeature -Online
Using PowerShell, an enumerated Windows Optional Feature can be configured as enabled or disabled, as in the
following example:
Here's an example command that disables the Windows Media Player feature in the virtual desktop image:
Next, you may want to remove the Windows Media Player package. This example command will show you how
to do that:
PackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.19041.153
Applicable : True
Copyright : Copyright (c) Microsoft Corporation. All Rights Reserved
Company :
CreationTime :
Description : Play audio and video files on your local machine and on the Internet.
InstallClient : DISM Package Manager Provider
InstallPackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.19041.153.mum
InstallTime : 5/11/2020 5:43:37 AM
LastUpdateTime :
DisplayName : Windows Media Player
ProductName : Microsoft-Windows-MediaPlayer-Package
ProductVersion :
ReleaseType : OnDemandPack
RestartRequired : Possible
SupportInformation : http://support.microsoft.com/?kbid=777777
PackageState : Installed
CompletelyOfflineCapable : Undetermined
CapabilityId : Media.WindowsMediaPlayer~~~~0.0.12.0
Custom Properties :
Features : {}
If you want to remove the Windows Media Player package (to free up about 60 MB disk space), you can run this
command:
PS C:\Windows\system32> Remove-WindowsPackage -PackageName Microsoft-Windows-MediaPlayer-
Package~31bf3856ad364e35~amd64~~10.0.19041.153 -Online
Path :
Online : True
RestartNeeded : False
Another series of default user settings recently added is to disable several Windows apps from starting and
running in the background. While not significant on a single device, Windows 10 starts up a number of
processes for each user session on a given device (host). The Skype app is one example, and Microsoft Edge is
another. The settings included turn off several apps from being able to run in the background. If this
functionality is desired as it is, just delete out the lines in the "DefaultUserSettings.txt" file that include the app
names "Windows.Photos ," "SkypeApp ," "YourPhone ," and/or "MicrosoftEdge ."
Local policy settings
Many optimizations for Windows 10 in a virtual desktop environment can be made using Windows policy. The
settings listed in the table in this section can be applied locally to the base/gold image. Then if the equivalent
settings are not specified in any other way, such as group policy, the settings would still apply.
Note that some decisions may be based on the specifics of the environment.
Is the virtual desktop environment allowed to access the Internet?
Is the virtual desktop solution persistent or non-persistent?
The following settings were chosen to not counter or conflict with any setting that has anything to do with
security. These settings were chosen to remove settings or disable functionality that may not be applicable to
virtual desktop environments.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Network List Manager All networks properties Network location User cannot change
policies location (This is set to
prevent the right-hand side
pop-up when a new
network is detected)
Control Panel Allow Online Tips N/A Disabled (Settings will not
contact Microsoft content
services to retrieve tips and
help content)
Control Panel \ Force a specific default lock N/A Enabled (This setting allows
Personalization screen and logon image) you to force a specific
default lock screen and
logon image by entering
the path (location) of the
image file. The same image
will be used for both the
lock and logon screens.
The reason for this
recommendation is to
reduce bytes
transmitted over the
network for virtual
desktop environments.
This setting can be
removed or customized
for each environment.)
Control Panel\ Regional and Turn off automatic learning N/A Enabled (With this policy
Language setting enabled, automatic
Options\Handwriting learning stops, and any
personalization stored data is deleted.
Users cannot configure this
setting in Control Panel)
Background Intelligent Do not allow the BITS client N/A Enabled (With this policy
Transfer Service (BITS) to use Windows Branch setting enabled, the BITS
Cache client does not use
Windows Branch Cache.)
The reason for this
recommendation is so
that virtual desktop
devices are not used for
content caching, and
the devices will not be
allowed to use the
network bandwidth to
do so.
Background Intelligent Do not allow the computer N/A Enabled (With this policy
Transfer Service (BITS) to act as a BITS Peercaching setting enabled, the
client computer will no longer use
the BITS peer caching
feature to download files;
files will be downloaded
only from the origin server.)
Background Intelligent Do not allow the computer N/A Enabled (With this policy
Transfer Service (BITS) to act as a BITS Peercaching setting enabled, the
server computer will no longer
cache downloaded files and
offer them to its peers.)
Microsoft Peer-to-Peer Turn off Microsoft Peer-to- N/A Enabled (This setting turns
Networking Services Peer Networking Services off Microsoft Peer-to-Peer
Networking Services in its
entirety and will cause all
dependent applications to
stop working. If you enable
this setting, peer-to-peer
protocols will be turned off.)
Network Connectivity Specify passive polling Disable passive poling Enabled (This Policy setting
Status Indicator (checkbox) enables you to specify
(There are other passive polling behavior.
settings in this section NCSI polls various
that can be used in measurements throughout
isolated networks) the network stack on a
frequent interval to
determine if network
connectivity has been lost.
Use the options to control
the passive polling
behavior.)
Disabling NCIS passive
polling can improve
CPU workload on
servers or other
machines whose
network connectivity is
static.
Offline Files Allow or Disallow use of the N/A Disabled (This policy
Offline Files feature setting determines whether
the Offline Files feature is
enabled. Offline Files saves
a copy of network files on
the user's computer for use
when the computer is not
connected to the
network.With this policy
setting disabled, Offline
Files feature is disabled and
users cannot enable it.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*TCPIP Settings\ IPv6 Set Teredo State Disabled State Enabled (With this setting
Transition Technologies enabled, and set to
"Disabled State", no Teredo
interfaces are present on
the host)
WWAN Service\ Cellular Let Windows apps access Default for all apps: Force Enabled (If you choose the
Data Access cellular data Deny "Force Deny" option,
Windows apps are not
allowed to access cellular
data and users cannot
change it.)
Device Installation Do not send a Windows N/A Enabled (With this policy
error report when a generic setting enabled, an error
driver is installed on a report is not sent when a
device generic driver is installed.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Device Installation Prevent device metadata N/A Enabled (This policy setting
retrieval from the Internet allows you to prevent
Windows from retrieving
device metadata from the
Internet. With this policy
setting enabled, Windows
does not retrieve device
metadata for installed
devices from the Internet.
This policy setting overrides
the setting in the Device
Installation Settings dialog
box (Control Panel >
System and Security >
System > Advanced System
Settings > Hardware tab).)
Device Installation Turn off "Found New N/A Enabled (This policy setting
Hardware" balloons during allows you to turn off
device installation "Found New Hardware"
balloons during device
installation. With this policy
setting enabled, "Found
New Hardware" balloons do
not appear while a device is
being installed.)
Filesystem\NTFS Short name creation Short name creation Enabled (These settings
options options: Disabled on all provide control over
volumes whether or not short
names are generated
during file creation. Some
applications require short
names for compatibility, but
short names have a
negative performance
impact on the system. With
short names disabled on all
volumes then they will
never be generated.)
Internet Communication Turn off Event Viewer N/A Enabled (This policy setting
Management\ Internet "Events.asp" links specifies whether
Communication settings "Events.asp" hyperlinks are
available for events within
the Event Viewer
application.)
Internet Communication Turn off handwriting N/A Enabled (Turns off data
Management\ Internet personalization data sharing sharing from the
Communication settings handwriting recognition
personalization tool.)
Internet Communication Turn off handwriting N/A Enabled (Turns off the
Management\ Internet recognition error reporting handwriting recognition
Communication settings error reporting tool.)
Internet Communication Turn off Help and Support N/A Enabled (This policy setting
Management\ Internet Center Microsoft specifies whether users can
Communication settings Knowledge Base search perform a Microsoft
Knowledge Base search
from the Help and Support
Center.)
Internet Communication Turn off Internet N/A Enabled (This policy setting
Management\ Internet Connection Wizard if URL specifies whether the
Communication settings connection is referring to Internet Connection Wizard
Microsoft.com can connect to Microsoft to
download a list of Internet
Service Providers (ISPs).)
Internet Communication Turn off Internet download N/A Enabled (This policy setting
Management\ Internet for Web publishing and specifies whether Windows
Communication settings online ordering wizards should download a list of
providers for the web
publishing and online
ordering wizards.)
Internet Communication Turn off Internet File N/A Enabled (This policy setting
Management\ Internet Association service specifies whether to use the
Communication settings Microsoft Web service for
finding an application to
open a file with an
unhandled file association.)
Internet Communication Turn off Registration if URL N/A Enabled (This policy setting
Management\ Internet connection is referring to specifies whether the
Communication settings Microsoft.com Windows Registration
Wizard connects to
Microsoft.com for online
registration.)
Internet Communication Turn off Search Companion N/A Enabled (This policy setting
Management\ Internet content file updates specifies whether Search
Communication settings Companion should
automatically download
content updates during
local and Internet searches.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Internet Communication Turn off the "Order Prints" N/A Enabled (If you enable this
Management\ Internet picture task policy setting, the task
Communication settings "Order Prints Online" is
removed from Picture Tasks
in File Explorer folders.)
Internet Communication Turn off the "Publish to N/A *Enabled (This policy setting
Management\ Internet Web" task for files and specifies whether the tasks
Communication settings folders "Publish this file to the
Web," "Publish this folder to
the Web," and "Publish the
selected items to the Web"
are available from File and
Folder Tasks in Windows
folders.)
Internet Communication Turn off Windows Customer N/A Enabled (The Windows
Management\ Internet Experience Improvement Customer Experience
Communication settings Program Improvement Program
(CEIP) collects information
about your hardware
configuration and how you
use our software and
services to identify trends
and usage patterns. If you
enable this policy setting, all
users are opted out of the
Windows CEIP.)
Internet Communication Turn off Windows Error N/A Enabled (This policy setting
Management\ Internet Reporting controls whether or not
Communication settings errors are reported to
Microsoft. If you enable this
policy setting, users are not
given the option to report
errors.)
Internet Communication Turn off Windows Update N/A Enabled (This policy setting
Management\ Internet device driver searching specifies whether Windows
Communication settings searches Windows Update
for device drivers when no
local drivers for a device are
present. If you enable this
policy setting, Windows
Update is not searched
when a new device is
installed.)
Logon Do not display the Getting N/A Enabled (With this setting
Started welcome screen at enabled, the welcome
logon screen is hidden from the
user logging on to a
Windows device.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Logon Turn off app notifications on N/A Enabled (This policy setting
the lock screen allows you to prevent app
notifications from appearing
on the lock screen. With
this setting enabled, no app
notifications are displayed
on the lock screen.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Power Management Select an active power plan Active Power Plan: High Enabled (If you enable this
Performance policy setting, specify a
power plan from the Active
Power Plan list.)
With the "Power"
service disabled, the
Powercfg.cpl UI is not
able to display these
power options, and
instead returns an RPC
error.
System Restore Turn off System Restore N/A Enabled (With this setting
enabled, System Restore is
turned off, and the System
Restore Wizard cannot be
accessed. The option to
configure System Restore or
create a restore point
through System Protection
is also disabled.).)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*User Profiles Turn off the advertising ID N/A Enabled (With this setting
enabled, the advertising ID
is turned off. Apps can't use
the ID for experiences
across apps)
*App Privacy Let Windows apps access Default for all apps: Force Enabled (With this setting
diagnostic information Deny enabled, and using the
about other apps "Force Deny" option,
Windows apps are not
allowed to get diagnostic
information about other
apps and employees in your
organization cannot change
it.)
*App Privacy Let Windows apps access Default for all apps: Force Enabled (With this setting
location Deny enabled, and using the
"Force Deny" option,
Windows apps are not
allowed to access location
and users cannot change
the setting.
*App Privacy Let Windows apps access Default for all apps: Force Enabled (With this setting
motion Deny enabled, and using the
"Force Deny" option,
Windows apps are not
allowed to access motion
data and users cannot
change the setting.)
*App Privacy Let Windows apps access Default for all apps: Force Enabled (With this setting
notifications Deny enabled, and using the
"Force Deny" option,
Windows apps are not
allowed to access
notifications and users
cannot change the setting)
*App Privacy Let Windows apps activate Default for all apps: Force Enabled (This policy setting
with voice Deny specifies whether Windows
apps can be activated by
voice.)
*App Privacy Let Windows apps activate Default for all apps: Force Enabled (This policy setting
with voice while the system Deny specifies whether Windows
is locked apps can be activated by
voice while the system is
locked.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*App Privacy Let Windows apps control Default for all apps: Force Enabled (If you choose the
radios Deny "Force Deny" option,
Windows apps will not have
access to control radios and
employees in your
organization cannot change
it)
Application Compatibility Turn off Inventory Collector N/A Enabled (This policy setting
controls the state of the
Inventory Collector. The
Inventory Collector
inventories applications,
files, devices, and drivers on
the system and sends the
information to Microsoft.
With this policy setting
enabled, the Inventory
Collector will be turned off
and data will not be sent to
Microsoft. Collection of
installation data through
the Program Compatibility
Assistant is also disabled.)
AutoPlay Policies Set the default behavior for Do not execute any autorun Enabled (This policy setting
AutoRun commands sets the default behavior for
Autorun commands.)
*AutoPlay Policies Turn off Autoplay All drives Enabled (If you enable this
policy setting, Autoplay is
disabled on all drives.)
*Cloud Content Do not show Windows tips N/A Enabled (This policy setting
prevents Windows tips from
being shown to users)
*Cloud Content Turn off Microsoft consumer N/A Enabled (With this policy
experiences setting enabled, users will
no longer see personalized
recommendations from
Microsoft and notifications
about their Microsoft
account)
*Data Collection and Allow Telemetry 0 – Security [Enterprise Enabled (Setting a value of
Preview Builds Only] 0 applies to devices running
Enterprise, Education, IoT,
or Windows Server editions
only, and reduces telemetry
sent to the most basic level
supported)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Data Collection and Preview Configure collection of Configure telemetry Enabled (You can configure
Builds browsing data for Desktop collection: Do not allow Microsoft Edge to send
Analytics sending intranet or internet intranet history only,
history internet history only, or
both to Desktop Analytics
for enterprise devices with a
configured Commercial ID.
If disabled or not
configured, Microsoft Edge
does not send browsing
history data to Desktop
Analytics.)
*Data Collection and Do not show feedback N/A Enabled (This policy setting
Preview Builds notifications allows an organization to
prevent its devices from
showing feedback questions
from Microsoft.)
Delivery Optimization Download Mode Download Mode: Simple Enabled (99 = Simple
(99) download mode with no
peering. Delivery
Optimization downloads
using HTTP only and does
not attempt to contact the
Delivery Optimization cloud
services.)
Desktop Window Manager Do not allow window N/A Enabled (This policy setting
animations controls the appearance of
window animations such as
those found when
restoring, minimizing, and
maximizing windows. With
this policy setting enabled,
window animations are
turned off.)
Desktop Window Manager Use solid color for Start N/A Enabled ((This policy
background setting controls the Start
background visuals. With
this policy setting enabled,
the Start background will
use a solid color.)
File Explorer Do not show the "new N/A Enabled (This policy
application installed" removes the end-user
notification notification for new
application associations.
These associations are
based on file types (for
example, TXT files) or
protocols (for example,
HTTP). If this policy is
enabled, no notifications will
be shown to the end-user)
File History Turn off File History N/A Enabled (With this policy
setting enabled, File History
cannot be activated to
create regular, automatic
backups.)
*Find My Device Turn On/Off Find My Device N/A Disabled (When Find My
Device is off, the device and
its location are not
registered, and the "Find
My Device" feature will not
work. The user will also not
be able to view the location
of the last use of their
active digitizer on their
device.)
Homegroup Prevent the computer from N/A Enabled (If you enable this
joining a homegroup policy setting, users cannot
add computers to a
homegroup. This policy
setting does not affect
other network sharing
features.)
Internet Explorer Disable Periodic Check for N/A Enabled (Prevents Internet
Internet Explorer software Explorer from checking
updates whether a new version of
the browser is available.)
Internet Explorer Disable showing the splash N/A Enabled (Prevents the
screen Internet Explorer splash
screen from appearing
when users start the
browser.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Internet Explorer Prevent participation in the N/A Enabled (This policy setting
Customer Experience prevents the user from
Improvement Program participating in the
Customer Experience
Improvement Program
(CEIP).)
Internet Explorer Prevent running First Run Go directly to home page Enabled (This policy setting
wizard prevents Internet Explorer
from running the First Run
wizard the first time a user
starts the browser after
installing Internet Explorer
or Windows.)
Internet Explorer Set tab process growth Low Enabled (This policy setting
allows you to set the rate at
which Internet Explorer
creates new tab processes.)
Internet Explorer Turn off add-on N/A Enabled (This policy setting
performance notifications prevents Internet Explorer
from displaying a
notification when the
average time to load all the
user's enabled add-ons
exceeds the threshold.)
Internet Explorer Turn off Automatic Crash N/A Enabled (This policy setting
Recovery turns off Automatic Crash
Recovery. With this policy
setting enabled, Automatic
Crash Recovery does not
prompt the user to recover
his or her data after a
program stops responding.)
*Internet Explorer Turn off browser N/A Enabled (With this policy
geolocation setting enabled, browser
geolocation support is
turned off)
*Internet Explorer Turn on Suggested Sites N/A Disabled (With this policy
setting disabled, the entry
points and functionality
associated with this feature
are turned off.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Internet Explorer\ Internet Play animations in web N/A Disabled (This policy
Control Panel\ Advanced pages setting allows you to
Page manage whether Internet
Explorer will display
animated pictures found in
Web content. Generally
only animated GIF files are
affected by this setting;
active Web content such as
java applets are not.)
Internet Explorer\ Internet Play sounds in web pages N/A Disabled (With this policy
Control Panel\ Advanced setting disabled, Internet
Page Explorer will not play or
download sounds in Web
content, helping pages
display more quickly.)
Internet Explorer\ Internet Play videos in web pages N/A Disabled (If you disable
Control Panel\ Advanced this policy setting, Internet
Page Explorer will not play or
download videos, helping
pages display more quickly.)
Internet Explorer\ Internet Turn off loading websites N/A Enabled (With this policy
Control Panel\ Advanced and content in the setting enabled, IE doesn’t
Page background to optimize load any websites or
performance content in the background.)
*Internet Explorer\ Internet Turn off the flip ahead with N/A Enabled (Microsoft collects
Control Panel\ Advanced page prediction features your browsing history to
Page improve how flip ahead
with page prediction works.
If you enable this policy
setting, flip ahead with page
prediction is turned off and
the next webpage isn't
loaded into the
background.)
Internet Explorer\ Internet Turn off phone number N/A Enabled (This policy setting
Settings\ Advanced detection determines whether phone
Settings\ Browsing numbers are recognized
and turned into hyperlinks,
which can be used to
invoke the default phone
application on the system. If
you disable this policy
setting, phone number
detection is turned on.
Users won't be able to
modify this setting.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Internet Information Prevent IIS installation N/A Enabled (With this policy
Services setting enabled, IIS cannot
be installed, and you will
not be able to install
Windows components or
applications that require
IIS.)
*Location and Sensors Turn off location N/A Enabled (With this setting
enabled, the location
feature is turned off, and all
programs on this device are
prevented from using
location information from
the location feature)
Location and Sensors Turn off sensors N/A Enabled (This policy setting
turns off the sensor feature
for this device. With this
policy setting enabled, the
sensor feature is turned off,
and all programs on this
computer cannot use the
sensor feature.)
Locations and Sensors / Turn off Windows Location N/A Enabled (This policy setting
Windows Location Provider Provider turns off the Windows
Location Provider feature
for this device.)
*Maps Turn off unsolicited network N/A Enabled (With this setting
traffic on the Offline Maps enabled, features that
settings page generate network traffic on
the Offline Maps settings
page are turned off. Note:
This may turn off the entire
settings page)
*Microsoft Edge Allow configuration updates N/A Disabled (With this setting
for the Books Library disabled, Microsoft Edge
won't automatically
download updated
configuration data for the
Books Library.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*Microsoft Edge Allow extended telemetry N/A Disabled (With this setting
for the Books tab disabled, Microsoft Edge
only sends basic telemetry
data, depending on your
device configuration.)
Microsoft Edge Allow Microsoft Edge to Configure pre-launch: Enabled (With this setting
pre-launch at Windows Prevent pre-launching enabled and configured to
startup, when the system is prevent pre-launch,
idle, and each time Microsoft Edge won’t pre-
Microsoft Edge is closed launch during Windows
sign in, when the system is
idle, or each time Microsoft
Edge is closed.)
Microsoft Edge Allow Microsoft Edge to Configure tab preloading: Enabled (This policy setting
start and load the Start and Prevent tab-preloading lets you decide whether
New Tab page at Windows Microsoft Edge can load the
startup and each time Start and New Tab page
Microsoft Edge is closed during Windows sign in and
each time Microsoft Edge is
closed. By default this
setting is to allow
preloading. With preloading
disabled, Microsoft Edge
won’t load the Start or New
Tab page during Windows
sign in and each time
Microsoft Edge is closed.)
Microsoft Edge Allow web content on New N/A Disabled (With this setting
Tab page disabled, Edge opens a new
tab with a blank page. If
this setting is configured,
users cannot change the
setting.)
*Microsoft Edge Prevent the First Run N/A Enabled (users won’t see
webpage from opening on the First Run page when
Microsoft Edge opening Microsoft Edge for
the first time)
Online Assistance Turn off Active Help N/A Enabled (With this policy
setting enabled, active
content links are not
rendered. The text is
displayed, but there are no
clickable links for these
elements.)
*RSS Feeds Turn off background N/A Enabled (With this policy
synchronization for feeds setting enabled, the ability
and Web Slices to synchronize feeds and
Web Slices in the
background is turned off.)
Search Control rich previews for Control Rich Previews for Enabled (Enabling this
attachments Attachments:.docx;.xlsx;.tx policy defines a semicolon-
t;.xls delimited list of file
extensions which will be
allowed to have rich
attachment previews.)
NOTE : This setting can
be used to limit what
types of attachments
are previewed, which
can also help prevent
automatically
previewing some
potentially dangerous
contents types.
*Search Don’t search the web or N/A Enabled (With this policy
display web results in setting enabled, queries
Search won't be performed on the
web and web results won't
be displayed when a user
performs a query in Search.)
Search Stop indexing in the event MB Limit: 5000 Enabled (Enabling this
of limited hard drive space policy prevents indexing
from continuing after less
than the specified amount
of hard drive space is left on
the same drive as the index
location. Select between 0
and 2147483647 MB.)
Software Protection Turn off KMS Client Online N/A Enabled (With this setting
Platform AVS Validation enabled, the device does
not send data to Microsoft
regarding its activation
state)
Text Input Improve inking and typing N/A Disabled (This policy
recognition setting controls the ability
to send inking and typing
data to Microsoft to
improve the language
recognition and suggestion
capabilities of apps and
services running on
Windows.)
Windows Error Reporting Disable Windows Error N/A Enabled (With this policy
Reporting setting enabled, Windows
Error Reporting does not
send any problem
information to Microsoft.
Additionally, solution
information is not available
in Security and
Maintenance in Control
Panel.)
Windows Game Recording Enables or disables N/A Disabled (With this setting
and Broadcasting Windows Game Recording disabled, Windows Game
and Broadcasting Recording will not be
allowed.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Windows Ink Workspace Allow Windows Ink Choose one of the following Enabled (With this setting
Workspace actions: Disabled enabled and sub-setting set
to disabled, Windows Ink
Workspace functionality is
unavailable.)
Windows Installer Turn off creation of System N/A Enabled (With this policy
Restore checkpoints setting enabled, the
Windows Installer does not
generate System Restore
checkpoints when installing
applications.)
Windows Mobility Center Turn off Windows Mobility N/A Enabled (With this policy
Center setting enabled, the user is
unable to invoke Windows
Mobility Center. The
Windows Mobility Center
UI is removed from all shell
entry points and the .exe
file does not launch it.)
Windows Reliability Analysis Configure Reliability WMI N/A Disabled (With this policy
Providers setting disabled, Reliability
Monitor will not display
system reliability
information, and WMI-
capable applications will be
unable to access reliability
information from the listed
providers.)
*Windows Update\ Manage preview builds Set the behavior for Enabled (Selecting "Disable
Windows Update for receiving preview builds: preview builds" will prevent
Business Disable preview builds preview builds from
installing on the device. This
will prevent users from
opting into the Windows
Insider Program, through
Settings -> Update and
Security)
*Windows Update\ Select when Preview Builds Select the Windows Enabled (Enable this policy
Windows Update for and Feature Updates are readiness level for the to specify the level of
Business received updates you want to Preview Build or Feature
receive: Updates to receive, and
Semi-Annual when. Semi-Annual
Channel Channel: Receive feature
updates when they are
After a Preview Build or released to the general
Feature Update is public.
released, defer receiving When Selecting Semi-
it for this many days: Annual Channel:
365
- You can defer
Pause Preview Builds or receiving Feature
Feature Updates Updates for up to 365
starting: yyyy-mm-dd days.
- To prevent Feature
Updates from being
received on their
scheduled time, you can
temporarily pause
them. The pause will
remain in effect for 35
days from the start
time provided.
- To resume receiving
Feature Updates which
are paused, clear the
start date field.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Windows Update\ Windows Select when Quality After a quality update is Enabled (Enable this policy
Update for Business Updates are received released, defer receiving it to specify when to receive
for this many days: 30 quality updates.
Pause Quality Updates You can defer receiving
starting: yyyy-mm-dd quality updates for up
to 30 days.
To prevent quality
updates from being
received on their
scheduled time, you can
temporarily pause
quality updates. The
pause will remain in
effect for 35 days or
until you clear the start
date field.
To resume receiving
Quality Updates which
are paused, clear the
start date field.)
This recommendation is
to help control when
updates are applied,
and to ensure updates
don’t get offered and
installed unexpectedly
Control Panel\ Regional and Turn off offer text N/A Enabled (This policy turns
Language Options predictions as I type off the offer text predictions
as I type option. This does
not, however, prevent the
user or an application from
changing the setting
programmatically. With this
policy setting enabled, the
option will be locked to not
offer text predictions.)
Desktop / Active Directory Maximum size of Active Number of objects Enabled (Specifies the
Directory searches returned:1500 maximum number of
objects the system displays
in response to a command
to browse or search Active
Directory. This setting
affects all browse displays
associated with Active
Directory, such as those in
Local Users and Groups,
Active Directory Users and
Computers, and dialog
boxes used to set
permissions for user or
group objects in Active
Directory.)
Start Menu and Taskbar Do not display or track N/A Enabled (This policy setting
items in Jump Lists from allows you to control
remote locations displaying or tracking items
in Jump Lists from remote
locations.)
Start Menu and Taskbar Do not search Internet N/A Enabled (With this policy
setting enabled, the Start
Menu search box will not
search for internet history
or favorites.)
Start Menu and Taskbar Do not use the search- N/A Enabled (This policy setting
based method when prevents the system from
resolving shell shortcuts conducting a
comprehensive search of
the target drive to resolve a
shortcut.)
Start Menu and Taskbar Turn off all balloon N/A Enabled (With this policy
notifications setting enabled, no
notification balloons are
shown to the user.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Start Menu and Taskbar Turn off feature N/A Enabled (With this policy
advertisement balloon setting enabled, certain
notifications notification balloons that
are marked as feature
advertisements are not
shown.)
Start Menu and Taskbar Turn off user tracking N/A Enabled (With this policy
setting enabled, the system
does not track the
programs that the user
runs and does not display
frequently used programs
in the Start Menu.)
Start Menu and Taskbar / Turn off toast notifications N/A Enabled (With this policy
Notifications setting enabled,
applications will not be able
to raise toast notifications.)
*Start Menu and Taskbar / Turn off toast notifications N/A Enabled (With this policy
Notifications on the lock screen setting enabled,
applications will not be able
to raise toast notifications
on the lock screen.)
*Windows Components / Do not suggest third-party N/A Enabled (With this policy
Cloud Content content in Windows enabled, Windows spotlight
spotlight features like lock screen
spotlight, suggested apps in
Start menu or Windows tips
will no longer suggest apps
and content from third-
party software publishers.
Users may still see
suggestions and tips to
make them more
productive with Microsoft
features and apps.)
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Windows Components / Do not use diagnostic data N/A Enabled (With this policy
Cloud Content for tailored experiences setting enabled, Windows
will not use diagnostic data
from this device (this data
may include browser, app
and feature usage,
depending on the
"diagnostic data" setting
value) to customize content
shown on lock screen,
Windows tips, Microsoft
consumer features and
other related features.)
Edge UI Turn off tracking of app N/A Enabled (This policy setting
usage prevents Windows from
keeping track of the apps
that are used and searched
most frequently. If you
enable this policy setting,
apps will be sorted
alphabetically in:
- search results
- the Search and Share
panes
- the drop-down app
list in the Picker)
File Explorer Turn off caching of N/A Enabled (With this policy
thumbnail pictures setting enabled, thumbnail
views are not cached.)
File Explorer Turn off the caching of N/A Enabled (With this policy
thumbnails in hidden setting enabled, File
thumbs.db files Explorer does not create,
read from, or write to
thumbs.db files.)
NOTE
You can enumerate running services with this PowerShell sample code, outputting only the service short name:
The following table contains some services that may be considered to disable in virtual desktop environments:
W IN DO W S SERVIC E SERVIC E N A M E IT EM C O M M EN T
This is a "per-
user service", and
as such, the
template service
must be disabled
(CDPUserSvc).
Geolocation Service Lfsvc Monitors the current If you turn off this
location of the service, applications
system and manages will be unable to use
geofences (a or receive
geographical location notifications for
with associated geolocation or
events). geofences. To learn
more, see this article.
Xbox Live Game Save XblGameSave This service syncs If this service is
save data for Xbox stopped, game save
Live save enabled data will not upload
games. to or download from
Xbox Live.
NOTE
There are several tasks that can't be disabled with a script, even when run on an elevated command prompt. The
recommendations here, and in the GitHub scripts do not attempt to disable tasks that cannot be disabled with a script.
SC H EDUL ED TA SK N A M E DESC RIP T IO N
AnalyzeSystem This task analyzes the system looking for conditions that
may cause high energy use
Proxy This task collects and uploads autochk SQM data if opted-in
to the Microsoft Customer Experience Improvement
Program.
SpeechModelDownloadTask
SyspartRepair
NOTE
Store apps (UWP apps) update through the Windows Store. Modern versions of Office such as Office 365 update through
their own mechanisms when directly connected to the Internet, or through management technologies when not.
NAME C O M M EN T
Cellcore https://docs.microsoft.com/windows-
hardware/drivers/network/cellular-architecture-and-driver-
model
NOTE
Some settings in this section are registry-based only and should be incorporated in the base image before the image is
deployed for production use.
The following settings are documented in the Performance tuning guidelines for Windows Server 2016.
DisableBandwidthThrottling
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DisableBandwidthThrottling
Applies to Windows 10. The default is 0 . By default, the SMB redirector throttles throughput across high-latency
network connections, in some cases to avoid network-related timeouts. Setting this registry value to 1 disables
this throttling, enabling higher file transfer throughput over high-latency network connections. Consider setting
this value to 1 .
FileInfoCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileInfoCacheEntriesMax
Applies to Windows 10. The default is 64 , with a valid range of 1 to 65536. This value is used to determine the
amount of file metadata that can be cached by the client. Increasing the value can reduce network traffic and
increase performance when many files are accessed. Try increasing this value to 1024 .
DirectoryCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheEntriesMax
Applies to Windows 10. The default is 16 , with a valid range of 1 to 4096. This value is used to determine the
amount of directory information that can be cached by the client. Increasing the value can reduce network traffic
and increase performance when large directories are accessed. Consider increasing this value to 1024 .
FileNotFoundCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileNotFoundCacheEntriesMax
Applies to Windows 10. The default is 128 , with a valid range of 1 to 65536. This value is used to determine the
amount of file name information that can be cached by the client. Increasing the value can reduce network traffic
and increase performance when many file names are accessed. Consider increasing this value to 2048 .
DormantFileLimit
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DormantFileLimit
Applies to Windows 10. The default is 1023 . This parameter specifies the maximum number of files that should
be left open on a shared resource after the application has closed the file. Where many thousands of clients are
connecting to SMB servers, consider reducing this value to 256 .
You can configure many of these SMB settings by using the Set-SmbClientConfiguration and Set-
SmbServerConfiguration Windows PowerShell cmdlets. Registry-only settings can be configured by using
Windows PowerShell as well, as in the following example:
Additional settings from the Windows Restricted Traffic Limited Functionality Baseline guidance
Microsoft has released a baseline, created using the same procedures as the Windows Security Baselines, for
environments that are either not connected directly to the Internet, or wish to reduce data sent to Microsoft and
other services.
The Windows Restricted Traffic Limited Functionality Baseline settings are called out in the group policy table
with an asterisk.
Disk cleanup (including using the Disk Cleanup Wizard)
Disk cleanup can be especially helpful with gold/master image virtual desktop implementations. After the
gold/master image is prepared, updated, and configured, one of the last tasks to perform is disk cleanup. The
optimization scripts on Github.com have PowerShell code to perform common disk cleanup tasks
NOTE
Disk cleanup settings and are in the Settings category "System" called "Storage." By default, Storage Sense runs when a
low disk free space threshold is reached.
To learn more about how to use Storage Sense with Azure custom VHD images, see Prepare and customize a master VHD
image.
For Windows Virtual Desktop session host that use Windows 10 Enterprise or Windows 10 Enterprise multi-session, we
recommend disabling Storage Sense. You can disable Storage Sense in the Settings menu under Storage .
Here are suggestions for various disk cleanup tasks. These should all be tested before implementing:
1. Storage Sense may be utilized manually or automatically. For more information on Storage Sense, see
this article: Use OneDrive and Storage Sense in Windows 10 to manage disk space
2. Manually cleanup temporary files and logs. From an elevated command prompt, run these commands:
a. Del C:\*.tmp /s
b. C:\*.etl /s
c. C:\*.evtx /s
Get-ChildItem -Path c:\ -Include *.tmp, *.dmp, *.etl, *.evtx, thumbcache*.db, *.log -File -Recurse -
Force -ErrorAction SilentlyContinue | Remove-Item -ErrorAction SilentlyContinue
3. Delete any unused profiles on the system by running the following command:
wmic path win32_UserProfile where LocalPath="C:\\users\\<users>" Delete
For any questions or concerns about the information in this paper, contact your Microsoft account team,
research the Microsoft virtual desktop IT Pro blog, post a message to Microsoft Virtual Desktop forums, or
contact Microsoft for questions or concerns.
Re -enable Windows Update
If you would like to enable the use of Windows Update after disabling it, as in the case of persistent virtual
desktop, follow these steps:
1. Re-enable group policy settings:
Go to Local Computer Policy > Computer Configuration > Administrative Templates >
System > Internet Communication Management > Internet Communication settings .
Turn off access to all Windows Update features by changing the setting from enabled to not
configured .
Go to Local Computer Policy > Computer Configuration > Administrative Templates >
Windows Components > Windows Update .
Remove access to all Windows Update features by changing the setting from enabled to not
configured .
Don't connect to any Windows Update Internet locations by changing the setting from enabled
to not configured .
Go to Local Computer Policy > Computer Configuration > Administrative Templates >
Windows Components > Windows Update > Windows Update for Business .
Select when Quality Updates are received (change from enabled to not configured )
Go to Local Computer Policy > Computer Configuration > Administrative Templates >
Windows Components > Windows Update > Windows Update for Business .
Select when Preview Builds and Feature Updates are received (change from enabled to not
configured )
2. Re-enable service(s):
Change Update Orchestrator ser vice from disabled to Automatic (Delayed Star t) .
3. Edit the Windows registry (warning, be careful when editing the registry).
Go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\PolicyState .
Change DeferQualityUpdates from '1' to '0'.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings
Delete any existing value for PausedQualityDate .
Go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\WAU
Set to Disabled .
4. Re-enable scheduled tasks:
Go to Task Scheduler Librar y > Microsoft > Windows > InstallSer vice > ScanForUpdates .
Go to Task Scheduler Librar y > Microsoft > Windows > InstallSer vice >
ScanForUpdatesAsUser .
5. Restart your device to make all these settings take effect.
6. If you do not want this device offered Feature Updates, go to Settings > Windows Update >
Advanced options > Choose when updates are installed and manually set the option A feature
update includes new capabilities and improvements. It can be deferred for this many days to
any non-zero value, such as 180, 365, and so on.
Additional information
Learn more about Microsoft's VDI architecture at our Windows Virtual Desktop documentation.
If you need additional help with troubleshooting sysprep, check out Sysprep fails after you remove or update
Microsoft Store apps that include built-in Windows images.
Optimizing Windows 10, version 1909, for a Virtual
Desktop Infrastructure (VDI) role
3/5/2021 • 57 minutes to read • Edit Online
This article helps you choose settings for Windows 10, version 1909 (build 18363) that should result in the best
performance in a Virtualized Desktop Infrastructure (VDI) environment. All settings in this guide are
recommendations to be considered and are in no way requirements.
The key ways to optimize Windows 10 performance in a VDI environment are to minimize app graphic redraws,
background activities that have no major benefit to the VDI environment, and generally reduce running
processes to the bare minimum. A secondary goal is to reduce disk space usage in the base image to the bare
minimum. With VDI implementations, the smallest possible base, or "gold" image size, can slightly reduce
memory usage on the hypervisor, as well as a small reduction in overall network operations required to deliver
the desktop image to the consumer.
NOTE
These recommended settings can be applied to other Windows 10 1909 installations, including those on physical or other
virtual machines. No recommendations in this article should affect supportability of Windows 10 1909.
TIP
A script that implements the optimizations discussed in this topic--as well as a GPO export file that you can import with
LGPO.exe --is available at The Virtual Desktop Team on GitHub.
This script was designed to suit your environment and requirements. The main code is PowerShell, and the work
is done by using input files (plain text), with Local Group Policy Object (LGPO) tool export files. These files
contain lists of apps to be removed, and services to be disabled. If you do not wish to remove a particular app or
disable a particular service, edit the corresponding text file and remove the item. Finally, there are local policy
settings that can be imported into your device. It is better to have some settings within the base image, than to
have the settings applied through the group policy, as some of the settings are effective on the next restart, or
when a component is first used.
Persistent VDI
Persistent VDI is, at the basic level, a VM that saves operating system states in between reboots. Other software
layers of the VDI solution provide the users easy and seamless access to their assigned VMs, often with a single
sign-on solution.
There are several different implementations of persistent VDI:
Traditional virtual machine, where the VM has its own virtual disk file, starts up normally, saves changes
from one session to the next. The difference is how the user accesses this VM. There might be a web
portal the user logs into that automatically directs the user to their one or more assigned VDI VMs.
Image-based persistent virtual machine, optionally with personal virtual disks. In this type of
implementation there is a base/gold image on one or more host servers. A VM is created, and one or
more virtual disks are created and assigned to this disk for persistent storage.
When the VM is started, a copy of the base image is read into the memory of that VM. At the same
time, a persistent virtual disk is assigned to that VM, with any previous operating system changes
merged through a complex process.
Changes such as event log writes, log writes, etc. are redirected to the read/write virtual disk
assigned to that VM.
In this circumstance, operating system and app servicing might operate normally, using traditional
servicing software such as Windows Server Update Services, or other management technologies.
The difference between a persistent VDI machine, and a "normal" virtual machine is the
relationship to the master/gold image. At some point updates must be applied to the master. This
is where implementations decide how the user persistent changes are handled. In some cases, the
disk with the changes are discarded and/or reset, thus setting a new checkpoint. It might also be
that the changes the user makes are kept through monthly quality updates, and the base is reset
following a Feature Update.
Non-Persistent VDI
When a non-persistent VDI implementation is based on a base or "gold" image, the optimizations are mostly
performed in the base image, and then through local settings and local policies.
With image-based non-persistent VDI, the base image is read-only. When a non-persistent VM is started, a copy
of the base image is streamed to the VM. Activity that occurs during startup and thereafter until the next reboot
is redirected to a temporary location. Users are usually provided network locations to store their data. In some
cases, the user's profile is merged with the standard VM to provide the user with their settings.
One important aspect of non-persistent VDI that is based on a single image is servicing. Updates to the
operating system and components are delivered usually once per month. With image-based VDI, there is a set
of processes that must be performed to get updates to the image:
On a given host, all the VMs on that host, that are derived from the base image must be shut down /
turned off. This means the users are redirected to other VMs.
The base image is then opened and started up. All maintenance activities are then performed, such as
operating system updates, .NET updates, app updates, etc.
Any new settings that need to be applied are applied at this time.
Any other maintenance is performed at this time.
The base image is then shut down.
The base image is sealed and set to go back into production.
Users can log back on.
NOTE
Windows 10 performs a set of maintenance tasks, automatically, on a periodic basis. There is a scheduled task that is set
to run at 3:00 AM every day by default. This scheduled task performs a list of tasks, including Windows Update cleanup.
You can view all the categories of maintenance that take place automatically with this PowerShell command:
One of the challenges with non-persistent VDI is that when a user logs off, nearly all the operating system
activity is discarded. The user's profile and/or state might be saved to a centralized location, but the virtual
machine itself discards nearly all changes that were made since the last boot. Therefore, optimizations intended
for a Windows computer that saves state from one session to the next are not applicable.
Depending on the architecture of VDI VM, things like PreFetch and SuperFetch are not going to help from one
session to the next, as all the optimizations are discarded on VM restart. Indexing might be a partial waste of
resources, as would be any disk optimizations such as a traditional defragmentation.
NOTE
If preparing an image using virtualization, and if connected to the Internet during image creation process, on first logon
you should postpone Feature Updates by going to Settings , Windows Update .
Get-AppxProvisionedPackage -Online
DisplayName : Microsoft.3DBuilder
Version : 13.0.10349.0
Architecture : neutral
ResourceId : \~
PackageName : Microsoft.3DBuilder_13.0.10349.0_neutral_\~_8wekyb3d8bbwe
Regions :
...
UWP apps that are provisioned to a system can be removed during operating system installation as part of a
task sequence, or later after the operating system is installed. This might be the preferred method because it
makes the overall process of creating or maintaining an image modular. Once you develop the scripts, if
something changes in a subsequent build, you edit an existing script rather than repeat the process from
scratch. Here are some links to information on this topic:
Removing Windows 10 in-box apps during a task sequence
Removing Built-in apps from Windows 10 WIM-File with Powershell - Version 1.3
Windows 10 1607: Keeping apps from coming back when deploying the feature update
Then run the Remove-AppxProvisionedPackage PowerShell command to remove UWP app payloads:
Each UWP app should be evaluated for applicability in each unique environment. You'll want to install a default
installation of Windows 10 1909, then note which apps are running and consuming memory. For example, you
might want to consider removing apps that start automatically, or apps that automatically display information
on the Start Menu, such as Weather and News that might not be of use in your environment.
NOTE
If utilizing the scripts from GitHub, you can easily control which apps are removed before running the script. After
downloading the script files, locate the file 'AppxPackages.json', edit that file, and remove entries for apps that you want to
keep, such as Calculator, Sticky Notes, etc. See the section Customization for details.
Get-WindowsOptionalFeature -Online
You can enable or disable a specific Windows optional feature, as shown in this example:
You can disable features in the VDI image, as shown in this example:
Next, you might want to remove the Windows Media Player package. There are two Windows Media Player
packages in Windows 10 1909:
PackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.18362.1
Applicable : True
Copyright : Copyright (c) Microsoft Corporation. All Rights Reserved
Company :
CreationTime :
Description : Play audio and video files on your local device and on the Internet.
InstallClient : DISM Package Manager Provider
InstallPackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.18362.1.mum
InstallTime : 3/19/2019 6:20:22 AM
...
Features : {}
PackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.18362.449
Applicable : True
Copyright : Copyright (c) Microsoft Corporation. All Rights Reserved
Company :
CreationTime :
Description : Play audio and video files on your local device and on the Internet.
InstallClient : UpdateAgentLCU
InstallPackageName : Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.18362.449.mum
InstallTime : 10/29/2019 5:15:17 AM
...
If you want to remove the Windows Media Player package (to free up about 60 MB disk space):
Remove-WindowsPackage -PackageName Microsoft-Windows-MediaPlayer-
Package~31bf3856ad364e35~amd64~~10.0.18362.1 -Online
Also, to reduce the transmitting of images over the VDI infrastructure, you can set the default background to a
solid color instead of the default Windows 10 image. You can also set the logon screen to be a solid color, as well
as turn off the opaque blurring effect on logon.
The following settings are applied to the default user profile registry hive, mainly in order to reduce animations.
If some or all of these settings are not desired, delete the settings not to be applied to the new user profiles
based on this image. The goal with these settings is to enable the following equivalent settings:
Figure 3: Optimized System Properties, Performance Options
For Windows 10, version 1909, the following are the optimization settings applied to the default user profile
registry hive to optimize performance:
In the local policy settings, you might want to disable images for backgrounds in VDI. If you do want images,
you might want to create custom background images at a reduced color depth to limit network bandwidth used
for transmitting image information. If you decide to specify no background image in local policy, you might
want to set the background color before setting local policy, because once the policy is set, the user has no way
to change the background color. It might be better to specify "(null)" as the background image. There is another
policy setting in the next section on not using background over Remote Desktop Protocol sessions.
Local policy settings
Many optimizations for Windows 10 in a VDI environment can be made using Windows policy. The settings
listed in the table in this section can be applied locally to the base/gold image. If the equivalent settings are not
specified in any other way, such as group policy, the settings would still apply.
Some decisions might be based on the specifics of the environment for example:
Is the VDI environment allowed to access the Internet?
Is the VDI solution persistent or non-persistent?
The following settings were chosen to not counter or conflict with any setting that has anything to do with
security. These settings were chosen to remove settings or disable functionality that might not be applicable to
VDI environments.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Network List Manager All networks properties Network location User can't change location
policies
*Control Panel\Regional and Turn off automatic learning Enabled. If you enable this
Language policy setting, automatic
Options\Handwriting learning stops, and any
personalization stored data is deleted.
Users can't configure this
setting in Control Panel.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Network connectivity status Specify passive polling. Disable passive polling Enabled. Use this setting if
indicator (check box) you're on an isolated
network or using a static IP
address.
TCPIP Settings \ IPv6 Set Teredo state Disabled state Enabled. In the disabled
Transition Technologies state, no Teredo interfaces
are present on the host.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Internet Communication Turn off access to all Enabled. If you enable this
Management \ Internet Windows Update features policy setting, all Windows
Communication settings Update features are
removed. This includes
blocking access to the
Windows Update website at
https://windowsupdate.micr
osoft.com, from the
Windows Update hyperlink
on the Start menu, and also
on the Tools menu in
Internet Explorer. Windows
automatic updating is also
disabled; you'll neither be
notified about nor will you
receive critical updates from
Windows Update. This
policy setting also prevents
Device Manager from
automatically installing
driver updates from the
Windows Update website.
Internet Communication Turn off Automatic Root Enabled. If you enable this
Management \ Internet Certificates Update policy setting, when you are
Communication settings presented with a certificate
issued by an untrusted root
authority, your computer
won't contact the Windows
Update website to see if
Microsoft has added the CA
to its list of trusted
authorities. NOTE: Only use
this policy if you have an
alternate means to the
latest certificate revocation
list.
Internet Communication Turn off Windows Network Enabled. This policy setting
Management \ Internet Connectivity Status turns off the active tests
Communication settings indicator active tests performed by the Windows
Network Connectivity
Status Indicator (NCSI) to
determine whether your
computer is connected to
the Internet or to a more
limited network As part of
determining the
connectivity level, NCSI
performs one of two active
tests: downloading a page
from a dedicated Web
server or making a DNS
request for a dedicated
address. If you enable this
policy setting, NCSI does
not run either of the two
active tests. This might
reduce the ability of NCSI,
and of other components
that use NCSI, to determine
Internet access) NOTE:
There are other policies that
allow you to redirect NCSI
tests to internal resources, if
this functionality is desired.
*Windows Time Services \ Enable Windows NTP Client Disabled. If you disable or
Time Providers do not configure this policy
setting, the local computer
clock doesn't synchronize
time with NTP servers.
NOTE: Consider this setting
very carefully. Windows
devices that are joined to a
domain should use NT5DS.
DC to parent domain DC
might use NTP. PDCe role
might use NTP. Virtual
machines sometimes use
"enhancements" or
"integration services".
*User Profiles Turn off the advertising ID Enabled. If you enable this
policy setting, the
advertising ID is turned off.
Apps can't use the ID for
experiences across apps.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
account information Deny Force Deny option,
Windows apps are not
allowed to access account
information and employees
in your organization cannot
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
call history Deny Force Deny option,
Windows apps are not
allowed to access the call
history and employees in
your organization cannot
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
contacts Deny Force Deny option,
Windows apps are not
allowed to access contacts
and employees in your
organization cannot change
it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you disable or
diagnostic information Deny do not configure this policy
about other apps setting, employees in your
organization can decide
whether Windows apps can
get diagnostic information
about other apps by using
Settings > Privacy on the
device.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
email Deny Force Allow option,
Windows apps are allowed
to access email and
employees in your
organization cannot change
it.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
location Deny Force Deny option,
Windows apps are not
allowed to access location
and employees in your
organization cannot change
it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
messaging Deny Force Deny option,
Windows apps are not
allowed to access
messaging and employees
in your organization cannot
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
motion Deny Force Deny option,
Windows apps are not
allowed to access motion
data and employees in your
organization cannot change
it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
notifications Deny Force Deny option,
Windows apps are not
allowed to access
notifications and employees
in your organization cannot
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
Tasks Deny Force Deny option,
Windows apps are not
allowed to access tasks and
employees in your
organization cannot change
it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
the calendar Deny Force Deny option,
Windows apps are not
allowed to access the
calendar and employees in
your organization can't
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
the camera Deny Force Deny option,
Windows apps are not
allowed to access the
camera and employees in
your organization can't
change it.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
the microphone Deny Force Deny option,
Windows apps are not
allowed to access the
microphone and employees
in your organization can't
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
trusted devices Deny Force Deny option,
Windows apps are not
allowed to access trusted
devices and employees in
your organization can't
change it.
*App privacy Let Windows apps Default for all apps: Force Enabled. If you choose the
communicate with unpaired Deny Force Deny option,
devices Windows apps are not
allowed to communicate
with unpaired wireless
devices and employees in
your organization can't
change it.
*App privacy Let Windows apps access Default for all apps: Force Enabled. If you choose the
radios Deny Force Deny option,
Windows apps won't have
access to control radios and
employees in your
organization can't change it.
*App privacy Let Windows apps make Default for all apps: Force Enabled. If you choose the
phone calls Deny Force Deny option,
Windows apps are not
allowed to make phone calls
and employees in your
organization can't change it.
*App privacy Let Windows apps run in Default for all apps: Force Enabled. If you choose the
the background Deny Force Deny option,
Windows apps are not
allowed to run in the
background and employees
in your organization can't
change it.
AutoPlay policies Set the default behavior for Do not execute any autorun Enabled
AutoRun commands
*Cloud content Do not show Windows tips Enabled. This policy setting
prevents Windows tips from
being shown to users.
*Cloud content Turn off Microsoft consumer Enabled. If you enable this
experiences policy setting, users will no
longer see personalized
recommendations from
Microsoft and notifications
about their Microsoft
account.
*Data Collection and Allow telemetry 0 - Security [Enterprise Enabled. Setting a value of
Preview Builds Only] 0 applies to devices running
Enterprise, Education, IoT,
or Windows Server editions
only.
Internet Explorer Prevent running First Run Go directly to home page Enabled
wizard
Internet Explorer Specify default behavior for New tab page Enabled
a new tab
*Internet Explorer Turn off the auto-complete Enabled. If you enable this
feature for web addresses policy setting, user won't be
suggested matches when
entering Web addresses.
The user can't change the
auto-complete for setting
web addresses.
*Internet Explorer \ Turn off Compatibility View Enabled. If you enable this
Compatibility View policy setting, the user
cannot use the
Compatibility View button
or manage the
Compatibility View sites list.
*Internet Explorer \ Internet Turn off the flip ahead with Enabled. Microsoft collects
Control Panel \ Advanced page prediction features your browsing history to
Page improve how flip ahead
with page prediction works.
This feature isn't available
for Internet Explorer for the
desktop. If you enable this
policy setting, flip ahead
with page prediction is
turned off and the next
webpage isn't loaded into
the background.
*Location and sensors Turn off location Enabled. If you enable this
policy setting, the location
feature is turned off, and all
programs on this computer
are prevented from using
location information from
the location feature.
*Microsoft Edge Prevent the First Run web Enabled. Users won't see
page from opening on the First Run page when
Microsoft Edge opening Microsoft Edge for
the first time.
*Software Protection Turn off KMS Client Online Enabled. Enabling this
Platform AVC Validation setting prevents this
computer from sending
data to Microsoft regarding
its activation state.
*Sync your settings Do not sync Allow users to turn syncing Enabled. If you enable this
on (not selected) policy setting, "sync your
settings" will be turned off,
and none of the "sync your
setting" groups will be
synced on this device.
Windows Defender Send file samples when Never send Enabled. Only if not opted-
Antivirus \ MAPS further analysis is required in for MAPS diagnostic
data.
Windows Defender Define the order of sources FileShares Enabled. If you enable this
Antivirus \ Signature for downloading definition setting, definition update
Updates updates sources will be contacted in
the order specified. Once
definition updates have
been successfully
downloaded from one
specified source, the
remaining sources in the list
will not be contacted.
*Windows Update \ Manage preview builds Set the behavior for Enabled. Selecting Disable
Windows Update for receiving preview builds: preview builds will prevent
Business preview builds from
installing on the device. This
will prevent users from
opting into the Windows
Insider Program, through
Settings -> Update and
Security.
Disabled. Disables preview
builds.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
*Windows Update \ Select when Preview Builds Semi-Annual Channel Enabled. Enable this policy
Windows Update for and Feature Updates are Deferment: 365 days to specify the level of
Business received Pause start: yyy-mm-dd. Preview Build or feature
updates to receive, and
when.
Windows Restricted Traffic Prevent OneDrive from Enabled. Enable this setting
Custom Policy Settings generating network traffic if you would like to prevent
until the user signs in to the OneDrive sync client
OneDrive (OneDrive.exe) from
generating network traffic
(checking for updates, etc.)
until the user signs in to
OneDrive or starts syncing
files to the local computer.
Windows Restricted Traffic Turn off Windows Defender Enabled. If you enable this
Custom Policy Settings Notifications policy setting, Windows
Defender will not send
notifications with critical
information about the
health and security of your
device.
Start Menu and Taskbar Do not use the search- Enabled. The system does
based method when not conduct the final drive
resolving shell shortcuts search. It just displays a
message explaining that the
file is not found.
Start Menu and Taskbar Remove the People Bar Enabled. The people icon
from the taskbar will be removed from the
taskbar, the corresponding
settings toggle is removed
from the taskbar settings
page, and users will not be
able to pin people to the
taskbar.
Start Menu and Taskbar Turn off feature Enabled. Users cannot pin
advertisement balloon the Store app to the
notifications Taskbar. If the Store app is
already pinned to the
Taskbar, it will be removed
from the Taskbar on next
sign in.
P O SSIB L E SET T IN G A N D
P O L IC Y SET T IN G IT EM SUB - IT EM C O M M EN T S
Start Menu and Taskbar Remove the networking Enabled. The networking
icon icon isn't displayed in the
system notification area.
For more information about the Network Connection Status Indicator (NCSI), see Manage connection endpoints
for Windows 10 Enterprise, version 1903 and Manage connections from Windows 10 operating system
components to Microsoft services.
System services
If you're considering disabling your system services to conserve resources, great care should be taken that the
service being considered isn't in some way a component of some other service. Note that some services are not
in the list because they can't be disabled in a supported manner.
Most of these recommendations mirror recommendations for Windows Server 2016, installed with the Desktop
Experience in Guidance on disabling system services on Windows Server 2016 with Desktop Experience
Many services that might seem like good candidates to disable are set to manual service start type. This means
that the service won't automatically start and isn't started unless a process or event triggers a request to the
service being considered for disabling. Services that are already set to start type Manual are usually not listed
here.
NOTE
You can enumerate running services with this PowerShell sample code, outputting only the service short name:
W IN DO W S SERVIC E IT EM C O M M EN T S
CDPUserService This user service is used for Connected This is a per-user service, and as such,
Devices Platform scenarios the template service must be disabled.
Connected User Experiences and Enables features that support in- Consider disabling if on disconnected
Telemetry application and connected user network.
experiences. Additionally, this service
manages the event-driven collection
and transmission of diagnostic and
usage information (used to improve
the experience and quality of the
Windows Platform) when the
diagnostics and usage privacy option
settings are enabled under Feedback
and Diagnostics.
Contact Data Indexes contact data for fast contact This is a per-user service, and as such,
searching. If you stop or disable this the template service must be disabled.
service, contacts might be missing
from your search results.
GameDVR and Broadcast user service This user service is used for Game This is a per-user service, and as such,
Recordings and Live Broadcasts the template service must be disabled.
MessagingService Service supporting text messaging and This is a per-user service, and as such,
related functionality. the template service must be disabled.
Optimize drives Helps the computer run more VDI solutions do not normally benefit
efficiently by optimizing files on from disk optimization. These "drives"
storage drives. are not traditional drives and often just
a temporary storage allocation.
Windows Error Reporting Allows errors to be reported when With VDI, diagnostics are often
programs stop working or responding performed in an offline scenario, and
and allows existing solutions to be not in mainstream production. And in
delivered. Also allows logs to be addition, some customers disable WER
generated for diagnostic and repair anyway. WER incurs a tiny amount of
services. If this service is stopped, error resources for many different things,
reporting might not work correctly, including failure to install a device, or
and results of diagnostic services and failure to install an update.
repairs might not be displayed.
Windows Media Player Network Shares Windows Media Player libraries Not needed unless customers are
Sharing Service to other networked players and media sharing WMP libraries on the network.
devices using Universal Plug and Play
Windows Search Provides content indexing, property Probably not needed especially with
caching, and search results for files, e- non-persistent VDI
mail, and other content.
NOTE
There are several tasks that can't be disabled via script, even if you're running elevated. We recommend that you don't
disable tasks that can't be disabled using a script.
NOTE
Store apps (UWP apps) update through the Windows Store. Modern versions of Office such as Microsoft 365 update
through their own mechanisms when directly connected to the Internet, or via management technologies when not.
Some of the traces displayed under Event Trace Sessions and Star tup Event Trace Sessions can't and
should not be stopped. Others, such as the 'WiFiSession' trace can be stopped. To stop a running trace under
Event Trace Sessions right-click the trace and then click 'Stop'. Use the following procedure to prevent the
traces from starting automatically on startup:
1. Click the Star tup Event Trace Sessions folder.
2. Locate the trace of interest, and then double-click that trace.
3. Click the Trace Session tab.
4. Click the box labeled Enabled to remove the check mark.
5. Click Ok .
The following are some system traces to consider disabling for VDI use:
NAME C O M M EN T
CloudExperienceHostOOBE
DiagLog
NtfsLog
TileStore
UBPM
WiFiSession
WinPhoneCritical
NOTE
Some settings in this section are registry-based only and should be incorporated in the base image before the image is
deployed for production use.
The following settings are documented in the Windows Server 2016 Performance Tuning Guideline, published
on Microsoft.com by the Windows Product Group.
DisableBandwidthThrottling
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DisableBandwidthThrottling
Applies to Windows 10. The default is 0 . By default, the SMB redirector throttles throughput across high-latency
network connections, in some cases to avoid network-related timeouts. Setting this registry value to 1 disables
this throttling, enabling higher file transfer throughput over high-latency network connections. Consider setting
this value to 1 .
FileInfoCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileInfoCacheEntriesMax Applies to
Windows 10. The default is 64 , with a valid range of 1 to 65536. This value is used to determine the amount of
file metadata that can be cached by the client. Increasing the value can reduce network traffic and increase
performance when many files are accessed. Try increasing this value to 1024 .
DirectoryCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheEntriesMax
Applies to Windows 10. The default is 16 , with a valid range of 1 to 4096. This value is used to determine the
amount of directory information that can be cached by the client. Increasing the value can reduce network traffic
and increase performance when large directories are accessed. Consider increasing this value to 1024 .
FileNotFoundCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileNotFoundCacheEntriesMax
Applies to Windows 10. The default is 128 , with a valid range of 1 to 65536. This value is used to determine the
amount of file name information that can be cached by the client. Increasing the value can reduce network traffic
and increase performance when many file names are accessed. Consider increasing this value to 2048 .
DormantFileLimit
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DormantFileLimit
Applies to Windows 10. The default is 1023 . This parameter specifies the maximum number of files that should
be left open on a shared resource after the application has closed the file. Where many thousands of clients are
connecting to SMB servers, consider reducing this value to 256 .
You can configure many of these SMB settings by using the Set-SmbClientConfiguration and Set-
SmbServerConfiguration Windows PowerShell cmdlets. Registry-only settings can be configured by using
Windows PowerShell as well, as in the following example:
Additional settings from the Windows Restricted Traffic Limited Functionality Baseline guidance.
Microsoft has released a baseline, created using the same procedures as the Windows Security Baselines, for
environments that are either not connected directly to the Internet, or wish to reduce data sent to Microsoft and
other services.
The Windows Restricted Traffic Limited Functionality Baseline settings are called out in the group policy table
with an asterisk.
Disk cleanup (including using the Disk Cleanup Wizard)
Disk cleanup can be especially helpful with gold/master image VDI implementations. After the image is
prepared, updated, and configured, one of the last tasks to perform is disk cleanup. There is a built-in tool called
the "Disk Cleanup Wizard" that can help clean up most potential areas of disk space savings. On a VM that has
very little installed, but was fully patched you can usually get about 4GB disk space freed up running Disk
Cleanup.
Here are suggestions for various disk cleanup tasks. These should all be tested before implementing:
1. Run (elevated) Disk Cleanup Wizard after applying all updates. Include the categories 'Delivery
Optimization' and 'Windows Update Cleanup'. This process can be automated, using command line
Cleanmgr.exe with the /SAGESET:11 option. The /SAGESET option sets registry values that can be used
later to automate disk cleanup, that uses every available option in the Disk Cleanup Wizard.
a. On a test VM, from a clean installation, running Cleanmgr.exe /SAGESET:11 reveals that there are
only two automatic disk cleanup options enabled by default:
Downloaded Program Files
Temporary Internet Files
b. If you set more options, or all options, those options are recorded in the registry, according to the
Index value provided in the previous command ( Cleanmgr.exe /SAGESET:11 ). In this case, we are
going to use the value 11 as our index, for a subsequent automated disk cleanup procedure.
c. After running Cleanmgr.exe /SAGESET:11 you'll see several categories of disk cleanup options. You
can check every option, and then click OK . The Disk Cleanup Wizard disappears and your settings
are saved in the registry.
2. Cleanup your Volume Shadow Copy storage, if any is in use.
Open an elevated command prompt and run the vssadmin list shadows command and then the
vssadmin list shadowstorage command.
If output from these commands is No items found that satisfy the quer y , then there is no VSS
storage in use.
3. Cleanup temporary files and logs. From an elevated command prompt, run the Del C:\*.tmp /s
command, the Del C:\Windows\Temp\. command, and the Del %temp%\. command.
4. Delete any unused profiles on the system by running,
wmic path win32_UserProfile where LocalPath="c:\users\<user>" Delete .
Remove OneDrive Components
Removing OneDrive involves removing the package, uninstalling, and removing *.lnk files. The following sample
PowerShell code can be used to assist in removing OneDrive from the image, and is included in the GitHub VDI
optimization scripts:
Get-Process -Name OneDrive | Stop-Process -Force -Confirm:$false
Get-Process -Name explorer | Stop-Process -Force -Confirm:$false
if (Test-Path "C:\\Windows\\System32\\OneDriveSetup.exe")`
{ Start-Process "C:\\Windows\\System32\\OneDriveSetup.exe"`
-ArgumentList "/uninstall"`
-Wait }
if (Test-Path "C:\\Windows\\SysWOW64\\OneDriveSetup.exe")`
{ Start-Process "C:\\Windows\\SysWOW64\\OneDriveSetup.exe"`
-ArgumentList "/uninstall"`
-Wait }
Remove-Item -Path "C:\\Windows\\ServiceProfiles\\LocalService\\AppData\\Roaming\\Microsoft\\Windows\\Start
Menu\\Programs\\OneDrive.lnk" -Force
Remove-Item -Path "C:\\Windows\\ServiceProfiles\\NetworkService\\AppData\\Roaming\\Microsoft\\Windows\\Start
Menu\\Programs\\OneDrive.lnk" -Force
# Remove the automatic start item for OneDrive from the default user profile registry hive
This article helps you choose settings for Windows 10, version 1803 (build 17134) that should result in the best
performance in a Virtualized Desktop Infrastructure (VDI) environment. All settings in this guide are
recommendations to be considered and are in no way requirements.
In a VDI environment the key ways to optimize Windows 10 performance are to minimize app graphic redraws,
background activities that have no major benefit to the VDI environment, and generally reduce running
processes to the bare minimum. A secondary goal is to reduce disk space usage in the base image to the bare
minimum. With VDI implementations, the smallest possible base, or “gold” image size, can slightly reduce
memory usage on the hypervisor, as well as a small reduction in overall network operations required to deliver
the desktop image to the consumer.
NOTE
Settings recommended here can be applied to other installation of Windows 10, version 1803, including those on physical
or other virtual devices. No recommendations in this topic should affect the supportability of Windows 10, version 1803.
TIP
A script that implements the optimizations discussed in this topic--as well as a GPO export file that you can import with
LGPO.exe --is available at TheVDIGuys on GitHub.
Get-ScheduledTask | ? {$_.Settings.MaintenanceSettings}
One of the challenges with non-persistent VDI is that when a user logs off, nearly all the operating system
activity is discarded. The user's profile and or state might be saved, but the virtual machine itself discards nearly
all changes that were made since the last boot. Therefore, optimizations intended for a Windows computer that
saves state from one session to the next are not applicable.
Depending on the architecture of VDI VM, things like PreFetch and SuperFetch are not going to help from one
session to the next, as all the optimizations are discarded on VM restart. Indexing might be a partial waste of
resources, as would be any disk optimizations such as a traditional defragmentation.
To Sysprep or not Sysprep
Windows 10 has a built-in capability called the System Preparation Tool, (often abbreviated to "Sysprep"). The
Sysprep tool is used to prepare a customized Windows 10 image for duplication. The Sysprep process assures
the resulting operating system is properly unique to run in production. There are reasons for and against
running Sysprep. In the case of VDI, you might want the ability to customize the default user profile which would
be used as the profile template for subsequent users that log on using this image. You might have apps that you
want installed, but also able to control per-app settings.
The alternative is to use a standard .ISO to install from, possibly using an unattended installation answer file, and
a task sequence to install applications or remove applications. You can also use a task sequence to set local
policy settings in the image, perhaps using the Local Group Policy Object Utility (LGPO) tool.
VDI Optimization Categories
Global operating system settings
UWP app cleanup
Optional Features cleanup
Local policy settings
System services
Scheduled tasks
Apply Windows updates
Automatic Windows traces
Disk cleanup prior to finalizing (sealing) image
User settings
Hypervisor/Host settings
Tuning Windows 10 network performance by using registry settings
Additional settings from the Windows Restricted Traffic Limited Functionality Baseline guidance.
Disk cleanup
Universal Windows Platform app cleanup
One of the goals of a VDI image is to be as small as possible. One way to reduce the size of the image is to
remove UWP applications that will not be used in the environment. With UWP apps, there are the main
application files, also known as the payload. There is a small amount of data stored in each user's profile for
application specific settings. There is also a small amount of data in the All Users profile.
Connectivity and timing are everything when it comes to UWP app cleanup. If you deploy your base image to
either a device with no network connectivity, Windows 10 cannot connect to the Microsoft Store and download
apps and try to install them while you are trying to uninstall them.
If you modify your base .WIM that you use to install Windows 10 and remove unneeded UWP apps from the
.WIM before you install, the apps will not be installed to begin with and your profile creation times should be
shorter. Later in this section, you'll find information on how to remove UWP apps from your installation .WIM
file.
A good strategy for VDI is to provision the apps you want in the base image, then limit or block access to the
Microsoft Store afterward. Store apps are updated periodically in the background on normal computers. The
UWP apps can be updated during the maintenance window when other updates are applied.
Delete the payload of UWP apps
UWP apps that are not needed are still in the file system consuming a small amount of disk space. For apps that
will never be needed, the payload of unwanted UWP apps can be removed from the base image using
PowerShell commands.
In fact, if you remove those from the installation .WIM file using the links provided later in this section, you
should be able to start from the beginning with a very slim list of UWP apps.
Run the following command to enumerate provisioned UWP apps from a running Windows 10 operating
system, as in this truncated example output from PowerShell:
Get-AppxProvisionedPackage -Online
DisplayName : Microsoft.3DBuilder
Version : 13.0.10349.0
Architecture : neutral
ResourceId : \~
PackageName : Microsoft.3DBuilder_13.0.10349.0_neutral_\~_8wekyb3d8bbwe
Regions :
UWP apps that are provisioned to a system can be removed during operating system installation as part of a
task sequence, or later after the operating system is installed. This might be the preferred method because it
makes the overall process of creating or maintaining an image modular. Once you develop the scripts, if
something changes in a subsequent build you edit an existing script rather than repeat the process from scratch.
Here are some links to information on this topic:
Removing Windows 10 in-box apps during a task sequence
Removing Built-in apps from Windows 10 WIM-File with Powershell - Version 1.3
Windows 10 1607: Keeping apps from coming back when deploying the feature update
Then run the Remove-AppxProvisionedPackage PowerShell command to remove UWP app payloads:
Each UWP app should be evaluated for applicability in each unique environment. You will want to install a
default installation of Windows 10, version 1803, then note which apps are running and consuming memory.
For example, you might want to consider removing apps that start automatically, or apps that automatically
display information on the Start menu, such as Weather and News, and that might not be of use in your
environment.
One of the "inbox" UWP apps called Photos, has a default setting called Show a notification when new
albums are available . The Photos app can use approximately 145 MB of memory; specifically private working
set memory, even if not being used. Changing the Show a notification when new albums are available
setting for all users is not practical at this time, hence the recommendation to remove the Photos app if it is not
needed or desired.
Clean up optional features
Managing optional features with PowerShell
To enumerate currently installed Windows Features, run this PowerShell command:
Get-WindowsOptionalFeature -Online
You can enable or disable a specific Windows optional feature as in this example:
NOTE
In this table of group policy settings, items marked with an asterisk are from the Windows Restricted Traffic Limited
Functionality Baseline.
P O SSIB L E SET T IN G
P O L IC Y SET T IN G IT EM SUB - IT EM A N D C O M M EN T S
Local Computer
Policy \ Computer
Configuration \
Windows Settings
\ Security Settings
Local Computer
Policy \ Computer
Configuration \
Administrative
Templates \
Control Panel
Local Computer
Policy \ Computer
Configuration \
Administrative
Templates \
Network
*TCPIP Settings \ Set Teredo State Disabled State Enabled (In the
IPv6 Transition disabled state no
Technologies Teredo interfaces are
present on the host.)
Local Computer
Policy \ Computer
Configuration \
Administrative
Templates \ Star t
Menu and Taskbar
Local Computer
Policy \ Computer
Configuration \
Administrative
Templates \
System
Local Computer
Policy \ Computer
Configuration \
Administrative
Templates \
Windows
Components
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access account Force Deny choose the Force
information Deny option,
Windows apps are
not allowed to access
account information
and employees in
your organization
cannot change it)
P O SSIB L E SET T IN G
P O L IC Y SET T IN G IT EM SUB - IT EM A N D C O M M EN T S
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access call history Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
the call history and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access contacts Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
contacts and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access diagnostic Force Deny disable or do not
information about configure this policy
other apps setting, employees in
your organization
can decide whether
Windows apps can
get diagnostic
information about
other apps by using
Settings > Privacy on
the device)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access email Force Deny choose the "Force
Allow" option,
Windows apps are
allowed to access
email and employees
in your organization
cannot change it)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access location Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
location and
employees in your
organization cannot
change it.)
P O SSIB L E SET T IN G
P O L IC Y SET T IN G IT EM SUB - IT EM A N D C O M M EN T S
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access messaging Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
location and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access motion Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
motion data and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access notifications Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
notifications and
employees in your
organization cannot
change it)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access Tasks Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
tasks and employees
in your organization
cannot change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access the calendar Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
the calendar and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access the camera Force Deny choose the Force
Deny option,
Windows apps are
not allowed to access
the camera and
employees in your
organization cannot
change it.)
P O SSIB L E SET T IN G
P O L IC Y SET T IN G IT EM SUB - IT EM A N D C O M M EN T S
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access the Force Deny choose the Force
microphone Deny option,
Windows apps are
not allowed to access
the microphone and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access trusted Force Deny choose the Force
devices Deny option,
Windows apps are
not allowed to access
trusted devices and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
communicate with Force Deny choose the Force
unpaired devices Deny option,
Windows apps are
not allowed to
communicate with
unpaired wireless
devices and
employees in your
organization cannot
change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
access radios Force Deny choose the Force
Deny option,
Windows apps will
not have access to
control radios and
employees in your
organization cannot
change it.)
App Privacy Let Windows apps Default for all apps: Enabled (Windows
make phone calls Force Deny apps are not allowed
to make phone calls
and employees in
your organization
cannot change it.)
*App Privacy Let Windows apps Default for all apps: Enabled (If you
run in the Force Deny choose the Force
background Deny option,
Windows apps are
not allowed to run in
the background and
employees in your
organization cannot
change it.)
P O SSIB L E SET T IN G
P O L IC Y SET T IN G IT EM SUB - IT EM A N D C O M M EN T S
NOTE : If not
connected to the
internet, this will
prevent the
computers from
trying to contact
Microsoft for
SmartScreen
information.
*Sync your Do not sync Allow users to turn Enabled (If you
settings syncing on (not enable this policy
selected) setting, "sync your
settings" will be
turned off, and none
of the "sync your
setting" groups will
be synced on this
device.
Windows Defender Send file samples Never send Enabled (only if not
Antivirus \ MAPS when further analysis opted-in for MAPS
is required diagnostic data)
*Windows Update \ Manage preview Set the behavior for Enabled (Selecting
Windows Update for builds receiving preview Disable preview
Business builds: builds will prevent
preview builds from
installing on the
device. This will
prevent users from
opting into the
Windows Insider
Program, through
Settings -> Update
and Security.)
Disable preview
builds
*Windows Update \ Select when Preview Semi-Annual Channel Enabled (Enable this
Windows Update for Builds and Feature policy to specify the
Business Updates are received level of Preview Build
or feature updates to
receive, and when.)
Local Computer
Policy \ User
Configuration \
Administrative
Templates
Star t Menu and Taskbar Remove the networking Enabled (the networking
icon icon is not displayed in the
system notification area.)
For more about the Network Connection Status Indicator (NCSI), see: The Network Connection Status icon
System services
If you are considering disabling system services to conserve resources, take great care that the service being
considered is not in some way a component of some other service.
Also, most of these recommendations mirror recommendations for Windows Server 2016 with Desktop
Experience; for more information, see Guidance on disabling system services in Windows Server 2016 with
Desktop Experience.
Note that a lot of services that might seem to be good candidates to disable are set to manual service start type.
This means that the service will not automatically start and is not started unless a specific application or service
triggers a request to the service being consider for disabling. Services that are already set to start type manual
are usually not listed here.
W IN DO W S SERVIC E IT EM C O M M EN T
CDPUserService This user service is used for Connected NOTE: This is a per-user service, and as
Devices Platform scenarios such, the template service must be
disabled.
Connected User Experiences and Enables features that support in- Consider disabling if on disconnected
Telemetry application and connected user network
experiences. Additionally, this service
manages the event-driven collection
and transmission of diagnostic and
usage information (used to improve
the experience and quality of the
Windows Platform) when the
diagnostics and usage privacy option
settings are enabled under Feedback
and Diagnostics.
Contact Data Indexes contact data for fast contact (PimIndexMaintenanceSvc) NOTE: This
searching. If you stop or disable this is a per-user service, and as such, the
service, contacts might be missing template service must be disabled.
from your search results.
GameDVR and Broadcast user service This user service is used for Game NOTE: This is a per-user service, and as
Recordings and Live Broadcasts such, the template service must be
disabled.
MessagingService Service supporting text messaging and NOTE: This is a per-user service, and as
related functionality. such, the template service must be
disabled.
Optimize drives Helps the computer run more VDI solutions do not normally benefit
efficiently by optimizing files on from disk optimization. These “drives”
storage drives. are not traditional drives and often just
a temporary storage allocation.
Windows Error Reporting Allows errors to be reported when With VDI, diagnostics are often
programs stop working or responding performed in an offline scenario, and
and allows existing solutions to be not in mainstream production. And in
delivered. Also allows logs to be addition, some customers disable WER
generated for diagnostic and repair anyway. WER incurs a tiny amount of
services. If this service is stopped, error resources for many different things,
reporting might not work correctly, including failure to install a device, or
and results of diagnostic services and failure to install an update.
repairs might not be displayed.
Windows Media Player Network Shares Windows Media Player libraries Not needed unless customers are
Sharing Service to other networked players and media sharing WMP libraries on the network.
devices using Universal Plug and Play
Windows Search Provides content indexing, property Probably not needed especially with
caching, and search results for files, e- non-persistent VDI
mail, and other content.
NAME C O M M EN T
CloudExperienceHostOOBE
DiagLog
NtfsLog
NAME C O M M EN T
TileStore
UBPM
WiFiSession
NOTE
Store apps (UWP apps) update through the Windows Store. Modern versions of Office such as Microsoft 365 update
through their own mechanisms when directly connected to the Internet, or via management technologies when not.
Additional settings from the Windows Restricted Traffic Limited Functionality Baseline guidance
Microsoft has released a baseline created using the same procedures as the Windows Security Baselines, for
environments that are either not connected directly to the Internet, or want to reduce data sent to Microsoft and
other services.
The Windows Restricted Traffic Limited Functionality Baseline settings are marked in the Group Policy table with
an asterisk.
Disk cleanup (including using the Disk Cleanup wizard)
Disk cleanup can be especially helpful with master image VDI implementations. After the master image is
prepared, updated, and configured, one of the last tasks to perform is disk cleanup. The Disk Cleanup wizard
built into Windows can help clean up most potential areas of disk space savings.
NOTE
The Disk Cleanup wizard is no longer being developed. Windows will use other methods to provide disk cleanup functions.
Here are suggestions for various disk cleanup tasks. You should test these before implementing any of them:
1. Run the Disk Cleanup wizard (elevated) after applying all updates. Include the categories Deliver y
Optimization and Windows Update Cleanup . You can automate this process with Cleanmgr.exe
with the /SAGESET:11 option. This option sets registry values that can be used later to automate disk
cleanup, using every available option in the Disk Cleanup wizard.
a. On a test VM, from a clean installation, running Cleanmgr.exe /SAGESET:11 reveals that there are
only two automatic disk cleanup options enabled by default:
Downloaded Program Files
Temporary Internet Files
b. If you set more options, or all options, those options are recorded in the registry, according to the
index value provided in the previous command (Cleanmgr.exe /SAGESET:11 ). In this example,
we use the value 11 as our index, for a subsequent automated disk cleanup procedure.
c. After running Cleanmgr.exe /SAGESET:11 you will see a number of categories of disk cleanup
options. You can select every option, and then select OK . You will notice that the Disk Cleanup
wizard just disappears. However, the settings you selected are saved in the registry, and can be
invoked by running Cleanmgr.exe /SAGERUN:11 .
2. Clean up Volume Shadow Copy storage, if any is in use. To do this, run the following commands in an
elevated prompt:
vssadmin list shadows
vssadmin list shadowstorage
If the output from these commands is No items found that satisfy the query., then there is no VSS
storage in use.
3. Cleanup temporary files and logs. From an elevated command prompt, run these commands:
Del C:\*.tmp /s
Del C:\Windows\Temp\.
Del %temp%\.
4. Delete any unused profiles on the system with this command:
wmic path win32_UserProfile where LocalPath="c:\\users\\<user>" Delete
Remove OneDrive
Removing OneDrive involves removing the package, uninstalling, and removing *.lnk files. You can use following
sample PowerShell code to assist in removing OneDrive from the image:
Taskkill.exe /F /IM "OneDrive.exe"
Taskkill.exe /F /IM "Explorer.exe"`
if (Test-Path "C:\\Windows\\System32\\OneDriveSetup.exe")`
{ Start-Process "C:\\Windows\\System32\\OneDriveSetup.exe"`
-ArgumentList "/uninstall"`
-Wait }
if (Test-Path "C:\\Windows\\SysWOW64\\OneDriveSetup.exe")`
{ Start-Process "C:\\Windows\\SysWOW64\\OneDriveSetup.exe"`
-ArgumentList "/uninstall"`
-Wait }
Remove-Item -Path
"C:\\Windows\\ServiceProfiles\\LocalService\\AppData\\Roaming\\Microsoft\\Windows\\Start
Menu\\Programs\\OneDrive.lnk" -Force
Remove-Item -Path "C:\\Windows\\ServiceProfiles\\NetworkService\\AppData\\Roaming\\Microsoft\\Windows\\Start
Menu\\Programs\\OneDrive.lnk" -Force \# Remove the automatic start item for OneDrive from the default user
profile registry hive
Start-Process C:\\Windows\\System32\\Reg.exe -ArgumentList "Load HKLM\\Temp C:\\Users\\Default\\NTUSER.DAT"
-Wait
Start-Process C:\\Windows\\System32\\Reg.exe -ArgumentList "Delete
HKLM\\Temp\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v OneDriveSetup /f" -Wait
Start-Process C:\\Windows\\System32\\Reg.exe -ArgumentList "Unload HKLM\\Temp" -Wait Start-Process -FilePath
C:\\Windows\\Explorer.exe -Wait
For any questions or concerns about the information in this paper, contact your Microsoft account team,
research the Microsoft VDI blog, post a message to Microsoft forums, or contact Microsoft for questions or
concerns.
Manage users in your RDS collection
11/2/2020 • 4 minutes to read • Edit Online
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016
As an admin, you can directly manage which users have access to specific collections. This way, you can create
one collection with standard applications for information workers, but then create a separate collection with
graphics-intensive modeling applications for engineers. There are two primary steps to managing user access in
a Remote Desktop Services (RDS) deployment:
1. Create users and groups in Active Directory
2. Assign users and groups to collections
NOTE
The User groups window can never be empty. To narrow the scope of users who have access to the collection, you
must first add specific users or groups before removing broader groups.
Customize the RDS title “Work Resources” using
PowerShell on Windows Server
3/5/2021 • 2 minutes to read • Edit Online
When using Windows Server to access RemoteApps or desktops through RD WebAccess or the new Remote
Desktop app, you may have noticed that the workspace is titled “Work Resources" by default. You can easily
change the title by using PowerShell cmdlets.
To change the title, open up a new PowerShell window on the connection broker server and import the
RemoteDesktop module with the following command.
Import-Module RemoteDesktop
For example, you can use the following command to change the workpsace name to "Contoso RemoteApps":
If you are running multiple Connection Brokers in High Availability mode, you must run this against the active
broker. You can use this command:
For more information about the Set-RDWorkspace cmdlet, see the Set-RDSWorkspace reference.
Use performance counters to diagnose app
performance problems on Remote Desktop Session
Hosts
3/5/2021 • 5 minutes to read • Edit Online
One of the most difficult problems to diagnose is poor application performance—the applications are running
slow or don't respond. Traditionally, you start your diagnosis by collecting CPU, memory, disk input/output, and
other metrics and then use tools like Windows Performance Analyzer to try to figure out what's causing the
problem. Unfortunately, in most situations this data doesn't help you identify the root cause because resource
consumption counters have frequent and large variations. This makes it hard to read the data and correlate it
with the reported issue.
NOTE
The User Input Delay counter is only compatible with:
Windows Server 2019 or later
Windows 10, version 1809 or later
The User Input Delay counter can help you quickly identify the root cause for bad end user RDP experiences.
This counter measures how long any user input (such as mouse or keyboard usage) stays in the queue before it
is picked up by a process, and the counter works in both local and remote sessions.
The following image shows a rough representation of user input flow from client to application.
The User Input Delay counter measures the max delta (within an interval of time) between the input being
queued and when it's picked up by the app in a traditional message loop, as shown in the following flow chart:
One important detail of this counter is that it reports the maximum user input delay within a configurable
interval. This is the longest time it takes for an input to reach the application, which can impact the speed of
important and visible actions like typing.
For example, in the following table, the user input delay would be reported as 1,000 ms within this interval. The
counter reports the slowest user input delay in the interval because the user's perception of "slow" is
determined by the slowest input time (the maximum) they experience, not the average speed of all total inputs.
N UM B ER 0 1 2
Delay 16 ms 20 ms 1,000 ms
NOTE
If you're using Windows 10, version 1809 or later or Windows Server 2019 or later, you won't need to enable the registry
key.
Next, restart the server. Then, open the Performance Monitor, and select the plus sign (+), as shown in the
following screen shot.
After doing that, you should see the Add Counters dialog, where you can select User Input Delay per Process
or User Input Delay per Session .
If you select User Input Delay per Process , you'll see the Instances of the selected object (in other words,
the processes) in SessionID:ProcessID <Process Image> format.
For example, if the Calculator app is running in a Session ID 1, you'll see 1:4232 <Calculator.exe> .
NOTE
Not all processes are included. You won't see any processes that are running as SYSTEM.
The counter starts reporting user input delay as soon as you add it. Note that the maximum scale is set to 100
(ms) by default.
Next, let's look at the User Input Delay per Session . There are instances for each session ID, and their
counters show the user input delay of any process within the specified session. In addition, there are two
instances called "Max" (the maximum user input delay across all sessions) and "Average" (the average acorss all
sessions).
This table shows a visual example of these instances. (You can get the same information in Perfmon by switching
to the Report graph type.)
Configuration Options
An important thing to remember when using this performance counter is that it reports user input delay on an
interval of 1,000 ms by default. If you set the performance counter sample interval property (as shown in the
following screenshot) to anything different, the reported value will be incorrect.
To fix this, you can set the following registry key to match the interval (in milliseconds) that you want to use. For
example, if we change Sample every x seconds to 5 seconds, we need to set this key to 5000 ms.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"LagCounterInterval"=dword:00005000
NOTE
If you're using Windows 10, version 1809 or later or Windows Server 2019 or later, you don't need to set
LagCounterInterval to fix the performance counter.
We've also added a couple of keys you might find helpful under the same registry key:
LagCounterImageNameFirst — set this key to DWORD 1 (default value 0 or key does not exist). This changes
the counter names to "Image Name SessionID:ProcessId." For example, "explorer <1:7964>." This is useful if you
want to sort by image name.
LagCounterShowUnknown — set this key to DWORD 1 (default value 0 or key does not exist). This shows any
processes that are running as services or SYSTEM. Some processes will show up with their session set as "?."
This is what it looks like if you turn both keys on:
Using the new counters with non-Microsoft tools
Monitoring tools can consume this counter by Using Performance Counters.
Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012
R2
You can control a remote PC by using a Microsoft Remote Desktop client. The client can run on almost any
device, including on your mobile smartphone. The client gives you the same powers you would have if you
could reach the PC's keyboard. Through the client, you can:
Operate the apps that are installed on the PC.
Access the files and network resources of the PC.
Leave the apps open when you end the client.
Before you start, see the supported configuration article. The article discusses the PC configurations that the
Remote Desktop clients can connect to. Also see the client FAQ article.
The following client apps are available:
Windows Desktop Windows Desktop client Get started, What's new 1.2.1755
Microsoft Store Windows 10 client in the Get started, What's new 1.2.1808
Microsoft Store
iOS iOS client in the App Store Get started, What's new 10.2.4
macOS macOS client in the App Get started, What's new 10.5.2
Store
You can use the Remote Desktop client for Windows Desktop to access Windows apps and desktops remotely
from a different Windows device.
NOTE
This documentation is not for the Remote Desktop Connection (MSTSC) client that ships with Windows. It's for the
new Remote Desktop (MSRDC) client.
This client currently only supports accessing remote apps and desktops from Windows Virtual Desktop.
Curious about the new releases for the Windows Desktop client? Check out What's new in the Windows Desktop client
Workspaces
Get the list of managed resources you can access, such as apps and desktops, by subscribing to the Workspace
your admin provided you. When you subscribe, the resources become available on your local PC. The Windows
Desktop client currently supports resources published from Windows Virtual Desktop.
Subscribe to a Workspace
There are two ways you can subscribe to a Workspace. The client can try to discover the resources available to
you from your work or school account or you can directly specify the URL where your resources are for cases
where the client is unable to find them. Once you've subscribed to a Workspace, you can launch resources with
one of the following methods:
Go to the Connection Center and double-click a resource to launch it.
You can also go to the Start menu and look for a folder with the Workspace name or enter the resource name
in the search bar.
Subscribe with a user account
1. From the main page of the client, tap Subscribe .
2. Sign in with your user account when prompted.
3. The resources will appear in the Connection Center grouped by Workspace.
Subscribe with URL
1. From the main page of the client, tap Subscribe with URL .
2. Enter the Workspace URL or your email address:
If you use the Workspace URL , use the one your admin gave you. If accessing resources from
Windows Virtual Desktop, you can use one of the following URLs:
Windows Virtual Desktop (classic):
https://rdweb.wvd.microsoft.com/api/feeddiscovery/webfeeddiscovery.aspx
Windows Virtual Desktop: https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery
To use email , enter your email address. This tells the client to search for a URL associated with your
email address if your admin has setup email discovery.
3. Tap Next .
4. Sign in with your user account when prompted.
5. The resources will appear in the Connection Center grouped by Workspace.
Workspace details
After subscribing, you can view additional information about a Workspace on the Details panel:
The name of the Workspace
The URL and username used to subscribe
The number of apps and desktops
The date/time of the last refresh
The status of the last refresh
Accessing the Details panel:
1. From the Connection Center, tap the overflow menu (...) next to the Workspace.
2. Select Details from the drop-down menu.
3. The Details panel appears on the right side of the client.
After you've subscribed, the Workspace will refresh automatically on a regular basis. Resources may be added,
changed, or removed based on changes made by your admin.
You can also manually look for updates to the resources when needed by selecting Refresh from the Details
panel.
Refreshing a Workspace
You can manually refresh a Workspace by selecting Refresh from the overflow menu (...) next to the
Workspace.
Unsubscribe from a Workspace
This section will teach you how to unsubscribe from a Workspace. You can unsubscribe to either subscribe again
with a different account or remove your resources from the system.
1. From the Connection Center, tap the overflow menu (...) next to the Workspace.
2. Select Unsubscribe from the drop-down menu.
3. Review the dialog box and select Continue .
Managed desktops
Workspaces can contain multiple managed resources, including desktops. When accessing a managed desktop,
you have access to all the apps installed by your admin.
Desktop settings
You can configure some of the settings for desktop resources to ensure the experience meets your needs. To
access the list of available settings right-click on the desktop resource and select Settings .
The client will use the settings configured by your admin unless you turn off the Use default settings option.
Doing so allows you to configure the following options:
Display configuration selects which displays to use for the desktop session and impacts which additional
settings are available.
All displays ensures the session always uses all your local displays even when some of them are
added or removed later.
Single display ensures the session always uses a single display and allows you to configure its
properties.
Select displays allows you to choose which displays to use for the session and provides an option to
dynamically change the list of displays during the session.
Select the displays to use for the session specifies which local displays to use for the session. All
selected displays must be adjacent to each other. This setting is only available in Select display mode.
Maximize to current displays determines which displays the sessions will use when going full screen.
When enabled, the session goes full screen on the displays touched by the session window. This allows you
to change displays during the session. When disabled, the session goes full screen on the same displays it
was on the last time it was full screen. This setting is only available in Select display mode and is disabled
otherwise.
Single display when windowed determines which displays are available in the session when exiting full
screen. When enabled, the session switches to a single display in windowed mode. When disabled, the
session retains the same displays in windowed mode as in full screen. This setting is only available in All
displays and Select display modes and is disabled otherwise.
Star t in full screen determines whether the session will launch in full-screen or windowed mode. This
setting is only available in Single display mode and is enabled otherwise.
Fit session to window determines how the session is displayed when the resolution of the remote desktop
differs from the size of the local window. When enabled, the session content will be resized to fit inside the
window while preserving the aspect ratio of the session. When disabled, scrollbars or black areas will be
shown when the resolution and window size don't match. This setting is available in all modes.
Update the resolution on resize makes the remote desktop resolution automatically update when you
resize the session in windowed mode. When disabled, the session always remains at whichever resolution
you specify in Resolution . This setting is only available in Single display mode and is enabled otherwise.
Resolution lets you specify the resolution of the remote desktop. The session will retain this resolution for
its entire duration. This setting is only available in Single display mode and when Update the resolution
on resize is disabled.
Change the size of the text and apps specifies the size of the content of the session. This setting only
applies when connecting to Windows 8.1 and later or Windows Server 2012 R2 and later. This setting is only
available in Single display mode and when Update the resolution on resize is disabled.
Give us feedback
Have a feature suggestion or want to report a problem? Tell us with the Feedback Hub.
You can also give us feedback by selecting the button that looks like a smiley face emoticon in the client app, as
shown in the following image:
NOTE
To best help you, we need you to give us as detailed information about the issue as possible. For example, you can include
screenshots or a recording of the actions you took leading up to the issue. For more tips about how to provide helpful
feedback, see Feedback.
This topic has additional information about the Windows Desktop client that admins will find useful. For basic
usage information, see Get started with the Windows Desktop client.
Installation options
Although your users can install the client directly after downloading it, if you're deploying to multiple devices,
you may want to also deploy the client to them through other means. Deploying using group policies or the
Microsoft Endpoint Configuration Manager lets you run the installer silently using a command line. Run the
following commands to deploy the client per-device or per-user.
Per-device installation
Per-user installation
Configuration options
This section describes the new configuration options for this client.
Configure update notifications
By default, the client notifies you whenever there's an update and automatically updates itself when the client is
closed and has no active connections. Even with no active connections, the msrdc.exe process runs in the
background to allow you to reconnect quickly when you reopen the client. You can stop msrdc.exe by right-
clicking on the Windows Virtual Desktop icon in the system tray area and selecting Disconnect all sessions in
the drop-down menu.
To turn notifications off, set the following registry information:
Key: HKLM\Software\Microsoft\MSRDC\Policies
Type: REG_DWORD
Name: AutomaticUpdates
Data: 0 = Disable notifications and turn off auto-update. 1 = Show notifications and turn off auto-update. 2
= Show notifications and auto-update on close.
Configure user groups
You can configure the client for one of the following types of user groups, which determines when the client
receives updates.
Insider group
The Insider group is for early validation, and consists of admins and their selected users. The Insider group
serves as a test run to detect any issues in the update that can impact performance before it's released to the
Public group.
NOTE
We recommend each organization have some users in the Insider group to test updates and catch issues early.
In the Insider group, a new version of the client is released to the users on the second Tuesday of each month for
early validation. If the update doesn't have issues, it gets released to the Public group two weeks later. Users in
the Insider group will receive update notifications automatically whenever updates are ready. You can find more
detailed information about changes to the client at What's new with the Windows Desktop client.
To configure the client for the Insider group, set the following registry information:
Key: HKLM\Software\Microsoft\MSRDC\Policies
Type: REG_SZ
Name: ReleaseRing
Data: insider
Public group
This group is for all users and is the most stable version. You don't need to do anything to configure this group.
The Public group receives the version of the client that was tested by the Insider group every fourth Tuesday of
each month. All users in the Public group will receive an update notification if that setting is enabled.
What's new in the Windows Desktop client
3/10/2021 • 10 minutes to read • Edit Online
You can find more detailed information about the Windows Desktop client at Get started with the Windows
Desktop client. You'll find the latest updates to client in this article.
You can use the Remote Desktop client for Windows to work with Windows apps and PCs remotely from a
different Windows device.
Use the following information to get started. Be sure to check out the FAQ if you have any questions.
NOTE
Curious about the new releases for the Microsoft Store Client? Check out What's new in the Microsoft Store Client
You can run the client on any supported version of Windows 10.
NOTE
In Windows 8 or later, the native touch gestures are supported in Direct Touch mode.
Mouse pointer Left-click and drag Double-tap and hold with one finger,
then drag
Mouse pointer Right-click and drag Double-tap and hold with two fingers,
then drag
Mouse pointer Mouse wheel Tap and hold with two fingers, then
drag up or down
Give us feedback
Have a feature suggestion or want to report a problem? Tell us with the Feedback Hub.
You can also give us feedback by selecting the ellipsis button (...) in the client app, then selecting Feedback , as
shown in the following image.
NOTE
To best help you, we need you to give us as detailed information about the issue as possible. For example, you can include
screenshots or a recording of the actions you took leading up to the issue. For more tips about how to provide helpful
feedback, see Feedback.
What's new in the Microsoft Store Client
11/2/2020 • 2 minutes to read • Edit Online
We regularly update the Microsoft Store Client, adding new features and fixing issues. Here's where you'll find
the latest updates.
You can use the Remote Desktop client for Android to work with Windows apps and desktops directly from your
Android device or a Chromebook that supports the Google Play Store.
This article will show you how to get started using the client. If you have any additional questions, make sure to
check our FAQ.
NOTE
Curious about the new releases for the Android client? Check out What's new for the Android client.
The Android client supports devices running Android 6.0 and later, as well as Chromebooks with ChromeOS 53 and
later. Learn more about Android applications on Chrome at Chrome OS Systems Supporting Android Apps.
TIP
If you get an error name "0xf07" that says something like "We couldn't connect to the remote PC because the password
associated with the user account has expired," try again with a new password.
NOTE
If you rename the desktop connection in the Remote Desktop client, its pinned label won't update.
Resolution sets the remote resolution you want to use for desktop connections globally. If you have
already set a custom resolution for an individual connection, this setting won't change that.
NOTE
When you change the display settings, the changes only apply to new connections you make after the you
changed the setting. To apply your changes to the session you're currently connected to, refresh your session by
disconnecting and reconnecting.
NOTE
Native touch gestures are supported in Direct Touch mode in Windows 8 or later.
Direct touch Right-click Tap with one finger and hold, then
release
Mouse pointer Zoom Use two fingers and pinch to zoom out
or move fingers apart to zoom in.
Mouse pointer Left-click and drag Double-tap and hold with one finger,
then drag
Mouse pointer Right-click and drag Double-tap and hold with two fingers,
then drag
Mouse pointer Mouse wheel Tap and hold with two fingers, then
drag up or down
We regularly update the Remote Desktop client for Android, adding new features and fixing issues. Here's where
you'll find the latest updates.
Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012
R2
You can use the Remote Desktop client for iOS to work with Windows apps, resources, and desktops from your
iOS device (iPhones and iPads).
Use the following information to get started. Be sure to check out the FAQ if you have any questions.
NOTE
Curious about the new releases for the iOS client? Check out What's new for Remote Desktop on iOS?.
The iOS client supports devices running iOS 6.x and newer.
NOTE
In Windows 8 or later, the native touch gestures are supported in Direct Touch mode. For more information on Windows
8 gestures, see Touch: Swipe, tap, and beyond.
Mouse pointer Left-click and drag Tap and hold with one finger, then
drag
Mouse pointer Right-click and drag Double-tap and hold with two fingers,
then drag
Mouse pointer Mouse wheel Double-tap and hold with two fingers,
then drag up or down
TIP
Swiftpoint is offering an exclusive discount on the ProPoint mouse for iOS client users.
TIP
Questions and comments are always welcome. However, if you post support requests or product feedback in this article's
comments section, we won't be able to respond to your feedback. If you need help or want to troubleshoot your client,
we highly recommend you go to the Remote Desktop client forum and start a new thread. If you have a feature
suggestion, you can tell us using the client user voice forum.
What's new in the iOS client
3/13/2021 • 12 minutes to read • Edit Online
We regularly update the Remote Desktop client for iOS, adding new features and fixing issues. You'll find the
latest updates on this page.
Applies To: Windows 10, Windows 8.1, Windows Server 2012 R2, Windows Server 2016
You can use the Remote Desktop client for Mac to work with Windows apps, resources, and desktops from your
Mac computer. Use the following information to get started - and check out the FAQ if you have questions.
NOTE
Curious about the new releases for the macOS client? Check out What's new for Remote Desktop on Mac?
The Mac client runs on computers running macOS 10.10 and newer.
The information in this article applies primarily to the full version of the Mac client - the version available in the Mac
AppStore. Test-drive new features by downloading our preview app here: beta client release notes.
Add a workspace
Subscribe to the feed your admin gave you to get the list of managed resources available to you on your macOS
device.
To subscribe to a feed:
1. Select Add feed on the main page to connect to the service and retrieve your resources.
2. Enter the feed URL. This can be a URL or email address:
This URL is usually a Windows Virtual Desktop URL. Which one you use depends on which version of
Windows Virtual Desktop you're using.
For Windows Virtual Desktop (classic), use
https://rdweb.wvd.microsoft.com/api/feeddiscovery/webfeeddiscovery.aspx .
For Windows Virtual Desktop, use https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery .
To use email, enter your email address. This tells the client to search for a URL associated with your
email address if your admin configured the server that way.
3. Select Subscribe .
4. Sign in with your user account when prompted.
After you've signed in, you should see a list of available resources.
Once you've subscribed to a feed, the feed's content will update automatically on a regular basis. Resources may
be added, changed, or removed based on changes made by your administrator.
Export and import connections
You can export a remote desktop connection definition and use it on a different device. Remote desktops are
saved in separate RDP files.
To export an RDP file:
1. In the Connection Center, right-click the remote desktop.
2. Select Expor t .
3. Browse to the location where you want to save the remote desktop RDP file.
4. Select OK .
To import an RDP file:
1. In the menu bar, select File > Impor t .
2. Browse to the RDP file.
3. Select Open .
NOTE
In order to use this feature, the administrator needs to set the appropriate settings on the server.
Use a keyboard in a remote session
Mac keyboard layouts differ from the Windows keyboard layouts.
The Command key on the Mac keyboard equals the Windows key.
To perform actions that use the Command button on the Mac, you will need to use the control button in
Windows (for example Copy = Ctrl+C).
The function keys can be activated in the session by pressing additionally the FN key (for example, FN+F1).
The Alt key to the right of the space bar on the Mac keyboard equals the Alt Gr/right Alt key in Windows.
By default, the remote session will use the same keyboard locale as the OS you're running the client on. (If your
Mac is running an en-us OS, that will be used for the remote sessions as well.) If the OS keyboard locale is not
used, check the keyboard setting on the remote PC and change it manually. See the Remote Desktop Client FAQ
for more information about keyboards and locales.
IMPORTANT
Custom authentication and authorization models before Windows 8.1 aren't supported, although the article above
discusses them.
TIP
Questions and comments are always welcome. However, please do NOT post a request for troubleshooting help by using
the comment feature at the end of this article. Instead, go to the Remote Desktop client forum and start a new thread.
Have a feature suggestion? Tell us in the client user voice forum.
What's new in the macOS client
3/13/2021 • 20 minutes to read • Edit Online
We regularly update the Remote Desktop client for macOS, adding new features and fixing issues. Here's where
you'll find the latest updates.
If you encounter any issues, you can always contact us by navigating to Help > Repor t an Issue .
Thanks again to everyone who reported bugs and took the time to help us diagnose problems!
NOTE
This is the last release that will be compatible with macOS 10.12.
NOTE
In this release, we now accept feedback for the Mac client only through UserVoice.
Updates for version 10.3.4
Date published: 11/18/19
We've been hard at work listening to your feedback and have put together a collection of bug fixes and feature
updates.
When connecting via an RD Gateway with multifactor authentication, the gateway connection will be held
open to avoid multiple MFA prompts.
All the client UI is now fully keyboard-accessible with Voiceover support.
Files copied to the clipboard in the remote session are now only transferred when pasting to the local
computer.
URLs copied to the clipboard in the remote session now paste correctly to the local computer.
Scale factor remoting to support Retina displays is now available for multimonitor scenarios.
Addressed a compatibility issue with FreeRDP-based RD servers that was causing connectivity issues in
redirection scenarios.
Addressed smart card redirection compatibility with future releases of Windows 10.
Addressed an issue specific to macOS 10.15 where the incorrect available space was reported for redirected
folders.
Published PC connections are represented with a new icon in the Workspaces tab.
"Feeds" are now called "Workspaces," and "Desktops" are now called "PCs."
Fixed inconsistencies and bugs in user account handling in the preferences UI.
Lots of bug fixes to make things run smoother and more reliably.
NOTE
There is a bug in macOS 10.14.0 and 10.14.1 that can cause the ".com.microsoft.rdc.application-
data_SUPPORT/_EXTERNAL_DATA" folder (nested deep inside the ~/Library folder) to consume a large amount of disk
space. To resolve this issue, delete the folder content and upgrade to macOS 10.14.2. Note that a side-effect of deleting
the folder contents is that snapshot images assigned to bookmarks will be deleted. These images will be regenerated
when reconnecting to the remote PC.
The Remote Desktop web client lets you use a compatible web browser to access your organization's remote
resources (apps and desktops) published to you by your admin. You'll be able to interact with the remote apps
and desktops like you would with a local PC no matter where you are, without having to switch to a different
desktop PC. Once your admin sets up your remote resources, all you need are your domain, user name,
password, the URL your admin sent you, and a supported web browser, and you're good to go.
NOTE
Curious about the new releases for the web client? Check out What's new for Remote Desktop web client?
NOTE
The Internet Explorer version of the web client does not have audio at this time. Safari may display a gray screen if the
browser is resized or enters fullscreen multiple times.
NOTE
By signing in to the web client, you agree that your PC complies with your organization's security policy.
After you sign in, the client will take you to the All Resources tab, which contains all items published to you
under one or more collapsible groups, such as the "Work Resources" group. You'll see several icons representing
the apps, desktops, or folders containing more apps or desktops that the admin has made available to the work
group. You can come back to this tab at any time to launch additional resources.
To start using an app or desktop, select the item you want to use, enter the same user name and password you
used to sign in to the web client if prompted, and then select Submit . You might also be shown a consent dialog
to access local resources, like clipboard and printer. You can choose to not redirect either of these, or select
Allow to use the default settings. Wait for the web client to establish the connection, and then start using the
resource as you would normally.
When you're finished, you can end your session by either selecting the Sign Out button in the toolbar at the top
of your screen or closing the browser window.
Web client keyboard shortcuts
The following table describes alternate key combinations to inject standard Windows shortcut keys in the
remote session.
We regularly update the Remote Desktop web client, adding new features and fixing issues. Here's where you'll
find the latest updates.
NOTE
We've changed the versioning system for the web client. Starting with version 1.0.18.0, all web client release versions will
contain numbers (in the format of "W.X.Y.Z"). Release numbers for the Remote Desktop web client will always end with a 0
(for example, W.X.Y.0). Each Windows Virtual Desktop web client release will change the last digit until the next Remote
Desktop web client release (for example, 1.0.18.1).
IMPORTANT
Version 1.0.24.0 includes an important security fix. We have removed earlier versions of the web client containing this
bug. We encourage all customers to update to version 1.0.24.0 as soon as possible.
Added support for redirecting local microphone input to the remote session.
Fixed issues with AltGr and several other keyboard bugs.
Accessibility improvements.
IMPORTANT
In version 1.0.22.0, we introduced a regression that impacts some Chromebook operating systems. Users on impacted
operating systems won't be able to connect to a remote session using the web client. We're currently investigating this
issue and will release a new version of the web client as soon as we fix this regression. In the meantime, you can avoid this
problem by reverting to version 1.0.21.0.
Supported PCs
You can connect to PCs that are running the following Windows operating systems:
Windows 10 Pro
Windows 10 Enterprise
Windows 8 Enterprise
Windows 8 Professional
Windows 7 Professional
Windows 7 Enterprise
Windows 7 Ultimate
Windows 7 Ultimate
Windows Server 2008
Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Windows Multipoint Server 2011
Windows Multipoint Server 2012
Windows Small Business Server 2008
Windows Small Business Server 2011
The following computers can run the Remote Desktop gateway:
Windows Server 2008
Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Windows Small Business Server 2011
The following operating systems can serve as RD Web Access or RemoteApp servers:
Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012
R2
You can use Remote Desktop to connect to and control your PC from a remote device by using a Microsoft
Remote Desktop client (available for Windows, iOS, macOS and Android). When you allow remote connections
to your PC, you can use another device to connect to your PC and have access to all of your apps, files, and
network resources as if you were sitting at your desk.
NOTE
You can use Remote Desktop to connect to Windows 10 Pro and Enterprise, Windows 8.1 and 8 Enterprise and Pro,
Windows 7 Professional, Enterprise, and Ultimate, and Windows Server versions newer than Windows Server 2008. You
can't connect to computers running a Home edition (like Windows 10 Home).
To connect to a remote PC, that computer must be turned on, it must have a network connection, Remote
Desktop must be enabled, you must have network access to the remote computer (this could be through the
Internet), and you must have permission to connect. For permission to connect, you must be on the list of users.
Before you start a connection, it's a good idea to look up the name of the computer you're connecting to and to
make sure Remote Desktop connections are allowed through its firewall.
When you connect to your PC by using a Remote Desktop client, you're creating a peer-to-peer connection. This
means you need direct access to the PC (sometimes called "the host"). If you need to connect to your PC from
outside of the network your PC is running on, you need to enable that access. You have a couple of options: use
port forwarding or set up a VPN.
Your public IP address (the router's IP). There are many ways to find this - you can search (in Bing or
Google) for "my IP" or view the Wi-Fi network properties (for Windows 10).
Port number being mapped. In most cases this is 3389 - that's the default port used by Remote Desktop
connections.
Admin access to your router.
WARNING
You're opening your PC up to the internet - make sure you have a strong password set for your PC.
After you map the port, you'll be able to connect to your host PC from outside the local network by connecting
to the public IP address of your router (the second bullet above).
The router's IP address can change - your internet service provider (ISP) can assign you a new IP at any time. To
avoid running into this issue, consider using Dynamic DNS - this lets you connect to the PC using an easy to
remember domain name, instead of the IP address. Your router automatically updates the DDNS service with
your new IP address, should it change.
With most routers you can define which source IP or source network can use port mapping. So, if you know
you're only going to connect from work, you can add the IP address for your work network - that lets you avoid
opening the port to the entire public internet. If the host you're using to connect uses dynamic IP address, set the
source restriction to allow access from the whole range of that particular ISP.
You might also consider setting up a static IP address on your PC so the internal IP address doesn't change. If
you do that, then the router's port forwarding will always point to the correct IP address.
Use a VPN
If you connect to your local area network by using a virtual private network (VPN), you don't have to open your
PC to the public internet. Instead, when you connect to the VPN, your RD client acts like it's part of the same
network and be able to access your PC. There are a number of VPN services available - you can find and use
whichever works best for you.
Change the listening port for Remote Desktop on
your computer
3/5/2021 • 2 minutes to read • Edit Online
Applies to: Windows 10, Windows 8.1, Windows 8, Windows Server 2019, Windows Server 2016, Windows
Server 2012 R2, Windows Server 2008 R2
When you connect to a computer (either a Windows client or Windows Server) through the Remote Desktop
client, the Remote Desktop feature on your computer "hears" the connection request through a defined listening
port (3389 by default). You can change that listening port on Windows computers by modifying the registry.
1. Start the registry editor. (Type regedit in the Search box.)
2. Navigate to the following registry subkey:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Ser ver\WinStations\RDP-
Tcp
3. Find Por tNumber
4. Click Edit > Modify , and then click Decimal .
5. Type the new port number, and then click OK .
6. Close the registry editor, and restart your computer.
The next time you connect to this computer by using the Remote Desktop connection, you must type the new
port. If you're using a firewall, make sure to configure your firewall to permit connections to the new port
number.
You can check the current port by running the following PowerShell command:
For example:
PortNumber : 3389
PSPath :
Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations\RDP-Tcp
PSParentPath :
Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations
PSChildName : RDP-Tcp
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
You can also change the RDP port by running the following PowerShell command. In this command, we'll
specify the new RDP port as 3390 .
To add a new RDP Port to the registry:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name
"PortNumber" -Value 3390
New-NetFirewallRule -DisplayName 'RDPPORTLatest' -Profile 'Public' -Direction Inbound -Action Allow -
Protocol TCP -LocalPort 3390
Deploy the RD Gateway role
3/5/2021 • 2 minutes to read • Edit Online
This article will tell you how to use the Remote Desktop Gateway (RD Gateway) role to deploy Remote Desktop
Gateway servers in your Windows Virtual Desktop or Remote Desktop environment. You can install the server
roles on physical machines or virtual machines depending on whether you are creating an on-premises, cloud-
based, or hybrid environment.
NOTE
Because the RD Gateway role is supposed to be public, we recommend you use a publicly issued certificate. If you use a
privately issued certificate, you'll need to make sure to configure all clients with the certificate's trust chain beforehand.
Next steps
If you want to add high availability to your RD Gateway role, see Add high availability to the RD Web and
Gateway web front.
Compare the clients: features
3/5/2021 • 2 minutes to read • Edit Online
We're often asked how the different Remote Desktop clients compare to each other. The following table lists the
features currently available in each of our clients.
Client features
The following table compares the features of each client.
M IC RO SO F DESC RIP T I
F EAT URE DESK TO P T STO RE MAC IO S A N DRO ID W EB ON
Remote X X X X X X Desktop of
Desktop a remote
computer
presented
in a full
screen or
windowed
mode.
Integrated X X Individual
remote remote
apps (RAIL) apps
integrated
into the
local
desktop as
if they are
running
locally.
Immersive X X X X X Individual
remote remote
apps apps
presented
in a
window or
maximized
to a full
screen.
Dynamic X X X X Resolution
resolution and
orientation
of local
monitors is
dynamically
reflected in
the remote
session. If
the client is
running in
windowed
mode, the
remote
desktop is
resized
dynamically
to the size
of the client
window.
Smart X X X Remote
sizing Desktop in
Windowed
mode is
dynamically
scaled to
the
window's
size.
Multi- X X X X X X Supports
factor multi-factor
authenticati authenticati
on on for
remote
connection
s.
Teams X Media
optimizatio optimizatio
n for ns for
Windows Microsoft
Virtual Teams to
Desktop provide
high quality
calls and
screen
sharing
experiences
. Learn
more at
Use
Microsoft
Teams on
Windows
Virtual
Desktop.
Other resources
If you're looking for information about device redirections, check out Compare the clients: redirections.
Compare the clients: redirections
3/5/2021 • 2 minutes to read • Edit Online
Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012
R2
We're often asked how the different Remote Desktop clients compare to each other. Do they all do the same
thing? Here are the answers to those questions.
Redirection support
The following tables compare support for device and other redirections across the different clients. These tables
cover the redirections that you can access once in a remote session.
If you remote into your personal desktop, there are additional redirections that you can configure in the
Additional Settings for the session. If your remote desktop or apps are managed by your organization, your
admin can enable or disable redirections through Group Policy settings or RDP properties.
Input redirection
M IC RO SO F
W IN DO W S W IN DO W S T STO RE
REDIREC T I IN B O X DESK TO P C L IEN T W EB
ON ( M ST SC ) ( M SRDC ) ( URDC ) A N DRO ID IO S MAC OS C L IEN T
Keyboard X X X X X X X
Mouse X X X X X* X X
Touch X X X X X X (except
IE)
*View the list of supported input devices for the Remote Desktop iOS client.
Port redirection
M IC RO SO F
W IN DO W S W IN DO W S T STO RE
REDIREC T I IN B O X DESK TO P C L IEN T W EB
ON ( M ST SC ) ( M SRDC ) ( URDC ) A N DRO ID IO S MAC OS C L IEN T
Serial port X X
USB X X
When you enable USB port redirection, any USB devices attached to the USB port are automatically recognized
in the remote session.
Other redirection (devices, etc.)
M IC RO SO F
W IN DO W S W IN DO W S T STO RE
REDIREC T I IN B O X DESK TO P C L IEN T W EB
ON ( M ST SC ) ( M SRDC ) ( URDC ) A N DRO ID IO S MAC OS C L IEN T
Cameras X X X X
Local X X X X X
drive/stora
ge
Location X X
Microphon X X X X X X
es
Scanners X X
Smart X X X (Windows
Cards logon not
supported)
Speakers X X X X X X X (except
IE)
*For printer redirection - the macOS app supports the Publisher Imagesetter printer driver by default. They do
not support redirecting native printer drivers.
Other resources
If you're looking for feature comparisons, check out Compare the clients: features.
Supported Remote Desktop RDP file settings
3/5/2021 • 10 minutes to read • Edit Online
The following table includes the list of supported RDP file settings that you can use with the Remote Desktop
clients. When configuring settings, check Client comparisons to see which redirections each client supports.
The table also highlights which settings are supported as custom properties with Windows Virtual Desktop. You
can refer to this documentation detailing how to use PowerShell to customize RDP properties for Windows
Virtual Desktop host pools.
Connection information
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
Session behavior
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
Device redirection
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
devicestoredirect:s:val Plug and play device - *: Redirect all Don't redirect any Yes
ue redirection: supported devices, devices
Determines which including ones that
devices on the local are connected later
computer will be - Valid hardware ID
redirected and for one or more
available in the devices
remote session. - DynamicDevices:
Redirect all
supported devices
that are connected
later
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
usbdevicestoredirect: USB redirection - *: Redirect all USB Don't redirect any Yes
s:value devices that are not USB devices
already redirected by
another high-level
redirection
- {Device Setup Class
GUID}: Redirect all
devices that are
members of the
specified device setup
class
- USBInstanceID:
Redirect a specific
USB device identified
by the instance ID
Display settings
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
RemoteApp
W IN DO W S VIRT UA L
RDP SET T IN G DESC RIP T IO N VA L UES DEFA ULT VA L UE DESK TO P SUP P O RT
Applies to: Windows Server, version 1803, Windows Server 2019, Windows Server 2016, Windows Server
2012 R2
This document defines the format of Uniform Resource Identifiers (URIs) for Remote Desktop. These URI
schemes allow for Remote Desktop clients to be invoked with various commands.
The ms-rd URI provides the option to specify a command for the client and a set of parameters specific to the
command using the following format:
ms-rd:command?parameters
Parameters uses the query string format of key=value pair separated by & to provide additional information for
the given command:
param1=value1¶m2=value2&…
Example: ms-rd:subscribe?url=https://contoso.com
Microsoft Remote Desktop uses the URI scheme rdp://query_string to store preconfigured attribute settings that
are used when launching the client. The query strings represent a single or set of RDP attributes provided in the
URL.
The RDP attributes are separated by the ampersand symbol (&). For example, when connecting to a PC, the
string is:
rdp://full%20address=s:mypc:3389&audiomode=i:2&disable%20themes=i:1
This table gives a complete list of supported attributes that may be used with the iOS, Mac, and Android Remote
Desktop clients. (An "x" in the platform column indicates the attribute is supported. The values denoted by
chevrons (<>) represent the values that are supported by the Remote Desktop clients.)
allow desktop x x x
composition=i:<0 or 1>
alternate shell=s:<string> x x x
audiomode=i:<0, 1, or 2> x x x
authentication level=i:<0 or x x x
1>
connect to console=i:<0 or x x x
1>
disable wallpaper=i:<0 or x x x
1>
drivestoredirect=s:* (this is x x
the only supported value)
RDP AT T RIB UT E A N DRO ID MAC IO S
desktopheight=i:<value in x
pixels>
desktopwidth=i:<value in x
pixels>
domain=s:<string> x x x
full address=s:<string> x x x
gatewayhostname=s: x x x
<string>
gatewayusagemethod=i:<1 x x x
or 2>
loadbalanceinfo=s:<string> x x x
redirectprinters=i:<0 or 1> x
remoteapplicationcmdline= x x x
s:<string>
remoteapplicationmode=i: x x x
<0 or 1>
remoteapplicationprogram x x x
=s:<string>
username=s:<string> x x x
Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012
R2
Now that you've set up the Remote Desktop client on your device (Android, Mac, iOS, or Windows), you may
have questions. Here are answers to the most commonly asked questions about the Remote Desktop clients.
Setting up
Connections, gateway, and networks
Web client
Monitors, audio, and mouse
Mac hardware
Specific error messages
The majority of these questions apply to all of the clients, but there are a few client specific items.
If you have additional questions that you'd like us to answer, leave them as feedback on this article.
Setting up
Which PCs can I connect to?
Check out the supported configuration article for information about what PCs you can connect to.
How do I set up a PC for Remote Desktop?
I have my device set up, but I don't think the PC's ready. Help?
First, have you seen the Remote Desktop Setup Wizard? It walks you through getting your PC ready for remote
access. Download and run that tool on your PC to get everything set.
Otherwise, if you prefer to do things manually, read on.
For Windows 10, do the following:
1. On the device you want to connect to, open Settings .
2. Select System and then Remote Desktop .
3. Use the slider to enable Remote Desktop.
4. In general, it's best to keep the PC awake and discoverable to facilitate connections. Click Show settings to
go to the power settings for your PC, where you can change this setting.
NOTE
You can't connect to a PC that's asleep or hibernating, so make sure the settings for sleep and hibernation on the
remote PC are set to Never . (Hibernation isn't available on all PCs.)
Make note of the name of this PC under How to connect to this PC . You'll need this to configure the clients.
You can grant permission for specific users to access this PC - to do that, click Select users that can remotely
access this PC . Members of the Administrators group automatically have access.
For Windows 8.1, follow the instructions to allow remote connections in Connect to another desktop using
Remote Desktop Connections.
IMPORTANT
Using the PC name requires your network to resolve the name correctly through DNS. In many home networks,
you have to use the IP address instead of the host name to connect.
Is the PC on a different network? Did you configure the PC to let outside connections through? Check out
Allow access to your PC from outside your network for help.
Are you connecting to a supported Windows version?
NOTE
Windows XP Home, Windows Media Center Edition, Windows Vista Home and Windows 7 Home or Starter are
not supported without 3rd party software.
Web client
Which browsers can I use?
The web client supports Microsoft Edge, Internet Explorer 11, Mozilla Firefox (v55.0 and later), Safari, and
Google Chrome.
What PCs can I use to access the web client?
The web client supports Windows, macOS, Linux, and ChromeOS. Mobile devices are not supported at this time.
Can I use the web client in a Remote Desktop deployment without a gateway?
No. The client requires a Remote Desktop Gateway to connect. Don't know what that means? Ask your admin
about it.
Does the Remote Desktop web client replace the Remote Desktop Web Access page?
No. The Remote Desktop web client is hosted at a different URL than the Remote Desktop Web Access page. You
can use either the web client or the Web Access page to view the remote resources in a browser.
Can I embed the web client in another web page?
This feature is not supported at the moment.
Specific errors
Why do I get an "Insufficient privileges" error?
You are not allowed to access the session you want to connect to. The most likely cause is that you are trying to
connect to an admin session. Only administrators are allowed to connect to the console. Verify that the console
switch is off in the advanced settings of the remote desktop. If this is not the source of the problem, please
contact your system administrator for further assistance.
Why does the client say that there is no CAL?
When a remote desktop client connects to a Remote Desktop server, the server issues a Remote Desktop
Services Client Access License (RDS CAL) stored by the client. Whenever the client connects again it will use its
RDS CAL and the server will not issue another license. The server will issue another license if the RDS CAL on
the device is missing or corrupt. When the maximum number of licensed devices is reached the server will not
issue new RDS CALs. Contact your network administrator for assistance.
Why did I get an "Access Denied" error?
The "Access Denied" error is a generated by the Remote Desktop Gateway and the result of incorrect credentials
during the connection attempt. Verify your username and password. If the connection worked before and the
error occurred recently, you possibly changed your Windows user account password and haven't updated it yet
in the remote desktop settings.
What does "RPC Error 23014" or "Error 0x59e6" mean?
In case of an RPC error 23014 or Error 0x59E6 tr y again after waiting a few minutes , the RD Gateway
server has reached the maximum number of active connections. Depending on the Windows version running on
the RD Gateway the maximum number of connections differs: The Windows Server 2008 R2 Standard
implementation limits the number of connections to 250. The Windows Server 2008 R2 Foundation
implementation limits the number of connections to 50. All other Windows implementations allow an unlimited
number of connections.
What does the "Failed to parse NTLM challenge" error mean?
This error is caused by a misconfiguration on the remote PC. Make sure the RDP security level setting on the
remote PC is set to "Client Compatible." (Talk to your system admin if you need help doing this.)
What does "TS_RAP You are not allowed to connect to the given host" mean?
This error happens when a Resource Authorization Policy on the gateway server stops your user name from
connecting to the remote PC. This can happen in the following instances:
The remote PC name is the same as the name of the gateway. Then, when you try to connect to the remote
PC, the connection goes to the gateway instead, which you probably don't have permission to access. If you
need to connect to the gateway, do not use the external gateway name as PC name. Instead use "localhost" or
the IP address (127.0.0.1), or the internal server name.
Your user account isn't a member of the user group for remote access.
Privacy settings for managed apps and desktops
11/2/2020 • 2 minutes to read • Edit Online
Applies to: Windows 10, Windows 7, Windows Server 2012 R2, Windows Server 2016, Windows Server
2019
When accessing managed resources (apps or desktops) provided by your IT administrator, the privacy settings
for the remote system have been preconfigured by your IT administrator. These settings may be different than
the privacy settings on your local system. If you have questions, contact your IT administrator.
NOTE
Using managed resources in regions other than the United States may result in data transfer to the United States.
These are some of the Windows 10 privacy settings you can configure in your managed desktop:
Speech recognition
Find my device
Inking & typing
Advertising ID
Location
Diagnostic data
Tailored experiences
You can always review the information collected and sent to Microsoft by accessing your Privacy Dashboard.
NOTE
If your IT Administrator has configured the managed desktop to not retain user configuration settings between
connections, any changes you make to these settings won't be saved.
General Remote Desktop connection
troubleshooting
3/5/2021 • 8 minutes to read • Edit Online
Use these steps when a Remote Desktop client can't connect to a remote desktop but doesn't provide messages
or other symptoms that would help identify the cause.
NOTE
If the remote desktop options are not available, see Check whether a Group Policy Object is blocking RDP.
IMPORTANT
Follow this section's instructions carefully. Serious problems can occur if the registry is modified incorrectly. Before you
start modifying the registry, back up the registry so you can restore it in case something goes wrong.
To check and change the status of the RDP protocol on a remote computer, use a network registry connection:
1. First, go to the Star t menu, then select Run . In the text box that appears, enter regedt32 .
2. In the Registry Editor, select File , then select Connect Network Registr y .
3. In the Select Computer dialog box, enter the name of the remote computer, select Check Names , and then
select OK .
4. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Ser ver .
The file that this command produces (gpresult-<computer name>.html ) uses the same information format
as the local computer version (gpresult.html ) uses.
Modifying a blocking GPO
You can modify these settings in the Group Policy Object Editor (GPE) and Group Policy Management Console
(GPM). For more information about how to use Group Policy, see Advanced Group Policy Management.
To modify the blocking policy, use one of the following methods:
In GPE, access the appropriate level of GPO (such as local or domain), and navigate to Computer
Configuration > Administrative Templates > Windows Components > Remote Desktop Ser vices
> Remote Desktop Session Host > Connections > Allow users to connect remotely by using
Remote Desktop Ser vices .
1. Set the policy to either Enabled or Not configured .
2. On the affected computers, open a command prompt window as an administrator, and run the
gpupdate /force command.
In GPM, navigate to the organizational unit (OU) in which the blocking policy is applied to the affected
computers and delete the policy from the OU.
NOTE
If you start the Remote Desktop Services service, click Yes to automatically restart the Remote Desktop Services
UserMode Port Redirector service.
2. Enter qwinsta .
3. If the list includes rdp-tcp with a status of Listen , the RDP listener is working. Proceed to Check the RDP
listener port. Otherwise, continue at step 4.
4. Export the RDP listener configuration from a working computer.
a. Sign in to a computer that has the same operating system version as the affected computer has, and
access that computer's registry (for example, by using Registry Editor).
b. Navigate to the following registry entry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Ser ver\WinStations\RDP-Tcp
c. Export the entry to a .reg file. For example, in Registry Editor, right-click the entry, select Expor t , and
then enter a filename for the exported settings.
d. Copy the exported .reg file to the affected computer.
5. To import the RDP listener configuration, open a PowerShell window that has administrative permissions
on the affected computer (or open the PowerShell window and connect to the affected computer
remotely).
a. To back up the existing registry entry, enter the following cmdlet:
cmd /c 'reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp"
C:\Rdp-tcp-backup.reg'
c. To import the new registry entry and then restart the service, enter the following cmdlets:
IMPORTANT
Follow this section's instructions carefully. Serious problems can occur if the registry is modified incorrectly. Before you
starty modifying the registry, back up the registry so you can restore it in case something goes wrong.
IMPORTANT
You can operate Remote Desktop services using another port. However, we don't recommend you do this. This
article doesn't cover how to troubleshoot that type of configuration.
4. After you change the port number, restart the Remote Desktop Services service.
Check that another application isn't trying to use the same port
For this procedure, use a PowerShell instance that has administrative permissions. For a local computer, you can
also use a command prompt that has administrative permissions. However, this procedure uses PowerShell
because the same cmdlets work locally and remotely.
1. Open a PowerShell window. To connect to a remote computer, enter Enter-PSSession -
ComputerName <computer name> .
2. Enter the following command:
3. Look for an entry for TCP port 3389 (or the assigned RDP port) with a status of Listening .
NOTE
The process identifier (PID) for the process or service using that port appears under the PID column.
4. To determine which application is using port 3389 (or the assigned RDP port), enter the following
command:
5. Look for an entry for the PID number that is associated with the port (from the netstat output). The
services or processes that are associated with that PID appear on the right column.
6. If an application or service other than Remote Desktop Services (TermServ.exe) is using the port, you can
resolve the conflict by using one of the following methods:
Configure the other application or service to use a different port (recommended).
Uninstall the other application or service.
Configure RDP to use a different port, and then restart the Remote Desktop Services service (not
recommended).
Check whether a firewall is blocking the RDP port
Use the psping tool to test whether you can reach the affected computer by using port 3389.
1. Go to a different computer that isn't affected and download psping from
https://live.sysinternals.com/psping.exe.
2. Open a command prompt window as an administrator, change to the directory in which you installed
psping , and then enter the following command:
3. Check the output of the psping command for results such as the following:
Connecting to <computer IP> : The remote computer is reachable.
(0% loss) : All attempts to connect succeeded.
The remote computer refused the network connection : The remote computer is not reachable.
(100% loss) : All attempts to connect failed.
4. Run psping on multiple computers to test their ability to connect to the affected computer.
5. Note whether the affected computer blocks connections from all other computers, some other
computers, or only one other computer.
6. Recommended next steps:
Engage your network administrators to verify that the network allows RDP traffic to the affected
computer.
Investigate the configurations of any firewalls between the source computers and the affected
computer (including Windows Firewall on the affected computer) to determine whether a firewall is
blocking the RDP port.
Credential limit per app
3/5/2021 • 2 minutes to read • Edit Online
Windows only allows up to 20 credentials per app. If you need to have more than 20 credentials per app, follow
the instructions in this article.
Potential risks
When changing this registry setting, it's important to keep these things in mind:
This is an admin operation. Any errors introduced into the registry could cause your machine to become
unstable. Users should change the registry entries at their own risk.
This registry change will affect all apps on your machine.
Clients can't connect and get the "Class not
registered" error
4/7/2020 • 2 minutes to read • Edit Online
When you try to connect to a remote computer using a client running Windows 10, version 1709 or later, the
client may not connect while the Remote Desktop Session Host server reports a message that contains the
"Class not registered (0x80040154)" error code.
This issue occurs when the user who's trying to connect has a mandatory user profile. To resolve this issue,
install the July 24, 2018—KB4338817 (OS Build 16299.579) Windows 10 update.
Clients can't connect and see "No licenses available"
error
4/7/2020 • 2 minutes to read • Edit Online
This situation applies to deployments that include an RDSH server and a Remote Desktop Licensing server.
First, identify which behavior the users are seeing:
The session was disconnected because no licenses are available or no license server is available.
Access was denied because of a security error.
Sign in to the RD Session Host as a domain administrator and open the RD License Diagnoser. Look for
messages like the following:
The grace period for the Remote Desktop Session Host server has expired, but the RD Session Host server
hasn't been configured with any license servers. Connections to the RD Session Host server will be denied
unless a license server is configured for the RD Session Host server.
License server <computer name> is not available. This could be caused by network connectivity problems,
the Remote Desktop Licensing service is stopped on the license server, or RD Licensing isn't available.
These problems tend to be associated with the following user messages:
The remote session was disconnected because there are no Remote Desktop client access licenses available
for this computer.
The remote session was disconnected because there are no Remote Desktop License Servers available to
provide a license.
In this case, configure the RD Licensing service.
If the RD License Diagnoser lists other problems, such as "The RDP protocol component X.224 detected an error
in the protocol stream and has disconnected the client," there may be a problem that affects the license
certificates. Such problems tend to be associated with user messages, such as the following:
Because of a security error, the client could not connect to the Terminal server. After making sure that you are
signed in to the network, try connecting to the server again.
In this case, refresh the X509 Certificate registry keys.
To resolve this problem, back up and then remove the X509 Certificate registry keys, restart the computer, and
then reactivate the RD Licensing server. Follow these steps.
NOTE
Perform the following procedure on each of the RDSH servers.
This article addresses several issues that can cause problems that affect user authentication.
This issue occurs when Network Level Authentication (NLA) is required for RDP connections, and the user is not
a member of the Remote Desktop Users group. It can also occur if the Remote Desktop Users group has
not been assigned to the Access this computer from the network user right.
To solve this issue, do one of the following things:
Modify the user's group membership or user rights assignment.
Turn off NLA (not recommended).
Use remote desktop clients other than Windows 10. For example, Windows 7 clients do not have this issue.
Modify the user's group membership or user rights assignment
If this issue affects a single user, the most straightforward solution to this issue is to add the user to the Remote
Desktop Users group.
If the user is already a member of this group (or if multiple group members have the same problem), check the
user rights configuration on the remote Windows 10 or Windows Server 2016 computer.
1. Open Group Policy Object Editor (GPE) and connect to the local policy of the remote computer.
2. Navigate to Computer Configuration\Windows Settings\Security Settings\Local Policies\User
Rights Assignment , right-click Access this computer from the network , and then select Proper ties .
3. Check the list of users and groups for Remote Desktop Users (or a parent group).
4. If the list doesn't include either Remote Desktop Users or a parent group like Ever yone , you must add it
to the list. If you have more than one computer in your deployment, use a group policy object.
For example, the default membership for Access this computer from the network includes Ever yone . If
your deployment uses a group policy object to remove Ever yone , you may need to restore access by
updating the group policy object to add Remote Desktop Users .
Access denied, A remote call to the SAM database has been denied
This behavior is most likely to occur if your domain controllers are running Windows Server 2016 or later, and
users attempt to connect by using a customized connection app. In particular, applications that access the user's
profile information in Active Directory will be denied access.
This behavior results from a change to Windows. In Windows Server 2012 R2 and earlier versions, when a user
signs in to a remote desktop, the Remote Connection Manager (RCM) contacts the domain controller (DC) to
query the configurations that are specific to Remote Desktop on the user object in Active Directory Domain
Services (AD DS). This information is displayed in the Remote Desktop Services Profile tab of a user's object
properties in the Active Directory Users and Computers MMC snap-in.
Starting in Windows Server 2016, RCM no longer queries the user's object in AD DS. If you need RCM to query
AD DS because you're using Remote Desktop Services attributes, you must manually enable the query.
IMPORTANT
Follow the steps in this section carefully. Serious problems might occur if you modify the registry incorrectly. Before you
modify it, back up the registry for restoration in case problems occur.
To enable the legacy RCM behavior on a RD Session Host server, configure the following registry entries, and
then restart the Remote Desktop Ser vices service:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Ser vices
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Ser ver\WinStations\
<Winstation name>\
Name: fQuer yUserConfigFromDC
Type: Reg_DWORD
Value: 1 (Decimal)
To enable the legacy RCM behavior on a server other than a RD Session Host server, configure these registry
entries and the following additional registry entry (and then restart the service):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Ser ver
For more information about this behavior, see KB 3200967 Changes to Remote Connection Manager in
Windows Server.
"CredSSP encryption oracle remediation" refers to a set of security updates released in March, April, and May of
2018. CredSSP is an authentication provider that processes authentication requests for other applications. The
March 13, 2018, "3B" and subsequent updates addressed an exploit in which an attacker could relay user
credentials to execute code on the target system.
The initial updates added support for a new Group Policy Object, Encryption Oracle Remediation, that has the
following possible settings:
Vulnerable: Client applications that use CredSSP can fall back to insecure versions, but this behavior exposes
the remote desktops to attacks. Services that use CredSSP accept clients that have not been updated.
Mitigated: Client applications that use CredSSP can't fall back to insecure versions, but services that use
CredSSP accept clients that have not been updated.
Force Updated Clients: Client applications that use CredSSP can't fall back to insecure versions, and services
that use CredSSP will not accept unpatched clients.
NOTE
This setting should not be deployed until all remote hosts support the newest version.
The May 8, 2018 update changed the default Encryption Oracle Remediation setting from Vulnerable to
Mitigated. With this change in place, Remote Desktop clients that have the updates can't connect to servers that
don't have them (or updated servers that have not been restarted). For more information about the CredSSP
updates, see KB 4093492.
To resolve this issue, update and restart all systems. For a full list of updates and more information about the
vulnerabilities, see CVE-2018-0886 | CredSSP Remote Code Execution Vulnerability.
To work around this issue until the updates are complete, check KB 4093492 for allowed types of connections. If
there are no feasible alternatives you may consider one of the following methods:
For the affected client computers, set the Encryption Oracle Remediation policy back to Vulnerable .
Modify the following policies in the Computer Configuration\Administrative Templates\Windows
Components\Remote Desktop Ser vices\Remote Desktop Session Host\Security group policy
folder:
Require use of specific security layer for remote (RDP) connections : set to Enabled and
select RDP .
Require user authentication for remote connections by using Network Level
authentication : set to Disabled .
IMPORTANT
Changing these group policies reduces your deployment's security. We recommend you only use them
temporarily, if at all.
For more information about working with group policy, see Modifying a blocking GPO.
After you update client computers, some users need to sign in twice
When users sign in to Remote Desktop using a computer running Windows 7 or Windows 10, version 1709,
they immediately see a second sign-in prompt. This issue happens if the client computer has the following
updates:
Windows 7: KB 4103718, May 8, 2018—KB4103718 (Monthly Rollup)
Windows 10 1709: KB 4103727, May 8, 2018—KB4103727 (OS Build 16299.431)
To resolve this issue, ensure that the computers that the users want to connect to (as well as RDSH or RDVI
servers) are fully updated through June, 2018. This includes the following updates:
Windows Server 2016: KB 4284880, June 12, 2018—KB4284880 (OS Build 14393.2312)
Windows Server 2012 R2: KB 4284815, June 12, 2018—KB4284815 (Monthly Rollup)
Windows Server 2012: KB 4284855, June 12, 2018—KB4284855 (Monthly Rollup)
Windows Server 2008 R2: KB 4284826, June 12, 2018—KB4284826 (Monthly Rollup)
Windows Server 2008 SP2: KB4056564, Description of the security update for the CredSSP remote code
execution vulnerability in Windows Server 2008, Windows Embedded POSReady 2009, and Windows
Embedded Standard 2009: March 13, 2018
Users are denied access on a deployment that uses Remote
Credential Guard with multiple RD Connection Brokers
This issue occurs in high-availability deployments that use two or more Remote Desktop Connection Brokers, if
Windows Defender Remote Credential Guard is in use. Users can't sign in to remote desktops.
This issue occurs because Remote Credential Guard uses Kerberos for authentication, and restricts NTLM.
However, in a high-availability configuration with load balancing, the RD Connection Brokers can't support
Kerberos operations.
If you need to use a high-availability configuration with load-balanced RD Connection Brokers, you can work
around this issue by disabling Remote Credential Guard. For more information about how to manage Windows
Defender Remote Credential Guard, see Protect Remote Desktop credentials with Windows Defender Remote
Credential Guard.
On connecting, user receives "Remote Desktop
Service is currently busy" message
4/7/2020 • 2 minutes to read • Edit Online
The task you are trying to do can't be completed because Remote Desktop Service is currently busy. Please
try again in a few minutes. Other users should still be able to sign in.
RD listener issue
An issue has been noted on some RDSH servers that have been upgraded directly from Windows Server 2008
R2 to Windows Server 2012 R2 or Windows Server 2016. When a Remote Desktop client connects to the RDSH
server, the RDSH server creates an RD listener for the user session. The affected servers keep a count of the RD
listeners that increases as users connect, but never decreases.
You can work around this issue with the following methods:
Restart the RDSH server to reset the count of RD listeners
Modify the connection limit policy, setting it to a very large value. For more information about managing the
connection limit policy, see Check the connection limit policy.
To resolve this issue, apply the following updates to the RDSH servers:
Windows Server 2012 R2: KB 4343891, August 30, 2018—KB4343891 (Preview of Monthly Rollup)
Windows Server 2016: KB 4343884, August 30, 2018—KB4343884 (OS Build 14393.2457)
gpresult /H c:\gpresult.html
gpupdate /force
Remote Desktop client disconnects and can't
reconnect to the same session
7/22/2020 • 2 minutes to read • Edit Online
After Remote Desktop client loses its connection to the remote desktop, the client can't immediately reconnect.
The user receives one of the following error messages:
The client couldn't connect to the terminal server because of a security error. Make sure you are signed in to
the network, then try connecting again.
Remote Desktop disconnected. Because of a security error, the client could not connect to the remote
computer. Verify that you are logged onto the network and then try connecting again.
When the Remote Desktop client reconnects, the RDSH server reconnects the client to a new session instead of
the original session. However, when you check the RDSH server, it says that the original session is still active and
didn't enter a disconnected state.
To work around this issue, you can enable the Configure keep-alive connection inter val policy in the
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop
Ser vices\Remote Desktop Session Host\Connections group policy folder. If you enable this policy, you
must enter a keep-alive interval. The keep-alive interval determines how often, in minutes, the server checks the
session state.
This issue can also be fixed by reconfiguring your authentication and configuration settings. You can reconfigure
these settings at either the server level or by using group policy objects (GPOs). Here's how to reconfigure your
settings: Computer Configuration\Administrative Templates\Windows Components\Remote
Desktop Ser vices\Remote Desktop Session Host\Security group policy folder.
1. On the RD Session Host server, open Remote Desktop Session Host Configuration .
2. Under Connections , right-click the name of the connection, then select Proper ties .
3. In the Proper ties dialog box for the connection, on the General tab, in Security layer, select a security
method.
4. Go to Encr yption level and select the level you want. You can select Low , Client Compatible , High , or
FIPS Compliant .
NOTE
When communications between clients and RD Session Host servers require the highest level of encryption, use FIPS-
compliant encryption.
Any encryption level settings you configure in Group Policy override the settings you configured using the Remote
Desktop Services Configuration tool. Also, if you enable the System cryptography: Use FIPS compliant algorithms for
encryption, hashing, and signing policy, this setting overrides the Set client connection encr yption level policy.
The system cryptography policy is in the Computer Configuration\Windows Settings\Security Settings\Local
Policies\Security Options folder.
When you change the encryption level, the new encryption level takes effect the next time a user signs in. If you
require multiple levels of encryption on one server, install multiple network adapters and configure each adapter
separately.
To verify your certificate has a corresponding private key, go to Remote Desktop Services Configuration, right-click the
connection that you want to view the certificate for, select General, then select Edit . After that, select View
cer tificate . When you go to the General tab, you should see the statement, "You have a private key that
corresponds to this certificate" if there's a key. You can also view this information with the Certificates snap-in.
FIPS-compliant encryption (the System cr yptography: Use FIPS compliant algorithms for encr yption,
hashing, and signing policy or the FIPS Compliant setting in Remote Desktop Server Configuration) encrypts and
decrypts data sent between the server and client with the Federal Information Processing Standard (FIPS) 140-1
encryption algorithms that use Microsoft cryptographic modules. For more information, see FIPS 140 Validation.
The High setting encrypts data sent between the server and client by using strong 128-bit encryption.
The Client Compatible setting encrypts data sent between the client and the server at the maximum key strength
supported by the client.
The Low setting encrypts data sent from the client to the server using 56-bit encryption.
Remote laptop disconnects from wireless network
4/7/2020 • 2 minutes to read • Edit Online
This issue may occur when a Remote Desktop client connects to a laptop computer by using an 802.1x wireless
network. The laptop intermittently disconnects from the wireless network and doesn't automatically reconnect.
This is a known issue that occurs when the network authentication setting for the wireless network connection is
User authentication .
To work around this issue, set the network authentication setting to User or computer authentication or
Computer authentication .
NOTE
To change the network authentication settings on a single computer, you may need to use the Network and Sharing
Center control panel to create a new wireless connection with the new settings.
For a full description of how to configure wireless network settings using GPOs, see Configure Wireless
Network (IEEE 802.11) Policies.
Poor performance or application problems during
remote desktop connection
4/7/2020 • 2 minutes to read • Edit Online
This article addresses several common issues that users can experience when they use remote desktop
functionality.
Intermittent problems with new Microsoft Azure virtual machines
This issue affects virtual machines that have been recently provisioned. After the user connects to the virtual
machine, the remote desktop session does not load all the user's settings correctly.
To work around this issue, disconnect from the virtual machine, wait for at least 20 minutes, and then connect
again.
To resolve this issue, apply the following updates to the virtual machines, as appropriate:
Windows 10 and Windows Server 2016: KB 4343884, August 30, 2018—KB4343884 (OS Build 14393.2457)
Windows Server 2012 R2: KB 4343891, August 30, 2018—KB4343891 (Preview of Monthly Rollup)
Video playback issues on Windows 10 version 1709
This issue occurs when users connect to remote computers that are running Windows 10, version 1709. When
these users play video using the VMR9 (Video Mixing Renderer 9) codec, the player shows only a black window.
This is a known issue in Windows 10, version 1709. The issue doesn't occur in Windows 10, version 1703.
Desktop sharing issues on Windows 10
This issue occurs when the user has a read-only user profile (and associated registry hive), such as in a kiosk
scenario. When such a user connects to a remote computer that is running Windows 10, version 1803, they can't
share their desktop.
To fix this issue, apply the Windows 10 update 4340917, July 24, 2018—KB4340917 (OS Build 17134.191).
Performance issues when mixing versions of Windows 10 if NLA is disabled
This issue occurs when Remote Desktop client computers running Windows 10 connect to remote desktops that
run different versions of Windows 10 while NLA is disabled. Users of Remote Desktop clients on computers
running Windows 10, version 1709 or earlier experience poor performance when they connect to remote
desktops running Windows 10, version 1803 or later.
This occurs because, when NLA is disabled, the older client computers use a slower protocol when they connect
to Windows 10, version 1803 or a later version.
To resolve this issue, apply KB 4340917, July 24, 2018—KB4340917 (OS Build 17134.191).
Black screen issue
This issue occurs in Windows 8.0, Windows 8.1, Windows 10 RTM, and Windows Server 2012 R2. A user
launches multiple applications in a remote desktop, then disconnects from the session. Periodically, the user
reconnects to the remote desktop to interact with the applications, and then disconnects again. At some point,
when the user reconnects, the remote desktop session only shows a black screen. To get the session to display
properly again, the user then has to end their session from either the remote computer's console or the RDSH
server console and stop their session's applications.
To resolve this issue, apply the following updates as appropriate:
Windows 8 and Windows Server 2012: KB4103719, May 17, 2018—KB4103719 (Preview of Monthly Rollup)
Windows 8.1 and Windows Server 2012 R2: KB4103724, May 17, 2018—KB4103724 (Preview of Monthly
Rollup) and KB 4284863, June 21, 2018—KB4284863 (Preview of Monthly Rollup)
Windows 10: Fixed in KB4284860, June 12, 2018—KB4284860 (OS Build 10240.17889)
Input method editor issue in RemoteApp scenarios
11/2/2020 • 2 minutes to read • Edit Online
We've been made aware of the following issues with the input method editor (IME) through user feedback:
Users have reported being unable to change IME mode from their applications.
Users couldn't change IME mode using the keyboard.
Switching between remote applications doesn't change the IME mode.
Affected platforms:
Windows Virtual Desktop
Remote Desktop Services (so far, this issue has only been reported for Windows Server 2019)
We're currently working on a solution to help solve this issue.
Additional Remote Desktop resources
11/2/2020 • 2 minutes to read • Edit Online
In addition to the information here in the Windows Server 2016 library, you can use the following resources to
learn about and get help with Remote Desktop Services:
Participate in general discussions about Remote Desktop Services in the RDS TechNet forum.
For discussion about Remote Desktop applications/clients for Windows, Android, iOS, and Mac, visit the
Remote Desktop clients TechNet forum.
For MultiPoint, check out the MultiPoint TechNet forum.
If you have ideas about Remote Desktop Services that you want to share with us, post a topic in our UserVoice
forum.