Windows RemoteApps

Microsoft RDP and RDS support running single applications over an RDP connection. This technology is called RemoteApp, by Microsoft. Kasm Workspaces supports Microsoft RemoteApp whether part of a Microsoft RDS infrastructure or backed by stand-alone Windows servers managed by Kasm.

Microsoft RDS

See our RDS for more details. See the Microsoft documentation for more details on publishing RemoteApps in RDS: https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-create-collection.

Stand-alone Servers

Stand-alone Windows servers can be configured to server RemoteApps. This can be a static server, a pool of static servers, or an auto-scaled pool of servers managed by Kasm. For RemoteApps to work, the application either needs to be registered as a RemoteApp or you need to configure the server to allow RDP connections to pass the full path to the RemoteApp. Registering RemoteApps is considered more secure.

Registering a RemoteApp

The following is an example of a Microsoft Registry export file containing the registry settings needed to register Microsoft Edge as a RemoteApp.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications\Microsoft Edge]
"Name"="Microsoft Edge"
"Path"="C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
"VPath"="C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
"RequiredCommandLine"=""
"CommandLineSetting"=dword:00000001
"IconPath"="C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
"IconIndex"=dword:00000000
"ShowInTSWA"=dword:00000000

This file can be applied in one of two ways.

  1. Manually import the file reg import filename.reg

  2. Use Kasm’s File Mapping feature to map a file with the above contents to the C:\Program Files\Kasm\scripts\registry\edge_remoteapp.reg. The Kasm Desktop Service must be installed on the target server. When the service starts, it will downlaod any file mappings and apply any .reg files in the stated location.

Enabling multiple RemoteApps for a single user

By default, Windows limits users to a single instance of a RemoteApp. To overcome this limitation and allow multiple instances of a RemoteApp for a single user, you need to disable a specific group policy setting:

Use the Windows key + R shortcut to open the Run prompt.

  1. Type in gpedit.msc and click OK.

  2. Navigate to Computer Configuration.

  3. Select Administrative Templates.

  4. Choose Windows Components.

  5. Expand Remote Desktop Services.

  6. Go to Remote Desktop Session Host.

  7. Select Connections.

  8. Open the Restrict Remote Desktop Services users to a single Remote Desktop Services session setting.

  9. Set it to Disabled to enable multiple instances of a RemoteApp for a single user.

Configuring Kasm

Kasm can be configured to point to a single fixed Windows server, a pool of fixed Windows servers, or a pool of auto scaled Windows servers. We recommend watching the following Windows Guide video to get a baseline knowledge of Windows in Kasm Workspaces.

Create a Server Pool

If you want to create a pool of identical servers that Kasm can load balance users between, first Create a Pool. Then create each server following the guidance in the next session, selecting the pool you created when creating each server.

Fixed Servers

  1. In the Kasm Admin Dashboard, navigate to Infrastructure->Servers.

  2. In the Server list, click Add

  3. Check the Enabled box.

  4. Provide a friendly name.

  5. Provide an IP address or hostname for the RDS deployment.

  6. Select RDP as the Connection Type.

  7. Provide a Connection Port, RDP uses 3389 by default.

  8. Follow the Active Directory integration guidance for the Connection Username and Connection Password fields.

  9. Specify a maximum number of concurrent user sessions that the RDS deployment can support. The number should be greater than 1.

  10. Choose a Deployment Zone.

  11. Optionally specify a server Pool. Using a pool will cause Kasm to distribute users between the servers in the pool.

Create a Workspaces

  1. In the Kasm Admin Dashboard, navigate to Workspaces -> Workspaces

  2. In the Workspaces list, click Add Workspace

  3. Select Server from the Workspace Type drop down, unless you added the server to a pool in step 12 in the previous section.

  4. Provide a Friendly Name that will be displayed to users.

  5. Provide a description that will be displayed to admins.

  6. Optionally provide a URL to a thumbnail that will be displayed on the user dashboard.

  7. Check the enabled box.

  8. Select the Server/Pool from the dropdown.

  9. In the RDP Client Options dropdown, select one of:

    • Web native client to access the Windows instance using Kasm’s in browser access method.

    • RDP local client to access the Windows instance using the client endpoint’s RDP thick client software authenticated through the Kasm RDP gateway.

  10. Turn on the Enable RemoteApp setting.

  11. Provide a RemoteApp Friendly Name, which may be displayed to the user.

  12. Provide a RemoteApp Program Name/Path. Registered RemoteApp names must be prepended with double pipes, such as ||Microsoft Excel. See the Workspaces RemoteApp section for details.

  13. Provide any optional arguments to be passed to the RemoteApp program.

  14. Click Save

Developer API

The above steps work great for user requested sessions through the Kasm User interface. Developers, however, may wish to launch Kasm sessions and specify the RemoteApp to launch along with RemoteApp arguments. The Kasm Workspaces Developer API allows for this. The below example shows a JSON payload using the /api/public/request_kasm API.

{
    "api_key": "I8Cxl8UaeI1s",
    "api_key_secret": "JSEcAcYxibMKVQ1zruhsytTNlsn7OSNt",
    "user_id": "20df709dc4e544d5a4f6f0295e698664",
    "image_id": "33ee47377cb44dc184c6ed6b117d2e65",
    "enable_sharing": false,
    "connection_info": {  
    	"guac": { 
	    "type": "rdp", 
	    "settings": { 
		    "security": "any", 
		    "ignore-cert": true, 
		    "enable-font-smoothing": true, 
		    "enable-wallpaper": true, 
		    "enable-theming": true, 
		    "enable-full-window-drag": false, 
		    "enable-menu-animations": false, 
		    "resize-method": "display-update", 
		    "server-layout": "en-us-qwerty",
		    "printer-name": "Kasm", 
		    "remote-app": "||KasmLauncher",
		    "remote-app-args": "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCEL.EXE\" C:\\Users\\Public\\Documents\\example.xlsx"
	    }
	},
	"kasm_svc": {
	    "port": 4902
	} 
    } 
}