Topic
Instructions on how to setup Nintex RDP service for Terminal Server.
Instructions
1. Download and install .NET Core 3.1 Runtime (v3.1.16)
Download .NET Core 3.1 Runtime (v3.1.16) - Windows x64 Installer
2. Download and install ASP.NET Core 3.1 Runtime
Download ASP.NET Core 3.1 Runtime (v3.1.16) - Windows x64 Installer
3. Download and extract the Nintex RDP service
Sync | Secure cloud storage that protects your privacy
4. Copy the content of the folder to a location, such as, C:\Nintex\NintexRDP
5. Make sure the files are not blocked by Windows Security (to unblock run PowerShell command)
Get-ChildItem C:\Nintex\NintexRDP\*.* -Recurse | Unblock-File
6. Open the CMD window and go to the NintexRDP folder
cd \Nintex\NintexRDP
7. Check that NintexRDP works properly:
- Run dotnet Nintex.RDPService.API.dll --console
- Open an internet browser and navigate to http://localhost:5000
- You should get the Swagger UI page

8. In the CMD window type:
sc create NintexRDP binPath="C:\Nintex\NintexRDP\Nintex.RDPService.API.exe" type=own start=auto displayName="Nintex RDP service"
9. Open Services console window and check Nintex RDP service is installed.
10. Run the service.
Service configuration
Service settings can be changed in the appsettings.json file which is located in the application folder, the one which contains application binaries.
To change service configuration, edit the appsettings.json file in the service root folder and restart the service (re-run console or re-start windows service).
If a relevant Windows service is running you need to stop it before changing the configuration.
Web API configuration settings
Setting | Description |
LogFilePath | A path where text log files should be stored. |
AppSettings.RdpScreenWidth | Screen width to use for an RDP session window |
AppSettings.RdpScreenHeight | Screen height to use for an RDP session window |
AppSettings.DefaultRdpPort | Default TCP/IP port to be used for an RDP connection. It Will is ignored in case port is provided in the session start parameters. |
AppSettings. DefaultRdpWindowTitlePrefix | Optional. If provided will be used as an RDP window prefix |
AppSettings.StartupAppPath | Remote application program. The application should be added to allow remote apps list on the server. Or the server should be configured to allow all remote apps. See the ‘Remote Apps’ section below. If not actually keep it empty. Default value: C:\\program files\\Nintex\\Nintex.exe |
AppSettings. StartupAppCmdParams | Remote application command-line parameters. Actual only if ‘StartupAppPath’ is set. Default – empty. |
AppSettings. MstscRdpFilesPath | A path to store Mstsc *.rdp files. Rdp files being used to store mstsc arguments. Actual only for mstsc RDP tool. |
AppSettings.APITitle | API title to be used on swagger UI |
AppSettings.APIDescription | API description to be used on swagger UI |
AppSettings. RdpSessionSchedulerEnabled | To enable session’s scheduler should be set to ‘true’. Be default session scheduler is disabled (‘false’) |
RdpSessionSchedulerSettings. IntervalSec | Interval in seconds between session scheduler runs. Ignored in case scheduler is disabled. Set to 60 sec by default. |
RdpSessionSchedulerSettings. StartDelaySec | Delay before the first scheduler run. |
RdpSessionSchedulerSettings. RdpSessionsFile | Path to Excel/JSON file with scheduled sessions settings. See repo ‘Docs’ folder for file examples. Set to "./scheduled_rdp_sessions.json" by default. Could be changed to absolute path "c:\\Nintex_rdp\\scheduled_rdp_sessions.json" |
Kestrel.EndPoints.Http.Url | Listening http endpoint for the API web server. Default: http://localhost:5000 |
Kestrel.EndPoints.Https.Url | Listening https endpoint for the API web server. Default: http://localhost:5001 |
Session Scheduler Configuration
Application support session scheduler feature. When it is enabled, the application will automatically maintain configured RDP sessions active. If the session is canceled – the application will bring it back.
Scheduled RDP session details could be configured in a JSON file. See JSON file example in NintexRDP service folder - scheduled_rdp_sessions.json.
The JSON file contains a collection of RDP sessions to be maintained active. Each session is represented by a JSON object with properties described in the table below:
Property | Description |
MachineAddress | Required. Type: string Address of the machine to start RDP session on. Min length: 2; Max length: 256 |
UserName | Required. Type: string. User name for an RDP session |
UserPassword | Required. Type: string. User password for an RDP session. Min length: 2; Max length: 256 |
RdpPort | Optional. Type: integer TCP/IP port to be used for an RDP connection. |
RdpProtocol | Optional. Type: integer RDP protocol to use. Possible options:
|
ScreenWidth | Optional. Type: integer Screen width to use for an RDP session window. Range: 1-5000 Default: 500 (configurable in appsettings.json) |
ScreenHeight | Optional. Type: integer Screen height to use for an RDP session window. Range: 1-5000 Default: 400 (configurable in appsettings.json) |
WindowTitle | Optional. Type: string Title to use for an RDP session window. Min length: 2; Max length: 256 |
WaitBeforeStartSessionInSeconds | Optional. Type: integer The timespan in seconds to wait before the RDP session start. Range: 0-3600 Default: 0 (configurable in appsettings.json) |
SessionStartupRegistryValues | Optional. Type: list The collection of Registry keys and values to modify for Current User hive (HKEY_CURRENT_USER). |
The next application settings are related to the session scheduler:
AppSettings. RdpSessionSchedulerEnabled | To enable session’s scheduler should be set to ‘true’. Be default session scheduler is disabled (‘false’) |
RdpSessionSchedulerSettings. IntervalSec | Interval in seconds between session scheduler runs. Ignored in case scheduler is disabled. Set to 60 sec by default. |
RdpSessionSchedulerSettings. StartDelaySec | Delay before first scheduler run. |
RdpSessionSchedulerSettings. RdpSessionsFile | Path to Excel/JSON file with scheduled sessions settings. See repo ‘Docs’ folder for file examples. Set to "c:\\Nintex_rdp\\scheduled_rdp_sessions.json" by default. |
To enable session scheduler make sure the next settings are set in appsettings.json
-
The following parameter should be set
AppSettings.RdpSessionSchedulerEnabled=“true” -
The following parameter should be set to the valid path (path to excel/JSON file with scheduled session list details
RdpSessionSchedulerSettings.RdpSessionsFile=”.\\scheduled_rdp_sessions.json”
To verify session scheduler is working, check the log file – there should be an entry per each scheduler run:

Logging
To configure log file location change the following appsettings.json parameter:
-
Absolute path:
LogFilePath: “C:\\Nintex\\NintexRDP\\logs” -
Relative path: (relative to exe file location)
LogFilePath: "./logs"
Logfile entries format can be configured in NLog configuration files: nlog.Production.config.
In particular log entries format can be changed by editing the ‘Layout’ variable in nlog.Production.config.

Logfile example:

Remote Apps
FreeRdp has the following for the remote application:
/app:||<alias> or <executable path> Remote application program
/app-name:<app name> Remote application name for user interface
/app-icon:<icon path> Remote application icon for user interface
/app-cmd:<parameters> Remote application command-line parameters
/app-file:<file name> File to open with remote application
/app-guid:<app guid> Remote application GUID
Also, the same list of settings can be found here:
xfreerdp: FreeRDP X11 client | freerdp Commands | Man Pages | ManKier
FreeRdp docs mention remote application programs. What is a Remote Application Program?
RemoteApps are part of the Windows Server 2008 R2 Remote Desktop Services role. Remote Desktop Services (RDS), known as Terminal Services in Windows Server 2008 and earlier. RemoteApp (or TS RemoteApp) is a special mode of RDS, available in Windows Server 2008 R2 and later, where remote session configuration is integrated into the client operating system. Details here.
Enable the remote apps on the server
There are two options:
-
Add particular applications to the allowed remote apps list.
Applications are configured as RemoteApps using the RemoteApp Manager tool.
Details on the server configuration to host RemoteApp programs here:
TS RemoteApp Step-by-Step Guide -
Allow all remote apps
To allow unlisted remote programs to be accessible need to set the following registry key:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"fAllowUnlistedRemotePrograms"=dword:00000001
Detailed information can be found in the links below:
Error RAIL_EXEC_E_NOT_IN_ALLOWLIST When use /app · Issue #998 · FreeRDP/FreeRDP
Can RDP clients launch remote applications and not desktops
Extended RDP tool configuration with ‘StartupAppCmdParams’ settings.
RDP tool scheduled configuration example:
"AppSettings": {
"RdpScreenWidth": "1920",
"RdpScreenHeight": "1080",
"DefaultRdpPort": "3389",
"DefaultRdpWindowTitlePrefix": "Nintex",
"StartupAppPath": "C:\\Windows\\System32\\notepad.exe",
"StartupAppCmdParams": "ttt.txt",
"MstscRdpFilesPath": "",
"APITitle": "Nintex RDP Service API",
"APIDescription": "Nintex RDP Service Web API interface",
"RdpSessionSchedulerEnabled": "true"
}