How to Remotely Display a Single Application UI from a Windows Server to a Workstation


2 views

Many developers and sysadmins face scenarios where they need to run resource-intensive applications on a powerful server while displaying only the application's UI on a local workstation. This differs from traditional remote desktop solutions that transmit the entire desktop environment.

Windows Server includes RemoteApp functionality through Remote Desktop Services (RDS), which allows individual applications to be published and accessed remotely:

# PowerShell command to list available RemoteApp programs
Get-RDRemoteApp -ConnectionBroker "your-server-name" | Format-Table -Property DisplayName,Path

To configure a new RemoteApp:

# Create a new RemoteApp for Notepad
New-RDRemoteApp -CollectionName "YourCollection" -DisplayName "Remote Notepad" -FilePath "C:\Windows\System32\notepad.exe" -Alias notepad

For non-Windows environments or more flexible solutions:

X11 Forwarding (Linux/Unix)

# On the remote Linux server
ssh -X user@server
application-command

Third-Party Tools

  • Citrix XenApp
  • VMware Horizon
  • Apache Guacamole (web-based)

When implementing remote application solutions:

  • Use RDP over UDP for better performance (enable in Group Policy)
  • Configure QoS policies for RDP traffic
  • Consider compression settings for WAN connections

If applications don't display properly:

# Check Remote Desktop Session Host configuration
Get-RDSessionHost -CollectionName "YourCollection" | Format-Table -Property SessionHost,ConnectionState

For permission issues:

# Verify user access rights
Get-RDUserAccess -CollectionName "YourCollection" -UserName "domain\user"

To improve remote application responsiveness:

# Adjust RDP settings via PowerShell
Set-RDSessionHost -CollectionName "YourCollection" -MaxRedirectedMonitors 4 -MaxDisplayResolution "3840x2160"

When working with Windows Server environments, we often need to expose specific application UIs to client workstations without granting full desktop access. Traditional RDP sessions or terminal services provide complete remote desktop experiences, which can be overkill for many enterprise scenarios.

Windows Server actually includes built-in capabilities for this exact use case through RemoteApp:

# PowerShell command to list available RemoteApp programs
Get-RemoteAppProgram -Alias * | Format-Table -Property Alias, Name

To configure a RemoteApp application:

  1. Install the Remote Desktop Services role
  2. Create a collection in Server Manager
  3. Publish applications through the RemoteApp Manager

For non-server Windows versions or more flexible solutions, consider these options:

// Sample C# code using Windows API to create application-specific RDP
var processInfo = new ProcessStartInfo {
    FileName = "mstsc.exe",
    Arguments = $"/v:{serverName} /remoteApp:\"{appPath}\"",
    UseShellExecute = false
};
Process.Start(processInfo);

When implementing this solution, ensure proper firewall rules are configured:

  • TCP port 3389 (RDP) must be open
  • Consider using RD Gateway for secure external access
  • Enable Remote Desktop Licensing if needed

Common pitfalls include:

# Check Remote Desktop Services status
Get-Service -Name TermService | Select-Object Name, Status

# Verify RemoteApp publishing
Get-RemoteAppProgram | Where-Object {$_.Name -like "*YourApp*"}

Remember that some applications with complex UI components or hardware dependencies might not work perfectly in RemoteApp scenarios.