RDP Minutes to Idle Timeout - Update 4

Added an option to alert if disconnected due to inactivity.
This commit is contained in:
countchappy
2017-01-16 15:14:27 -05:00
parent 5a61c6b7df
commit 80c6ce81e1
15 changed files with 133 additions and 1 deletions

View File

@@ -85,6 +85,7 @@ namespace mRemoteNG.Config.Serializers
connectionInfo.ICAEncryptionStrength = (ProtocolICA.EncryptionStrength)Enum.Parse(typeof(ProtocolICA.EncryptionStrength), (string)dataRow["ICAEncryptionStrength"]);
connectionInfo.RDPAuthenticationLevel = (ProtocolRDP.AuthenticationLevel)Enum.Parse(typeof(ProtocolRDP.AuthenticationLevel), (string)dataRow["RDPAuthenticationLevel"]);
connectionInfo.RDPMinutesToIdleTimeout = (int)dataRow["RDPMinutesToIdleTimeout"];
connectionInfo.RDPAlertIdleTimeout = (bool)dataRow["RDPAlertIdleTimeout"];
connectionInfo.LoadBalanceInfo = (string)dataRow["LoadBalanceInfo"];
connectionInfo.Colors = (ProtocolRDP.RDPColors)Enum.Parse(typeof(ProtocolRDP.RDPColors) ,(string)dataRow["Colors"]);
connectionInfo.Resolution = (ProtocolRDP.RDPResolutions)Enum.Parse(typeof(ProtocolRDP.RDPResolutions), (string)dataRow["Resolution"]);
@@ -154,6 +155,7 @@ namespace mRemoteNG.Config.Serializers
connectionInfo.Inheritance.Username = (bool)dataRow["InheritUsername"];
connectionInfo.Inheritance.ICAEncryptionStrength = (bool)dataRow["InheritICAEncryptionStrength"];
connectionInfo.Inheritance.RDPAuthenticationLevel = (bool)dataRow["InheritRDPAuthenticationLevel"];
connectionInfo.Inheritance.RDPAlertIdleTimeout = (bool)dataRow["RDPAlertIdleTimeout"];
connectionInfo.Inheritance.RDPMinutesToIdleTimeout = (bool)dataRow["RDPMinutesToIdleTimeout"];
connectionInfo.Inheritance.LoadBalanceInfo = (bool)dataRow["InheritLoadBalanceInfo"];
connectionInfo.Inheritance.PreExtApp = (bool)dataRow["InheritPreExtApp"];

View File

@@ -66,6 +66,7 @@ namespace mRemoteNG.Config.Serializers
_dataTable.Columns.Add("ICAEncryptionStrength", typeof(string));
_dataTable.Columns.Add("RDPAuthenticationLevel", typeof(string));
_dataTable.Columns.Add("RDPMinutesToIdleTimeout", typeof(int));
_dataTable.Columns.Add("RDPAlertIdleTimeout", typeof(bool));
_dataTable.Columns.Add("Colors", typeof(string));
_dataTable.Columns.Add("Resolution", typeof(string));
_dataTable.Columns.Add("DisplayWallpaper", typeof(bool));
@@ -130,6 +131,7 @@ namespace mRemoteNG.Config.Serializers
_dataTable.Columns.Add("InheritICAEncryptionStrength", typeof(bool));
_dataTable.Columns.Add("InheritRDPAuthenticationLevel", typeof(bool));
_dataTable.Columns.Add("InheritRDPMinutesToIdleTimeout", typeof(bool));
_dataTable.Columns.Add("InheritRDPAlertIdleTimeout", typeof(bool));
_dataTable.Columns.Add("InheritUsername", typeof(bool));
_dataTable.Columns.Add("InheritPreExtApp", typeof(bool));
_dataTable.Columns.Add("InheritPostExtApp", typeof(bool));
@@ -203,6 +205,7 @@ namespace mRemoteNG.Config.Serializers
dataRow["ICAEncryptionStrength"] = connectionInfo.ICAEncryptionStrength;
dataRow["RDPAuthenticationLevel"] = connectionInfo.RDPAuthenticationLevel;
//dataRow["RDPMinutesToIdleTimeout"] = connectionInfo.RDPMinutesToIdleTimeout;
//dataRow["RDPAlertIdleTimeout"] = connectionInfo.RDPAlertIdleTimeout;
dataRow["LoadBalanceInfo"] = connectionInfo.LoadBalanceInfo;
dataRow["Colors"] = connectionInfo.Colors;
dataRow["Resolution"] = connectionInfo.Resolution;
@@ -274,6 +277,7 @@ namespace mRemoteNG.Config.Serializers
dataRow["InheritICAEncryptionStrength"] = connectionInfo.Inheritance.ICAEncryptionStrength;
dataRow["InheritRDPAuthenticationLevel"] = connectionInfo.Inheritance.RDPAuthenticationLevel;
//dataRow["InheritRDPMinutesToIdleTimeout"] = connectionInfo.Inheritance.RDPMinutesToIdleTimeout;
//dataRow["InheritRDPAlertIdleTimeout"] = connectionInfo.Inheritance.RDPAlertIdleTimeout;
dataRow["InheritLoadBalanceInfo"] = connectionInfo.Inheritance.LoadBalanceInfo;
dataRow["InheritPreExtApp"] = connectionInfo.Inheritance.PreExtApp;
dataRow["InheritPostExtApp"] = connectionInfo.Inheritance.PostExtApp;
@@ -330,6 +334,7 @@ namespace mRemoteNG.Config.Serializers
dataRow["InheritICAEncryptionStrength"] = false;
dataRow["InheritRDPAuthenticationLevel"] = false;
//dataRow["InheritRDPMinutesToIdleTimeout"] = false;
//dataRow["InheritRDPAlertIdleTimeout"] = false;
dataRow["InheritLoadBalanceInfo"] = false;
dataRow["InheritPreExtApp"] = false;
dataRow["InheritPostExtApp"] = false;

View File

@@ -68,6 +68,7 @@ namespace mRemoteNG.Config.Serializers
element.Add(new XAttribute("ICAEncryptionStrength", connectionInfo.ICAEncryptionStrength));
element.Add(new XAttribute("RDPAuthenticationLevel", connectionInfo.RDPAuthenticationLevel));
element.Add(new XAttribute("RDPMinutesToIdleTimeout", connectionInfo.RDPMinutesToIdleTimeout));
element.Add(new XAttribute("RDPAlertIdleTimeout", connectionInfo.RDPAlertIdleTimeout));
element.Add(new XAttribute("LoadBalanceInfo", connectionInfo.LoadBalanceInfo));
element.Add(new XAttribute("Colors", connectionInfo.Colors));
element.Add(new XAttribute("Resolution", connectionInfo.Resolution));
@@ -161,6 +162,7 @@ namespace mRemoteNG.Config.Serializers
element.Add(new XAttribute("InheritICAEncryptionStrength", connectionInfo.Inheritance.ICAEncryptionStrength.ToString()));
element.Add(new XAttribute("InheritRDPAuthenticationLevel", connectionInfo.Inheritance.RDPAuthenticationLevel.ToString()));
element.Add(new XAttribute("InheritRDPMinutesToIdleTimeout", connectionInfo.Inheritance.RDPMinutesToIdleTimeout.ToString()));
element.Add(new XAttribute("InheritRDPAlertIdleTimeout", connectionInfo.Inheritance.RDPAlertIdleTimeout.ToString()));
element.Add(new XAttribute("InheritLoadBalanceInfo", connectionInfo.Inheritance.LoadBalanceInfo.ToString()));
element.Add(new XAttribute("InheritPreExtApp", connectionInfo.Inheritance.PreExtApp.ToString()));
element.Add(new XAttribute("InheritPostExtApp", connectionInfo.Inheritance.PostExtApp.ToString()));
@@ -217,6 +219,7 @@ namespace mRemoteNG.Config.Serializers
element.Add(new XAttribute("InheritICAEncryptionStrength", false.ToString()));
element.Add(new XAttribute("InheritRDPAuthenticationLevel", false.ToString()));
element.Add(new XAttribute("InheritRDPMinutesToIdleTimeout", false.ToString()));
element.Add(new XAttribute("InheritRDPAlertIdleTimeout", false.ToString()));
element.Add(new XAttribute("InheritLoadBalanceInfo", false.ToString()));
element.Add(new XAttribute("InheritPreExtApp", false.ToString()));
element.Add(new XAttribute("InheritPostExtApp", false.ToString()));

View File

@@ -489,6 +489,8 @@ namespace mRemoteNG.Config.Serializers
connectionInfo.Inheritance.SoundQuality = bool.Parse(xmlnode.Attributes["InheritSoundQuality"].Value);
connectionInfo.RDPMinutesToIdleTimeout = Convert.ToInt32(xmlnode.Attributes["RDPMinutesToIdleTimeout"]?.Value ?? "0");
connectionInfo.Inheritance.RDPMinutesToIdleTimeout = bool.Parse(xmlnode.Attributes["InheritRDPMinutesToIdleTimeout"]?.Value ?? "False");
connectionInfo.RDPAlertIdleTimeout = bool.Parse(xmlnode.Attributes["RDPAlertIdleTimeout"]?.Value ?? "False");
connectionInfo.Inheritance.RDPAlertIdleTimeout = bool.Parse(xmlnode.Attributes["InheritRDPAlertIdleTimeout"]?.Value ?? "False");
}
}
catch (Exception ex)

View File

@@ -31,6 +31,7 @@ namespace mRemoteNG.Connection
private bool _useConsoleSession;
private ProtocolRDP.AuthenticationLevel _rdpAuthenticationLevel;
private int _rdpMinutesToIdleTimeout;
private bool _rdpAlertIdleTimeout;
private string _loadBalanceInfo;
private HTTPBase.RenderingEngine _renderingEngine;
private bool _useCredSsp;
@@ -234,6 +235,14 @@ namespace mRemoteNG.Connection
get { return GetPropertyValue("RDPMinutesToIdleTimeout", _rdpMinutesToIdleTimeout); }
set { SetField(ref _rdpMinutesToIdleTimeout, value, "RDPMinutesToIdleTimeout"); }
}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDPAlertIdleTimeout"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDPAlertIdleTimeout")]
public bool RDPAlertIdleTimeout
{
get { return GetPropertyValue("RDPAlertIdleTimeout", _rdpAlertIdleTimeout); }
set { SetField(ref _rdpAlertIdleTimeout, value, "RDPAlertIdleTimeout"); }
}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameLoadBalanceInfo"),

View File

@@ -249,6 +249,7 @@ namespace mRemoteNG.Connection
UseConsoleSession = Settings.Default.ConDefaultUseConsoleSession;
RDPAuthenticationLevel = (ProtocolRDP.AuthenticationLevel) Enum.Parse(typeof(ProtocolRDP.AuthenticationLevel), Settings.Default.ConDefaultRDPAuthenticationLevel);
RDPMinutesToIdleTimeout = Settings.Default.ConDefaultRDPMinutesToIdleTimeout;
RDPAlertIdleTimeout = Settings.Default.ConDefaultRDPAlertIdleTimeout;
LoadBalanceInfo = Settings.Default.ConDefaultLoadBalanceInfo;
RenderingEngine = (HTTPBase.RenderingEngine) Enum.Parse(typeof(HTTPBase.RenderingEngine), Settings.Default.ConDefaultRenderingEngine);
UseCredSsp = Settings.Default.ConDefaultUseCredSsp;

View File

@@ -90,6 +90,11 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDPMinutesToIdleTimeout"),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RDPMinutesToIdleTimeout { get; set; }
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDPAlertIdleTimeout"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDPAlertIdleTimeout"),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))] public bool RDPAlertIdleTimeout { get; set; }
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameLoadBalanceInfo"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionLoadBalanceInfo"),

View File

@@ -30,6 +30,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
private ConnectionInfo _connectionInfo;
private bool _loginComplete;
private bool _redirectKeys;
private bool _alertOnIdleDisconnect;
#endregion
#region Properties
@@ -129,11 +130,17 @@ namespace mRemoteNG.Connection.Protocol.RDP
SetCredentials();
SetResolution();
_rdpClient.FullScreenTitle = _connectionInfo.Name;
_alertOnIdleDisconnect = _connectionInfo.RDPAlertIdleTimeout;
// Set the timeout to the default (zero) if it is out of bounds.
if (_connectionInfo.RDPMinutesToIdleTimeout < 0 || _connectionInfo.RDPMinutesToIdleTimeout > 240)
if (_connectionInfo.RDPMinutesToIdleTimeout < 0)
{
_rdpClient.AdvancedSettings2.MinutesToIdleTimeout = Settings.Default.ConDefaultRDPMinutesToIdleTimeout;
} // Set the timeout to the max (240) if it is out of bounds.
else if (_connectionInfo.RDPMinutesToIdleTimeout > 240)
{
_rdpClient.AdvancedSettings2.MinutesToIdleTimeout = 240;
}
else
{
@@ -639,6 +646,13 @@ namespace mRemoteNG.Connection.Protocol.RDP
private void RDPEvent_OnIdleTimeoutNotification()
{
Close(); //Simply close the RDP Session if the idle timeout has been triggered.
if (_alertOnIdleDisconnect)
{
string message = "The " + _connectionInfo.Name + " session was disconnected due to inactivity";
const string caption = "Session Disconnected";
MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

View File

@@ -2374,5 +2374,29 @@ namespace mRemoteNG {
this["InhDefaultRDPMinutesToIdleTimeout"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ConDefaultRDPAlertIdleTimeout {
get {
return ((bool)(this["ConDefaultRDPAlertIdleTimeout"]));
}
set {
this["ConDefaultRDPAlertIdleTimeout"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool InhDefaultRDPAlertIdleTimeout {
get {
return ((bool)(this["InhDefaultRDPAlertIdleTimeout"]));
}
set {
this["InhDefaultRDPAlertIdleTimeout"] = value;
}
}
}
}

View File

@@ -590,5 +590,11 @@
<Setting Name="InhDefaultRDPMinutesToIdleTimeout" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultRDPAlertIdleTimeout" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultRDPAlertIdleTimeout" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -4117,6 +4117,15 @@ namespace mRemoteNG {
}
}
/// <summary>
/// Looks up a localized string similar to Select whether to receive an alert after the RDP session disconnects due to inactivity.
/// </summary>
internal static string strPropertyDescriptionRDPAlertIdleTimeout {
get {
return ResourceManager.GetString("strPropertyDescriptionRDPAlertIdleTimeout", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The number of minutes for the RDP session to sit idle before automatically disconnecting (for no limit use 0).
/// </summary>
@@ -4612,6 +4621,15 @@ namespace mRemoteNG {
}
}
/// <summary>
/// Looks up a localized string similar to Alert on Idle Disconnect.
/// </summary>
internal static string strPropertyNameRDPAlertIdleTimeout {
get {
return ResourceManager.GetString("strPropertyNameRDPAlertIdleTimeout", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Minutes to Idle.
/// </summary>

View File

@@ -2427,4 +2427,10 @@ mRemoteNG will now quit and begin with the installation.</value>
<data name="strPropertyNameRDPMinutesToIdleTimeout" xml:space="preserve">
<value>Minutes to Idle</value>
</data>
<data name="strPropertyDescriptionRDPAlertIdleTimeout" xml:space="preserve">
<value>Select whether to receive an alert after the RDP session disconnects due to inactivity</value>
</data>
<data name="strPropertyNameRDPAlertIdleTimeout" xml:space="preserve">
<value>Alert on Idle Disconnect</value>
</data>
</root>

View File

@@ -47,6 +47,7 @@
<xs:attribute name="ICAEncryptionStrength" type="xs:string" use="required" />
<xs:attribute name="RDPAuthenticationLevel" type="xs:string" use="required" />
<xs:attribute name="RDPMinutesToIdleTimeout" type="xs:int" use="required" />
<xs:attribute name="RDPAlertIdleTimeout" type="xs:boolean" use="required" />
<xs:attribute name="LoadBalanceInfo" type="xs:string" use="required" />
<xs:attribute name="Colors" type="xs:string" use="required" />
<xs:attribute name="Resolution" type="xs:string" use="required" />
@@ -116,6 +117,7 @@
<xs:attribute name="InheritICAEncryptionStrength" type="xs:boolean" use="optional" />
<xs:attribute name="InheritRDPAuthenticationLevel" type="xs:boolean" use="optional" />
<xs:attribute name="InheritRDPMinutesToIdleTimeout" type="xs:boolean" use="optional" />
<xs:attribute name="InheritRDPAlertIdleTimeout" type="xs:boolean" use="optional" />
<xs:attribute name="InheritLoadBalanceInfo" type="xs:boolean" use="optional" />
<xs:attribute name="InheritPreExtApp" type="xs:boolean" use="optional" />
<xs:attribute name="InheritPostExtApp" type="xs:boolean" use="optional" />

View File

@@ -813,6 +813,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -871,6 +872,10 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCProxyUsername");
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
if (conI.RDPMinutesToIdleTimeout <= 0)
{
strHide.Add("RDPAlertIdleTimeout");
}
if (conI.RDGatewayUsageMethod == ProtocolRDP.RDGatewayUsageMethod.Never)
{
strHide.Add("RDGatewayDomain");
@@ -912,6 +917,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -956,6 +962,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -999,6 +1006,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1043,6 +1051,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1088,6 +1097,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1133,6 +1143,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1178,6 +1189,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1221,6 +1233,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1260,6 +1273,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1302,6 +1316,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDGatewayUsername");
strHide.Add("RDPAuthenticationLevel");
strHide.Add("RDPMinutesToIdleTimeout");
strHide.Add("RDPAlertIdleTimeout");
strHide.Add("LoadBalanceInfo");
strHide.Add("RedirectDiskDrives");
strHide.Add("RedirectKeys");
@@ -1385,6 +1400,8 @@ namespace mRemoteNG.UI.Window
strHide.Add("RDPAuthenticationLevel");
if (conI.Inheritance.RDPMinutesToIdleTimeout)
strHide.Add("RDPMinutesToIdleTimeout");
if (conI.Inheritance.RDPAlertIdleTimeout)
strHide.Add("RDPAlertIdleTimeout");
if (conI.Inheritance.LoadBalanceInfo)
strHide.Add("LoadBalanceInfo");
if (conI.Inheritance.Username)

View File

@@ -415,6 +415,18 @@
<setting name="InhDefaultRDPAuthenticationLevel" serializeAs="String">
<value>False</value>
</setting>
<setting name="ConDefaultRDPMinutesToIdleTimeout" serializeAs="String">
<value>0</value>
</setting>
<setting name="InhDefaultRDPMinutesToIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
<setting name="ConDefaultRDPAlertIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
<setting name="InhDefaultRDPAlertIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
<setting name="UVNCSCPort" serializeAs="String">
<value>5500</value>
</setting>
@@ -610,6 +622,12 @@
<setting name="InhDefaultRDPMinutesToIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
<setting name="ConDefaultRDPAlertIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
<setting name="InhDefaultRDPAlertIdleTimeout" serializeAs="String">
<value>False</value>
</setting>
</mRemoteNG.Settings>
</userSettings>
<applicationSettings>