- Release Notes
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-026 - Delay Activity Usage
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- ST-USG-005 - Hardcoded Activity Arguments
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- ST-USG-032 - Required Tags
- ST-USG-034 - Automation Hub URL
- Variables
- Arguments
- Imported Namespaces
- Trigger-based Attended Automation
- Recording
- UI Elements
- Control Flow
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Citrix Technologies Automation
- RDP Automation
- Salesforce Automation
- SAP Automation
- VMware Horizon Automation
- Logging
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- Test Suite - Studio
- Extensions
- About extensions
- SetupExtensions tool
- Configure the UiPath Remote Plugin for custom remote applications
- Troubleshooting
- Extension for VMware Horizon
- SAP Solution Manager plugin
- Excel Add-in
- Troubleshooting
- About troubleshooting
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- Automating Applications Running Under a Different Windows User
- Validation of large Windows-legacy projects takes longer than expected
Studio User Guide
Configure the UiPath Remote Plugin for custom remote applications
With the Extension for Windows Remote Desktop you can natively generate selectors over RDP connections handled by custom remote applications that use the Microsoft RDP ActiveX control.
For example, when a custom application opens the Calculator application from the server, the selector is:
<wnd app='customapp.exe' cls='RAIL_WINDOW' title='Calculator (Remote)' />
After completing the steps described below, the selector becomes:
<wnd app='win32calc.exe' cls='CalcFrame' isremoteapp='1' title='Calculator' />
This allows you to automate the remote application.
- First, follow the steps described in Extension for Microsoft Remote Desktop and Apps to install the extension.
-
The extension updates the
Software\Microsoft\Terminal Server Client\Default\AddIns
registry from either:LocalMachine
- if the extension was installed for the entire systemCurrentUser
- if the extension was installed for a single user
- Check the Registry Editor to make sure the extension changed the registry. This is how it should look like:
- Get a reference to the PluginDLLs configuration.
-
Get the UiPath Extension for Windows Remote Desktop DLLs paths from the
Software\Microsoft\Terminal Server Client\Default\AddIns
registry key's Name subkey, from either:LocalMachine
- if the extension was installed for the entire systemCurrentUser
- if the extension was installed for a single user
- Build a comma-separated string with the DLL paths obtained in the above step.
- Update the PluginDLLs configuration with the newly computed string.
See Microsoft’s Remote Desktop ActiveX control documentation for more details.
In the code snippet below you can see an example of how to set the PluginDLLs configuration with values read from the registry:
…
// Setting the PluginDlls configuration
mstscActiveX.AdvancedSettings7.PluginDlls = GetInstalledPluginDlls();
…
// Getting the DLL paths from the Registry
private string GetInstalledPluginDlls()
{
List<string> pluginDllsPerMachine = GetInstalledPluginDllsFromKey(Registry.LocalMachine);
List<string> pluginDllsPerUser = GetInstalledPluginDllsFromKey(Registry.CurrentUser);
var allPlugins = pluginDllsPerMachine.Concat(pluginDllsPerUser).ToList();
return string.Join(",", allPlugins);
}
private List<string> GetInstalledPluginDllsFromKey(RegistryKey key)
{
List<string> pluginDlls = new List<string>();
try
{
using var regAddIns = key.OpenSubKey(@"Software\Microsoft\Terminal Server Client\Default\AddIns", false);
if (regAddIns != null)
{
foreach (var regAddIn in regAddIns.GetSubKeyNames())
{
using var regAddin = regAddIns.OpenSubKey(regAddIn, false);
var addInName = regAddin.GetValue("Name");
if (addInName != null && addInName.ToString().ToLower().EndsWith(".dll"))
{
pluginDlls.Add(addInName.ToString());
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return pluginDlls;
}
…
// Setting the PluginDlls configuration
mstscActiveX.AdvancedSettings7.PluginDlls = GetInstalledPluginDlls();
…
// Getting the DLL paths from the Registry
private string GetInstalledPluginDlls()
{
List<string> pluginDllsPerMachine = GetInstalledPluginDllsFromKey(Registry.LocalMachine);
List<string> pluginDllsPerUser = GetInstalledPluginDllsFromKey(Registry.CurrentUser);
var allPlugins = pluginDllsPerMachine.Concat(pluginDllsPerUser).ToList();
return string.Join(",", allPlugins);
}
private List<string> GetInstalledPluginDllsFromKey(RegistryKey key)
{
List<string> pluginDlls = new List<string>();
try
{
using var regAddIns = key.OpenSubKey(@"Software\Microsoft\Terminal Server Client\Default\AddIns", false);
if (regAddIns != null)
{
foreach (var regAddIn in regAddIns.GetSubKeyNames())
{
using var regAddin = regAddIns.OpenSubKey(regAddIn, false);
var addInName = regAddin.GetValue("Name");
if (addInName != null && addInName.ToString().ToLower().EndsWith(".dll"))
{
pluginDlls.Add(addInName.ToString());
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return pluginDlls;
}
UiPathRemoteRuntime.msi
installer can be downloaded from:
- Product Downloads in the UiPath Customer Portal
- Resource Center in the UiPath Automation Cloud. To access Resource Center, log in to your Automation Cloud Organization and click the Help button on the navigation bar.