How to Configure Windows Server 2016 RemoteApp
RemoteApp is a feature of Windows Server 2016 Remote Desktop Services that allows individual applications to be published and delivered to remote users as seamlessly integrated windows on their local desktops. Unlike a full Remote Desktop session where the user sees an entire remote desktop, RemoteApp presents only the application window. The application appears to run locally, complete with a taskbar icon, Alt+Tab integration, and clipboard sharing, while actually executing on the Remote Desktop Session Host server. This tutorial covers configuring RemoteApp programs from start to finish.
Benefits of RemoteApp
RemoteApp centralises application management: you install, update, and patch applications in one location (the RDSH server) and all users automatically receive the updates without any client-side changes. It enables delivery of Windows-only applications to non-Windows devices (Mac, iOS, Android) using the Microsoft Remote Desktop client. It provides application isolation, preventing conflicting application versions on client machines. For organisations moving legacy applications to a server model without a full VDI investment, RemoteApp is a cost-effective solution.
Prerequisites
You need a Windows Server 2016 RDS deployment with at minimum an RD Session Host server and an RD Connection Broker. RD Web Access is recommended for easy distribution. Install the applications you wish to publish on the RDSH server. Applications must be installed in execute mode (not install mode) and should be compatible with multi-user, session-based operation.
Step 1: Install the Application on the RDSH Server
Install applications on the RDSH in install mode to ensure registry settings are captured per-user rather than system-wide. Use the change user command or the Add/Remove Programs interface:
change user /install
msiexec /i "C:InstallersMyApp.msi" /quiet
change user /execute
After installation, test that the application runs correctly under a standard user account by switching user context on the RDSH and launching it manually.
Step 2: Publish a RemoteApp Program via Server Manager
Open Server Manager on the Connection Broker or management server. Navigate to Remote Desktop Services > Collections and select the session collection you want to add the RemoteApp to. In the RemoteApp Programs section, click Tasks > Publish RemoteApp Programs. The Publish RemoteApp Programs dialog opens. Click Add to browse for the program. Enter the full path to the executable or select it from the list of installed programs detected by the system. Configure the display name and optional command-line parameters. Click Next and then Publish.
Step 3: Publish a RemoteApp Program via PowerShell
For scripted or bulk publishing, use the New-RDRemoteApp cmdlet:
New-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Notepad" -FilePath "C:WindowsSystem32notepad.exe" -ShowInWebAccess $true -ConnectionBroker "rdbroker.domain.local"
Publish with specific file type associations so that files of a certain extension automatically open in the RemoteApp:
New-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Word 2016" -FilePath "C:Program FilesMicrosoft OfficerootOffice16WINWORD.EXE" -FileVirtualPath "C:Program FilesMicrosoft OfficerootOffice16WINWORD.EXE" -FileExtensions ".doc",".docx" -ShowInWebAccess $true -ConnectionBroker "rdbroker.domain.local"
Step 4: Configure RemoteApp Properties
Each RemoteApp has configurable properties. To view and modify them:
Get-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Notepad" -ConnectionBroker "rdbroker.domain.local"
Update properties such as the icon, command-line arguments, and whether the app is visible in RD Web Access:
Set-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Notepad" -ShowInWebAccess $true -CommandLineSetting Require -RequiredCommandLine "/A" -ConnectionBroker "rdbroker.domain.local"
The CommandLineSetting parameter controls how command-line arguments are handled. DoNotAllow prevents users from passing arguments. Allow permits optional arguments. Require forces a specific argument defined in RequiredCommandLine.
Step 5: Distribute RemoteApp via .rdp File
To distribute a RemoteApp directly without RD Web Access, generate an .rdp file for the application. Users can then double-click the .rdp file to launch the RemoteApp:
Export-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Notepad" -ExportPath "C:rdp-filesnotepad.rdp" -ConnectionBroker "rdbroker.domain.local"
Review the generated .rdp file content:
type "C:rdp-filesnotepad.rdp"
Key entries in the .rdp file include remoteapplicationmode:i:1, remoteapplicationname:s:Notepad, remoteapplicationprogram:s:||notepad, full address:s:rdsh01.domain.local, and gatewayhostname:s:rdgateway.contoso.com if a gateway is in use.
Step 6: Distribute RemoteApp via ClickOnce MSI Package
For a more polished distribution experience, create a Windows Installer (.msi) package that installs shortcuts for the RemoteApp on the user’s Start menu and desktop. In Server Manager, right-click the RemoteApp and select Create RDP File and ClickOnce Package. Distribute the .msi via Group Policy software installation, SCCM, or Intune.
Step 7: Configure RemoteApp File Type Associations
File type associations make RemoteApp transparent to end users. When a user double-clicks a .docx file on their local machine, the file can be automatically opened in the RemoteApp version of Word running on the RDSH server. Configure file type associations in the RemoteApp properties or via PowerShell as shown in Step 3. The local client machine’s file association for .docx must also be set to the RemoteApp client (Remote Desktop Connection client). This is typically distributed via Group Policy using the Set Default Associations configuration XML.
Step 8: Remove a Published RemoteApp
To unpublish a RemoteApp program, use the Remove-RDRemoteApp cmdlet or right-click the application in Server Manager and select Unpublish:
Remove-RDRemoteApp -CollectionName "DesktopCollection" -DisplayName "Notepad" -ConnectionBroker "rdbroker.domain.local" -Force
Security and User Experience Tips
Restrict which users can access specific RemoteApp programs by configuring user group filters on the RD Collection. Use AppLocker on the RDSH server to prevent users from launching unauthorised executables beyond the published RemoteApp programs. Enable clipboard redirection selectively: allow text paste for productivity but disable file transfer via clipboard to prevent data exfiltration. Configure printer redirection policies to limit which printers are available in RemoteApp sessions. Test each RemoteApp under a standard user account before publishing to production users, as many applications have elevated privilege assumptions that fail in a multi-user session host context.
RemoteApp on Windows Server 2016 bridges the gap between traditional application management and modern virtualised delivery, providing a seamless, maintainable, and cost-effective solution for application publishing across an organisation.