From 98dd4515027775f43e2ca778148ae7721a9d72c1 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 26 May 2020 20:48:58 +0200 Subject: [PATCH 1/3] implemented missing RDP settings #1770 --- CHANGELOG.md | 3 +- ...vConnectionsDeserializerMremotengFormat.cs | 56 +++++++++++++++ ...CsvConnectionsSerializerMremotengFormat.cs | 4 +- .../MsSql/DataTableDeserializer.cs | 8 +++ .../MsSql/DataTableSerializer.cs | 16 +++++ .../Xml/XmlConnectionNodeSerializer27.cs | 24 +++++++ .../Xml/XmlConnectionsDeserializer.cs | 8 +++ .../Connection/AbstractConnectionRecord.cs | 47 ++++++++++++ .../Connection/ConnectionInfoInheritance.cs | 24 +++++++ .../Protocol/RDP/RDPPerformanceFlags.cs | 20 +++--- .../Connection/Protocol/RDP/RdpProtocol6.cs | 26 ++++--- mRemoteV1/Documentation/mssql_db_setup.sql | 7 ++ mRemoteV1/Documentation/mysql_db_setup.sql | 4 ++ .../Resources/Language/Language.Designer.cs | 72 +++++++++++++++++++ mRemoteV1/Resources/Language/Language.resx | 24 +++++++ 15 files changed, 319 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 942d48b8b..4ac644e7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] ### Added +- #1770: Added missing RDP performance settings - #545: Option to minimize to system tray on closing -- #283: Support for native PowerShell remoting as new protocol - #420: SSH tunneling implemented +- #283: Support for native PowerShell remoting as new protocol ### Changed - #1767: Turned about window into a simple popup form - #1766: Converted components check page into options page diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs index 064773a21..a7086d279 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs @@ -245,6 +245,34 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.EnableDesktopComposition = value; } + if (headers.Contains("DisableFullWindowDrag")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableFullWindowDrag")], out value)) + connectionRecord.DisableFullWindowDrag = value; + } + + if (headers.Contains("DisableMenuAnimations")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableMenuAnimations")], out value)) + connectionRecord.DisableMenuAnimations = value; + } + + if (headers.Contains("DisableCursorShadow")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorShadow")], out value)) + connectionRecord.DisableCursorShadow = value; + } + + if (headers.Contains("DisableCursorBlinking")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorBlinking")], out value)) + connectionRecord.DisableCursorBlinking = value; + } + if (headers.Contains("CacheBitmaps")) { bool value; @@ -442,6 +470,34 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.Inheritance.EnableDesktopComposition = value; } + if (headers.Contains("InheritDisableFullWindowDrag")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableFullWindowDrag")], out value)) + connectionRecord.Inheritance.DisableFullWindowDrag = value; + } + + if (headers.Contains("InheritDisableMenuAnimations")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableMenuAnimations")], out value)) + connectionRecord.Inheritance.DisableMenuAnimations = value; + } + + if (headers.Contains("InheritDisableCursorShadow")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorShadow")], out value)) + connectionRecord.Inheritance.DisableCursorShadow = value; + } + + if (headers.Contains("InheritDisableCursorBlinking")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorBlinking")], out value)) + connectionRecord.Inheritance.DisableCursorBlinking = value; + } + if (headers.Contains("InheritDomain")) { bool value; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs index b49091599..574fe1b1a 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs @@ -57,7 +57,7 @@ namespace mRemoteNG.Config.Serializers.Csv sb.Append("Domain;"); sb.Append("Hostname;Port;VmId;Protocol;SSHTunnelConnectionName;SSHOptions;PuttySession;ConnectToConsole;UseCredSsp;UseVmId;UseEnhancedMode;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;" + - "LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;" + + "LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;DisableFullWindowDrag;DisableMenuAnimations;DisableCursorShadow;DisableCursorBlinking;" + "CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;" + "PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;" + "VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;" + @@ -65,7 +65,7 @@ namespace mRemoteNG.Config.Serializers.Csv if (_saveFilter.SaveInheritance) sb.Append("InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;" + - "InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;" + + "InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDisableFullWindowDrag;InheritDisableMenuAnimations;InheritDisableCursorShadow;InheritDisableCursorBlinking;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;" + "InheritProtocol;InheritSSHTunnelConnectionName;InheritSSHOptions;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;" + "InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;" + "InheritUseConsoleSession;InheritUseCredSsp;InheritUseVmId;InheritUseEnhancedMode;InheritVmId;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;" + diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs index d435735be..e22c5dc0a 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs @@ -119,6 +119,10 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.DisplayThemes = (bool)dataRow["DisplayThemes"]; connectionInfo.EnableFontSmoothing = (bool)dataRow["EnableFontSmoothing"]; connectionInfo.EnableDesktopComposition = (bool)dataRow["EnableDesktopComposition"]; + connectionInfo.DisableFullWindowDrag = (bool)dataRow["DisableFullWindowDrag"]; + connectionInfo.DisableMenuAnimations = (bool)dataRow["DisableMenuAnimations"]; + connectionInfo.DisableCursorShadow = (bool)dataRow["DisableCursorShadow"]; + connectionInfo.DisableCursorBlinking = (bool)dataRow["DisableCursorBlinking"]; connectionInfo.CacheBitmaps = (bool)dataRow["CacheBitmaps"]; connectionInfo.RedirectDiskDrives = (bool)dataRow["RedirectDiskDrives"]; connectionInfo.RedirectPorts = (bool)dataRow["RedirectPorts"]; @@ -177,6 +181,10 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.Inheritance.DisplayWallpaper = (bool)dataRow["InheritDisplayWallpaper"]; connectionInfo.Inheritance.EnableFontSmoothing = (bool)dataRow["InheritEnableFontSmoothing"]; connectionInfo.Inheritance.EnableDesktopComposition = (bool)dataRow["InheritEnableDesktopComposition"]; + connectionInfo.Inheritance.DisableFullWindowDrag = (bool)dataRow["InheritDisableFullWindowDrag"]; + connectionInfo.Inheritance.DisableMenuAnimations = (bool)dataRow["InheritDisableMenuAnimations"]; + connectionInfo.Inheritance.DisableCursorShadow = (bool)dataRow["InheritDisableCursorShadow"]; + connectionInfo.Inheritance.DisableCursorBlinking = (bool)dataRow["InheritDisableCursorBlinking"]; connectionInfo.Inheritance.Domain = (bool)dataRow["InheritDomain"]; connectionInfo.Inheritance.Icon = (bool)dataRow["InheritIcon"]; connectionInfo.Inheritance.Panel = (bool)dataRow["InheritPanel"]; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 7b9a7a255..6ebe08638 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -125,6 +125,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("DisplayThemes", typeof(bool)); dataTable.Columns.Add("EnableFontSmoothing", typeof(bool)); dataTable.Columns.Add("EnableDesktopComposition", typeof(bool)); + dataTable.Columns.Add("DisableFullWindowDrag", typeof(bool)); + dataTable.Columns.Add("DisableMenuAnimations", typeof(bool)); + dataTable.Columns.Add("DisableCursorShadow", typeof(bool)); + dataTable.Columns.Add("DisableCursorBlinking", typeof(bool)); dataTable.Columns.Add("CacheBitmaps", typeof(bool)); dataTable.Columns.Add("RedirectDiskDrives", typeof(bool)); dataTable.Columns.Add("RedirectPorts", typeof(bool)); @@ -164,6 +168,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("InheritDisplayWallpaper", typeof(bool)); dataTable.Columns.Add("InheritEnableFontSmoothing", typeof(bool)); dataTable.Columns.Add("InheritEnableDesktopComposition", typeof(bool)); + dataTable.Columns.Add("InheritDisableFullWindowDrag", typeof(bool)); + dataTable.Columns.Add("InheritDisableMenuAnimations", typeof(bool)); + dataTable.Columns.Add("InheritDisableCursorShadow", typeof(bool)); + dataTable.Columns.Add("InheritDisableCursorBlinking", typeof(bool)); dataTable.Columns.Add("InheritDomain", typeof(bool)); dataTable.Columns.Add("InheritIcon", typeof(bool)); dataTable.Columns.Add("InheritPanel", typeof(bool)); @@ -297,6 +305,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["DisplayThemes"].Equals(connectionInfo.DisplayThemes) && dataRow["EnableFontSmoothing"].Equals(connectionInfo.EnableFontSmoothing) && dataRow["EnableDesktopComposition"].Equals(connectionInfo.EnableDesktopComposition) && + dataRow["DisableFullWindowDrag"].Equals(connectionInfo.DisableFullWindowDrag) && + dataRow["DisableMenuAnimations"].Equals(connectionInfo.DisableMenuAnimations) && + dataRow["DisableCursorShadow"].Equals(connectionInfo.DisableCursorShadow) && + dataRow["DisableCursorBlinking"].Equals(connectionInfo.DisableCursorBlinking) && dataRow["CacheBitmaps"].Equals(connectionInfo.CacheBitmaps) && dataRow["RedirectDiskDrives"].Equals(connectionInfo.RedirectDiskDrives) && dataRow["RedirectPorts"].Equals(connectionInfo.RedirectPorts) && @@ -343,6 +355,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritDisplayWallpaper"].Equals(connectionInfo.Inheritance.DisplayWallpaper) && dataRow["InheritEnableFontSmoothing"].Equals(connectionInfo.Inheritance.EnableFontSmoothing) && dataRow["InheritEnableDesktopComposition"].Equals(connectionInfo.Inheritance.EnableDesktopComposition) && + dataRow["InheritDisableFullWindowDrag"].Equals(connectionInfo.Inheritance.DisableFullWindowDrag) && + dataRow["InheritDisableMenuAnimations"].Equals(connectionInfo.Inheritance.DisableMenuAnimations) && + dataRow["InheritDisableCursorShadow"].Equals(connectionInfo.Inheritance.DisableCursorShadow) && + dataRow["InheritDisableCursorBlinking"].Equals(connectionInfo.Inheritance.DisableCursorBlinking) && dataRow["InheritDomain"].Equals(connectionInfo.Inheritance.Domain) && dataRow["InheritIcon"].Equals(connectionInfo.Inheritance.Icon) && dataRow["InheritPanel"].Equals(connectionInfo.Inheritance.Panel) && diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs index 0d00a088d..43d4f3eda 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs @@ -101,6 +101,14 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.EnableFontSmoothing.ToString().ToLowerInvariant())); element.Add(new XAttribute("EnableDesktopComposition", connectionInfo.EnableDesktopComposition.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableFullWindowDrag", + connectionInfo.DisableFullWindowDrag.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableMenuAnimations", + connectionInfo.DisableMenuAnimations.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableCursorShadow", + connectionInfo.DisableCursorShadow.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableCursorBlinking", + connectionInfo.DisableCursorBlinking.ToString().ToLowerInvariant())); element.Add(new XAttribute("CacheBitmaps", connectionInfo.CacheBitmaps.ToString().ToLowerInvariant())); element.Add(new XAttribute("RedirectDiskDrives", connectionInfo.RedirectDiskDrives.ToString().ToLowerInvariant())); @@ -183,6 +191,18 @@ namespace mRemoteNG.Config.Serializers.Xml element.Add(new XAttribute("InheritEnableDesktopComposition", connectionInfo .Inheritance.EnableDesktopComposition.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableFullWindowDrag", + connectionInfo + .Inheritance.DisableFullWindowDrag.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableMenuAnimations", + connectionInfo + .Inheritance.DisableMenuAnimations.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableCursorShadow", + connectionInfo + .Inheritance.DisableCursorShadow.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableCursorBlinking", + connectionInfo + .Inheritance.DisableCursorBlinking.ToString().ToLowerInvariant())); element.Add(new XAttribute("InheritDomain", connectionInfo.Inheritance.Domain.ToString().ToLowerInvariant())); element.Add( @@ -316,6 +336,10 @@ namespace mRemoteNG.Config.Serializers.Xml element.Add(new XAttribute("InheritDisplayWallpaper", falseString)); element.Add(new XAttribute("InheritEnableFontSmoothing", falseString)); element.Add(new XAttribute("InheritEnableDesktopComposition", falseString)); + element.Add(new XAttribute("InheritDisableFullWindowDrag", falseString)); + element.Add(new XAttribute("InheritDisableMenuAnimations", falseString)); + element.Add(new XAttribute("InheritDisableCursorShadow", falseString)); + element.Add(new XAttribute("InheritDisableCursorBlinking", falseString)); element.Add(new XAttribute("InheritDomain", falseString)); element.Add(new XAttribute("InheritIcon", falseString)); element.Add(new XAttribute("InheritPanel", falseString)); diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs index dcd6ffa5c..c1e8ed514 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs @@ -545,6 +545,10 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.RdpVersion = xmlnode.GetAttributeAsEnum("RdpVersion", RdpVersion.Highest); connectionInfo.SSHTunnelConnectionName = xmlnode.GetAttributeAsString("SSHTunnelConnectionName"); connectionInfo.SSHOptions = xmlnode.GetAttributeAsString("SSHOptions"); + connectionInfo.DisableFullWindowDrag = xmlnode.GetAttributeAsBool("DisableFullWindowDrag"); + connectionInfo.DisableMenuAnimations = xmlnode.GetAttributeAsBool("DisableMenuAnimations"); + connectionInfo.DisableCursorShadow = xmlnode.GetAttributeAsBool("DisableCursorShadow"); + connectionInfo.DisableCursorBlinking = xmlnode.GetAttributeAsBool("DisableCursorBlinking"); connectionInfo.Inheritance.RedirectClipboard = xmlnode.GetAttributeAsBool("InheritRedirectClipboard"); connectionInfo.Inheritance.Favorite = xmlnode.GetAttributeAsBool("InheritFavorite"); connectionInfo.Inheritance.RdpVersion = xmlnode.GetAttributeAsBool("InheritRdpVersion"); @@ -553,6 +557,10 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.Inheritance.UseEnhancedMode = xmlnode.GetAttributeAsBool("InheritUseEnhancedMode"); connectionInfo.Inheritance.SSHTunnelConnectionName = xmlnode.GetAttributeAsBool("InheritSSHTunnelConnectionName"); connectionInfo.Inheritance.SSHOptions = xmlnode.GetAttributeAsBool("InheritSSHOptions"); + connectionInfo.Inheritance.DisableFullWindowDrag = xmlnode.GetAttributeAsBool("InheritDisableFullWindowDrag"); + connectionInfo.Inheritance.DisableMenuAnimations = xmlnode.GetAttributeAsBool("InheritDisableMenuAnimations"); + connectionInfo.Inheritance.DisableCursorShadow = xmlnode.GetAttributeAsBool("InheritDisableCursorShadow"); + connectionInfo.Inheritance.DisableCursorBlinking = xmlnode.GetAttributeAsBool("InheritDisableCursorBlinking"); } } catch (Exception ex) diff --git a/mRemoteV1/Connection/AbstractConnectionRecord.cs b/mRemoteV1/Connection/AbstractConnectionRecord.cs index 6b97759be..6dc7a1cd8 100644 --- a/mRemoteV1/Connection/AbstractConnectionRecord.cs +++ b/mRemoteV1/Connection/AbstractConnectionRecord.cs @@ -59,6 +59,10 @@ namespace mRemoteNG.Connection private bool _displayThemes; private bool _enableFontSmoothing; private bool _enableDesktopComposition; + private bool _disableFullWindowDrag; + private bool _disableMenuAnimations; + private bool _disableCursorShadow; + private bool _disableCursorBlinking; private bool _redirectKeys; private bool _redirectDiskDrives; @@ -536,6 +540,49 @@ namespace mRemoteNG.Connection set => SetField(ref _enableDesktopComposition, value, "EnableDesktopComposition"); } + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableFullWindowDrag)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableFullWindowDrag)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableFullWindowDrag + { + get => GetPropertyValue("DisableFullWindowDrag", _disableFullWindowDrag); + set => SetField(ref _disableFullWindowDrag, value, "DisableFullWindowDrag"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableMenuAnimations)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableMenuAnimations)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableMenuAnimations + { + get => GetPropertyValue("DisableMenuAnimations", _disableMenuAnimations); + set => SetField(ref _disableMenuAnimations, value, "DisableMenuAnimations"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableCursorShadow + { + get => GetPropertyValue("DisableCursorShadow", _disableCursorShadow); + set => SetField(ref _disableCursorShadow, value, "DisableCursorShadow"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableCursorBlinking + { + get => GetPropertyValue("DisableCursorBlinking", _disableCursorBlinking); + set => SetField(ref _disableCursorBlinking, value, "DisableCursorBlinking"); + } #endregion #region Redirect diff --git a/mRemoteV1/Connection/ConnectionInfoInheritance.cs b/mRemoteV1/Connection/ConnectionInfoInheritance.cs index 37c6b8846..6665005dd 100644 --- a/mRemoteV1/Connection/ConnectionInfoInheritance.cs +++ b/mRemoteV1/Connection/ConnectionInfoInheritance.cs @@ -277,6 +277,30 @@ namespace mRemoteNG.Connection TypeConverter(typeof(MiscTools.YesNoTypeConverter))] public bool EnableDesktopComposition { get; set; } + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableFullWindowDrag)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableFullWindowDrag)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableFullWindowDrag { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableMenuAnimations)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableMenuAnimations)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableMenuAnimations { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableCursorShadow { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableCursorBlinking)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableCursorBlinking)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableCursorBlinking { get; set; } + #endregion #region Redirect diff --git a/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs b/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs index 59924179c..6e8eafcd3 100644 --- a/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs +++ b/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs @@ -7,25 +7,25 @@ namespace mRemoteNG.Connection.Protocol.RDP [Description("strRDPDisableWallpaper")] DisableWallpaper = 0x1, -// [Description("strRDPDisableFullWindowdrag")] -// DisableFullWindowDrag = 0x2, - -// [Description("strRDPDisableMenuAnimations")] -// DisableMenuAnimations = 0x4, + [Description("strRDPDisableFullWindowdrag")] + DisableFullWindowDrag = 0x2, + + [Description("strRDPDisableMenuAnimations")] + DisableMenuAnimations = 0x4, [Description("strRDPDisableThemes")] DisableThemes = 0x8, -// [Description("strRDPDisableCursorShadow")] -// DisableCursorShadow = 0x20, + [Description("strRDPDisableCursorShadow")] + DisableCursorShadow = 0x20, -// [Description("strRDPDisableCursorblinking")] -// DisableCursorBlinking = 0x40, + [Description("strRDPDisableCursorblinking")] + DisableCursorBlinking = 0x40, [Description("strRDPEnableFontSmoothing")] EnableFontSmoothing = 0x80, [Description("strRDPEnableDesktopComposition")] - EnableDesktopComposition = 0x100 + EnableDesktopComposition = 0x100, } } \ No newline at end of file diff --git a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs index afd9af2c8..ed724a1fe 100644 --- a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs +++ b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs @@ -603,25 +603,29 @@ namespace mRemoteNG.Connection.Protocol.RDP { var pFlags = 0; if (connectionInfo.DisplayThemes == false) - { pFlags += (int)RDPPerformanceFlags.DisableThemes; - } - + if (connectionInfo.DisplayWallpaper == false) - { pFlags += (int)RDPPerformanceFlags.DisableWallpaper; - } - + if (connectionInfo.EnableFontSmoothing) - { pFlags += (int)RDPPerformanceFlags.EnableFontSmoothing; - } if (connectionInfo.EnableDesktopComposition) - { pFlags += (int)RDPPerformanceFlags.EnableDesktopComposition; - } - + + if (connectionInfo.DisableFullWindowDrag) + pFlags += (int)RDPPerformanceFlags.DisableFullWindowDrag; + + if (connectionInfo.DisableMenuAnimations) + pFlags += (int)RDPPerformanceFlags.DisableMenuAnimations; + + if (connectionInfo.DisableCursorShadow) + pFlags += (int)RDPPerformanceFlags.DisableCursorShadow; + + if (connectionInfo.DisableCursorBlinking) + pFlags += (int)RDPPerformanceFlags.DisableCursorBlinking; + _rdpClient.AdvancedSettings2.PerformanceFlags = pFlags; } catch (Exception ex) diff --git a/mRemoteV1/Documentation/mssql_db_setup.sql b/mRemoteV1/Documentation/mssql_db_setup.sql index b92685496..04085234a 100644 --- a/mRemoteV1/Documentation/mssql_db_setup.sql +++ b/mRemoteV1/Documentation/mssql_db_setup.sql @@ -45,6 +45,13 @@ CREATE TABLE [dbo].[tblCons] ( DisplayThemes bit NOT NULL, EnableFontSmoothing bit NOT NULL, EnableDesktopComposition bit NOT NULL, + + + DisableFullWindowDrag bit NOT NULL, + DisableMenuAnimations bit NOT NULL, + DisableCursorShadow bit NOT NULL, + DisableCursorBlinking bit NOT NULL, + CacheBitmaps bit NOT NULL, RedirectDiskDrives bit NOT NULL, RedirectPorts bit NOT NULL, diff --git a/mRemoteV1/Documentation/mysql_db_setup.sql b/mRemoteV1/Documentation/mysql_db_setup.sql index be28001ab..1946d2428 100644 --- a/mRemoteV1/Documentation/mysql_db_setup.sql +++ b/mRemoteV1/Documentation/mysql_db_setup.sql @@ -48,6 +48,10 @@ CREATE TABLE `tblCons` ( `DisplayThemes` tinyint(1) NOT NULL, `EnableFontSmoothing` tinyint(1) NOT NULL, `EnableDesktopComposition` tinyint(1) NOT NULL, + `DisableFullWindowDrag` tinyint(1) NOT NULL, + `DisableMenuAnimations` tinyint(1) NOT NULL, + `DisableCursorShadow` tinyint(1) NOT NULL, + `DisableCursorBlinking` tinyint(1) NOT NULL, `CacheBitmaps` tinyint(1) NOT NULL, `RedirectDiskDrives` tinyint(1) NOT NULL, `RedirectPorts` tinyint(1) NOT NULL, diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs index 0b721a4a4..5c40ede24 100644 --- a/mRemoteV1/Resources/Language/Language.Designer.cs +++ b/mRemoteV1/Resources/Language/Language.Designer.cs @@ -4800,6 +4800,42 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Determines whether cursor flashes should be disabled.. + /// + internal static string strPropertyDescriptionDisableCursorBlinking { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableCursorBlinking", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether a mouse shadow should be visible.. + /// + internal static string strPropertyDescriptionDisableCursorShadow { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableCursorShadow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether window content is displayed when you drag the window to a new location.. + /// + internal static string strPropertyDescriptionDisableFullWindowDrag { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableFullWindowDrag", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether menus and windows can be displayed with animation effects in the remote session.. + /// + internal static string strPropertyDescriptionDisableMenuAnimations { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableMenuAnimations", resourceCulture); + } + } + /// /// Looks up a localized string similar to Select yes if the theme of the remote host should be displayed.. /// @@ -5403,6 +5439,42 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Disable Cursor Blinking. + /// + internal static string strPropertyNameDisableCursorBlinking { + get { + return ResourceManager.GetString("strPropertyNameDisableCursorBlinking", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Cursor Shadow. + /// + internal static string strPropertyNameDisableCursorShadow { + get { + return ResourceManager.GetString("strPropertyNameDisableCursorShadow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Full Window Drag. + /// + internal static string strPropertyNameDisableFullWindowDrag { + get { + return ResourceManager.GetString("strPropertyNameDisableFullWindowDrag", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Menu Animations. + /// + internal static string strPropertyNameDisableMenuAnimations { + get { + return ResourceManager.GetString("strPropertyNameDisableMenuAnimations", resourceCulture); + } + } + /// /// Looks up a localized string similar to Display Themes. /// diff --git a/mRemoteV1/Resources/Language/Language.resx b/mRemoteV1/Resources/Language/Language.resx index 163c4dc02..7345514bd 100644 --- a/mRemoteV1/Resources/Language/Language.resx +++ b/mRemoteV1/Resources/Language/Language.resx @@ -2876,4 +2876,28 @@ Development Channel includes Alphas, Betas & Release Candidates. License + + Determines whether cursor flashes should be disabled. + + + Determines whether a mouse shadow should be visible. + + + Determines whether window content is displayed when you drag the window to a new location. + + + Determines whether menus and windows can be displayed with animation effects in the remote session. + + + Disable Cursor Blinking + + + Disable Cursor Shadow + + + Disable Full Window Drag + + + Disable Menu Animations + \ No newline at end of file From 7ed4bf46d73ddb7c4cf16a6f3b9fba8ab1cd6a4f Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 26 May 2020 22:28:31 +0200 Subject: [PATCH 2/3] fixed failing tests --- ...ectionsDeserializerMremotengFormatTests.cs | 4 + ...izableConnectionInfoAllPropertiesOfType.cs | 4 + .../ConfigWindowGeneralTests.cs | 4 + ...vConnectionsDeserializerMremotengFormat.cs | 419 ++++++++---------- ...CsvConnectionsSerializerMremotengFormat.cs | 8 + .../MsSql/DataTableSerializer.cs | 16 + mRemoteV1/Connection/ConnectionInfo.cs | 37 +- mRemoteV1/Properties/Settings.Designer.cs | 110 ++++- mRemoteV1/Properties/Settings.settings | 27 ++ mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd | 8 + mRemoteV1/app.config | 30 +- 11 files changed, 405 insertions(+), 262 deletions(-) diff --git a/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs b/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs index 35a7e8862..b9b3f0d68 100644 --- a/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs +++ b/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs @@ -109,6 +109,10 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv DisplayThemes = true, EnableFontSmoothing = true, EnableDesktopComposition = true, + DisableFullWindowDrag = false, + DisableMenuAnimations = false, + DisableCursorShadow = false, + DisableCursorBlinking = false, CacheBitmaps = true, RedirectDiskDrives = true, RedirectPorts = true, diff --git a/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs b/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs index 31fe21c7d..9923f5d91 100644 --- a/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs +++ b/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs @@ -37,6 +37,10 @@ public TType DisplayThemes { get; set; } public TType EnableFontSmoothing { get; set; } public TType EnableDesktopComposition { get; set; } + public TType DisableFullWindowDrag { get; set; } + public TType DisableMenuAnimations { get; set; } + public TType DisableCursorShadow { get; set; } + public TType DisableCursorBlinking { get; set; } public TType RedirectKeys { get; set; } public TType RedirectDiskDrives { get; set; } public TType RedirectPrinters { get; set; } diff --git a/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs b/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs index 51f47b172..4e0eb1e00 100644 --- a/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs +++ b/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs @@ -282,6 +282,10 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests nameof(ConnectionInfo.DisplayThemes), nameof(ConnectionInfo.EnableFontSmoothing), nameof(ConnectionInfo.EnableDesktopComposition), + nameof(ConnectionInfo.DisableFullWindowDrag), + nameof(ConnectionInfo.DisableMenuAnimations), + nameof(ConnectionInfo.DisableCursorShadow), + nameof(ConnectionInfo.DisableCursorBlinking), nameof(ConnectionInfo.RedirectKeys), nameof(ConnectionInfo.RedirectDiskDrives), nameof(ConnectionInfo.RedirectPrinters), diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs index a7086d279..94c3cd785 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs @@ -86,330 +86,344 @@ namespace mRemoteNG.Config.Serializers.Csv ? new ConnectionInfo(nodeId) : new ContainerInfo(nodeId); - connectionRecord.Name = headers.Contains("Name") ? connectionCsv[headers.IndexOf("Name")] : ""; - connectionRecord.Description = - headers.Contains("Description") ? connectionCsv[headers.IndexOf("Description")] : ""; - connectionRecord.Icon = headers.Contains("Icon") ? connectionCsv[headers.IndexOf("Icon")] : ""; - connectionRecord.Panel = headers.Contains("Panel") ? connectionCsv[headers.IndexOf("Panel")] : ""; - connectionRecord.Username = headers.Contains("Username") ? connectionCsv[headers.IndexOf("Username")] : ""; - connectionRecord.Password = headers.Contains("Password") ? connectionCsv[headers.IndexOf("Password")] : ""; - connectionRecord.Domain = headers.Contains("Domain") ? connectionCsv[headers.IndexOf("Domain")] : ""; - connectionRecord.Hostname = headers.Contains("Hostname") ? connectionCsv[headers.IndexOf("Hostname")] : ""; - connectionRecord.VmId = headers.Contains("VmId") ? connectionCsv[headers.IndexOf("VmId")] : ""; - connectionRecord.SSHOptions = - headers.Contains("SSHOptions") ? connectionCsv[headers.IndexOf("SSHOptions")] : ""; - connectionRecord.SSHTunnelConnectionName = - headers.Contains("SSHTunnelConnectionName") ? connectionCsv[headers.IndexOf("SSHTunnelConnectionName")] : ""; - connectionRecord.PuttySession = headers.Contains("PuttySession") ? connectionCsv[headers.IndexOf("PuttySession")] : ""; + connectionRecord.Name = headers.Contains("Name") + ? connectionCsv[headers.IndexOf("Name")] + : ""; + + connectionRecord.Description = headers.Contains("Description") + ? connectionCsv[headers.IndexOf("Description")] + : ""; + + connectionRecord.Icon = headers.Contains("Icon") + ? connectionCsv[headers.IndexOf("Icon")] + : ""; + + connectionRecord.Panel = headers.Contains("Panel") + ? connectionCsv[headers.IndexOf("Panel")] + : ""; + + connectionRecord.Username = headers.Contains("Username") + ? connectionCsv[headers.IndexOf("Username")] + : ""; + + connectionRecord.Password = headers.Contains("Password") + ? connectionCsv[headers.IndexOf("Password")] + : ""; + + connectionRecord.Domain = headers.Contains("Domain") + ? connectionCsv[headers.IndexOf("Domain")] + : ""; + + connectionRecord.Hostname = headers.Contains("Hostname") + ? connectionCsv[headers.IndexOf("Hostname")] + : ""; + + connectionRecord.VmId = headers.Contains("VmId") + ? connectionCsv[headers.IndexOf("VmId")] : ""; + + connectionRecord.SSHOptions =headers.Contains("SSHOptions") + ? connectionCsv[headers.IndexOf("SSHOptions")] + : ""; + + connectionRecord.SSHTunnelConnectionName = headers.Contains("SSHTunnelConnectionName") + ? connectionCsv[headers.IndexOf("SSHTunnelConnectionName")] + : ""; + + connectionRecord.PuttySession = headers.Contains("PuttySession") + ? connectionCsv[headers.IndexOf("PuttySession")] + : ""; + connectionRecord.LoadBalanceInfo = headers.Contains("LoadBalanceInfo") ? connectionCsv[headers.IndexOf("LoadBalanceInfo")] : ""; - connectionRecord.PreExtApp = headers.Contains("PreExtApp") ? connectionCsv[headers.IndexOf("PreExtApp")] : ""; + + connectionRecord.PreExtApp = headers.Contains("PreExtApp") + ? connectionCsv[headers.IndexOf("PreExtApp")] + : ""; + connectionRecord.PostExtApp = - headers.Contains("PostExtApp") ? connectionCsv[headers.IndexOf("PostExtApp")] : ""; + headers.Contains("PostExtApp") + ? connectionCsv[headers.IndexOf("PostExtApp")] + : ""; + connectionRecord.MacAddress = - headers.Contains("MacAddress") ? connectionCsv[headers.IndexOf("MacAddress")] : ""; + headers.Contains("MacAddress") + ? connectionCsv[headers.IndexOf("MacAddress")] + : ""; + connectionRecord.UserField = - headers.Contains("UserField") ? connectionCsv[headers.IndexOf("UserField")] : ""; - connectionRecord.ExtApp = headers.Contains("ExtApp") ? connectionCsv[headers.IndexOf("ExtApp")] : ""; + headers.Contains("UserField") + ? connectionCsv[headers.IndexOf("UserField")] + : ""; + + connectionRecord.ExtApp = headers.Contains("ExtApp") + ? connectionCsv[headers.IndexOf("ExtApp")] : ""; + connectionRecord.VNCProxyUsername = headers.Contains("VNCProxyUsername") ? connectionCsv[headers.IndexOf("VNCProxyUsername")] : ""; + connectionRecord.VNCProxyPassword = headers.Contains("VNCProxyPassword") ? connectionCsv[headers.IndexOf("VNCProxyPassword")] : ""; + connectionRecord.RDGatewayUsername = headers.Contains("RDGatewayUsername") ? connectionCsv[headers.IndexOf("RDGatewayUsername")] : ""; + connectionRecord.RDGatewayPassword = headers.Contains("RDGatewayPassword") ? connectionCsv[headers.IndexOf("RDGatewayPassword")] : ""; + connectionRecord.RDGatewayDomain = headers.Contains("RDGatewayDomain") ? connectionCsv[headers.IndexOf("RDGatewayDomain")] : ""; - connectionRecord.VNCProxyIP = - headers.Contains("VNCProxyIP") ? connectionCsv[headers.IndexOf("VNCProxyIP")] : ""; + + connectionRecord.VNCProxyIP = headers.Contains("VNCProxyIP") + ? connectionCsv[headers.IndexOf("VNCProxyIP")] + : ""; + connectionRecord.RDGatewayHostname = headers.Contains("RDGatewayHostname") ? connectionCsv[headers.IndexOf("RDGatewayHostname")] : ""; if (headers.Contains("Protocol")) { - ProtocolType protocolType; - if (Enum.TryParse(connectionCsv[headers.IndexOf("Protocol")], out protocolType)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("Protocol")], out ProtocolType protocolType)) connectionRecord.Protocol = protocolType; } if (headers.Contains("Port")) { - int port; - if (int.TryParse(connectionCsv[headers.IndexOf("Port")], out port)) + if (int.TryParse(connectionCsv[headers.IndexOf("Port")], out int port)) connectionRecord.Port = port; } if (headers.Contains("ConnectToConsole")) { - bool useConsoleSession; - if (bool.TryParse(connectionCsv[headers.IndexOf("ConnectToConsole")], out useConsoleSession)) + if (bool.TryParse(connectionCsv[headers.IndexOf("ConnectToConsole")], out bool useConsoleSession)) connectionRecord.UseConsoleSession = useConsoleSession; } if (headers.Contains("UseCredSsp")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("UseCredSsp")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("UseCredSsp")], out bool value)) connectionRecord.UseCredSsp = value; } if (headers.Contains("UseVmId")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("UseVmId")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("UseVmId")], out bool value)) connectionRecord.UseVmId = value; } if (headers.Contains("UseEnhancedMode")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("UseEnhancedMode")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("UseEnhancedMode")], out bool value)) connectionRecord.UseEnhancedMode = value; } if (headers.Contains("RenderingEngine")) { - HTTPBase.RenderingEngine value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("RenderingEngine")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("RenderingEngine")], out HTTPBase.RenderingEngine value)) connectionRecord.RenderingEngine = value; } if (headers.Contains("ICAEncryptionStrength")) { - IcaProtocol.EncryptionStrength value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("ICAEncryptionStrength")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("ICAEncryptionStrength")], out IcaProtocol.EncryptionStrength value)) connectionRecord.ICAEncryptionStrength = value; } if (headers.Contains("RDPAuthenticationLevel")) { - AuthenticationLevel value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("RDPAuthenticationLevel")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("RDPAuthenticationLevel")], out AuthenticationLevel value)) connectionRecord.RDPAuthenticationLevel = value; } if (headers.Contains("Colors")) { - RDPColors value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("Colors")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("Colors")], out RDPColors value)) connectionRecord.Colors = value; } if (headers.Contains("Resolution")) { - RDPResolutions value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("Resolution")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("Resolution")], out RDPResolutions value)) connectionRecord.Resolution = value; } if (headers.Contains("AutomaticResize")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("AutomaticResize")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("AutomaticResize")], out bool value)) connectionRecord.AutomaticResize = value; } if (headers.Contains("DisplayWallpaper")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisplayWallpaper")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisplayWallpaper")], out bool value)) connectionRecord.DisplayWallpaper = value; } if (headers.Contains("DisplayThemes")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisplayThemes")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisplayThemes")], out bool value)) connectionRecord.DisplayThemes = value; } if (headers.Contains("EnableFontSmoothing")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("EnableFontSmoothing")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("EnableFontSmoothing")], out bool value)) connectionRecord.EnableFontSmoothing = value; } if (headers.Contains("EnableDesktopComposition")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("EnableDesktopComposition")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("EnableDesktopComposition")], out bool value)) connectionRecord.EnableDesktopComposition = value; } if (headers.Contains("DisableFullWindowDrag")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisableFullWindowDrag")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableFullWindowDrag")], out bool value)) connectionRecord.DisableFullWindowDrag = value; } if (headers.Contains("DisableMenuAnimations")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisableMenuAnimations")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableMenuAnimations")], out bool value)) connectionRecord.DisableMenuAnimations = value; } if (headers.Contains("DisableCursorShadow")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorShadow")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorShadow")], out bool value)) connectionRecord.DisableCursorShadow = value; } if (headers.Contains("DisableCursorBlinking")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorBlinking")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorBlinking")], out bool value)) connectionRecord.DisableCursorBlinking = value; } if (headers.Contains("CacheBitmaps")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("CacheBitmaps")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("CacheBitmaps")], out bool value)) connectionRecord.CacheBitmaps = value; } if (headers.Contains("RedirectDiskDrives")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectDiskDrives")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectDiskDrives")], out bool value)) connectionRecord.RedirectDiskDrives = value; } if (headers.Contains("RedirectPorts")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectPorts")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectPorts")], out bool value)) connectionRecord.RedirectPorts = value; } if (headers.Contains("RedirectPrinters")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectPrinters")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectPrinters")], out bool value)) connectionRecord.RedirectPrinters = value; } if (headers.Contains("RedirectClipboard")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectClipboard")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectClipboard")], out bool value)) connectionRecord.RedirectClipboard = value; } if (headers.Contains("RedirectSmartCards")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectSmartCards")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectSmartCards")], out bool value)) connectionRecord.RedirectSmartCards = value; } if (headers.Contains("RedirectSound")) { - RDPSounds value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("RedirectSound")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("RedirectSound")], out RDPSounds value)) connectionRecord.RedirectSound = value; } if (headers.Contains("RedirectAudioCapture")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectAudioCapture")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectAudioCapture")], out bool value)) connectionRecord.RedirectAudioCapture = value; } if (headers.Contains("RedirectKeys")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectKeys")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectKeys")], out bool value)) connectionRecord.RedirectKeys = value; } if (headers.Contains("VNCCompression")) { - ProtocolVNC.Compression value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCCompression")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCCompression")], out ProtocolVNC.Compression value)) connectionRecord.VNCCompression = value; } if (headers.Contains("VNCEncoding")) { - ProtocolVNC.Encoding value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCEncoding")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCEncoding")], out ProtocolVNC.Encoding value)) connectionRecord.VNCEncoding = value; } if (headers.Contains("VNCAuthMode")) { - ProtocolVNC.AuthMode value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCAuthMode")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCAuthMode")], out ProtocolVNC.AuthMode value)) connectionRecord.VNCAuthMode = value; } if (headers.Contains("VNCProxyType")) { - ProtocolVNC.ProxyType value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCProxyType")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCProxyType")], out ProtocolVNC.ProxyType value)) connectionRecord.VNCProxyType = value; } if (headers.Contains("VNCProxyPort")) { - int value; - if (int.TryParse(connectionCsv[headers.IndexOf("VNCProxyPort")], out value)) + if (int.TryParse(connectionCsv[headers.IndexOf("VNCProxyPort")], out int value)) connectionRecord.VNCProxyPort = value; } if (headers.Contains("VNCColors")) { - ProtocolVNC.Colors value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCColors")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCColors")], out ProtocolVNC.Colors value)) connectionRecord.VNCColors = value; } if (headers.Contains("VNCSmartSizeMode")) { - ProtocolVNC.SmartSizeMode value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCSmartSizeMode")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("VNCSmartSizeMode")], out ProtocolVNC.SmartSizeMode value)) connectionRecord.VNCSmartSizeMode = value; } if (headers.Contains("VNCViewOnly")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("VNCViewOnly")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("VNCViewOnly")], out bool value)) connectionRecord.VNCViewOnly = value; } if (headers.Contains("RDGatewayUsageMethod")) { - RDGatewayUsageMethod value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUsageMethod")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUsageMethod")], out RDGatewayUsageMethod value)) connectionRecord.RDGatewayUsageMethod = value; } if (headers.Contains("RDGatewayUseConnectionCredentials")) { - RDGatewayUseConnectionCredentials value; - if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUseConnectionCredentials")], out value)) + if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUseConnectionCredentials")], out RDGatewayUseConnectionCredentials value)) connectionRecord.RDGatewayUseConnectionCredentials = value; } if (headers.Contains("Favorite")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("Favorite")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("Favorite")], out bool value)) connectionRecord.Favorite = value; } @@ -423,471 +437,404 @@ namespace mRemoteNG.Config.Serializers.Csv if (headers.Contains("InheritCacheBitmaps")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritCacheBitmaps")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritCacheBitmaps")], out bool value)) connectionRecord.Inheritance.CacheBitmaps = value; } if (headers.Contains("InheritColors")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritColors")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritColors")], out bool value)) connectionRecord.Inheritance.Colors = value; } if (headers.Contains("InheritDescription")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDescription")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDescription")], out bool value)) connectionRecord.Inheritance.Description = value; } if (headers.Contains("InheritDisplayThemes")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisplayThemes")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisplayThemes")], out bool value)) connectionRecord.Inheritance.DisplayThemes = value; } if (headers.Contains("InheritDisplayWallpaper")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisplayWallpaper")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisplayWallpaper")], out bool value)) connectionRecord.Inheritance.DisplayWallpaper = value; } if (headers.Contains("InheritEnableFontSmoothing")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritEnableFontSmoothing")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritEnableFontSmoothing")], out bool value)) connectionRecord.Inheritance.EnableFontSmoothing = value; } if (headers.Contains("InheritEnableDesktopComposition")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritEnableDesktopComposition")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritEnableDesktopComposition")], out bool value)) connectionRecord.Inheritance.EnableDesktopComposition = value; } if (headers.Contains("InheritDisableFullWindowDrag")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableFullWindowDrag")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableFullWindowDrag")], out bool value)) connectionRecord.Inheritance.DisableFullWindowDrag = value; } if (headers.Contains("InheritDisableMenuAnimations")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableMenuAnimations")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableMenuAnimations")], out bool value)) connectionRecord.Inheritance.DisableMenuAnimations = value; } if (headers.Contains("InheritDisableCursorShadow")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorShadow")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorShadow")], out bool value)) connectionRecord.Inheritance.DisableCursorShadow = value; } if (headers.Contains("InheritDisableCursorBlinking")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorBlinking")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorBlinking")], out bool value)) connectionRecord.Inheritance.DisableCursorBlinking = value; } if (headers.Contains("InheritDomain")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDomain")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDomain")], out bool value)) connectionRecord.Inheritance.Domain = value; } if (headers.Contains("InheritIcon")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritIcon")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritIcon")], out bool value)) connectionRecord.Inheritance.Icon = value; } if (headers.Contains("InheritPanel")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPanel")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPanel")], out bool value)) connectionRecord.Inheritance.Panel = value; } if (headers.Contains("InheritPassword")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPassword")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPassword")], out bool value)) connectionRecord.Inheritance.Password = value; } if (headers.Contains("InheritPort")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPort")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPort")], out bool value)) connectionRecord.Inheritance.Port = value; } if (headers.Contains("InheritProtocol")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritProtocol")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritProtocol")], out bool value)) connectionRecord.Inheritance.Protocol = value; } if (headers.Contains("InheritSSHTunnelConnectionName")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSSHTunnelConnectionName")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSSHTunnelConnectionName")], out bool value)) connectionRecord.Inheritance.SSHTunnelConnectionName = value; } if (headers.Contains("InheritSSHOptions")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSSHOptions")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSSHOptions")], out bool value)) connectionRecord.Inheritance.SSHOptions = value; } if (headers.Contains("InheritPuttySession")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPuttySession")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPuttySession")], out bool value)) connectionRecord.Inheritance.PuttySession = value; } if (headers.Contains("InheritRedirectDiskDrives")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectDiskDrives")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectDiskDrives")], out bool value)) connectionRecord.Inheritance.RedirectDiskDrives = value; } if (headers.Contains("InheritRedirectKeys")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectKeys")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectKeys")], out bool value)) connectionRecord.Inheritance.RedirectKeys = value; } if (headers.Contains("InheritRedirectPorts")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectPorts")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectPorts")], out bool value)) connectionRecord.Inheritance.RedirectPorts = value; } if (headers.Contains("InheritRedirectPrinters")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectPrinters")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectPrinters")], out bool value)) connectionRecord.Inheritance.RedirectPrinters = value; } if (headers.Contains("InheritRedirectClipboard")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectClipboard")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectClipboard")], out bool value)) connectionRecord.Inheritance.RedirectClipboard = value; } if (headers.Contains("InheritRedirectSmartCards")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectSmartCards")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectSmartCards")], out bool value)) connectionRecord.Inheritance.RedirectSmartCards = value; } if (headers.Contains("InheritRedirectSound")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectSound")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectSound")], out bool value)) connectionRecord.Inheritance.RedirectSound = value; } if (headers.Contains("InheritResolution")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritResolution")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritResolution")], out bool value)) connectionRecord.Inheritance.Resolution = value; } if (headers.Contains("InheritAutomaticResize")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritAutomaticResize")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritAutomaticResize")], out bool value)) connectionRecord.Inheritance.AutomaticResize = value; } if (headers.Contains("InheritUseConsoleSession")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseConsoleSession")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseConsoleSession")], out bool value)) connectionRecord.Inheritance.UseConsoleSession = value; } if (headers.Contains("InheritUseCredSsp")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseCredSsp")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseCredSsp")], out bool value)) connectionRecord.Inheritance.UseCredSsp = value; } if (headers.Contains("InheritUseVmId")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseVmId")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseVmId")], out bool value)) connectionRecord.Inheritance.UseVmId = value; } if (headers.Contains("InheritUseEnhancedMode")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseEnhancedMode")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseEnhancedMode")], out bool value)) connectionRecord.Inheritance.UseEnhancedMode = value; } if (headers.Contains("InheritRenderingEngine")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRenderingEngine")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRenderingEngine")], out bool value)) connectionRecord.Inheritance.RenderingEngine = value; } if (headers.Contains("InheritUsername")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUsername")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUsername")], out bool value)) connectionRecord.Inheritance.Username = value; } if (headers.Contains("InheritVmId")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVmId")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVmId")], out bool value)) connectionRecord.Inheritance.VmId = value; } if (headers.Contains("InheritICAEncryptionStrength")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritICAEncryptionStrength")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritICAEncryptionStrength")], out bool value)) connectionRecord.Inheritance.ICAEncryptionStrength = value; } if (headers.Contains("InheritRDPAuthenticationLevel")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPAuthenticationLevel")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPAuthenticationLevel")], out bool value)) connectionRecord.Inheritance.RDPAuthenticationLevel = value; } if (headers.Contains("InheritLoadBalanceInfo")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritLoadBalanceInfo")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritLoadBalanceInfo")], out bool value)) connectionRecord.Inheritance.LoadBalanceInfo = value; } if (headers.Contains("InheritPreExtApp")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPreExtApp")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPreExtApp")], out bool value)) connectionRecord.Inheritance.PreExtApp = value; } if (headers.Contains("InheritPostExtApp")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPostExtApp")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritPostExtApp")], out bool value)) connectionRecord.Inheritance.PostExtApp = value; } if (headers.Contains("InheritMacAddress")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritMacAddress")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritMacAddress")], out bool value)) connectionRecord.Inheritance.MacAddress = value; } if (headers.Contains("InheritUserField")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUserField")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUserField")], out bool value)) connectionRecord.Inheritance.UserField = value; } if (headers.Contains("InheritFavorite")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritFavorite")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritFavorite")], out bool value)) connectionRecord.Inheritance.Favorite = value; } if (headers.Contains("InheritExtApp")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritExtApp")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritExtApp")], out bool value)) connectionRecord.Inheritance.ExtApp = value; } if (headers.Contains("InheritVNCCompression")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCCompression")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCCompression")], out bool value)) connectionRecord.Inheritance.VNCCompression = value; } if (headers.Contains("InheritVNCEncoding")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCEncoding")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCEncoding")], out bool value)) connectionRecord.Inheritance.VNCEncoding = value; } if (headers.Contains("InheritVNCAuthMode")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCAuthMode")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCAuthMode")], out bool value)) connectionRecord.Inheritance.VNCAuthMode = value; } if (headers.Contains("InheritVNCProxyType")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyType")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyType")], out bool value)) connectionRecord.Inheritance.VNCProxyType = value; } if (headers.Contains("InheritVNCProxyIP")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyIP")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyIP")], out bool value)) connectionRecord.Inheritance.VNCProxyIP = value; } if (headers.Contains("InheritVNCProxyPort")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyPort")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyPort")], out bool value)) connectionRecord.Inheritance.VNCProxyPort = value; } if (headers.Contains("InheritVNCProxyUsername")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyUsername")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyUsername")], out bool value)) connectionRecord.Inheritance.VNCProxyUsername = value; } if (headers.Contains("InheritVNCProxyPassword")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyPassword")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCProxyPassword")], out bool value)) connectionRecord.Inheritance.VNCProxyPassword = value; } if (headers.Contains("InheritVNCColors")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCColors")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCColors")], out bool value)) connectionRecord.Inheritance.VNCColors = value; } if (headers.Contains("InheritVNCSmartSizeMode")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCSmartSizeMode")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCSmartSizeMode")], out bool value)) connectionRecord.Inheritance.VNCSmartSizeMode = value; } if (headers.Contains("InheritVNCViewOnly")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCViewOnly")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritVNCViewOnly")], out bool value)) connectionRecord.Inheritance.VNCViewOnly = value; } if (headers.Contains("InheritRDGatewayUsageMethod")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayUsageMethod")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayUsageMethod")], out bool value)) connectionRecord.Inheritance.RDGatewayUsageMethod = value; } if (headers.Contains("InheritRDGatewayHostname")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayHostname")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayHostname")], out bool value)) connectionRecord.Inheritance.RDGatewayHostname = value; } if (headers.Contains("InheritRDGatewayUseConnectionCredentials")) { - bool value; if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayUseConnectionCredentials")], - out value)) + out bool value)) connectionRecord.Inheritance.RDGatewayUseConnectionCredentials = value; } if (headers.Contains("InheritRDGatewayUsername")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayUsername")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayUsername")], out bool value)) connectionRecord.Inheritance.RDGatewayUsername = value; } if (headers.Contains("InheritRDGatewayPassword")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayPassword")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayPassword")], out bool value)) connectionRecord.Inheritance.RDGatewayPassword = value; } if (headers.Contains("InheritRDGatewayDomain")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayDomain")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDGatewayDomain")], out bool value)) connectionRecord.Inheritance.RDGatewayDomain = value; } if (headers.Contains("InheritRDPAlertIdleTimeout")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPAlertIdleTimeout")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPAlertIdleTimeout")], out bool value)) connectionRecord.Inheritance.RDPAlertIdleTimeout = value; } if (headers.Contains("InheritRDPMinutesToIdleTimeout")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPMinutesToIdleTimeout")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRDPMinutesToIdleTimeout")], out bool value)) connectionRecord.Inheritance.RDPMinutesToIdleTimeout = value; } if (headers.Contains("InheritSoundQuality")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSoundQuality")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritSoundQuality")], out bool value)) connectionRecord.Inheritance.SoundQuality = value; } if (headers.Contains("InheritRedirectAudioCapture")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectAudioCapture")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectAudioCapture")], out bool value)) connectionRecord.Inheritance.RedirectAudioCapture = value; } if (headers.Contains("InheritRdpVersion")) { - bool value; - if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRdpVersion")], out value)) + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRdpVersion")], out bool value)) connectionRecord.Inheritance.RdpVersion = value; } diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs index 574fe1b1a..38f243b45 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs @@ -137,6 +137,10 @@ namespace mRemoteNG.Config.Serializers.Csv .Append(FormatForCsv(con.DisplayThemes)) .Append(FormatForCsv(con.EnableFontSmoothing)) .Append(FormatForCsv(con.EnableDesktopComposition)) + .Append(FormatForCsv(con.DisableFullWindowDrag)) + .Append(FormatForCsv(con.DisableMenuAnimations)) + .Append(FormatForCsv(con.DisableCursorShadow)) + .Append(FormatForCsv(con.DisableCursorBlinking)) .Append(FormatForCsv(con.CacheBitmaps)) .Append(FormatForCsv(con.RedirectDiskDrives)) .Append(FormatForCsv(con.RedirectPorts)) @@ -182,6 +186,10 @@ namespace mRemoteNG.Config.Serializers.Csv .Append(FormatForCsv(con.Inheritance.DisplayWallpaper)) .Append(FormatForCsv(con.Inheritance.EnableFontSmoothing)) .Append(FormatForCsv(con.Inheritance.EnableDesktopComposition)) + .Append(FormatForCsv(con.Inheritance.DisableFullWindowDrag)) + .Append(FormatForCsv(con.Inheritance.DisableMenuAnimations)) + .Append(FormatForCsv(con.Inheritance.DisableCursorShadow)) + .Append(FormatForCsv(con.Inheritance.DisableCursorBlinking)) .Append(FormatForCsv(con.Inheritance.Domain)) .Append(FormatForCsv(con.Inheritance.Icon)) .Append(FormatForCsv(con.Inheritance.Panel)) diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 6ebe08638..8a79a728d 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -422,6 +422,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritDisplayWallpaper"].Equals(false) && dataRow["InheritEnableFontSmoothing"].Equals(false) && dataRow["InheritEnableDesktopComposition"].Equals(false) && + dataRow["InheritDisableFullWindowDrag"].Equals(false) && + dataRow["InheritDisableMenuAnimations"].Equals(false) && + dataRow["InheritDisableCursorShadow"].Equals(false) && + dataRow["InheritDisableCursorBlinking"].Equals(false) && dataRow["InheritDomain"].Equals(false) && dataRow["InheritIcon"].Equals(false) && dataRow["InheritPanel"].Equals(false) && @@ -538,6 +542,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["DisplayThemes"] = connectionInfo.DisplayThemes; dataRow["EnableFontSmoothing"] = connectionInfo.EnableFontSmoothing; dataRow["EnableDesktopComposition"] = connectionInfo.EnableDesktopComposition; + dataRow["DisableFullWindowDrag"] = connectionInfo.DisableFullWindowDrag; + dataRow["DisableMenuAnimations"] = connectionInfo.DisableMenuAnimations; + dataRow["DisableCursorShadow"] = connectionInfo.DisableCursorShadow; + dataRow["DisableCursorBlinking"] = connectionInfo.DisableCursorBlinking; dataRow["CacheBitmaps"] = connectionInfo.CacheBitmaps; dataRow["RedirectDiskDrives"] = connectionInfo.RedirectDiskDrives; dataRow["RedirectPorts"] = connectionInfo.RedirectPorts; @@ -584,6 +592,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritDisplayWallpaper"] = connectionInfo.Inheritance.DisplayWallpaper; dataRow["InheritEnableFontSmoothing"] = connectionInfo.Inheritance.EnableFontSmoothing; dataRow["InheritEnableDesktopComposition"] = connectionInfo.Inheritance.EnableDesktopComposition; + dataRow["InheritDisableFullWindowDrag"] = connectionInfo.Inheritance.DisableFullWindowDrag; + dataRow["InheritDisableMenuAnimations"] = connectionInfo.Inheritance.DisableMenuAnimations; + dataRow["InheritDisableCursorShadow"] = connectionInfo.Inheritance.DisableCursorShadow; + dataRow["InheritDisableCursorBlinking"] = connectionInfo.Inheritance.DisableCursorBlinking; dataRow["InheritDomain"] = connectionInfo.Inheritance.Domain; dataRow["InheritIcon"] = connectionInfo.Inheritance.Icon; dataRow["InheritPanel"] = connectionInfo.Inheritance.Panel; @@ -649,6 +661,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritDisplayWallpaper"] = false; dataRow["InheritEnableFontSmoothing"] = false; dataRow["InheritEnableDesktopComposition"] = false; + dataRow["InheritDisableFullWindowDrag"] = false; + dataRow["InheritDisableMenuAnimations"] = false; + dataRow["InheritDisableCursorShadow"] = false; + dataRow["InheritDisableCursorBlinking"] = false; dataRow["InheritDomain"] = false; dataRow["InheritIcon"] = false; dataRow["InheritPanel"] = false; diff --git a/mRemoteV1/Connection/ConnectionInfo.cs b/mRemoteV1/Connection/ConnectionInfo.cs index 654d777db..27d593196 100644 --- a/mRemoteV1/Connection/ConnectionInfo.cs +++ b/mRemoteV1/Connection/ConnectionInfo.cs @@ -300,16 +300,13 @@ namespace mRemoteNG.Connection ExtApp = Settings.Default.ConDefaultExtApp; Port = 0; PuttySession = Settings.Default.ConDefaultPuttySession; - ICAEncryptionStrength = (IcaProtocol.EncryptionStrength)Enum.Parse( - typeof(IcaProtocol.EncryptionStrength), Settings.Default.ConDefaultICAEncryptionStrength); + ICAEncryptionStrength = (IcaProtocol.EncryptionStrength)Enum.Parse(typeof(IcaProtocol.EncryptionStrength), Settings.Default.ConDefaultICAEncryptionStrength); UseConsoleSession = Settings.Default.ConDefaultUseConsoleSession; - RDPAuthenticationLevel = (AuthenticationLevel)Enum.Parse( - typeof(AuthenticationLevel), Settings.Default.ConDefaultRDPAuthenticationLevel); + RDPAuthenticationLevel = (AuthenticationLevel)Enum.Parse(typeof(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); + RenderingEngine = (HTTPBase.RenderingEngine)Enum.Parse(typeof(HTTPBase.RenderingEngine), Settings.Default.ConDefaultRenderingEngine); UseCredSsp = Settings.Default.ConDefaultUseCredSsp; UseVmId = Settings.Default.ConDefaultUseVmId; UseEnhancedMode = Settings.Default.ConDefaultUseEnhancedMode; @@ -317,11 +314,9 @@ namespace mRemoteNG.Connection private void SetRdGatewayDefaults() { - RDGatewayUsageMethod = (RDGatewayUsageMethod)Enum.Parse( - typeof(RDGatewayUsageMethod), Settings.Default.ConDefaultRDGatewayUsageMethod); + RDGatewayUsageMethod = (RDGatewayUsageMethod)Enum.Parse(typeof(RDGatewayUsageMethod), Settings.Default.ConDefaultRDGatewayUsageMethod); RDGatewayHostname = Settings.Default.ConDefaultRDGatewayHostname; - RDGatewayUseConnectionCredentials = (RDGatewayUseConnectionCredentials)Enum.Parse( - typeof(RDGatewayUseConnectionCredentials), Settings.Default.ConDefaultRDGatewayUseConnectionCredentials); + RDGatewayUseConnectionCredentials = (RDGatewayUseConnectionCredentials)Enum.Parse(typeof(RDGatewayUseConnectionCredentials), Settings.Default.ConDefaultRDGatewayUseConnectionCredentials); RDGatewayUsername = Settings.Default.ConDefaultRDGatewayUsername; RDGatewayPassword = Settings.Default.ConDefaultRDGatewayPassword; RDGatewayDomain = Settings.Default.ConDefaultRDGatewayDomain; @@ -329,8 +324,7 @@ namespace mRemoteNG.Connection private void SetAppearanceDefaults() { - Resolution = (RDPResolutions)Enum.Parse( - typeof(RDPResolutions), Settings.Default.ConDefaultResolution); + Resolution = (RDPResolutions)Enum.Parse(typeof(RDPResolutions), Settings.Default.ConDefaultResolution); AutomaticResize = Settings.Default.ConDefaultAutomaticResize; Colors = (RDPColors)Enum.Parse(typeof(RDPColors), Settings.Default.ConDefaultColors); CacheBitmaps = Settings.Default.ConDefaultCacheBitmaps; @@ -338,6 +332,10 @@ namespace mRemoteNG.Connection DisplayThemes = Settings.Default.ConDefaultDisplayThemes; EnableFontSmoothing = Settings.Default.ConDefaultEnableFontSmoothing; EnableDesktopComposition = Settings.Default.ConDefaultEnableDesktopComposition; + DisableFullWindowDrag = Settings.Default.ConDefaultDisableFullWindowDrag; + DisableMenuAnimations = Settings.Default.ConDefaultDisableMenuAnimations; + DisableCursorShadow = Settings.Default.ConDefaultDisableCursorShadow; + DisableCursorBlinking = Settings.Default.ConDefaultDisableCursorBlinking; } private void SetRedirectDefaults() @@ -364,20 +362,16 @@ namespace mRemoteNG.Connection private void SetVncDefaults() { - VNCCompression = (ProtocolVNC.Compression)Enum.Parse(typeof(ProtocolVNC.Compression), - Settings.Default.ConDefaultVNCCompression); + VNCCompression = (ProtocolVNC.Compression)Enum.Parse(typeof(ProtocolVNC.Compression), Settings.Default.ConDefaultVNCCompression); VNCEncoding = (ProtocolVNC.Encoding)Enum.Parse(typeof(ProtocolVNC.Encoding), Settings.Default.ConDefaultVNCEncoding); VNCAuthMode = (ProtocolVNC.AuthMode)Enum.Parse(typeof(ProtocolVNC.AuthMode), Settings.Default.ConDefaultVNCAuthMode); - VNCProxyType = (ProtocolVNC.ProxyType)Enum.Parse(typeof(ProtocolVNC.ProxyType), - Settings.Default.ConDefaultVNCProxyType); + VNCProxyType = (ProtocolVNC.ProxyType)Enum.Parse(typeof(ProtocolVNC.ProxyType), Settings.Default.ConDefaultVNCProxyType); VNCProxyIP = Settings.Default.ConDefaultVNCProxyIP; VNCProxyPort = Settings.Default.ConDefaultVNCProxyPort; VNCProxyUsername = Settings.Default.ConDefaultVNCProxyUsername; VNCProxyPassword = Settings.Default.ConDefaultVNCProxyPassword; - VNCColors = (ProtocolVNC.Colors)Enum.Parse(typeof(ProtocolVNC.Colors), - Settings.Default.ConDefaultVNCColors); - VNCSmartSizeMode = (ProtocolVNC.SmartSizeMode)Enum.Parse(typeof(ProtocolVNC.SmartSizeMode), - Settings.Default.ConDefaultVNCSmartSizeMode); + VNCColors = (ProtocolVNC.Colors)Enum.Parse(typeof(ProtocolVNC.Colors), Settings.Default.ConDefaultVNCColors); + VNCSmartSizeMode = (ProtocolVNC.SmartSizeMode)Enum.Parse(typeof(ProtocolVNC.SmartSizeMode), Settings.Default.ConDefaultVNCSmartSizeMode); VNCViewOnly = Settings.Default.ConDefaultVNCViewOnly; } @@ -390,8 +384,7 @@ namespace mRemoteNG.Connection private void SetNewOpenConnectionList() { OpenConnections = new ProtocolList(); - OpenConnections.CollectionChanged += (sender, args) => - RaisePropertyChangedEvent(this, new PropertyChangedEventArgs("OpenConnections")); + OpenConnections.CollectionChanged += (sender, args) => RaisePropertyChangedEvent(this, new PropertyChangedEventArgs("OpenConnections")); } #endregion diff --git a/mRemoteV1/Properties/Settings.Designer.cs b/mRemoteV1/Properties/Settings.Designer.cs index d060e2a87..488173735 100644 --- a/mRemoteV1/Properties/Settings.Designer.cs +++ b/mRemoteV1/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace mRemoteNG { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -1931,6 +1931,54 @@ namespace mRemoteNG { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultDisableFullWindowDrag { + get { + return ((bool)(this["InhDefaultDisableFullWindowDrag"])); + } + set { + this["InhDefaultDisableFullWindowDrag"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultDisableMenuAnimations { + get { + return ((bool)(this["InhDefaultDisableMenuAnimations"])); + } + set { + this["InhDefaultDisableMenuAnimations"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultDisableCursorShadow { + get { + return ((bool)(this["InhDefaultDisableCursorShadow"])); + } + set { + this["InhDefaultDisableCursorShadow"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultDisableCursorBlinking { + get { + return ((bool)(this["InhDefaultDisableCursorBlinking"])); + } + set { + this["InhDefaultDisableCursorBlinking"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("4")] @@ -2998,5 +3046,65 @@ namespace mRemoteNG { this["CloseToTray"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public string StartupComponentsCheck { + get { + return ((string)(this["StartupComponentsCheck"])); + } + set { + this["StartupComponentsCheck"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ConDefaultDisableFullWindowDrag { + get { + return ((bool)(this["ConDefaultDisableFullWindowDrag"])); + } + set { + this["ConDefaultDisableFullWindowDrag"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ConDefaultDisableMenuAnimations { + get { + return ((bool)(this["ConDefaultDisableMenuAnimations"])); + } + set { + this["ConDefaultDisableMenuAnimations"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ConDefaultDisableCursorShadow { + get { + return ((bool)(this["ConDefaultDisableCursorShadow"])); + } + set { + this["ConDefaultDisableCursorShadow"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ConDefaultDisableCursorBlinking { + get { + return ((bool)(this["ConDefaultDisableCursorBlinking"])); + } + set { + this["ConDefaultDisableCursorBlinking"] = value; + } + } } } diff --git a/mRemoteV1/Properties/Settings.settings b/mRemoteV1/Properties/Settings.settings index b81bb62bc..853d3b55f 100644 --- a/mRemoteV1/Properties/Settings.settings +++ b/mRemoteV1/Properties/Settings.settings @@ -479,6 +479,18 @@ False + + False + + + False + + + False + + + False + 4 @@ -746,5 +758,20 @@ False + + False + + + False + + + False + + + False + + + False + \ No newline at end of file diff --git a/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd b/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd index 0ae071941..2a1ae2388 100644 --- a/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd +++ b/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd @@ -64,6 +64,10 @@ + + + + @@ -106,6 +110,10 @@ + + + + diff --git a/mRemoteV1/app.config b/mRemoteV1/app.config index 32f4eab40..00b6c8f41 100644 --- a/mRemoteV1/app.config +++ b/mRemoteV1/app.config @@ -417,9 +417,6 @@ 5500 - - False - @@ -774,6 +771,33 @@ False + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + From 85fefdfabd8df3b2ff8a0465d9400aa607a88e6a Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 28 May 2020 11:59:11 +0200 Subject: [PATCH 3/3] fixed translation --- .../Resources/Language/Language.Designer.cs | 40 +- .../Resources/Language/Language.cs-CZ.resx | 8 +- mRemoteV1/Resources/Language/Language.de.resx | 20 +- mRemoteV1/Resources/Language/Language.es.resx | 8 +- mRemoteV1/Resources/Language/Language.fr.resx | 8 +- mRemoteV1/Resources/Language/Language.it.resx | 8 +- .../Resources/Language/Language.ja-JP.resx | 8 +- .../Resources/Language/Language.ko-KR.resx | 8 +- .../Resources/Language/Language.nb-NO.resx | 8 +- mRemoteV1/Resources/Language/Language.nl.resx | 8 +- mRemoteV1/Resources/Language/Language.pl.resx | 32 +- mRemoteV1/Resources/Language/Language.pt.resx | 8 +- mRemoteV1/Resources/Language/Language.resx | 20 +- mRemoteV1/Resources/Language/Language.ru.resx | 8 +- .../Resources/Language/Language.tr-TR.resx | 8 +- mRemoteV1/Resources/Language/Language.uk.resx | 1836 ++++++++--------- .../Resources/Language/Language.zh-CN.resx | 8 +- .../Resources/Language/Language.zh-TW.resx | 8 +- 18 files changed, 1008 insertions(+), 1044 deletions(-) diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs index 5c40ede24..2a90ef6c6 100644 --- a/mRemoteV1/Resources/Language/Language.Designer.cs +++ b/mRemoteV1/Resources/Language/Language.Designer.cs @@ -5440,7 +5440,7 @@ namespace mRemoteNG { } /// - /// Looks up a localized string similar to Disable Cursor Blinking. + /// Looks up a localized string similar to Disable Cursor blinking. /// internal static string strPropertyNameDisableCursorBlinking { get { @@ -5458,7 +5458,7 @@ namespace mRemoteNG { } /// - /// Looks up a localized string similar to Disable Full Window Drag. + /// Looks up a localized string similar to Disable Full Window drag. /// internal static string strPropertyNameDisableFullWindowDrag { get { @@ -6340,42 +6340,6 @@ namespace mRemoteNG { } } - /// - /// Looks up a localized string similar to Disable Cursor blinking. - /// - internal static string strRDPDisableCursorblinking { - get { - return ResourceManager.GetString("strRDPDisableCursorblinking", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Disable Cursor Shadow. - /// - internal static string strRDPDisableCursorShadow { - get { - return ResourceManager.GetString("strRDPDisableCursorShadow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Disable Full Window drag. - /// - internal static string strRDPDisableFullWindowdrag { - get { - return ResourceManager.GetString("strRDPDisableFullWindowdrag", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Disable Menu Animations. - /// - internal static string strRDPDisableMenuAnimations { - get { - return ResourceManager.GetString("strRDPDisableMenuAnimations", resourceCulture); - } - } - /// /// Looks up a localized string similar to Disable Themes. /// diff --git a/mRemoteV1/Resources/Language/Language.cs-CZ.resx b/mRemoteV1/Resources/Language/Language.cs-CZ.resx index 15f1ade14..bc50eddb3 100644 --- a/mRemoteV1/Resources/Language/Language.cs-CZ.resx +++ b/mRemoteV1/Resources/Language/Language.cs-CZ.resx @@ -1786,16 +1786,16 @@ Zpráva: Nebylo možné aktivovat ovládací prvek okna RDP, prosím zkontrolujte požadavky mRemoteNG na prerekvizity. - + Vypnout blikání kurzoru - + Vypnout stín kurzoru - + Vypnout přetahování celého okna (Full Window) - + Vypnout animace menu diff --git a/mRemoteV1/Resources/Language/Language.de.resx b/mRemoteV1/Resources/Language/Language.de.resx index 9ceb34aa5..32bc7c4e4 100644 --- a/mRemoteV1/Resources/Language/Language.de.resx +++ b/mRemoteV1/Resources/Language/Language.de.resx @@ -1609,16 +1609,16 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell Konte das RDP-Plugin nicht einbinden, bitte prüfen Sie die mRemoteNG-Voraussetzungen. - + Cursor-Blinken abschalten - + Cursorschatten deaktivieren - + Fensterinhalt beim Ziehen nicht anzeigen - + Menüanimationen deaktivieren @@ -2714,4 +2714,16 @@ Development umfasst Alphas, Betas und Release Candidates. Lizenz + + Legt fest, ob das Blinken des Cursors deaktiviert werden soll. + + + Legt fest, ob ein Mausschatten sichtbar sein soll. + + + Legt fest, ob Menüs und Fenster mit Animationseffekten in der Remote-Sitzung angezeigt werden können. + + + Legt fest, ob der Fensterinhalt angezeigt wird, wenn Sie das Fenster an eine neue Position ziehen. + \ No newline at end of file diff --git a/mRemoteV1/Resources/Language/Language.es.resx b/mRemoteV1/Resources/Language/Language.es.resx index 47800da88..54374efd2 100644 --- a/mRemoteV1/Resources/Language/Language.es.resx +++ b/mRemoteV1/Resources/Language/Language.es.resx @@ -1584,16 +1584,16 @@ Mensaje: No se pudo crear el control RDP, por favor verifique los requerimientos de mRemoteNG. - + Desactivar Parpadeo del Cursor - + Desactivar Sombra del Cursor - + Desactivar Mostar Ventana al arrastrar - + Desactivar Animaciones de Menús diff --git a/mRemoteV1/Resources/Language/Language.fr.resx b/mRemoteV1/Resources/Language/Language.fr.resx index c778bcd29..92a59c292 100644 --- a/mRemoteV1/Resources/Language/Language.fr.resx +++ b/mRemoteV1/Resources/Language/Language.fr.resx @@ -1592,16 +1592,16 @@ Message: Impossible de lancer une connexion RDP, vérifiez les prérequis mRemoteNG. - + Désactiver le curseur clignotant - + Désactiver l'Ombre du pointeur - + Désactiver le glissement de fenêtre complet - + Désactiver les animations du menu diff --git a/mRemoteV1/Resources/Language/Language.it.resx b/mRemoteV1/Resources/Language/Language.it.resx index 312787b15..5bb330be9 100644 --- a/mRemoteV1/Resources/Language/Language.it.resx +++ b/mRemoteV1/Resources/Language/Language.it.resx @@ -1591,16 +1591,16 @@ Messaggio: Impossibile creare il controllo RDP, per favore controlla i requisiti di mRemoteNG. - + Disattiva il lampeggio del cursore - + Disattiva l'ombra del cursore - + Disattiva il trascinamento finestra intera - + Disattiva le animazioni dei menu diff --git a/mRemoteV1/Resources/Language/Language.ja-JP.resx b/mRemoteV1/Resources/Language/Language.ja-JP.resx index dad26be30..b2b070dff 100644 --- a/mRemoteV1/Resources/Language/Language.ja-JP.resx +++ b/mRemoteV1/Resources/Language/Language.ja-JP.resx @@ -1808,16 +1808,16 @@ Message: Couldn't create RDP control, please check mRemoteNG requirements. - + Disable Cursor blinking - + Disable Cursor Shadow - + Disable Full Window drag - + メニューのアニメーションを無効にする diff --git a/mRemoteV1/Resources/Language/Language.ko-KR.resx b/mRemoteV1/Resources/Language/Language.ko-KR.resx index 8e6c6fc17..3ac686262 100644 --- a/mRemoteV1/Resources/Language/Language.ko-KR.resx +++ b/mRemoteV1/Resources/Language/Language.ko-KR.resx @@ -1923,16 +1923,16 @@ VncSharp 제어 버전 {0} RDP 컨트롤을 만들 수 없습니다. mRemoteNG 요구 사항을 확인하십시오. - + 커서 깜박임 해제 - + 커서 그림자 해제 - + 전체 창 끌기 해제 - + 메뉴 애니메이션 해제 diff --git a/mRemoteV1/Resources/Language/Language.nb-NO.resx b/mRemoteV1/Resources/Language/Language.nb-NO.resx index 30eb84931..b1cd234fd 100644 --- a/mRemoteV1/Resources/Language/Language.nb-NO.resx +++ b/mRemoteV1/Resources/Language/Language.nb-NO.resx @@ -1607,16 +1607,16 @@ Starter med ny tilkoblingsfil. Kunne ikke opprette RDP-kontroll, vennligst kontroller mRemoteNGs systemkrav. - + Deaktiver blinkende markør - + Deaktiver markørskygge - + Deaktiver fullvindudragning - + Deaktiver menyanimasjoner diff --git a/mRemoteV1/Resources/Language/Language.nl.resx b/mRemoteV1/Resources/Language/Language.nl.resx index 5d267dcb9..3761863d0 100644 --- a/mRemoteV1/Resources/Language/Language.nl.resx +++ b/mRemoteV1/Resources/Language/Language.nl.resx @@ -1610,16 +1610,16 @@ Bericht: Kan geen RDP controle aanmaken, controleer mRemoteNG systeemeisen. - + Cursor Knipperen Uitschakelen - + Cursor Schaduw Uitschakelen - + Slepen van volledig venster uitschakelen - + Menu Animaties Uitschakelen diff --git a/mRemoteV1/Resources/Language/Language.pl.resx b/mRemoteV1/Resources/Language/Language.pl.resx index e146a774c..b950f1f52 100644 --- a/mRemoteV1/Resources/Language/Language.pl.resx +++ b/mRemoteV1/Resources/Language/Language.pl.resx @@ -1,4 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Про програму - + Активно - + Активність - + Нове з'єднання - + Нова папка - + AddNodeFromXML не вдалося! - + AddNodesFromSQL не вдалося! - + Дозволити лише один екземпляр програми (необхіден перезапуск) - + Завжди - + Підключатися, навіть якщо не пройшов перевірку - + Завжди показувати діалог вибору вкладки при відкритті з'єднання - + Завжди показувати значок в системному треї - + Запитати пізніше - + Налаштувати параметри зараз - + Використовувати рекомендовані параметри - + {0} автоматично перевіряє наявність оновлень з новими можливостями і виправленням помилок. Рекомендуємо дозволити {0} щотижневу перевірку оновлень. - + Параметри автоматичного оновлення - + Вигляд - + Автозбереження кожні (0 - вимкнено): - + Хвилин (0 означає вимкнено) - + Остання версія - + &Огляд… - + &Скасувати - + Змінити - + &Закрити - + Успадковувння по замовчуванню - + Властивості по замовчуванню - + Відключити - + Значок - + &Імпорт - + Успадковування - + Запустити PuTTY - + &Новий - + &ОК - + Властивості - + &Сканувати - + &Стоп - + Перевірити проксі - + Ви не можете імпортувати звичайний файл з'єднання. Для звичайних файлів з'єднань використовуйте Файл - Відкрити з'єднання! - + Не вдається запустити сканування портів, невірний формат IP! - + Зовнішній вигляд - + З'єднання - + Облікові дані - + Вигляд - + Шлюз - + Основна - + Різне - + Протокол - + Локальні ресурси - + Завжди показувати це вікно при запуску - + Оновити - + Помилка перевірки! - + Успішно перевірено! - + Функція (RDP) сесій вимагає, щоб у вас була зареєстрована копія eolwtscom.dll у вашій системі. mRemoteNG постачається з цим компонентом, але він не реєструється автоматично, якщо ви не використовуєте mRemoteNG Installer. Щоб зареєструвати його вручну, запустіть таку команду з підвищеного командного рядка від імені адміністратора: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (де C:\Program Files\mRemoteNG\ це шлях до встановленого mRemoteNG). Якщо ця перевірка все-таки не є успішною, або ви не можете скористатися функцією сеансів (RDP), зверніться за адресою: {0}. - + EOLWTSCOM знайдено і зареєстровано. - + Для використання Gecko Rendering Engine вам потрібен мати XULrunner 1.8.1.x та шлях до установки, вказаний у ваших опціях. Завантажити XULrunner 1.8.1.3 можна тут: https://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ Після завантаження, розпакуйте архів до обраного вами шляху. Потім у mRemoteNG перейдіть в меню Інструменти - Опції - Додатково і введіть правильний шлях у полі шляху XULRunner. Якщо у вас нічого не вийшло зверніться за адресою: {0}. - + GeckoFx було знайдено і встановлено правильно. - + ICA вимагає встановити XenDesktop Online Plugin та зареєструвати бібліотеку wfica.ocx. Ви можете завантажити клієнт тут: http://www.citrix.com/download/ Якщо у вас є встановлений XenDesktop Online Plugin і нічого не працює, спробуйте зареєструвати wfica.ocx вручну. Для цього відкрийте (Пуск - Виконати) і введіть наступну команду: regsvr32 "C:\Program Files\Citrix\ICA Client\wfica.ocx" (де C:\Program Files\Citrix ICA Client\ це шлях до XenDesktop Online Plugin). Якщо у вас все таки не працює ICA в mRemoteNG зверніться за адресою: {0}. - + Всі компоненти ICA були знайдені і зареєстровані. Citrix ICA Client Control версії {0} - + встановлений неправильно - + SSH, Telnet, Rlogin і RAW протоколам потрібен для роботи PuTTY. PuTTY поставляється з кожним mRemoteNG і знаходиться в папці з програмою. Переконайтеся, що putty.exe є в папці з mRemoteNG (за замовчунням: C:\Program Files mRemoteNG\), або ящо ви вказали правильний шлях до виконуваного файлу PuTTY в Інструменти - Опції - Додатково - Шлях до PuTTY) - + Виконуваний файл PuTTY знайдений і готовий до використання. - + Для правильної роботи RDP необхідно мати встановлений клієнт Remote Desktop Connection (Terminal Services) не менше версії 8.0. Ви можете отримати його тут: https://support.microsoft.com/kb/2592687 Якщо у вас є встановлений RDP 8.0 і підключитися не вдається, спробуйте зареєструватися mstscax.dll вручну. Для цього відкрийте (Пуск - Виконати) і введіть наступну команду: regsvr32 "C:\Windows\system32\mstscax.dll" (де C: \ - ваш системний диск). Якщо у вас виникли проблеми при роботі з RDP зверніться зверніться за адресою: {0}. - + На цій машині підтримуються наступні версії протоколів RDP: {0} - + VNC вимагає, щоб VncSharp.dll знаходився у папці додатків mRemoteNG. Переконайтеся, що у папці програми mRemoteNG файл VncSharp.dll (як правило, C:C:\Program Files\mRemoteNG\). Якщо ви все ще не можете пройти цю перевірку або використовувати VNC в mRemoteNG, будь ласка, зверніться за адресою {0}. - + Всі VNC компоненти були знайдені і зареєстровані. VncSharp Control Version {0} - + Автоматично намагатися відновити зв'язок при відключенні від сервера (тільки RDP і ICA) - + Домен - + Більше не показувати це повідомлення. - + Успадковування - + Пароль - + Цей проксі-сервер вимагає аутентифікації - + Використовувати власний шлях до PuTTY: - + Перепідключитися, коли буде готово - + Використовувати проксі-сервер для підключення - + Користувач - + Чекати виходу - + Перевірити знову - + Перевіряти наявність оновлень при запуску - + Перевірити зараз - + При запуску перевіряти правильність встановлення компонентів - + Вибрати вкладку перед з'єднанням - + Закриті порти - + Згорнути всі папки - + Аргументи - + Коротке ім'я - + Файл - + Ім'я хосту/IP - + Повідомлення - + Користувач - + Чекати виходу - + Неможливо розібрати аргументи командного рядка! - + Перевірка компонентів - + Помилка btnIcon_Click! - + Помилка ShowHideGridItems! - + Помилка IconMenu_Click! - + Помилка властивостей Grid object! - + Помилка SetHostStatus! - + Помилка pGrid_PopertyValueChanged! - + Помилка завантаження Config UI! - + Хочете закрити з'єднання: «{0}»? - + Дійсно хочете закрити вкладку «{0}»? Всі її з'єднання також будуть закриті. - + Хочете видалити зовнішній інструмент, «{0}»? - + Хочете видалити {0} вибраних зовнішніх інструментів? - + Хочете видалити з'єднання, «{0}»? - + Хочете видалити порожню папку, «{0}»? - + Хочете видалити папку «{0}»? Будь-які папки або з'єднання, які вона містить також будуть видалені. - + Хочете закрити всі відкриті з'єднання? - + Ви дійсно бажаєте скинути налаштування вкладок до значень по замовчуванню? - + З'єднатися - + З'єднатися в повноекранному режимі - + З'єднання... - + Протокол події підключено - + Підключення до системи «{0}» через «{1}» створеного користувача «{2}» (Опис: «{3}»; Користувач: «{4}») З'єднатися не вдалося! - + Виникла помилка протоколу з'єднання. Хост «{1}»; Код помилки: «{2}»; Опис помилки: «{0}» - + Відкрити з'єднання не вдалася! - + Неможливо відкрити з'єднання: ім'я хоста не вказано! - + Помилка RDP! Код помилки: {0} Опис помилки: {1} - + З'єднання - + Не вдається встановити порт за замовчуванням! - + Не вдалося створити резервну копію файлу з'єднань! - + Не вдалося імпортувати файл з'єднань! - + Не можу завантажити файл з'єднань «{0}»! - + Не можу завантажити файл з'єднань «{0}»! Запускаюсь з новим файлом з'єднань. - + Не вдалося зберегти файл з'єднань! - + Не вдалося зберегти файл з'єднань як «{0}»! - + З'єднатися з консольним сеансом - + З'єднатися (з параметрами) - + З'єднання до {0} через {1} закрито користувачем {2}. - + З'єднання до {0} через {1} закрито користувачем {2}. (Опис: «{3}»; Користувач: «{4}») - + З'єднання закрито - + З'єднання закрити не вдалося! - + Не вдається створити новий файл з'єднань! - + Встановлена версія - + Виявлення - + Не під'єднувати без перевірки - + Подвійний клік для закриття вкладки - + Завантажити і встановити - + Дублювати - + Бажаєте продовжити без пароля? - + Використовувати пусте ім'я користувача, пароль або домен: - + 128-біт - + 128-біт (тільки при вході) - + 40-біт - + 56-біт - + Основне - + Повністю зашифрувати файл з'єднання - + Кінцевий IP - + Кінцевий порт - + Помилка AddExternalToolsToToolBar (frmMain). {0} - + Помилка AddFolder (UI.Window.Tree). {0} - + Версія бази даних {0} не сумісна з цією версією {1}. - + Помилка CloneNode (Tree.Node). {0} - + Код помилки: {0}. - + Неможливо зберегти список з'єднань. - + Не вдалося розшифрувати. {0} - + Не вдалося зашифрувати. {0} - + Помилки - + Файл з'єднання не може бути завантажений. {0}{0}{2}{0}{3}{0}{0} Для того, щоб запобігти втраті даних, {1} завершить роботу. - + Помилка VerifyDatabaseVersion (Config.Connections.Save). {0} - + Розкрити всі папки - + Експериментально - + Експорт - + Експорт mRemote / mRemoteNG XML - + Зовн. Інструмент - + Використовує значки [FAMFAMFAM] - + Всі файли (*.*) - + Файли додатків (*.exe) - + Файли mRemote CSV (*.csv) - + Файли mRemote XML (*.xml) - + Файли RDP (*.rdp) - + Файли visionapp Remote Desktop 2008 CSV (*.csv) - + Успадковувати {0} - + Опис успадкованої властивості: {0} - + На весь екран - + Головна - + Отримати інформацію про з'єднання з SQL не вдалося - + Помилка при завантаженні з'єднання «{0}» на «{1}». {2} - + Автоперепідключення - + З'єднання - + Властивості зовнішніх інструментів - + Файли - + Хост - + Помилка HTTP з'єднання! - + Не вдається створити нове HTTP з'єднання! - + Не вдалося задати параметри HTTP! - + Не вдається створити нове з'єднання ICA! - + Не вдалося завантажити ICA-плагін! - + Помилка встановлення облікових даних ICA! - + Не вдалося встановити оброблювач подій ICA! - + Не вдалося задати параметри ICA! - + Помилка встановлення дозволів ICA! - + Імпорт з Active Directory - + Імпорт / Експорт - + Імпорт mRemote / mRemoteNG XML - + Імпорт з просканованих портів - + Імпорт з RDP-файлу(ів) - + Неактивний - + Інформація - + mRemoteNG не потребує оновлення Зовнішній інструмент: Помилка отримання фокусу! - + Оброблювач подій Зовн. інструментів: {0} - + Не вдалося завершити процес зовнішнього інструменту! - + Вкладка оброблювача: {0} - + Зовнішній інструмент: Помилка зміни розміру! - + Заголовок зовнішнього інструменту: {0} - + CTRL+ALT+DEL - + CTRL+ESC - + Адреса: - + Аргументи: - + Журнал змін: - + &З'єднання: - + Коротке ім'я - + Домен: - + Файл: - + Ім'я хосту: - + Опції: - + Пароль: - + Порт: - + Портативна версія - + Протокол: - + Натисніть на цю кнопку для налаштування сесій PuTTY: - + Максимальний час очікування PuTTY та зовнішніх інструментів: - + Випущено під ліцензією GNU General Public License (GPL) - + сек - + Виберіть вкладку зі списку або натисніть кнопку Новий, щоб створити нову. - + Стан сервера: - + База даних: - + База даних: - + Користувач: - + Перевірка: - + Мова - + (Автовизначення) - + {0} необхідно перезапустити, щоб налаштування мови вступили в силу. - + Завантаження з SQL не вдалося! - + Завантаження з XML не вдалося! - + Локальний файл - + Локальний файл не існує! - + Вихід - + Не вдалося записати у файл журналу! - + Неможливо зберегти звіт в папці призначення. - + Використовує Magic library від [Crownwood Software] - + Про програму - + Додати панель з'єднання - + Перевірка наявності оновлень - + Конфігурація - + З'єднання - + Панель з'єднань - + З'єднання - + З'єднання та конфігурація - + Копіювати - + Ctrl+Alt+Del - + Ctrl+Esc - + Видалити… - + Видалити з'єднання… - + Видалити зовнішній інструмент… - + Видалити папку… - + Відключити - + Пожертва - + Дублювати - + Дублювати з'єднання - + Дублювати папку - + Дублювати вкладку - + Вихід - + Зовнішні інструменти - + Панель зовнішніх інструментів - + &Файл - + На весь екран - + На весь екран (RDP) - + &Довідка - + Довідка mRemoteNG - + Перейти до - + Запуск зовнішніх інструментів - + Новий файл з'єднань - + Новий зовнішній інструмент - + Сповіщення - + Відкрити файл з'єднань… - + Параметри - + Вставити - + Сканер портів - + Панель швидкого з'єднання - + Повторне з'єднання - + Оновити екран (VNC) - + Перейменувати - + Перейменувати з'єднання - + Перейменувати папку - + Перейменувати вкладку - + Повідомити про помилку - + Скинути шаблон - + Зберегти файл з'єднань - + Зберегти файл з'єднань як… - + Скріншот - + Менеджер скріншотів - + Надіслати спец. клавіші (VNC) - + Сесії - + Сесії та скріншоти - + Показати текст - + Передача файлів по SSH - + Почати чат (VNC) - + Форум підтримки - + &Інструменти - + Передача файлів (SSH) - + &Вигляд - + Перегляд (VNC) - + Веб-сайт - + Мінімізувати в область сповіщень - + Вниз - + Вгору - + Мої поточні облікові дані (Windows облікові дані) - + Ніколи - + Нове з'єднання - + Нова папка - + Нова панель - + Новий корінь - + Нова назва - + Ні - + Без стискання - + Не вказано зовнішній інструмент - + Ні - + Ні - + Нормальний - + Немає доступних оновлень - + Ви намагаєтеся завантажити файл з'єднання, що створений за допомогою дуже ранніх версій mRemote, це може спричинити помилки виконання. Будь ласка, створіть новий файл з'єднання! - + Відкривати нову вкладку праворуч від вибраної вкладки - + Відкриті порти - + Тема - + Назва панелі - + Захист паролем - + Будь ласка, заповніть всі поля - + Не вдалося завантажити панель сканера портів! - + (Ці властивості будуть збережені тільки якщо ви виберете mRemote / mRemoteNG XML як вихідний формат файлу!) - + Введіть ім'я хосту або IP до якого потрбіно підключитися. - + Перемкнути усі варіанти успадкування. - + Виберіть рівень аутентифікації, що має використовувати це з'єднання. - + Виберіть спосіб авторизації на сервері VNC. - + Виберіть, чи використовувати кешування растрових зображень. - + Виберіть якість кольору, що буде використовуватися. - + Виберіть значення стискання, яке буде використовуватися. - + Помістіть сюди свої замітки або опис хоста. - + Виберіть «Так», якщо хочете бачити тему робочого столу віддаленого хоста. - + Виберіть «Так», якщо хочете бачити шпалери віддаленого хоста. - + Введіть ім'я домену. - + Чи використовувати композицію робочого столу на віддаленому хості. - + Використання згладжування шрифтів. - + Виберіть режим кодування, який буде використовуватися. - + Виберіть ступінь шифрування віддаленого хоста. - + Виберіть зовнішній інструмент для запуску. - + Виберіть зовнішній інструмент, який потрібно запустити після відключення від віддаленого хоста. - + Виберіть зовнішній інструмент, який потрібно запустити до встановлення з'єднання з віддаленим хостом. - + Виберіть піктограму, яка відображатиметься при підключенні до хоста. - + Введіть МАС-адресу віддаленого хоста, якщо ви хочете використовувати його в зовнішньому інструменті. - + Це ім'я буде відображатися в дереві з'єднань. - + Визначає вкладку, в якій буде відкрито з'єднання. - + Введіть пароль. - + Введіть порт, на якому прослуховується вибраний протокол. - + Виберіть протокол, який mRemoteNG повинен використовувати для з'єднання з хостом. - + Виберіть сесію PuTTY, яка буде використовуватися під час з'єднання. - + Вкажіть доменне ім'я, яке надає користувач для підключення до сервера шлюзу віддаленого робочого столу(RD Gateway). - + Вкажіть ім'я хоста сервера шлюзу віддаленого робочого столу(RD Gateway). - + Вкажіть, коли використовувати сервер шлюзу віддаленого робочого столу (RD Gateway). - + Вкажіть, чи потрібно входити в шлюз, використовуючи те саме ім’я користувача й пароль, що і для з'єднання. - + Вкажіть ім'я користувача, яке надає користувач для підключення до сервера шлюзу віддаленого робочого столу(RD Gateway). - + Вкажіть, чи будуть доступні локальні диски на віддаленому хості. - + Вкажіть, чи будуть перенаправлені локальні комбінації клавіш (наприклад, Alt+Tab) на віддалений хост. - + Вкажіть, чи будуть доступні локальні порти (тобто COM, LPT) на віддаленому хості. - + Вкажіть, чи локальні принтери будуть доступні на віддаленому хості. - + Вкажіть, чи будуть локальні смарт-карти доступні на віддаленому хості. - + Виберіть, як слід перенаправляти віддалений звук. - + Виберіть один із доступних механізмів візуалізації, який використовуватиметься для відображення HTML. - + Виберіть роздільну здатність або режим, у якому відкриється це з'єднання. - + Виберіть, чи буде використовуватись режим SmartSize. - + Підключитися до консольного сеансу віддаленого хоста. - + Не соромтеся вводити тут інформацію, яка вам потрібна. - + Введіть ім'я користувача. - + Якщо ви хочете встановити підключення в режимі перегляду - виберіть «Так». - + Введіть адресу проксі-сервера. - + Введіть пароль для авторизації на проксі-сервері. - + Введіть порт проксі-сервера. - + Якщо ви використовуєте проксі для тунелювання VNC з'єднань, виберіть тип тунелювання. - + Введіть ім'я користувача для авторизації на проксі-сервері. - + Ім'я хоста / IP - + Все - + Аутентифікація сервера - + Режим аутентифікації - + Кеш графіки - + Кольори - + Стискання - + Опис - + Показати теми - + Показати шпалери - + Домен - + Композиція робочого столу - + Згладжування шрифту - + Кодування - + Шифрування - + Зовнішній інструмент - + Зовнішній інструмент після - + Зовнішній інструмент до - + Значок - + MAC-адреса - + Ім'я - + Ім'я вкладки - + Пароль - + Порт - + Протокол - + Сесія PuTTY - + Шлюз домену - + Хост шлюзу - + Пароль шлюзу служб терміналів - + Використовувати шлюз - + Облікові дані шлюзу - + Ім'я користувача шлюзу - + Диски - + Комбінації клавіш - + Порти - + Принтери - + Смарт-карти - + Звуки - + Рушій візуалізації - + Розширення екрану - + Режим SmartSize - + Використовувати консольну сесію - + Користувацьке поле - + Користувач - + Режим перегляду - + Адреса проксі - + Пароль проксі - + Порт проксі - + Тип проксі - + Користувач проксі - + Протокол подій: Відключено. Хост: «{1}»; Протокол: «{2}»; Повідомлення: «{0}» - + Протокол подій: Помилка відключення. {0} - + Протокол імпорту - + Перевірка проксі невдала! - + Перевірка уроксі успішна! Завершити роботу Putty - не вдалося! - + Не вдається встановити фокус! - + Отримати сесію Putty не вдалося! - + Оброблювач подій Putty: {0} - + Вбити процес Putty не вдалося! - + Вкладка оброблювача подій: {0} - + Помилка зміни розміру вікна Putty! - + Налаштування PuTTY - + Показати налаштування PuTTY не вдалося! - + Не вдалося запустити Putty! - + Заголовок PuTTY: {0} - + Швидке: {0} - + Швидке з'єднання - + Помилка додавання швидкого з'єднання! - + Створити швидке з'єднання не вдалося - + 16 млн. кольорів (24-біт) - + 256 кольорів (8-біт) - + 32 тис. кольорів (15-біт) - + 16 млн. кольорів (32-біт) - + 65 тис. кольорів (16-біт) - + RDP додати розширення не вдалося! - + RDP додати розширення не вдалося! - + Додати сесію не вдалося - + Закрити з'єднання RDP не вдалося! - + Неможливо створити управління RDP, перевірте вимоги mRemoteNG. - + Вимкнути моргання курсору - + Вимкнути тінь курсора - + Вимкнути відображення вікна при перетягуванні - + Вимкнути анімації меню - + Вимкнути теми - + Вимкнути шпалери робочого столу - + RDP відключено! - + RDP не вдалося відключити, спробуйте закрити його! - + Внутрішня помилка: код 1. - + Внутрішня помилка: код 2. - + Внутрішня помилка: код 3. Це неприпустимий стан. - + Внутрішня помилка: код 4. - + Сталася непоправна помилка під час з'єднання з клієнтом. - + Виникла невідома критична помилка RDP. Код помилки: {0}. - + Сталася помилка через брак пам'яті. - + Невідома помилка. - + При створенні вікна сталася помилка. - + Помилка ініціалізації Winsock. - + Не вдалося імпортувати RDP файл! - + Встановити на вкладку - + RDP: помилка отримання фокусу! - + RD Gateway підтримується. - + RD Gateway не підтримується! - + Помилка GetSessions! - + Кількість перепідключень RDP: - + Помилка RDP SetAuthenticationLevel! - + Помилка RDP SetUseConsoleSession! - + Налаштування перемикання консолі для RDC {0}. - + Помилка RDP SetCredentials! - + Помилка RDP SetEventHandlers! - + Помилка RDP SetRDGateway! - + Помилка RDP SetPerformanceFlags! - + Помилка RDP SetPort! - + Помилка RDP SetProps! - + Помилка RDP Set Redirection! - + Помилка RDP Set Redirect Keys! - + Помилка RDP SetResolution! - + Передати на цей комп'ютер - + Не відтворювати - + Залишити на віддаленому комп'ютері - + Помилка RDP ToggleFullscreen! - + Помилка RDP ToggleSmartSize! - + При запуску підключатися до попередніх сесій - + Оновити - + Віддалений файл - + Видалити все - + Перейменувати - + Зберегти - + Зберегти все - + Перед завантаженням нового файлу з'єднання, хочете зберегти поточний? - + Зберігати з'єднання при виході - + Файл Graphics Interchange Format (GIF.) | *. GIF | Файл Joint Photographic Experts Group (JPEG.) | *. JPEG | Файл Joint Photographic Experts Group (JPG.) | *. JPG | Файл Portable Network Graphics (PNG). | *. PNG - + Екран - + Скріншот - + Скріншоти - + Надіслати… - + Отримати фонову сесію не вдалося - + Завершення фонової сесії не вдалося - + Встановити назву хоста, як ім'я відображення при створенні чи перейменуванні нових з'єднань - + Налаштування основної текстової форми не вдалося - + Не вдалося зберегти налаштування, або розмістити значок у системному треї! - + Показувати підказки опису в дереві з'єднань - + Показувати в заголовку вікна повний шлях до файлу з'єднань - + Показати відомості про вхід у назві вкладок - + Показувати протокол у назві вкладок - + Одне натискання на з'єднання відкриває його - + Один клік по відкритому з'єднанню переключається на нього - + Сортувати - + За зростанням (A-Z) - + За спаданням (Z-A) - + Спеціальні клавіші - + Для додаткової інформації дивись: Довідка - Початок роботи - Конфігурація SQL! - + Перевірка оновлення SQL завершена, і доступне оновлення! Оновлюємо з’єднання. - + SSH версії 1 - + SSH версії 2 - + Фонова передача по SSH не вдалася! - + Передано успішно! - + Передача по SSH завершена помилкою (UI.Window.SSHTransfer)! - + Помилка передавання SSH. - + Початковий IP - + Початковий порт - + Запуск / Вихід - + Статус - + Перемкнутись на панель сповіщень при: - + Додатково - + Зовнішній вигляд - + Вкладки та панелі - + Оновлення - + Наступне: - + Помилка: ({0}) - + Інформація: ({0}) - + Пароль - + Вибеніть панель - + Попередження: ({0}) - + Передати - + Передача не вдалася! - + Спробувати інтегрувати - + Тип - + Порт UltraVNC SingleClick: - + Зніміть параметри, які не хочете зберігати! - + mRemoteNG потребує оновлення - + mRemoteNG може періодично підключатися до сайту mRemoteNG для перевірки наявності оновлень. - + Не вдалося завантажити інформацію про оновлення. - + Портативна версія mRemoteNG не підтримує автоматичне оновлення. - + Завантаження завершено! mRemoteNG зараз припинить роботу і почне процес встановлення оновлення. - + Не вдалося завантажити оновлення. - + Не вдалося розпочати завантаження оновлення. - + Кожні {0} дн. - + Щодня - + Щомісяця - + Щотижня - + Використовувати інше ім'я користувача і пароль - + Користувач - + Використовувати ті ж ім'я користувача і пароль - + Використовувати смарт-карти - + Використовувати SQL Server для завантаження і збереження з'єднань - + Версія - + Не вдалося відключити VNC! - + Не вдалося оновити екран VNC! - + Помилка VNC SendSpecialKeys! - + Не вдалося встановити оброблювач подій VNC! - + Не вдалося задати параметри VNC! - + Не вдалося почати VNC-чат! - + Не вдалося переключити VNC в SmartSize! - + Не вдалося переключити VNC в режим перегляду! - + Попередити мене, якщо аутентифікація не вдасться - + Попередження - + Використано DockPanel Suite від [Weifen Luo] - + Шлях XULRunner: - + Так - + Завжди показувати панель вкладок - + &Запустити - + &Вихід {0} - + &Відкрити файл з'єднань - + &Спробувати знову - + {0} виявив запущену програму Lenovo Auto Scroll Utility. Ця програма створює проблеми з {0}. Рекомендується вимкнути або видалити її. - + Виявлена проблема сумісності - + З'єднатися без облікових даних - + Не вдається знайти «ToolStrip control» у «FilteredPropertyGrid». - + Тема за замовчуванням - + Не під'єднуватися до консольного сеансу - + Неможливо запустити PuTTY. - + Увімкнено налаштування безпеки Windows «System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing». Додаткову інформацію дивись у статті Microsoft Support на http://support.microsoft.com/kb/811833 {0} не повністю сумісний з FIPS. Натисніть ОК, щоб продовжити на власний розсуд, або Скасувати для виходу. - + Експортувати все - + Файл експорту - + Експорт елементів - + Параметри експорту - + Експортувати вибране з'єднання - + Експортувати вибрану папку - + &Експорт у файл… - + &Формат файлу: - + Облікові дані - + Новий зовнішній інструмент - + Усі файли, які можна імпортувати - + Файли PuTTY Connection Manager - + Файли Remote Desktop Connection Manager (*.rdg) - + Не вдається змінити заголовок HTTP документу! - + Визначати вкладки швидкого підключення, додавши префікс «Quick» - + Під час імпорту файлу «{0}» сталася помилка. - + Не вдалося імпортувати - + Імпорт з &файлу… - + В корені {0}{1}|У вибраному каталозі {0}{2} - + Де ви хочете розмістити імпортовані елементи? - + Місцезнаходження імпорту - + &Імпорт - + При закритті з'єднань: - + Інформацію про з'єднання не вдалося завантажити з SQL сервера. - + Копіювати все - + Видалити - + Видалити все - + Відновити - + &Показати текст довідки - + Немає SmartSize - + &Видалити - + &Нова - + &Скинути до замовчування - + Скинути &все за замовчуванням - + Вкладки - + Наступна вкладка - + Попередня вкладка - + Змінити гарячу клавішу - + Гарячі клавіші - + Тестування… - + Клавіатура - + &Видалити - + &Нова - + Обидва паролі повинні збігатися. - + Пароль повинен містити не менше 3 символів. - + Сканування портів завершено. - + Виберіть, чи слід автоматично змінювати розмір вікна з'єднання, коли змінюється розмір вікна програми, або коли програма перемикається в повноекранний режим. Потрібен RDC 8.0 або вище. - + Визначає інформацію про балансування навантаження для використання маршрутизаторами балансування навантаження для вибору найкращого сервера. - + Вкажіть, чи слід ділитися буфером обміну з віддаленим хостом. - + Виберіть, чи слід перенаправляти пристрій аудіо введення за замовчуванням на віддаленій машині на цей комп'ютер. - + Використовати Credential Security Support Provider (CredSSP) для аутентифікації, якщо він доступний. - + Автоматична зміна розміру - + Інформація про балансування - + Буфер обміну - + Захоплення аудіо - + Використовувати CredSSP - + Збережені сесії PuTTY - + Налаштування сесії PuTTY - + &Попередити мене при закритті з'єднань - + Попередити мене лише при &виході з mRemoteNG - + Попередити мене лише при закритті &декількох з'єднань - + &Не попереджати мене при закритті з'єднань - + Помилка GetError (FatalErrors) - + Шукати - + Без SmartSize - + Панель налаштувань - + Панель з'єднань - + Головна - + Фоновий колір панелі налаштувань. - + Колір тексту категорії на панелі налаштувань. - + Колір ліній сітки на панелі налаштувань. - + Фоновий колір області довідки панелі налаштувань. - + Колір тексту області довідки панелі налаштувань. - + Колір тексту на панелі налаштувань. - + Фоновий колір панелі з'єднань. - + Колір тексту панелі з'єднань. - + Колір ліній дерева панелі з'єднань. - + Фоновий колір меню. - + Колір тексту в меню. - + Фоновий колір вікна пошуку. - + Колір тексту у вікні пошуку. - + Колір тексту підказки у вікні пошуку. - + Фоновий колір панелей інструментів. - + Колір тексту панелей інструментів. - + Фоновий колір головного вікна. - + Фоновий колір панелі налаштувань - + Колір тексту категорій панелі налаштувань - + Колір ліній сітки панелі налаштувань - + Фоновий колір довідки панелі налаштувань - + Колір тексту довідки панелі налаштувань - + Колір тексту панелі налаштувань - + Фоновий колір панелі з'єднань - + Колір тексту панелі з'єднань - + Колір ліній дерева панелі з'єднань - + Фоновий колір меню - + Колір тексту меню - + Фоновий колір поля пошуку - + Колір тексту поля пошуку - + Колір тексту підказок поля пошуку - + Фоновий колір панелі інструментів - + Колір тексту панелі інструментів - + Фоновий колір вікна - + Пароль для: {0} - + Показати на панелі інструментів - + Безіменна тема - + Не вдалося перевірити - + Перевірка оновлень… - + Не вдалося завантажити журнал змін. - + Повторно підключити усі відкриті з'єднання - + Тайм-аут RDP з'єднання - + Цей вузол вже в цій папці. - + Неможливо перемістити вузол в себе. - + Неможливо перетягнути батьківський вузол до дочірнього. - + Цей вузол не перетягується. - + Режим блочного шифру - + Рушій шифрування - + Безпека - + Ітерації функції формування ключа(KDF) - + Динамічна - + Висока - + Середня - + Виберіть якість звуку: динамічна, Середня, Висока - + Якість звуку - + Завантаження завершено! - + Завантажити - + Скільки хвилин перебувати в режимі очікування перед автоматичним відключенням RDP сеансу (0 - без обмежень) - + Хвилин простою - + Прийняти - + Додати - + Редактор облікових даних - + Менеджер облікових даних - + Видалити - + Заголовок - + Виберіть, який обліковий запис використовувати для цього з'єднання. - + Дійсно хочете видалити обліковий запис: {0}? - + Не вдалося знайти обліковий запис із ідентифікатором «{0}» для запису підключення під назвою «{1}». - + Виберіть, чи отримувати попередження після відключення сеансу RDP через неактивність - + Попереджати про відключення через неактивність - + Пароль повинен містити принаймні {0} таких символів: {1} - + Пароль повинен містити принаймні {0} малі символи(ів) - + Пароль повинен містити принаймні {0} номер(и) - + Пароль повинен містити принаймні {0} великі символи(ів) - + Довжина пароля повинна бути від {0} до {1} - + Виберіть шлях для файлу журналу mRemoteNG - + Відлагодження - + Показувати ці повідомлення - + Шлях до файлу журналу - + Записувати в журнал ці типи повідомлень - + Вибрати шлях - + Відкрити файл - + За замовчуванням - + Ведення журналу - + Виринаючі вікна - + Записувати в каталог програми - + Призначені облікові дані - + Завжди дозволяти - + Дозволити раз - + Не дозволяти - + Дозволити незахищений сертифікат для URL: {0}? - + Дозволити незахищений сертифікат? - + Вибраний репозиторій розблоковано - + Невірний пароль - + Джерело - + Розблокування - + Розблокувати репозиторій облікових даних - + Розблокувати - + Запитувати про розблокування репозиторія облікових даних при запуску - + Оновити - + Назад - + Шлях до файлу з'єднань - + Створити та відкрити новий файл - + Відкрти інший файл - + У v1.76 ми запровадили систему управління обліковими записами. Ця функція вимагає суттєвих змін у тому, як ми зберігаємо та взаємодіємо з обліковими записами в mRemoteNG. Вам буде потрібно виконати одностороннє оновлення файлу з'єднань mRemoteNG. Ця сторінка проведе вас через процес оновлення файлу з'єднань або дасть можливість відкрити інший файл з'єднань, якщо ви не захочете здійснити оновлення. - + Обліковий запис не доступний - + Дійсно видалити цю тему? - + Увімкнути теми - + Нова назва теми - + Не вдається створити тему, таке ім'я вже існує, або присутні спеціальні символи - + Введіть нову назву теми - + Попередження: для зміни будь-якої конфігурації теми потрібен перезапуск. - + Жодної теми не завантажено, перевірте чи присутні стандартні теми у папці «themes» mRemoteNG - + Не вдалося знайти зовнішній інструмент із назвою «{0}» - + Створити новий файл з'єднання - + Не вдалося знайти файл з'єднання. - + Імпортувати існуючий файл - + Використовуйте спеціальний шлях до файлу - + Перевіряємо з'єднання - + Сервер «{0}» недоступний. - + Підключення успішне - + Не вдалося ввійти для користувача «{0}». - + База даних «{0}» недоступна. - + Зберігати з'єднання після кожного редагування - + Фільтр збігів пошуку в дереві з'єднань - + Тест з'єднання - + Лише для читання: - + Використовувати кодування UTF8 для властивості RDP "Інформація про балансування" - + Тайм-аут [секунди] - + Робочий каталог: - + Запускати з вищими правами - + Запускати з вищими правами - + Показати на панелі інструментів - + Спробувати інтегрувати - + Робочий каталог - + Фіксувати позиції панелі інструментів - + Панель Multi SSH - + Імпорт дочірніх OU - + Фіксувати позиції панелі інструментів - + Панель Multi SSH - + Додаткові параметри безпеки - + Параметри mRemoteNG - + Використовувати кодування UTF8 для властивості RDP "Інформація про балансування" - + Створювати порожню вкладку, при запуску mRemoteNG - + Має бути між 0 і 255 - + Поза межами - + Видалити… - + Повторно підключити усі з'єднання - + Відключити вкладки праворуч - + Відключити все, окрім цієї вкладки - + Ви дійсно хочете закрити всі з'єднання, окрім «{0}»? - + Ви дійсно хочете закрити всі з'єднання праворуч від «{0}»? - + Сталася помилка під час спроби знову підключитися до RDP хоста «{0}» - + Сталася помилка під час спроби змінити роздільну здатність з'єднання на хості «{0}» - + Повідомлення про виняток - + Стався необроблений виняток - + Цей виняток змусить mRemoteNG закритися - + Скопіювати ім'я хоста - + Розмістити рядок пошуку над деревом з'єднань - + Щоб сканувати один порт, виберіть лише «Початковий порт». - + Відстежувати активне з'єднання у дереві з'єднань - + Завжди показувати вкладки підключення - + Канал оновлень - + Канал «Stable» включає лише остаточні стабільні випуски. Канал «Beta» включає Beta та Release Candidate. Канал «Development» включає Alpha, Beta та Release Candidate версії. - + Застосувати - + Проксі - + Натисніть ENTER для надсилання. Ctrl+C надсилається негайно. - + Показати це з'єднання в меню обраних. - + Улюблене - + Улюблені - + Очистити рядок пошуку - + Підключіться в режимі лише для перегляду - + Не обрізати пробіли в іменах користувачів - + Середовище - + Шифрування {0} записів за допомогою {1}/{2} та {3} ітерацій зайняло {4} секунд(и). - + Тест шифрування - + Тест налаштувань - + Встановіть версію RDP, що буде використовуватись при відкритті з'єднань. - + Версія RDP - + Використовувати VM ID для підключення до VM, що працюють на Hyper-V. - + ID віртуальної машини Hyper-V, до якогї потрібно підключитися. - + Використовувати VM ID - + Не вдалося створити RDP клієнт. Версія протоколу RDP {0} не підтримується на цій машині. Виберіть старішу версію протоколу. - + Запускати згорнутим - + Встановіть пароль, що необхідний для шифрування файлу з'єднань. Перед запуском mRemoteNG вам буде пропонуватись ввести цей пароль. - + Підключатися до хоста Hyper-V із увімкненим розширеним режимом. - + Використовувати розширений режим - + Вказує пароль сервера Remote Desktop Gateway. - + Виберіть, чи слід спільно використовувати мікрофони. - + Закривати в область сповіщень \ No newline at end of file diff --git a/mRemoteV1/Resources/Language/Language.zh-CN.resx b/mRemoteV1/Resources/Language/Language.zh-CN.resx index 26eb95bb5..e99f551c9 100644 --- a/mRemoteV1/Resources/Language/Language.zh-CN.resx +++ b/mRemoteV1/Resources/Language/Language.zh-CN.resx @@ -1799,16 +1799,16 @@ VncSharp 版本 {0} 无法创建 RDP 控制,请检查 mRemoteNG 的安装需求是否满足。 - + 禁用光标闪烁 - + 禁用光标阴影 - + 禁用全窗口拖动 - + 禁用菜单动画功能 diff --git a/mRemoteV1/Resources/Language/Language.zh-TW.resx b/mRemoteV1/Resources/Language/Language.zh-TW.resx index 75cadf8cf..5211cff14 100644 --- a/mRemoteV1/Resources/Language/Language.zh-TW.resx +++ b/mRemoteV1/Resources/Language/Language.zh-TW.resx @@ -1577,16 +1577,16 @@ VncSharp Control 版本 {0} 無法建立 RDP 控制,請檢查 mRemoteNG 需求。 - + 停用游標閃爍 - + 停用游標陰影 - + 停用完整視窗拖曳 - + 停用功能表動畫