Compare commits

...

69 Commits

Author SHA1 Message Date
Dimitrij
b6c9d30195 Merge pull request #2244 from tecxx/develop-orig
save RCG and RestrictedAdmin fields correctly in connections file
2022-06-11 11:30:26 +01:00
tecxx
7b89430317 quickfix to save application settings correctly 2022-06-10 21:31:55 +02:00
tecxx
5bd854116a rcg/restrictedadmin fixes: schema file and defaults to false 2022-06-08 21:22:59 +02:00
tecxx
3fb7575529 save RCG and RestrictedAdmin fields correctly in connections file 2022-06-08 20:55:06 +02:00
Dimitrij
a3a868c2ce Merge pull request #2235 from jafin/fix/topmenu
fix (Toolbar): Remove unused `modeToolStripmenuItem` from Main toolbar
2022-06-03 09:59:26 +01:00
Jason Finch
1eb6fc2235 fix (Toolbar): Remove unused modeToolStripmenuItem from Main toolbar 2022-06-02 17:01:06 +10:00
Dimitrij
5ff4502f0a Merge pull request #2231 from simonai1254/patch-1
Specify "Desktop Runtime" in Requirements
2022-05-23 21:24:38 +01:00
Simon Monai
3126b8d4b0 Specify "Desktop Runtime" in Requirements 2022-05-23 22:15:00 +02:00
Dimitrij
dfb1d34b8a cleaning redundant blocks 2022-05-14 20:39:00 +01:00
Dimitrij
ace62c07be lib update 2022-05-13 01:55:18 +01:00
Dimitrij
ec2f3024b6 implement DPIAware, change splash screen to wpf 2022-05-13 01:39:00 +01:00
Dimitrij
25543f6561 Add acl controls to backupOptions 2022-05-02 00:31:00 +01:00
Dimitrij
3278657da7 fix missing values 2022-05-01 20:44:38 +01:00
Dimitrij
90c4d12688 lib updates 2022-05-01 20:10:22 +01:00
Dimitrij
4ceaea99f7 Merge pull request #2211 from nilsjonsson/new-lang
Add Swedish translation
2022-04-27 13:32:51 +01:00
Nils Jonsson
585de34ef1 Add Swedish translation 2022-04-27 14:18:53 +02:00
Dimitrij
60e1a3ce93 Merge pull request #2208 from Pwnoz0r/MR-887_rdm_import
Add Remote Desktop Manager (Devolutions) Importer
2022-04-23 21:02:32 +01:00
Jonathan Rainier
413d77ff1a Add Comments and Icon Support / Fix Unsorted
- Add Comments
- Add icon support for supported connection types
- Fix empty unsorted folder from being added
2022-04-23 15:53:25 -04:00
Jonathan Rainier
d8bb561063 Add Remote Desktop Manager (Devolutions) Importer
- Add RDM Importer mRemoteNG/mRemoteNG#887
2022-04-23 15:22:08 -04:00
Dimitrij
5dff2c20b2 Merge pull request #2204 from tecxx/develop-orig
fix for otp token renewal in TSS api
2022-04-19 12:53:06 +01:00
tecxx
27803e7787 fix for otp token renewal in TSS api 2022-04-19 11:44:12 +02:00
Dimitrij
58f9c1575f Merge pull request #2203 from tecxx/develop-orig
enable remote credential guard option
2022-04-15 16:45:33 +01:00
tecxx
7b909665b9 enable remote credential guard option
enable restricted admin mode option
2022-04-15 17:08:49 +02:00
Dimitrij
11eee991a1 fix visibility 2022-04-03 16:37:45 +01:00
Dimitrij
7056a859ef add acl for option pages 2022-04-03 16:25:04 +01:00
Dimitrij
2455f0d73e lib update 2022-04-03 15:35:56 +01:00
Dimitrij
943d36e23e add rbac to hide menu page + lang updates 2022-04-03 14:38:06 +01:00
Dimitrij
b563ac6e0c add basic rbac (acl) implementation as example for backup options + Language modification 2022-03-31 19:22:56 +01:00
Dimitrij
ed37a8ca2a fix #1015 2022-03-30 15:27:55 +01:00
Dimitrij
55bee8b0d8 add rbac settings 2022-03-30 12:30:59 +01:00
Dimitrij
6bd18c29e3 lib update 2022-03-29 10:38:27 +01:00
Dimitrij
37fc611767 Merge pull request #2188 from Trellmor/UpdateSessionDisplaySettings
Update session display settings
2022-03-19 12:57:09 +00:00
Daniel Triendl
f95fe351e2 Updated changelog and documentation 2022-03-18 20:27:54 +01:00
Daniel Triendl
2fb0ab1d91 Enable size change without reconnect
Use IMsRdpClient9::UpdateSessionDisplaySettings to dynamically update the
session display settings without reconnecting. RDP Version needs to be
Rdc9 or Highest for this to work.

Fixes #1546
2022-03-18 19:33:10 +01:00
Dimitrij
85f7be1d79 refactoring menu (preparation for RBAC) 2022-03-16 22:33:16 +00:00
Dimitrij
b3e5c1abc2 lib update 2022-03-16 09:55:34 +00:00
Dimitrij
9e216c0020 remove spaces 2022-03-11 17:53:05 +00:00
Dimitrij
a9f00b6a8c remove spaces 2022-03-11 17:04:51 +00:00
Dimitrij
46e7b02da2 lib update 2022-03-11 12:36:52 +00:00
Dimitrij
8db0bc6e6f refactoring options
each settings page from now will have separate options file, a bit later that helps to migrate into modular structure, then admin can control access to options and external modules may add may options independently
2022-03-10 13:48:39 +00:00
Dimitrij
1702b5867a update 2022-02-24 01:17:02 +00:00
Dimitrij
c03a6452ef update link 2022-02-24 01:14:14 +00:00
Dimitrij
69b840fb12 update 2022-02-24 01:11:44 +00:00
Dimitrij
9385ab287f update 2022-02-24 00:58:36 +00:00
Dimitrij
d2b2c39b97 fixing link 2022-02-24 00:54:01 +00:00
Dimitrij
f8ff978738 fix link 2022-02-24 00:49:43 +00:00
Dimitrij
d50b32236c update 2022-02-24 00:43:59 +00:00
Dimitrij
88d1db2840 Add howto for CyberArk psm 2022-02-24 00:35:00 +00:00
Dimitrij
b1dbe562d6 Merge pull request #2176 from AndyX90/sql-fix
Create missing columns
2022-02-23 23:56:56 +00:00
Andy Binder
e95b6f1b5d Update mysql_db_setup.sql 2022-02-23 21:57:24 +01:00
Andy Binder
1cbb7bb5dd Create missing columns 2022-02-23 21:46:10 +01:00
Dimitrij
34f3ffa129 Add version number to splash screen 2022-02-22 23:26:04 +00:00
Dimitrij
ecd25a673e lib updates 2022-02-15 17:27:57 +00:00
Dimitrij
58d0778c3d Merge pull request #2145 from jacko873/Dev
External Connectors, Default Options updated
2022-01-28 13:50:31 +00:00
Dimitrij
81a5422974 Merge pull request #2144 from tecxx/develop-orig
TSS improve refresh token / otp request handling
2022-01-28 13:04:40 +00:00
jacko873
eb859e5ede External Connectors, Default Options updated
Updated options form to fix UI bug where domain was pushout of range,
Added saving of  default User API ID
adjusted RDP and SHH to check for default User API ID,
also adjusted code here for consistancey
2022-01-28 13:50:13 +01:00
tecxx
c8035b5071 TSS improve refresh token / otp request handling 2022-01-28 11:18:44 +01:00
Dimitrij
a98a336e52 Merge branch 'v1.77.3-dev' of https://github.com/mRemoteNG/mRemoteNG into v1.77.3-dev 2022-01-21 23:58:25 +00:00
Dimitrij
d7f6535b85 update putty to v0.76 2022-01-21 23:54:28 +00:00
Faryan Rezagholi
f9d4e3152b Update README.md
Added  installation via winget
2022-01-19 23:49:16 +01:00
Dimitrij
69bd816aeb Merge branch 'v1.77.3-dev' of https://github.com/mRemoteNG/mRemoteNG into v1.77.3-dev 2022-01-19 19:44:19 +00:00
Dimitrij
783810749c change log update 2022-01-19 19:42:43 +00:00
Dimitrij
92c3c967ba Merge pull request #2138 from ThoGoetz/v1.77.3-dev
Improve compatibility with Remote Desktop Connection Manager v2.83
2022-01-19 19:41:05 +00:00
Thomas Götzinger
c632ba4306 Allow importing connections from Remote Desktop Connection Manager v2.83 2022-01-19 16:59:42 +01:00
Thomas Götzinger
e29d2c25ba Fixing Null value exception, when saving imported connections from Remote Desktop Connection Manager 2022-01-19 16:59:16 +01:00
Dimitrij
5cfdc96cd2 Merge pull request #2132 from tecxx/develop-orig
fix refresh token issue in TSS API
2022-01-18 15:48:20 +00:00
tecxx
a20e10b342 fix refresh token issue in TSS API 2022-01-18 16:28:03 +01:00
Dimitrij
39b7414553 correction 2022-01-18 10:50:09 +00:00
Dimitrij
0eef20caf6 Merge pull request #2131 from mRemoteNG/v1.77.2-dev
V1.77.2 dev
2022-01-18 10:44:50 +00:00
157 changed files with 8223 additions and 3465 deletions

View File

@@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.77.3]
### Added
- #2138: Improve compatibility with Remote Desktop Connection Manager v2.83
- #2123: Thycotic Secret Server - Added 2FA OTP support
### Changed
- #1546: Enable resize without reconnect for RDP Version Rdc9 or higher
## [1.77.2]
### Added
- #2086: Replace WebClient with async HttpClient for updater.

View File

@@ -11,8 +11,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.Core" Version="3.7.6" />
<PackageReference Include="AWSSDK.EC2" Version="3.7.55.3" />
<PackageReference Include="AWSSDK.Core" Version="3.7.11.2" />
<PackageReference Include="AWSSDK.EC2" Version="3.7.72" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>

View File

@@ -13,7 +13,12 @@
if (cbUseSSO.Checked)
btnOK.Focus();
else
tbPassword.Focus();
{
if (tbPassword.Text.Length == 0)
tbPassword.Focus();
else
tbOTP.Focus();
}
}
private void cbUseSSO_CheckedChanged(object sender, EventArgs e)

View File

@@ -22,7 +22,7 @@ namespace ExternalConnectors.TSS
public static void Init()
{
if (ssPassword != "" || initdone == true)
if (initdone == true)
return;
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\mRemoteSSInterface");
@@ -32,6 +32,7 @@ namespace ExternalConnectors.TSS
SSConnectionForm f = new SSConnectionForm();
string? un = key.GetValue("Username") as string;
f.tbUsername.Text = un ?? "";
f.tbPassword.Text = SSConnectionData.ssPassword; // in OTP refresh cases, this value might already be filled
string? url = key.GetValue("URL") as string;
if (url == null || !url.Contains("://"))
@@ -42,12 +43,9 @@ namespace ExternalConnectors.TSS
if (b == null || (string)b != "True")
ssSSO = false;
else
{
ssSSO = true;
initdone = true;
}
f.cbUseSSO.Checked = ssSSO;
// show dialog
while (true)
{
@@ -66,7 +64,10 @@ namespace ExternalConnectors.TSS
try
{
if (TestCredentials() == true)
{
initdone = true;
break;
}
}
catch (Exception)
{
@@ -164,58 +165,74 @@ namespace ExternalConnectors.TSS
private static string GetToken()
{
string authUsername = SSConnectionData.ssUsername;
string authPassword = SSConnectionData.ssPassword;
string baseURL = SSConnectionData.ssUrl;
string OTP = SSConnectionData.ssOTP;
string Bearer = SSConnectionData.ssTokenBearer;
string Refresh = SSConnectionData.ssTokenRefresh;
DateTime ExpiresOn = SSConnectionData.ssTokenExpiresOn;
//Check if current token is valid
if (!String.IsNullOrEmpty(Bearer))
// if there is no token, fetch a fresh one
if (String.IsNullOrEmpty(SSConnectionData.ssTokenBearer))
{
if (ExpiresOn >= DateTime.UtcNow)
{
return Bearer;
}
else
{
//try using refresh token
using (var httpClient = new HttpClient())
{
var tokenClient = new OAuth2ServiceClient(baseURL, httpClient);
var token = tokenClient.AuthorizeAsync(Grant_type.Refresh_token, null, null, Refresh, null).Result;
var tokenResult = token.Access_token;
SSConnectionData.ssTokenBearer = tokenResult;
return tokenResult;
}
}
return GetTokenFresh();
}
// if there is a token, check if it is valid
if (SSConnectionData.ssTokenExpiresOn >= DateTime.UtcNow)
{
return SSConnectionData.ssTokenBearer;
}
else
{
// try using refresh token
using (var httpClient = new HttpClient())
{
// Authenticate:
var tokenClient = new OAuth2ServiceClient(baseURL, httpClient);
// call below will throw an exception if the creds are invalid
var token = tokenClient.AuthorizeAsync(Grant_type.Password, authUsername, authPassword, null, OTP).Result;
// here we can be sure the creds are ok - return success state
var tokenResult = token.Access_token;
SSConnectionData.ssTokenBearer = tokenResult;
SSConnectionData.ssTokenRefresh = token.Refresh_token;
SSConnectionData.ssTokenExpiresOn = token.Expires_on;
return tokenResult;
var tokenClient = new OAuth2ServiceClient(SSConnectionData.ssUrl, httpClient);
TokenResponse token = new();
try
{
token = tokenClient.AuthorizeAsync(Grant_type.Refresh_token, null, null, SSConnectionData.ssTokenRefresh, null).Result;
var tokenResult = token.Access_token;
SSConnectionData.ssTokenBearer = tokenResult;
SSConnectionData.ssTokenRefresh = token.Refresh_token;
SSConnectionData.ssTokenExpiresOn = token.Expires_on;
return tokenResult;
}
catch (Exception)
{
// refresh token failed. clean memory and start fresh
SSConnectionData.ssTokenBearer = "";
SSConnectionData.ssTokenRefresh = "";
SSConnectionData.ssTokenExpiresOn = DateTime.Now;
// if OTP is required we need to ask user for a new OTP
if (!String.IsNullOrEmpty(SSConnectionData.ssOTP))
{
SSConnectionData.initdone = false;
// the call below executes a connection test, which fetches a valid token
SSConnectionData.Init();
// we now have a fresh token in memory. return it to caller
return SSConnectionData.ssTokenBearer;
}
else
{
// no user interaction required. get a fresh token and return it to caller
return GetTokenFresh();
}
}
}
}
}
static string GetTokenFresh()
{
using (var httpClient = new HttpClient())
{
// Authenticate:
var tokenClient = new OAuth2ServiceClient(SSConnectionData.ssUrl, httpClient);
// call below will throw an exception if the creds are invalid
var token = tokenClient.AuthorizeAsync(Grant_type.Password, SSConnectionData.ssUsername, SSConnectionData.ssPassword, null, SSConnectionData.ssOTP).Result;
// here we can be sure the creds are ok - return success state
var tokenResult = token.Access_token;
SSConnectionData.ssTokenBearer = tokenResult;
SSConnectionData.ssTokenRefresh = token.Refresh_token;
SSConnectionData.ssTokenExpiresOn = token.Expires_on;
return tokenResult;
}
}

View File

@@ -88,12 +88,14 @@ You will need to compile it yourself using Visual Studio.
### Minimum Requirements
* [Microsoft Visual C++ Redistributable for Visual Studio 2015 - 2022](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)
* [Microsoft .NET 6.0](https://dotnet.microsoft.com/download/dotnet/6.0)
* [Microsoft .NET 6.0 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/6.0)
* Microsoft Terminal Service Client 6.0 or later
* Needed if you use RDP. mstscax.dll and/or msrdp.ocx be registered.
### Download
> :star: Starting Windows 11 you can use winget to install mRemoteNG. Just run `winget install -e --id mRemoteNG.mRemoteNG`
mRemoteNG is available as a redistributable MSI package or as a portable ZIP package and can be downloaded from the following locations:
* [GitHub](https://github.com/mRemoteNG/mRemoteNG/releases)
* [Project Website](https://mremoteng.org/download)

View File

@@ -37,14 +37,9 @@ namespace mRemoteNG.App
messageCollector.AddMessage(MessageClass.ErrorMsg, errorText, true);
//About to pop up a message, let's not block it...
FrmSplashScreen.getInstance().Close();
FrmSplashScreenNew.GetInstance().Close();
var ShouldIStayOrShouldIGo = CTaskDialog.MessageBox(Application.ProductName,
Language.CompatibilityProblemDetected, errorText, "",
"",
Language.CheckboxDoNotShowThisMessageAgain,
ETaskDialogButtons.OkCancel, ESysIcons.Warning,
ESysIcons.Warning);
var ShouldIStayOrShouldIGo = CTaskDialog.MessageBox(Application.ProductName, Language.CompatibilityProblemDetected, errorText, "", "", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.OkCancel, ESysIcons.Warning, ESysIcons.Warning);
if (CTaskDialog.VerificationChecked && ShouldIStayOrShouldIGo == DialogResult.OK)
{
messageCollector.AddMessage(MessageClass.ErrorMsg, "User requests that FIPS check be overridden", true);

View File

@@ -38,8 +38,8 @@ namespace mRemoteNG.App
return;
HeadlessFileImport(
openFileDialog.FileNames,
importDestinationContainer,
openFileDialog.FileNames,
importDestinationContainer,
Runtime.ConnectionsService,
fileName => MessageBox.Show(string.Format(Language.ImportFileFailedContent, fileName), Language.AskUpdatesMainInstruction,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1));
@@ -51,9 +51,40 @@ namespace mRemoteNG.App
}
}
public static void ImportFromRemoteDesktopManagerCsv(ContainerInfo importDestinationContainer)
{
try
{
using (Runtime.ConnectionsService.BatchedSavingContext())
{
using (var openFileDialog = new OpenFileDialog())
{
openFileDialog.CheckFileExists = true;
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
openFileDialog.Multiselect = false;
var fileTypes = new List<string>();
fileTypes.AddRange(new[] {Language.FiltermRemoteRemoteDesktopManagerCSV, "*.csv"});
openFileDialog.Filter = string.Join("|", fileTypes.ToArray());
if (openFileDialog.ShowDialog() != DialogResult.OK)
return;
var importer = new RemoteDesktopManagerImporter();
importer.Import(openFileDialog.FileName, importDestinationContainer);
}
}
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromRemoteDesktopManagerCsv() failed.", ex);
}
}
public static void HeadlessFileImport(
IEnumerable<string> filePaths,
ContainerInfo importDestinationContainer,
IEnumerable<string> filePaths,
ContainerInfo importDestinationContainer,
ConnectionsService connectionsService,
Action<string> exceptionAction = null)
{

View File

@@ -8,13 +8,9 @@ namespace mRemoteNG.App.Info
{
public static class SettingsFileInfo
{
private static readonly string ExePath =
Path.GetDirectoryName(Assembly.GetAssembly(typeof(ConnectionInfo))?.Location);
private static readonly string ExePath = Path.GetDirectoryName(Assembly.GetAssembly(typeof(ConnectionInfo))?.Location);
public static string SettingsPath =>
Runtime.IsPortableEdition
? ExePath
: Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" + Application.ProductName;
public static string SettingsPath => Runtime.IsPortableEdition ? ExePath : Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" + Application.ProductName;
public static string LayoutFileName { get; } = "pnlLayout.xml";
public static string ExtAppsFilesName { get; } = "extApps.xml";

View File

@@ -22,7 +22,7 @@ namespace mRemoteNG.App.Info
public static Uri GetUpdateChannelInfo()
{
var channel = IsValidChannel(Settings.Default.UpdateChannel) ? Settings.Default.UpdateChannel : STABLE;
var channel = IsValidChannel(Properties.OptionsUpdatesPage.Default.UpdateChannel) ? Properties.OptionsUpdatesPage.Default.UpdateChannel : STABLE;
return GetUpdateTxtUri(channel);
}
@@ -65,7 +65,7 @@ namespace mRemoteNG.App.Info
private static Uri GetUpdateTxtUri(string channel)
{
return new Uri(new Uri(Settings.Default.UpdateAddress),
return new Uri(new Uri(Properties.OptionsUpdatesPage.Default.UpdateAddress),
new Uri(GetChannelFileName(channel), UriKind.Relative));
}

View File

@@ -10,10 +10,8 @@ namespace mRemoteNG.App.Initialization
{
new SaveConnectionsOnEdit(Runtime.ConnectionsService);
if (Settings.Default.FirstStart && !Settings.Default.LoadConsFromCustomLocation &&
!File.Exists(Runtime.ConnectionsService.GetStartupConnectionFileName()))
Runtime.ConnectionsService.NewConnectionsFile(Runtime.ConnectionsService
.GetStartupConnectionFileName());
if (Properties.App.Default.FirstStart && !Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation && !File.Exists(Runtime.ConnectionsService.GetStartupConnectionFileName()))
Runtime.ConnectionsService.NewConnectionsFile(Runtime.ConnectionsService.GetStartupConnectionFileName());
Runtime.LoadConnections();
}

View File

@@ -27,10 +27,10 @@ namespace mRemoteNG.App
private void Initialize()
{
XmlConfigurator.Configure(LogManager.CreateRepository("mRemoteNG"));
if (string.IsNullOrEmpty(Settings.Default.LogFilePath))
Settings.Default.LogFilePath = BuildLogFilePath();
if (string.IsNullOrEmpty(Properties.OptionsNotificationsPage.Default.LogFilePath))
Properties.OptionsNotificationsPage.Default.LogFilePath = BuildLogFilePath();
SetLogPath(Settings.Default.LogToApplicationDirectory ? DefaultLogPath : Settings.Default.LogFilePath);
SetLogPath(Properties.OptionsNotificationsPage.Default.LogToApplicationDirectory ? DefaultLogPath : Properties.OptionsNotificationsPage.Default.LogFilePath);
}
public void SetLogPath(string path)

View File

@@ -1,6 +1,8 @@
using System;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using mRemoteNG.Properties;
using mRemoteNG.UI.Forms;
@@ -17,7 +19,7 @@ namespace mRemoteNG.App
[STAThread]
public static void Main(string[] args)
{
if (Settings.Default.SingleInstance)
if (Properties.OptionsStartupExitPage.Default.SingleInstance)
StartApplicationAsSingleInstance();
else
StartApplication();
@@ -26,11 +28,23 @@ namespace mRemoteNG.App
private static void StartApplication()
{
CatchAllUnhandledExceptions();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var frmSplashScreen = FrmSplashScreen.getInstance();
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
var frmSplashScreen = FrmSplashScreenNew.GetInstance();
Screen targetScreen = (Screen.AllScreens.Length > 1) ? Screen.AllScreens[1] : Screen.AllScreens[0];
Rectangle viewport = targetScreen.WorkingArea;
frmSplashScreen.Top = viewport.Top;
frmSplashScreen.Left = viewport.Left;
// normaly it should be screens[1] however due DPI apply 1 size "same" as default with 100%
frmSplashScreen.Left = viewport.Left + (targetScreen.Bounds.Size.Width / 2) - (frmSplashScreen.Width / 2);
frmSplashScreen.Top = viewport.Top + (targetScreen.Bounds.Size.Height / 2) - (frmSplashScreen.Height / 2);
frmSplashScreen.Show();
Application.Run(FrmMain.Default);
System.Windows.Forms.Application.Run(FrmMain.Default);
}
public static void CloseSingletonInstanceMutex()
@@ -78,15 +92,15 @@ namespace mRemoteNG.App
private static void CatchAllUnhandledExceptions()
{
Application.ThreadException += ApplicationOnThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
System.Windows.Forms.Application.ThreadException += ApplicationOnThreadException;
System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
}
private static void ApplicationOnThreadException(object sender, ThreadExceptionEventArgs e)
{
if (!FrmSplashScreen.getInstance().IsDisposed)
FrmSplashScreen.getInstance().Close();
// if (PresentationSource.FromVisual(FrmSplashScreenNew))
FrmSplashScreenNew.GetInstance().Close();
if (FrmMain.Default.IsDisposed) return;
@@ -97,8 +111,9 @@ namespace mRemoteNG.App
private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (!FrmSplashScreen.getInstance().IsDisposed)
FrmSplashScreen.getInstance().Close();
//TODO: Check if splash closed properly
//if (!FrmSplashScreenNew.GetInstance().IsDisposed)
// FrmSplashScreenNew.GetInstance().Close();
var window = new FrmUnhandledException(e.ExceptionObject as Exception, e.IsTerminating);
window.ShowDialog(FrmMain.Default);

View File

@@ -91,17 +91,17 @@ namespace mRemoteNG.App
return;
connectionFileName = loadDialog.FileName;
Settings.Default.UseSQLServer = false;
Settings.Default.Save();
Properties.OptionsDBsPage.Default.UseSQLServer = false;
Properties.OptionsDBsPage.Default.Save();
}
else if (!Settings.Default.UseSQLServer)
else if (!Properties.OptionsDBsPage.Default.UseSQLServer)
{
connectionFileName = ConnectionsService.GetStartupConnectionFileName();
}
ConnectionsService.LoadConnections(Settings.Default.UseSQLServer, false, connectionFileName);
ConnectionsService.LoadConnections(Properties.OptionsDBsPage.Default.UseSQLServer, false, connectionFileName);
if (Settings.Default.UseSQLServer)
if (Properties.OptionsDBsPage.Default.UseSQLServer)
{
ConnectionsService.LastSqlUpdate = DateTime.Now;
}
@@ -115,26 +115,20 @@ namespace mRemoteNG.App
}
catch (Exception ex)
{
FrmSplashScreen.getInstance().Close();
FrmSplashScreenNew.GetInstance().Close();
if (Settings.Default.UseSQLServer)
if (Properties.OptionsDBsPage.Default.UseSQLServer)
{
MessageCollector.AddExceptionMessage(Language.LoadFromSqlFailed, ex);
var commandButtons = string.Join("|", Language._TryAgain,
Language.CommandOpenConnectionFile,
string.Format(Language.CommandExitProgram,
Application.ProductName));
CTaskDialog.ShowCommandBox(Application.ProductName, Language.LoadFromSqlFailed,
Language.LoadFromSqlFailedContent,
MiscTools.GetExceptionMessageRecursive(ex), "", "",
commandButtons, false, ESysIcons.Error, ESysIcons.Error);
var commandButtons = string.Join("|", Language._TryAgain, Language.CommandOpenConnectionFile, string.Format(Language.CommandExitProgram, Application.ProductName));
CTaskDialog.ShowCommandBox(Application.ProductName, Language.LoadFromSqlFailed, Language.LoadFromSqlFailedContent, MiscTools.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, ESysIcons.Error, ESysIcons.Error);
switch (CTaskDialog.CommandButtonResult)
{
case 0:
LoadConnections(withDialog);
return;
case 1:
Settings.Default.UseSQLServer = false;
Properties.OptionsDBsPage.Default.UseSQLServer = false;
LoadConnections(true);
return;
default:
@@ -163,14 +157,7 @@ namespace mRemoteNG.App
{
try
{
CTaskDialog.ShowTaskDialogBox(
GeneralAppInfo.ProductName,
Language.ConnectionFileNotFound,
"", "", "", "", "",
string.Join(" | ", commandButtons),
ETaskDialogButtons.None,
ESysIcons.Question,
ESysIcons.Question);
CTaskDialog.ShowTaskDialogBox(GeneralAppInfo.ProductName, Language.ConnectionFileNotFound, "", "", "", "", "", string.Join(" | ", commandButtons), ETaskDialogButtons.None, ESysIcons.Question, ESysIcons.Question);
switch (CTaskDialog.CommandButtonResult)
{
@@ -195,11 +182,7 @@ namespace mRemoteNG.App
}
catch (Exception exc)
{
MessageCollector.AddExceptionMessage(
string
.Format(Language.ConnectionsFileCouldNotBeLoadedNew,
connectionFileName), exc,
MessageClass.InformationMsg);
MessageCollector.AddExceptionMessage(string.Format(Language.ConnectionsFileCouldNotBeLoadedNew, connectionFileName), exc, MessageClass.InformationMsg);
}
}
@@ -215,12 +198,7 @@ namespace mRemoteNG.App
}
else
{
MessageBox.Show(FrmMain.Default,
string.Format(Language.ErrorStartupConnectionFileLoad, Environment.NewLine,
Application.ProductName,
ConnectionsService.GetStartupConnectionFileName(),
MiscTools.GetExceptionMessageRecursive(ex)),
@"Could not load startup file.", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(FrmMain.Default, string.Format(Language.ErrorStartupConnectionFileLoad, Environment.NewLine, Application.ProductName, ConnectionsService.GetStartupConnectionFileName(), MiscTools.GetExceptionMessageRecursive(ex)), @"Could not load startup file.", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}

View File

@@ -66,14 +66,14 @@ namespace mRemoteNG.App
DateTime currentDate = DateTime.Now;
//OBSOLETE: Settings.Default.SaveConsOnExit is obsolete and should be removed in a future release
if (Settings.Default.SaveConsOnExit || (Settings.Default.SaveConnectionsFrequency == (int)ConnectionsBackupFrequencyEnum.OnExit))
if (Properties.OptionsStartupExitPage.Default.SaveConnectionsOnExit || (Properties.OptionsBackupPage.Default.SaveConnectionsFrequency == (int)ConnectionsBackupFrequencyEnum.OnExit))
{
Runtime.ConnectionsService.SaveConnections();
return;
}
lastUpdate = Runtime.ConnectionsService.UsingDatabase ? Runtime.ConnectionsService.LastSqlUpdate : Runtime.ConnectionsService.LastFileUpdate;
switch (Settings.Default.SaveConnectionsFrequency)
switch (Properties.OptionsBackupPage.Default.SaveConnectionsFrequency)
{
case (int)ConnectionsBackupFrequencyEnum.Daily:
updateDate = lastUpdate.AddDays(1);

View File

@@ -38,8 +38,7 @@ namespace mRemoteNG.App
public void InitializeProgram(MessageCollector messageCollector)
{
Debug.Print("---------------------------" + Environment.NewLine + "[START] - " +
Convert.ToString(DateTime.Now, CultureInfo.InvariantCulture));
Debug.Print("---------------------------" + Environment.NewLine + "[START] - " + Convert.ToString(DateTime.Now, CultureInfo.InvariantCulture));
var startupLogger = new StartupDataLogger(messageCollector);
startupLogger.LogStartupData();
CompatibilityChecker.CheckCompatibility(messageCollector);
@@ -59,10 +58,9 @@ namespace mRemoteNG.App
public void CreateConnectionsProvider(MessageCollector messageCollector)
{
messageCollector.AddMessage(MessageClass.DebugMsg, "Determining if we need a database syncronizer");
if (!Settings.Default.UseSQLServer) return;
if (!Properties.OptionsDBsPage.Default.UseSQLServer) return;
messageCollector.AddMessage(MessageClass.DebugMsg, "Creating database syncronizer");
Runtime.ConnectionsService.RemoteConnectionsSyncronizer =
new RemoteConnectionsSyncronizer(new SqlConnectionsUpdateChecker());
Runtime.ConnectionsService.RemoteConnectionsSyncronizer = new RemoteConnectionsSyncronizer(new SqlConnectionsUpdateChecker());
Runtime.ConnectionsService.RemoteConnectionsSyncronizer.Enable();
}
@@ -78,12 +76,8 @@ namespace mRemoteNG.App
}
var nextUpdateCheck =
Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(
TimeSpan
.FromDays(Convert.ToDouble(Settings
.Default
.CheckForUpdatesFrequencyDays))));
if (!Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
Convert.ToDateTime(Properties.OptionsUpdatesPage.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(Properties.OptionsUpdatesPage.Default.CheckForUpdatesFrequencyDays))));
if (!Properties.OptionsUpdatesPage.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
{
return;
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
@@ -22,7 +22,7 @@ namespace mRemoteNG.App
private SupportedCultures()
{
foreach (var CultureName in Settings.Default.SupportedUICultures.Split(','))
foreach (var CultureName in Properties.AppUI.Default.SupportedUICultures.Split(','))
{
try
{

View File

@@ -58,23 +58,18 @@ namespace mRemoteNG.App.Update
private void SetDefaultProxySettings()
{
var shouldWeUseProxy = Settings.Default.UpdateUseProxy;
var proxyAddress = Settings.Default.UpdateProxyAddress;
var port = Settings.Default.UpdateProxyPort;
var useAuthentication = Settings.Default.UpdateProxyUseAuthentication;
var username = Settings.Default.UpdateProxyAuthUser;
var shouldWeUseProxy = Properties.OptionsUpdatesPage.Default.UpdateUseProxy;
var proxyAddress = Properties.OptionsUpdatesPage.Default.UpdateProxyAddress;
var port = Properties.OptionsUpdatesPage.Default.UpdateProxyPort;
var useAuthentication = Properties.OptionsUpdatesPage.Default.UpdateProxyUseAuthentication;
var username = Properties.OptionsUpdatesPage.Default.UpdateProxyAuthUser;
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
var password = cryptographyProvider.Decrypt(Settings.Default.UpdateProxyAuthPass, Runtime.EncryptionKey);
var password = cryptographyProvider.Decrypt(Properties.OptionsUpdatesPage.Default.UpdateProxyAuthPass, Runtime.EncryptionKey);
SetProxySettings(shouldWeUseProxy, proxyAddress, port, useAuthentication, username, password);
}
public void SetProxySettings(bool useProxy,
string address,
int port,
bool useAuthentication,
string username,
string password)
public void SetProxySettings(bool useProxy, string address, int port, bool useAuthentication, string username, string password)
{
if (useProxy && !string.IsNullOrEmpty(address))
{
@@ -229,11 +224,11 @@ namespace mRemoteNG.App.Update
_getUpdateInfoCancelToken = new CancellationTokenSource();
var updateInfo = await _httpClient.GetStringAsync(UpdateChannelInfo.GetUpdateChannelInfo(), _getUpdateInfoCancelToken.Token);
CurrentUpdateInfo = UpdateInfo.FromString(updateInfo);
Settings.Default.CheckForUpdatesLastCheck = DateTime.UtcNow;
Properties.OptionsUpdatesPage.Default.CheckForUpdatesLastCheck = DateTime.UtcNow;
if (!Settings.Default.UpdatePending)
if (!Properties.OptionsUpdatesPage.Default.UpdatePending)
{
Settings.Default.UpdatePending = IsUpdateAvailable();
Properties.OptionsUpdatesPage.Default.UpdatePending = IsUpdateAvailable();
}
}
finally

View File

@@ -0,0 +1,9 @@
namespace mRemoteNG.Config.ACL
{
public enum ACLPermissions
{
Hidden = 0,
ReadOnly = 1,
WriteAllow = 2
}
}

View File

@@ -20,8 +20,7 @@ namespace mRemoteNG.Config.Connections
connectionsService.ConnectionsLoaded += ConnectionsServiceOnConnectionsLoaded;
}
private void ConnectionsServiceOnConnectionsLoaded(object sender,
ConnectionsLoadedEventArgs connectionsLoadedEventArgs)
private void ConnectionsServiceOnConnectionsLoaded(object sender, ConnectionsLoadedEventArgs connectionsLoadedEventArgs)
{
connectionsLoadedEventArgs.NewConnectionTreeModel.CollectionChanged +=
ConnectionTreeModelOnCollectionChanged;
@@ -34,15 +33,12 @@ namespace mRemoteNG.Config.Connections
}
}
private void ConnectionTreeModelOnPropertyChanged(object sender,
PropertyChangedEventArgs propertyChangedEventArgs)
private void ConnectionTreeModelOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{
SaveConnectionOnEdit(propertyChangedEventArgs.PropertyName);
}
private void ConnectionTreeModelOnCollectionChanged(object sender,
NotifyCollectionChangedEventArgs
notifyCollectionChangedEventArgs)
private void ConnectionTreeModelOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
{
SaveConnectionOnEdit();
}
@@ -50,7 +46,7 @@ namespace mRemoteNG.Config.Connections
private void SaveConnectionOnEdit(string propertyName = "")
{
//OBSOLETE: mRemoteNG.Settings.Default.SaveConnectionsAfterEveryEdit is obsolete and should be removed in a future release
if (mRemoteNG.Properties.Settings.Default.SaveConnectionsAfterEveryEdit || (mRemoteNG.Properties.Settings.Default.SaveConnectionsFrequency == (int)ConnectionsBackupFrequencyEnum.OnEdit))
if (Properties.OptionsBackupPage.Default.SaveConnectionsAfterEveryEdit || (Properties.OptionsBackupPage.Default.SaveConnectionsFrequency == (int)ConnectionsBackupFrequencyEnum.OnEdit))
{
if (FrmMain.Default.IsClosing)
return;

View File

@@ -18,6 +18,7 @@ using mRemoteNG.Tools;
using mRemoteNG.Tree;
using mRemoteNG.Tree.Root;
using mRemoteNG.Resources.Language;
using mRemoteNG.Properties;
namespace mRemoteNG.Config.Connections
{
@@ -27,10 +28,7 @@ namespace mRemoteNG.Config.Connections
private readonly ISerializer<IEnumerable<LocalConnectionPropertiesModel>, string> _localPropertiesSerializer;
private readonly IDataProvider<string> _dataProvider;
public SqlConnectionsSaver(SaveFilter saveFilter,
ISerializer<IEnumerable<LocalConnectionPropertiesModel>, string>
localPropertieSerializer,
IDataProvider<string> localPropertiesDataProvider)
public SqlConnectionsSaver(SaveFilter saveFilter, ISerializer<IEnumerable<LocalConnectionPropertiesModel>, string> localPropertieSerializer, IDataProvider<string> localPropertiesDataProvider)
{
if (saveFilter == null)
throw new ArgumentNullException(nameof(saveFilter));
@@ -47,15 +45,13 @@ namespace mRemoteNG.Config.Connections
if (PropertyIsLocalOnly(propertyNameTrigger))
{
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg,
$"Property {propertyNameTrigger} is local only. Not saving to database.");
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, $"Property {propertyNameTrigger} is local only. Not saving to database.");
return;
}
if (SqlUserIsReadOnly())
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
"Trying to save connection tree but the SQL read only checkbox is checked, aborting!");
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Trying to save connection tree but the SQL read only checkbox is checked, aborting!");
return;
}
@@ -68,8 +64,7 @@ namespace mRemoteNG.Config.Connections
if (!databaseVersionVerifier.VerifyDatabaseVersion(metaData.ConfVersion))
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
Language.ErrorConnectionListSaveFailed);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ErrorConnectionListSaveFailed);
return;
}
@@ -178,7 +173,7 @@ namespace mRemoteNG.Config.Connections
private bool SqlUserIsReadOnly()
{
return Properties.Settings.Default.SQLReadOnly;
return Properties.OptionsDBsPage.Default.SQLReadOnly;
}
}
}

View File

@@ -7,6 +7,7 @@ using mRemoteNG.Security;
using mRemoteNG.Security.Factories;
using mRemoteNG.Tree;
using mRemoteNG.Tree.Root;
using mRemoteNG.Properties;
namespace mRemoteNG.Config.Connections
{
@@ -37,7 +38,7 @@ namespace mRemoteNG.Config.Connections
cryptographyProvider,
connectionTreeModel,
_saveFilter,
Properties.Settings.Default.EncryptCompleteConnectionsFile);
Properties.OptionsSecurityPage.Default.EncryptCompleteConnectionsFile);
var rootNode = connectionTreeModel.RootNodes.OfType<RootNodeInfo>().First();
var xml = xmlConnectionsSerializer.Serialize(rootNode);

View File

@@ -16,7 +16,7 @@ namespace mRemoteNG.Config.DataProviders
return;
var backupFileName =
string.Format(Properties.Settings.Default.BackupFileNameFormat, fileName, DateTime.Now);
string.Format(Properties.OptionsBackupPage.Default.BackupFileNameFormat, fileName, DateTime.Now);
File.Copy(fileName, backupFileName);
}
catch (Exception ex)
@@ -39,7 +39,7 @@ namespace mRemoteNG.Config.DataProviders
private bool FeatureIsTurnedOff()
{
return Properties.Settings.Default.BackupFileKeepCount == 0;
return Properties.OptionsBackupPage.Default.BackupFileKeepCount == 0;
}
}
}

View File

@@ -13,7 +13,7 @@ namespace mRemoteNG.Config.DataProviders
if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(directoryName))
return;
var searchPattern = string.Format(Properties.Settings.Default.BackupFileNameFormat, fileName, "*");
var searchPattern = string.Format(Properties.OptionsBackupPage.Default.BackupFileNameFormat, fileName, "*");
var files = Directory.GetFiles(directoryName, searchPattern);
if (files.Length <= maxBackupsToKeep)

View File

@@ -2,6 +2,7 @@
using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Messages;
using mRemoteNG.App;
using mRemoteNG.Properties;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
@@ -108,7 +109,7 @@ namespace mRemoteNG.Config.DataProviders
private bool DbUserIsReadOnly()
{
return Properties.Settings.Default.SQLReadOnly;
return Properties.OptionsDBsPage.Default.SQLReadOnly;
}
}
}

View File

@@ -1,4 +1,5 @@
using mRemoteNG.App;
using mRemoteNG.Properties;
using mRemoteNG.Security.SymmetricEncryption;
namespace mRemoteNG.Config.DatabaseConnectors
@@ -7,12 +8,12 @@ namespace mRemoteNG.Config.DatabaseConnectors
{
public static IDatabaseConnector DatabaseConnectorFromSettings()
{
var sqlType = Properties.Settings.Default.SQLServerType;
var sqlHost = Properties.Settings.Default.SQLHost;
var sqlCatalog = Properties.Settings.Default.SQLDatabaseName;
var sqlUsername = Properties.Settings.Default.SQLUser;
var sqlType = Properties.OptionsDBsPage.Default.SQLServerType;
var sqlHost = Properties.OptionsDBsPage.Default.SQLHost;
var sqlCatalog = Properties.OptionsDBsPage.Default.SQLDatabaseName;
var sqlUsername = Properties.OptionsDBsPage.Default.SQLUser;
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
var sqlPassword = cryptographyProvider.Decrypt(Properties.Settings.Default.SQLPass, Runtime.EncryptionKey);
var sqlPassword = cryptographyProvider.Decrypt(Properties.OptionsDBsPage.Default.SQLPass, Runtime.EncryptionKey);
return DatabaseConnector(sqlType, sqlHost, sqlCatalog, sqlUsername, sqlPassword);
}

View File

@@ -0,0 +1,47 @@
#region
using System.IO;
using Castle.Core.Internal;
using mRemoteNG.App;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Csv.RemoteDesktopManager;
using mRemoteNG.Container;
using mRemoteNG.Messages;
#endregion
namespace mRemoteNG.Config.Import;
public class RemoteDesktopManagerImporter : IConnectionImporter<string>
{
public void Import(string filePath, ContainerInfo destinationContainer)
{
if (string.IsNullOrEmpty(filePath))
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File path is null.");
return;
}
if (!File.Exists(filePath))
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
$"Unable to import file. File does not exist. Path: {filePath}");
var dataProvider = new FileDataProvider(filePath);
var csvString = dataProvider.Load();
if (string.IsNullOrEmpty(csvString))
{
var csvDeserializer = new CsvConnectionsDeserializerRdmFormat();
var connectionTreeModel = csvDeserializer.Deserialize(csvString);
var rootContainer = new ContainerInfo { Name = Path.GetFileNameWithoutExtension(filePath) };
rootContainer.AddChildRange(connectionTreeModel.RootNodes);
destinationContainer.AddChild(rootContainer);
}
else
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File is empty.");
return;
}
}
}

View File

@@ -226,6 +226,18 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
connectionRecord.UseCredSsp = value;
}
if (headers.Contains("UseRestrictedAdmin"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("UseRestrictedAdmin")], out bool value))
connectionRecord.UseRestrictedAdmin = value;
}
if (headers.Contains("UseRCG"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("UseRCG")], out bool value))
connectionRecord.UseRCG = value;
}
if (headers.Contains("UseVmId"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("UseVmId")], out bool value))
@@ -636,6 +648,19 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
connectionRecord.Inheritance.UseCredSsp = value;
}
if (headers.Contains("InheritUseRestrictedAdmin"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseRestrictedAdmin")], out bool value))
connectionRecord.Inheritance.UseRestrictedAdmin = value;
}
if (headers.Contains("InheritUseRCG"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseRCG")], out bool value))
connectionRecord.Inheritance.UseRCG = value;
}
if (headers.Contains("InheritUseVmId"))
{
if (bool.TryParse(connectionCsv[headers.IndexOf("InheritUseVmId")], out bool value))

View File

@@ -56,7 +56,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
if (_saveFilter.SaveDomain)
sb.Append("Domain;");
sb.Append("Hostname;Port;VmId;Protocol;SSHTunnelConnectionName;OpeningCommand;SSHOptions;PuttySession;ConnectToConsole;UseCredSsp;UseVmId;UseEnhancedMode;RenderingEngine;RDPAuthenticationLevel;" +
sb.Append("Hostname;Port;VmId;Protocol;SSHTunnelConnectionName;OpeningCommand;SSHOptions;PuttySession;ConnectToConsole;UseCredSsp;UseRestrictedAdmin;UseRCG;UseVmId;UseEnhancedMode;RenderingEngine;RDPAuthenticationLevel;" +
"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;" +
@@ -68,7 +68,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
"InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDisableFullWindowDrag;InheritDisableMenuAnimations;InheritDisableCursorShadow;InheritDisableCursorBlinking;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;" +
"InheritProtocol;InheritSSHTunnelConnectionName;InheritOpeningCommand;InheritSSHOptions;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;" +
"InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;" +
"InheritUseConsoleSession;InheritUseCredSsp;InheritUseVmId;InheritUseEnhancedMode;InheritVmId;InheritRenderingEngine;InheritUsername;" +
"InheritUseConsoleSession;InheritUseCredSsp;InheritUseRestrictedAdmin;InheritUseRCG;InheritUseVmId;InheritUseEnhancedMode;InheritVmId;InheritRenderingEngine;InheritUsername;" +
"InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;" +
"InheritFavorite;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;" +
"InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;" +
@@ -125,6 +125,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
.Append(FormatForCsv(con.PuttySession))
.Append(FormatForCsv(con.UseConsoleSession))
.Append(FormatForCsv(con.UseCredSsp))
.Append(FormatForCsv(con.UseRestrictedAdmin))
.Append(FormatForCsv(con.UseRCG))
.Append(FormatForCsv(con.UseVmId))
.Append(FormatForCsv(con.UseEnhancedMode))
.Append(FormatForCsv(con.RenderingEngine))
@@ -216,6 +218,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv
.Append(FormatForCsv(con.Inheritance.AutomaticResize))
.Append(FormatForCsv(con.Inheritance.UseConsoleSession))
.Append(FormatForCsv(con.Inheritance.UseCredSsp))
.Append(FormatForCsv(con.Inheritance.UseRestrictedAdmin))
.Append(FormatForCsv(con.Inheritance.UseRCG))
.Append(FormatForCsv(con.Inheritance.UseVmId))
.Append(FormatForCsv(con.Inheritance.UseEnhancedMode))
.Append(FormatForCsv(con.Inheritance.VmId))

View File

@@ -0,0 +1,226 @@
#region
using System;
using System.Collections.Generic;
using System.Linq;
using mRemoteNG.Connection;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Container;
using mRemoteNG.Tree;
#endregion
namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv.RemoteDesktopManager;
/// <summary>
/// Import of connections from the Remote Desktop Manager (RDM) in a CSV file format
/// </summary>
public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string, ConnectionTreeModel>
{
private readonly List<RemoteDesktopManagerConnectionInfo> _connectionTypes;
private readonly HashSet<string> _groups;
public CsvConnectionsDeserializerRdmFormat()
{
_connectionTypes = new List<RemoteDesktopManagerConnectionInfo>
{
new(ProtocolType.RDP, "RDP (Microsoft Remote Desktop)", 3389, "Remote Desktop"),
new(ProtocolType.SSH2, "SSH Shell", 22, "SSH")
};
_groups = new HashSet<string>();
Containers = new List<ContainerInfo>();
}
private List<ContainerInfo> Containers { get; }
/// <summary>
/// Deserializes the CSV file into a <see cref="ConnectionTreeModel" />
/// </summary>
/// <param name="serializedData">Data from the CSV file</param>
/// <returns></returns>
public ConnectionTreeModel Deserialize(string serializedData)
{
var lines = serializedData.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
var csvHeaders = new List<string>();
var connections = new List<(ConnectionInfo, string)>(); // (ConnectionInfo, group)
for (var lineNumber = 0; lineNumber < lines.Length; lineNumber++)
{
var line = lines[lineNumber].Split(',');
if (lineNumber == 0)
{
csvHeaders = line.ToList();
}
else
{
var (connectionInfo, group) = ParseConnectionInfo(csvHeaders, line);
if (connectionInfo == default) continue;
connections.Add((connectionInfo, group));
}
}
var connectionTreeModel = new ConnectionTreeModel();
var unsortedConnections = new ContainerInfo { Name = "Unsorted" };
foreach (var containerInfo in Containers) connectionTreeModel.AddRootNode(containerInfo);
var allChildren = Containers.SelectMany(x => x.GetRecursiveChildList().Select(y => (ContainerInfo)y)).ToList();
foreach (var (connection, path) in connections)
if (string.IsNullOrEmpty(path))
{
unsortedConnections.AddChild(connection);
}
else
{
var container = allChildren.FirstOrDefault(x => x.ConstantID == path);
if (container == default) continue;
container.AddChild(connection);
}
if (unsortedConnections.HasChildren())
connectionTreeModel.AddRootNode(unsortedConnections);
return connectionTreeModel;
}
/// <summary>
/// Parses a line from the CSV file and returns <see cref="ConnectionInfo" />
/// </summary>
/// <param name="headers">CSV Headers</param>
/// <param name="connectionCsv">CSV Columns</param>
/// <returns></returns>
private (ConnectionInfo connectionInfo, string) ParseConnectionInfo(IList<string> headers, IReadOnlyList<string> connectionCsv)
{
if (headers.Count != connectionCsv.Count) return default;
var hostString = connectionCsv[headers.IndexOf("Host")].Trim();
if (string.IsNullOrEmpty(hostString)) return default;
var hostType = Uri.CheckHostName(hostString);
if (hostType == UriHostNameType.Unknown) return default;
var connectionTypeString = connectionCsv[headers.IndexOf("ConnectionType")];
if (string.IsNullOrEmpty(connectionTypeString)) return default;
var connectionType = _connectionTypes.FirstOrDefault(x => x.Name == connectionTypeString);
if (connectionType == default) return default;
var portString = connectionCsv[headers.IndexOf("Port")] ?? connectionType.Port.ToString();
if (!int.TryParse(portString, out var port)) port = connectionType.Port;
var name = connectionCsv[headers.IndexOf("Name")];
var description = connectionCsv[headers.IndexOf("Description")];
var group = connectionCsv[headers.IndexOf("Group")];
var username = connectionCsv[headers.IndexOf("CredentialUserName")];
var domain = connectionCsv[headers.IndexOf("CredentialDomain")];
var password = connectionCsv[headers.IndexOf("CredentialPassword")];
var connectionInfo = new ConnectionInfo(Guid.NewGuid().ToString())
{
Name = name,
Hostname = hostString,
Port = port,
Username = username,
Password = password,
Domain = domain,
Icon = connectionType.IconName ?? "mRemoteNG",
Description = description,
Protocol = connectionType.Protocol
};
if (!string.IsNullOrEmpty(group))
if (group.Contains('\\'))
{
var groupParts = group.Split('\\').ToList();
var parentContainerName = groupParts[0];
var parentContainer = Containers.FirstOrDefault(x => x.Name == parentContainerName);
if (parentContainer == default)
{
parentContainer = new ContainerInfo(group) { Name = parentContainerName };
Containers.Add(parentContainer);
}
groupParts.RemoveAt(0);
AddChildrenRecursive(group, groupParts, parentContainer);
}
return string.IsNullOrEmpty(group) ? (connectionInfo, default) : (connectionInfo, group);
}
/// <summary>
/// Adds a child to a container recursively
/// </summary>
/// <param name="group">Full path of the RDM Grouping</param>
/// <param name="groupParts">Segements of the group path</param>
/// <param name="parentContainer">Parent container to add children to</param>
private void AddChildrenRecursive(string group, IList<string> groupParts, ContainerInfo parentContainer)
{
if (_groups.Contains(group)) return;
var groupCount = groupParts.Count;
while (groupCount > 0)
{
var childName = groupParts[0];
var newContainer = new ContainerInfo(group) { Name = childName };
var childrenNames = parentContainer.GetRecursiveChildList().Select(x => x.Name).ToList();
if (!childrenNames.Any())
{
groupCount = AddChild(parentContainer, newContainer, groupCount);
_groups.Add(group);
continue;
}
if (groupParts.Count > 1)
{
var childContainer = (ContainerInfo)parentContainer.Children.FirstOrDefault(x => x.Name == childName);
if (childContainer == default)
{
groupCount = AddChild(parentContainer, newContainer, groupCount);
continue;
}
AddChildrenRecursive(group, groupParts.Skip(1).ToList(), childContainer);
}
else
{
parentContainer.AddChild(newContainer);
_groups.Add(group);
}
groupCount--;
}
}
/// <summary>
/// Adds a child to a container and returns the remaining group count
/// </summary>
/// <param name="parentContainer">Parent container</param>
/// <param name="newContainer">New child container</param>
/// <param name="groupCount">Remaining group count</param>
/// <returns></returns>
private static int AddChild(ContainerInfo parentContainer, ContainerInfo newContainer, int groupCount)
{
parentContainer.AddChild(newContainer);
groupCount--;
return groupCount;
}
}
/// <summary>
/// Record of supported connection types
/// </summary>
/// <param name="Protocol">Procotol</param>
/// <param name="Name">Display Name</param>
/// <param name="Port">Default Port</param>
/// <param name="IconName">Icon Name</param>
internal sealed record RemoteDesktopManagerConnectionInfo(ProtocolType Protocol, string Name, int Port, string IconName);

View File

@@ -0,0 +1,18 @@
#region
using System;
using mRemoteNG.Connection;
#endregion
namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv.RemoteDesktopManager;
public partial class CsvConnectionsDeserializerRdmFormat : ISerializer<ConnectionInfo, string>
{
public string Serialize(ConnectionInfo model)
{
throw new NotImplementedException();
}
public Version Version { get; }
}

View File

@@ -97,6 +97,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
connectionInfo.Port = (int)dataRow["Port"];
connectionInfo.UseConsoleSession = (bool)dataRow["ConnectToConsole"];
connectionInfo.UseCredSsp = (bool)dataRow["UseCredSsp"];
connectionInfo.UseRestrictedAdmin = (bool)dataRow["UseRestrictedAdmin"];
connectionInfo.UseRCG = (bool)dataRow["UseRCG"];
connectionInfo.UseVmId = (bool)dataRow["UseVmId"];
connectionInfo.RenderingEngine = (HTTPBase.RenderingEngine)Enum.Parse(typeof(HTTPBase.RenderingEngine), (string)dataRow["RenderingEngine"]);
connectionInfo.RDPAuthenticationLevel = (AuthenticationLevel)Enum.Parse(typeof(AuthenticationLevel), (string)dataRow["RDPAuthenticationLevel"]);
@@ -188,6 +190,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
connectionInfo.Inheritance.AutomaticResize = (bool)dataRow["InheritAutomaticResize"];
connectionInfo.Inheritance.UseConsoleSession = (bool)dataRow["InheritUseConsoleSession"];
connectionInfo.Inheritance.UseCredSsp = (bool)dataRow["InheritUseCredSsp"];
connectionInfo.Inheritance.UseRestrictedAdmin = (bool)dataRow["InheritUseRestrictedAdmin"];
connectionInfo.Inheritance.UseRCG = (bool)dataRow["InheritUseRCG"];
connectionInfo.Inheritance.UseVmId = (bool)dataRow["InheritUseVmId"];
connectionInfo.Inheritance.UseEnhancedMode = (bool)dataRow["InheritUseEnhancedMode"];
connectionInfo.Inheritance.VmId = (bool)dataRow["InheritVmId"];

View File

@@ -116,6 +116,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataTable.Columns.Add("PuttySession", typeof(string));
dataTable.Columns.Add("ConnectToConsole", typeof(bool));
dataTable.Columns.Add("UseCredSsp", typeof(bool));
dataTable.Columns.Add("UseRestrictedAdmin", typeof(bool));
dataTable.Columns.Add("UseRCG", typeof(bool));
dataTable.Columns.Add("RenderingEngine", typeof(string));
dataTable.Columns.Add("RDPAuthenticationLevel", typeof(string));
dataTable.Columns.Add("Colors", typeof(string));
@@ -192,6 +194,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataTable.Columns.Add("InheritResolution", typeof(bool));
dataTable.Columns.Add("InheritUseConsoleSession", typeof(bool));
dataTable.Columns.Add("InheritUseCredSsp", typeof(bool));
dataTable.Columns.Add("InheritUseRestrictedAdmin", typeof(bool));
dataTable.Columns.Add("InheritUseRCG", typeof(bool));
dataTable.Columns.Add("InheritRenderingEngine", typeof(bool));
dataTable.Columns.Add("InheritRDPAuthenticationLevel", typeof(bool));
dataTable.Columns.Add("InheritUsername", typeof(bool));
@@ -285,6 +289,10 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
isFieldNotChange = isFieldNotChange &&
dataRow["UseCredSsp"].Equals(connectionInfo.UseCredSsp);
isFieldNotChange = isFieldNotChange &&
dataRow["UseRestrictedAdmin"].Equals(connectionInfo.UseRestrictedAdmin);
isFieldNotChange = isFieldNotChange &&
dataRow["UseRCG"].Equals(connectionInfo.UseRCG);
isFieldNotChange = isFieldNotChange &&
dataRow["UseVmId"].Equals(connectionInfo.UseVmId);
isFieldNotChange = isFieldNotChange &&
dataRow["UseEnhancedMode"].Equals(connectionInfo.UseEnhancedMode);
@@ -385,6 +393,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritAutomaticResize"].Equals(connectionInfo.Inheritance.AutomaticResize) &&
dataRow["InheritUseConsoleSession"].Equals(connectionInfo.Inheritance.UseConsoleSession) &&
dataRow["InheritUseCredSsp"].Equals(connectionInfo.Inheritance.UseCredSsp) &&
dataRow["InheritUseRestrictedAdmin"].Equals(connectionInfo.Inheritance.UseRestrictedAdmin) &&
dataRow["InheritUseRCG"].Equals(connectionInfo.Inheritance.UseRCG) &&
dataRow["InheritRenderingEngine"].Equals(connectionInfo.Inheritance.RenderingEngine) &&
dataRow["InheritUsername"].Equals(connectionInfo.Inheritance.Username) &&
dataRow["InheritVmId"].Equals(connectionInfo.Inheritance.VmId) &&
@@ -452,6 +462,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritAutomaticResize"].Equals(false) &&
dataRow["InheritUseConsoleSession"].Equals(false) &&
dataRow["InheritUseCredSsp"].Equals(false) &&
dataRow["InheritUseRestrictedAdmin"].Equals(false) &&
dataRow["InheritUseRCG"].Equals(false) &&
dataRow["InheritRenderingEngine"].Equals(false) &&
dataRow["InheritUsername"].Equals(false) &&
dataRow["InheritRDPAuthenticationLevel"].Equals(false) &&
@@ -534,6 +546,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["Port"] = connectionInfo.Port;
dataRow["ConnectToConsole"] = connectionInfo.UseConsoleSession;
dataRow["UseCredSsp"] = connectionInfo.UseCredSsp;
dataRow["UseRestrictedAdmin"] = connectionInfo.UseRestrictedAdmin;
dataRow["UseRCG"] = connectionInfo.UseRCG;
dataRow["UseVmId"] = connectionInfo.UseVmId;
dataRow["UseEnhancedMode"] = connectionInfo.UseEnhancedMode;
dataRow["RenderingEngine"] = connectionInfo.RenderingEngine;
@@ -629,6 +643,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritAutomaticResize"] = connectionInfo.Inheritance.AutomaticResize;
dataRow["InheritUseConsoleSession"] = connectionInfo.Inheritance.UseConsoleSession;
dataRow["InheritUseCredSsp"] = connectionInfo.Inheritance.UseCredSsp;
dataRow["InheritUseRestrictedAdmin"] = connectionInfo.Inheritance.UseRestrictedAdmin;
dataRow["InheritUseRCG"] = connectionInfo.Inheritance.UseRCG;
dataRow["InheritRenderingEngine"] = connectionInfo.Inheritance.RenderingEngine;
dataRow["InheritUsername"] = connectionInfo.Inheritance.Username;
dataRow["InheritVmId"] = connectionInfo.Inheritance.VmId;
@@ -700,6 +716,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritAutomaticResize"] = false;
dataRow["InheritUseConsoleSession"] = false;
dataRow["InheritUseCredSsp"] = false;
dataRow["InheritUseRestrictedAdmin"] = false;
dataRow["InheritUseRCG"] = false;
dataRow["InheritRenderingEngine"] = false;
dataRow["InheritUsername"] = false;
dataRow["InheritRDPAuthenticationLevel"] = false;

View File

@@ -151,6 +151,9 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
? new XAttribute("RDGatewayDomain", connectionInfo.RDGatewayDomain)
: new XAttribute("RDGatewayDomain", ""));
element.Add(new XAttribute("UseRCG", connectionInfo.UseRCG));
element.Add(new XAttribute("UseRestrictedAdmin", connectionInfo.UseRestrictedAdmin));
element.Add(new XAttribute("UserViaAPI", connectionInfo.UserViaAPI));
element.Add(new XAttribute("EC2InstanceId", connectionInfo.EC2InstanceId));
element.Add(new XAttribute("EC2Region", connectionInfo.EC2Region));
@@ -298,6 +301,10 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
element.Add(new XAttribute("InheritUseEnhancedMode", inheritance.UseEnhancedMode.ToString().ToLowerInvariant()));
if (inheritance.UserViaAPI)
element.Add(new XAttribute("InheritUserViaAPI", inheritance.UserViaAPI.ToString().ToLowerInvariant()));
if (inheritance.UseRCG)
element.Add(new XAttribute("InheritUseRCG", inheritance.UseRCG.ToString().ToLowerInvariant()));
if (inheritance.UseRestrictedAdmin)
element.Add(new XAttribute("InheritUseRestrictedAdmin", inheritance.UseRestrictedAdmin.ToString().ToLowerInvariant()));
}
}
}

View File

@@ -569,6 +569,10 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
connectionInfo.Inheritance.UserViaAPI = xmlnode.GetAttributeAsBool("InheritUserViaAPI");
connectionInfo.EC2InstanceId = xmlnode.GetAttributeAsString("EC2InstanceId");
connectionInfo.EC2Region = xmlnode.GetAttributeAsString("EC2Region");
connectionInfo.UseRestrictedAdmin = xmlnode.GetAttributeAsBool("UseRestrictedAdmin");
connectionInfo.Inheritance.UseRestrictedAdmin = xmlnode.GetAttributeAsBool("InheritUseRestrictedAdmin");
connectionInfo.UseRCG = xmlnode.GetAttributeAsBool("UseRCG");
connectionInfo.Inheritance.UseRCG = xmlnode.GetAttributeAsBool("InheritUseRCG");
}
}
catch (Exception ex)

View File

@@ -57,7 +57,7 @@ namespace mRemoteNG.Config.Serializers.MiscSerializers
if (versionAttribute != null)
{
var version = new Version(versionAttribute);
if (!(version == new Version(2, 7)))
if (!(version == new Version(2, 7)) && !(version == new Version(2, 83)))
{
throw new FileFormatException($"Unsupported file version ({version}).");
}
@@ -183,8 +183,8 @@ namespace mRemoteNG.Config.Serializers.MiscSerializers
{
if (bool.TryParse(connectionSettingsNode.SelectSingleNode("./connectToConsole")?.InnerText, out var useConsole))
connectionInfo.UseConsoleSession = useConsole;
connectionInfo.RDPStartProgram = connectionSettingsNode.SelectSingleNode("./startProgram")?.InnerText;
connectionInfo.RDPStartProgramWorkDir = connectionSettingsNode.SelectSingleNode("./startProgramWorkDir")?.InnerText;
connectionInfo.RDPStartProgram = connectionSettingsNode.SelectSingleNode("./startProgram")?.InnerText ?? string.Empty;
connectionInfo.RDPStartProgramWorkDir = connectionSettingsNode.SelectSingleNode("./startProgramWorkDir")?.InnerText ?? string.Empty;
if (int.TryParse(connectionSettingsNode.SelectSingleNode("./port")?.InnerText, out var port))
connectionInfo.Port = port;
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Drawing;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
@@ -27,12 +27,7 @@ namespace mRemoteNG.Config.Settings
private FrmMain MainForm { get; }
public SettingsLoader(FrmMain mainForm,
MessageCollector messageCollector,
QuickConnectToolStrip quickConnectToolStrip,
ExternalToolsToolStrip externalToolsToolStrip,
MultiSshToolStrip multiSshToolStrip,
MenuStrip mainMenu)
public SettingsLoader(FrmMain mainForm, MessageCollector messageCollector, QuickConnectToolStrip quickConnectToolStrip, ExternalToolsToolStrip externalToolsToolStrip, MultiSshToolStrip multiSshToolStrip, MenuStrip mainMenu)
{
if (mainForm == null)
throw new ArgumentNullException(nameof(mainForm));
@@ -74,7 +69,7 @@ namespace mRemoteNG.Config.Settings
LoadExternalAppsFromXml();
SetAlwaysShowPanelTabs();
if (Properties.Settings.Default.ResetToolbars)
if (Properties.App.Default.ResetToolbars)
SetToolbarsDefault();
else
LoadToolbarsFromSettings();
@@ -87,40 +82,37 @@ namespace mRemoteNG.Config.Settings
private static void SetAlwaysShowPanelTabs()
{
if (Properties.Settings.Default.AlwaysShowPanelTabs)
if (Properties.OptionsTabsPanelsPage.Default.AlwaysShowPanelTabs)
FrmMain.Default.pnlDock.DocumentStyle = DocumentStyle.DockingWindow;
}
private void SetSupportedCulture()
{
if (Properties.Settings.Default.OverrideUICulture == "" ||
!SupportedCultures.IsNameSupported(Properties.Settings.Default.OverrideUICulture)) return;
if (Properties.Settings.Default.OverrideUICulture == "" || !SupportedCultures.IsNameSupported(Properties.Settings.Default.OverrideUICulture)) return;
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Properties.Settings.Default.OverrideUICulture);
_messageCollector.AddMessage(MessageClass.InformationMsg,
$"Override Culture: {Thread.CurrentThread.CurrentUICulture.Name}/{Thread.CurrentThread.CurrentUICulture.NativeName}",
true);
_messageCollector.AddMessage(MessageClass.InformationMsg, $"Override Culture: {Thread.CurrentThread.CurrentUICulture.Name}/{Thread.CurrentThread.CurrentUICulture.NativeName}", true);
}
private void SetApplicationWindowPositionAndSize()
{
MainForm.WindowState = FormWindowState.Normal;
if (Properties.Settings.Default.MainFormState == FormWindowState.Normal)
if (Properties.App.Default.MainFormState == FormWindowState.Normal)
{
if (!Properties.Settings.Default.MainFormLocation.IsEmpty)
MainForm.Location = Properties.Settings.Default.MainFormLocation;
if (!Properties.Settings.Default.MainFormSize.IsEmpty)
MainForm.Size = Properties.Settings.Default.MainFormSize;
if (!Properties.App.Default.MainFormLocation.IsEmpty)
MainForm.Location = Properties.App.Default.MainFormLocation;
if (!Properties.App.Default.MainFormSize.IsEmpty)
MainForm.Size = Properties.App.Default.MainFormSize;
}
else
{
if (!Properties.Settings.Default.MainFormRestoreLocation.IsEmpty)
MainForm.Location = Properties.Settings.Default.MainFormRestoreLocation;
if (!Properties.Settings.Default.MainFormRestoreSize.IsEmpty)
MainForm.Size = Properties.Settings.Default.MainFormRestoreSize;
if (!Properties.App.Default.MainFormRestoreLocation.IsEmpty)
MainForm.Location = Properties.App.Default.MainFormRestoreLocation;
if (!Properties.App.Default.MainFormRestoreSize.IsEmpty)
MainForm.Size = Properties.App.Default.MainFormRestoreSize;
}
if (Properties.Settings.Default.MainFormState == FormWindowState.Maximized)
if (Properties.App.Default.MainFormState == FormWindowState.Maximized)
{
MainForm.WindowState = FormWindowState.Maximized;
}
@@ -145,33 +137,31 @@ namespace mRemoteNG.Config.Settings
private void SetAutoSave()
{
if (Properties.Settings.Default.AutoSaveEveryMinutes <= 0) return;
MainForm.tmrAutoSave.Interval = Properties.Settings.Default.AutoSaveEveryMinutes * 60000;
if (Properties.OptionsConnectionsPage.Default.AutoSaveEveryMinutes <= 0) return;
MainForm.tmrAutoSave.Interval = Properties.OptionsConnectionsPage.Default.AutoSaveEveryMinutes * 60000;
MainForm.tmrAutoSave.Enabled = true;
}
private void SetKioskMode()
{
if (!Properties.Settings.Default.MainFormKiosk) return;
if (!Properties.App.Default.MainFormKiosk) return;
MainForm.Fullscreen.Value = true;
}
private static void SetShowSystemTrayIcon()
{
if (Properties.Settings.Default.ShowSystemTrayIcon)
if (Properties.OptionsAppearancePage.Default.ShowSystemTrayIcon)
Runtime.NotificationAreaIcon = new NotificationAreaIcon();
}
private static void SetPuttyPath()
{
PuttyBase.PuttyPath = Properties.Settings.Default.UseCustomPuttyPath
? Properties.Settings.Default.CustomPuttyPath
: GeneralAppInfo.PuttyPath;
PuttyBase.PuttyPath = Properties.OptionsAdvancedPage.Default.UseCustomPuttyPath ? Properties.OptionsAdvancedPage.Default.CustomPuttyPath : GeneralAppInfo.PuttyPath;
}
private void EnsureSettingsAreSavedInNewestVersion()
{
if (Properties.Settings.Default.DoUpgrade)
if (Properties.App.Default.DoUpgrade)
UpgradeSettingsVersion();
}
@@ -187,12 +177,12 @@ namespace mRemoteNG.Config.Settings
_messageCollector.AddExceptionMessage("Settings.Upgrade() failed", ex);
}
Properties.Settings.Default.DoUpgrade = false;
Properties.App.Default.DoUpgrade = false;
// Clear pending update flag
// This is used for automatic updates, not for settings migration, but it
// needs to be cleared here because we know that we just updated.
Properties.Settings.Default.UpdatePending = false;
Properties.OptionsUpdatesPage.Default.UpdatePending = false;
}
private void SetToolbarsDefault()
@@ -259,9 +249,7 @@ namespace mRemoteNG.Config.Settings
private void SetToolstripGripStyle(ToolStrip toolbar)
{
toolbar.GripStyle = Properties.Settings.Default.LockToolbars
? ToolStripGripStyle.Hidden
: ToolStripGripStyle.Visible;
toolbar.GripStyle = Properties.Settings.Default.LockToolbars ? ToolStripGripStyle.Hidden : ToolStripGripStyle.Visible;
}
private ToolStripPanel ToolStripPanelFromString(string panel)

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.App.Info;
@@ -11,10 +11,7 @@ namespace mRemoteNG.Config.Settings
{
public static class SettingsSaver
{
public static void SaveSettings(Control quickConnectToolStrip,
ExternalToolsToolStrip externalToolsToolStrip,
MultiSshToolStrip multiSshToolStrip,
FrmMain frmMain)
public static void SaveSettings(Control quickConnectToolStrip, ExternalToolsToolStrip externalToolsToolStrip, MultiSshToolStrip multiSshToolStrip, FrmMain frmMain)
{
try
{
@@ -25,31 +22,46 @@ namespace mRemoteNG.Config.Settings
frmMain.WindowState = FormWindowState.Maximized;
}
Properties.Settings.Default.MainFormLocation = frmMain.Location;
Properties.Settings.Default.MainFormSize = frmMain.Size;
Properties.App.Default.MainFormLocation = frmMain.Location;
Properties.App.Default.MainFormSize = frmMain.Size;
if (frmMain.WindowState != FormWindowState.Normal)
{
Properties.Settings.Default.MainFormRestoreLocation = frmMain.RestoreBounds.Location;
Properties.Settings.Default.MainFormRestoreSize = frmMain.RestoreBounds.Size;
Properties.App.Default.MainFormRestoreLocation = frmMain.RestoreBounds.Location;
Properties.App.Default.MainFormRestoreSize = frmMain.RestoreBounds.Size;
}
Properties.Settings.Default.MainFormState = frmMain.WindowState;
Properties.App.Default.MainFormState = frmMain.WindowState;
if (frmMain.Fullscreen != null)
{
Properties.Settings.Default.MainFormKiosk = frmMain.Fullscreen.Value;
Properties.App.Default.MainFormKiosk = frmMain.Fullscreen.Value;
}
Properties.Settings.Default.FirstStart = false;
Properties.Settings.Default.ResetPanels = false;
Properties.Settings.Default.ResetToolbars = false;
Properties.App.Default.FirstStart = false;
Properties.App.Default.ResetPanels = false;
Properties.App.Default.ResetToolbars = false;
Properties.Settings.Default.NoReconnect = false;
SaveExternalAppsToolbarLocation(externalToolsToolStrip);
SaveQuickConnectToolbarLocation(quickConnectToolStrip);
SaveMultiSshToolbarLocation(multiSshToolStrip);
Properties.App.Default.Save();
Properties.AppUI.Default.Save();
Properties.OptionsAdvancedPage.Default.Save();
Properties.OptionsAppearancePage.Default.Save();
Properties.OptionsBackupPage.Default.Save();
Properties.OptionsConnectionsPage.Default.Save();
Properties.OptionsCredentialsPage.Default.Save();
Properties.OptionsDBsPage.Default.Save();
Properties.OptionsNotificationsPage.Default.Save();
Properties.OptionsSecurityPage.Default.Save();
Properties.OptionsStartupExitPage.Default.Save();
Properties.OptionsTabsPanelsPage.Default.Save();
Properties.OptionsThemePage.Default.Save();
Properties.OptionsUpdatesPage.Default.Save();
Properties.Settings.Default.Save();
SaveDockPanelLayout();

View File

@@ -45,6 +45,8 @@ namespace mRemoteNG.Connection
private string _loadBalanceInfo;
private HTTPBase.RenderingEngine _renderingEngine;
private bool _useCredSsp;
private bool _useRestrictedAdmin;
private bool _useRCG;
private bool _useVmId;
private RDGatewayUsageMethod _rdGatewayUsageMethod;
@@ -394,6 +396,28 @@ namespace mRemoteNG.Connection
set => SetField(ref _useCredSsp, value, "UseCredSsp");
}
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 3),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.UseRestrictedAdmin)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionUseRestrictedAdmin)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter)),
AttributeUsedInProtocol(ProtocolType.RDP)]
public bool UseRestrictedAdmin
{
get => GetPropertyValue("UseRestrictedAdmin", _useRestrictedAdmin);
set => SetField(ref _useRestrictedAdmin, value, "UseRestrictedAdmin");
}
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 3),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.UseRCG)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionUseRCG)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter)),
AttributeUsedInProtocol(ProtocolType.RDP)]
public bool UseRCG
{
get => GetPropertyValue("UseRCG", _useRCG);
set => SetField(ref _useRCG, value, "UseRCG");
}
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 3),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.UseVmId)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionUseVmId)),

View File

@@ -312,6 +312,8 @@ namespace mRemoteNG.Connection
LoadBalanceInfo = Settings.Default.ConDefaultLoadBalanceInfo;
RenderingEngine = (HTTPBase.RenderingEngine)Enum.Parse(typeof(HTTPBase.RenderingEngine), Settings.Default.ConDefaultRenderingEngine);
UseCredSsp = Settings.Default.ConDefaultUseCredSsp;
UseRestrictedAdmin = Settings.Default.ConDefaultUseRestrictedAdmin;
UseRCG = Settings.Default.ConDefaultUseRCG;
UseVmId = Settings.Default.ConDefaultUseVmId;
UseEnhancedMode = Settings.Default.ConDefaultUseEnhancedMode;
}

View File

@@ -184,6 +184,18 @@ namespace mRemoteNG.Connection
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool UseCredSsp { get; set; }
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 4),
LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.UseRestrictedAdmin)),
LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.PropertyDescriptionUseRestrictedAdmin)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool UseRestrictedAdmin { get; set; }
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 4),
LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.UseRCG)),
LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.PropertyDescriptionUseRCG)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool UseRCG { get; set; }
[LocalizedAttributes.LocalizedCategory(nameof(Language.Protocol), 4),
LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.UseVmId)),
LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.PropertyDescriptionUseVmId)),

View File

@@ -299,9 +299,7 @@ namespace mRemoteNG.Connection
private static string SetConnectionPanel(ConnectionInfo connectionInfo, ConnectionInfo.Force force)
{
if (connectionInfo.Panel != "" &&
!force.HasFlag(ConnectionInfo.Force.OverridePanel) &&
!Settings.Default.AlwaysShowPanelSelectionDlg)
if (connectionInfo.Panel != "" && !force.HasFlag(ConnectionInfo.Force.OverridePanel) && !Properties.OptionsTabsPanelsPage.Default.AlwaysShowPanelSelectionDlg)
return connectionInfo.Panel;
var frmPnl = new FrmChoosePanel();

View File

@@ -94,7 +94,7 @@ namespace mRemoteNG.Connection
var newConnectionInfo = new ConnectionInfo();
newConnectionInfo.CopyFrom(DefaultConnectionInfo.Instance);
newConnectionInfo.Name = Settings.Default.IdentifyQuickConnectTabs
newConnectionInfo.Name = Properties.OptionsTabsPanelsPage.Default.IdentifyQuickConnectTabs
? string.Format(Language.Quick, uriBuilder.Host)
: uriBuilder.Host;
@@ -138,8 +138,7 @@ namespace mRemoteNG.Connection
var oldIsUsingDatabaseValue = UsingDatabase;
var connectionLoader = useDatabase
? (IConnectionsLoader)new SqlConnectionsLoader(_localConnectionPropertiesSerializer,
_localConnectionPropertiesDataProvider)
? (IConnectionsLoader)new SqlConnectionsLoader(_localConnectionPropertiesSerializer, _localConnectionPropertiesDataProvider)
: new XmlConnectionsLoader(connectionFileName);
var newConnectionTreeModel = connectionLoader.Load();
@@ -149,8 +148,7 @@ namespace mRemoteNG.Connection
if (newConnectionTreeModel == null)
{
DialogFactory.ShowLoadConnectionsFailedDialog(connectionFileName, "Decrypting connection file failed",
IsConnectionsFileLoaded);
DialogFactory.ShowLoadConnectionsFailedDialog(connectionFileName, "Decrypting connection file failed", IsConnectionsFileLoaded);
return;
}
@@ -166,10 +164,8 @@ namespace mRemoteNG.Connection
ConnectionTreeModel = newConnectionTreeModel;
UpdateCustomConsPathSetting(connectionFileName);
RaiseConnectionsLoadedEvent(oldConnectionTreeModel, newConnectionTreeModel, oldIsUsingDatabaseValue,
useDatabase, connectionFileName);
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg,
$"Connections loaded using {connectionLoader.GetType().Name}");
RaiseConnectionsLoadedEvent(oldConnectionTreeModel, newConnectionTreeModel, oldIsUsingDatabaseValue, useDatabase, connectionFileName);
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, $"Connections loaded using {connectionLoader.GetType().Name}");
}
/// <summary>
@@ -233,12 +229,7 @@ namespace mRemoteNG.Connection
/// Optional. The name of the property that triggered
/// this save.
/// </param>
public void SaveConnections(ConnectionTreeModel connectionTreeModel,
bool useDatabase,
SaveFilter saveFilter,
string connectionFileName,
bool forceSave = false,
string propertyNameTrigger = "")
public void SaveConnections(ConnectionTreeModel connectionTreeModel, bool useDatabase, SaveFilter saveFilter, string connectionFileName, bool forceSave = false, string propertyNameTrigger = "")
{
if (connectionTreeModel == null)
return;
@@ -260,9 +251,7 @@ namespace mRemoteNG.Connection
var previouslyUsingDatabase = UsingDatabase;
var saver = useDatabase
? (ISaver<ConnectionTreeModel>)new SqlConnectionsSaver(saveFilter,
_localConnectionPropertiesSerializer,
_localConnectionPropertiesDataProvider)
? (ISaver<ConnectionTreeModel>)new SqlConnectionsSaver(saveFilter, _localConnectionPropertiesSerializer, _localConnectionPropertiesDataProvider)
: new XmlConnectionsSaver(connectionFileName, saveFilter);
saver.Save(connectionTreeModel, propertyNameTrigger);
@@ -278,9 +267,7 @@ namespace mRemoteNG.Connection
}
catch (Exception ex)
{
Runtime.MessageCollector?.AddExceptionMessage(
string.Format(Language.ConnectionsFileCouldNotSaveAs,
connectionFileName), ex, logOnly: false);
Runtime.MessageCollector?.AddExceptionMessage(string.Format(Language.ConnectionsFileCouldNotSaveAs, connectionFileName), ex, logOnly: false);
}
finally
{
@@ -307,12 +294,7 @@ namespace mRemoteNG.Connection
{
lock (SaveLock)
{
SaveConnections(
ConnectionTreeModel,
UsingDatabase,
new SaveFilter(),
ConnectionFileName,
propertyNameTrigger: propertyNameTrigger);
SaveConnections(ConnectionTreeModel, UsingDatabase, new SaveFilter(), ConnectionFileName, propertyNameTrigger: propertyNameTrigger);
}
});
t.SetApartmentState(ApartmentState.STA);
@@ -321,37 +303,45 @@ namespace mRemoteNG.Connection
public string GetStartupConnectionFileName()
{
return Settings.Default.LoadConsFromCustomLocation == false
? GetDefaultStartupConnectionFileName()
: Settings.Default.CustomConsPath;
/*
if (Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation == true && Properties.OptionsBackupPage.Default.BackupLocation != "")
{
return Properties.OptionsBackupPage.Default.BackupLocation;
} else {
return GetDefaultStartupConnectionFileName();
}
*/
if (Properties.OptionsConnectionsPage.Default.ConnectrionFilePath != "")
{
return Properties.OptionsConnectionsPage.Default.ConnectrionFilePath;
}
else
{
return GetDefaultStartupConnectionFileName();
}
}
public string GetDefaultStartupConnectionFileName()
{
return Runtime.IsPortableEdition
? GetDefaultStartupConnectionFileNamePortableEdition()
: GetDefaultStartupConnectionFileNameNormalEdition();
return Runtime.IsPortableEdition ? GetDefaultStartupConnectionFileNamePortableEdition() : GetDefaultStartupConnectionFileNameNormalEdition();
}
private void UpdateCustomConsPathSetting(string filename)
{
if (filename == GetDefaultStartupConnectionFileName())
{
Settings.Default.LoadConsFromCustomLocation = false;
Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation = false;
}
else
{
Settings.Default.LoadConsFromCustomLocation = true;
Settings.Default.CustomConsPath = filename;
Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation = true;
Properties.OptionsBackupPage.Default.BackupLocation = filename;
}
}
private string GetDefaultStartupConnectionFileNameNormalEdition()
{
var appDataPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
Application.ProductName,
ConnectionsFileInfo.DefaultConnectionsFile);
var appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.ProductName, ConnectionsFileInfo.DefaultConnectionsFile);
return File.Exists(appDataPath) ? appDataPath : GetDefaultStartupConnectionFileNamePortableEdition();
}
@@ -365,29 +355,14 @@ namespace mRemoteNG.Connection
public event EventHandler<ConnectionsLoadedEventArgs> ConnectionsLoaded;
public event EventHandler<ConnectionsSavedEventArgs> ConnectionsSaved;
private void RaiseConnectionsLoadedEvent(Optional<ConnectionTreeModel> previousTreeModel,
ConnectionTreeModel newTreeModel,
bool previousSourceWasDatabase,
bool newSourceIsDatabase,
string newSourcePath)
private void RaiseConnectionsLoadedEvent(Optional<ConnectionTreeModel> previousTreeModel, ConnectionTreeModel newTreeModel, bool previousSourceWasDatabase, bool newSourceIsDatabase, string newSourcePath)
{
ConnectionsLoaded?.Invoke(this, new ConnectionsLoadedEventArgs(
previousTreeModel,
newTreeModel,
previousSourceWasDatabase,
newSourceIsDatabase,
newSourcePath));
ConnectionsLoaded?.Invoke(this, new ConnectionsLoadedEventArgs(previousTreeModel, newTreeModel, previousSourceWasDatabase, newSourceIsDatabase, newSourcePath));
}
private void RaiseConnectionsSavedEvent(ConnectionTreeModel modelThatWasSaved,
bool previouslyUsingDatabase,
bool usingDatabase,
string connectionFileName)
private void RaiseConnectionsSavedEvent(ConnectionTreeModel modelThatWasSaved, bool previouslyUsingDatabase, bool usingDatabase, string connectionFileName)
{
ConnectionsSaved?.Invoke(this,
new ConnectionsSavedEventArgs(modelThatWasSaved, previouslyUsingDatabase,
usingDatabase,
connectionFileName));
ConnectionsSaved?.Invoke(this, new ConnectionsSavedEventArgs(modelThatWasSaved, previouslyUsingDatabase, usingDatabase, connectionFileName));
}
#endregion

View File

@@ -28,9 +28,7 @@ namespace mRemoteNG.Connection
var propertyFromSettings = typeof(TSource).GetProperty(propertyNameMutator(property.Name));
if (propertyFromSettings == null)
{
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
$"DefaultConInherit-LoadFrom: Could not load {property.Name}",
true);
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, $"DefaultConInherit-LoadFrom: Could not load {property.Name}", true);
continue;
}
@@ -50,9 +48,7 @@ namespace mRemoteNG.Connection
var localValue = property.GetValue(Instance, null);
if (propertyFromSettings == null)
{
Runtime.MessageCollector?.AddMessage(Messages.MessageClass.ErrorMsg,
$"DefaultConInherit-SaveTo: Could not load {property.Name}",
true);
Runtime.MessageCollector?.AddMessage(Messages.MessageClass.ErrorMsg, $"DefaultConInherit-SaveTo: Could not load {property.Name}", true);
continue;
}

View File

@@ -80,11 +80,11 @@ namespace mRemoteNG.Connection.Protocol
_process.Exited += ProcessExited;
_process.Start();
_process.WaitForInputIdle(Settings.Default.MaxPuttyWaitTime * 1000);
_process.WaitForInputIdle(Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000);
var startTicks = Environment.TickCount;
while (_handle.ToInt32() == 0 &
Environment.TickCount < startTicks + Settings.Default.MaxPuttyWaitTime * 1000)
Environment.TickCount < startTicks + Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000)
{
_process.Refresh();
if (_process.MainWindowTitle != "Default IME")

View File

@@ -23,7 +23,7 @@ namespace mRemoteNG.Connection.Protocol
{
case ProtocolType.RDP:
var rdp = _rdpProtocolFactory.Build(connectionInfo.RdpVersion);
rdp.LoadBalanceInfoUseUtf8 = Settings.Default.RdpLoadBalanceInfoUseUtf8;
rdp.LoadBalanceInfoUseUtf8 = Properties.OptionsAdvancedPage.Default.RdpLoadBalanceInfoUseUtf8;
return rdp;
case ProtocolType.VNC:
return new ProtocolVNC();

View File

@@ -79,13 +79,16 @@ namespace mRemoteNG.Connection.Protocol
if (PuttyProtocol == Putty_Protocol.ssh)
{
var username = "";
var password = "";
var username = InterfaceControl.Info?.Username ?? "";
var password = InterfaceControl.Info?.Password ?? "";
var domain = InterfaceControl.Info?.Domain ?? "";
var UserViaAPI = InterfaceControl.Info?.UserViaAPI ?? "";
// access secret server api if necessary
if (!string.IsNullOrEmpty(InterfaceControl.Info?.UserViaAPI))
{
var domain = ""; // dummy
if (!string.IsNullOrEmpty(UserViaAPI)) {
try
{
ExternalConnectors.TSS.SecretServerInterface.FetchSecretFromServer("SSAPI:" + InterfaceControl.Info?.UserViaAPI, out username, out password, out domain);
@@ -95,35 +98,39 @@ namespace mRemoteNG.Connection.Protocol
Event_ErrorOccured(this, "Secret Server Interface Error: " + ex.Message, 0);
}
}
if (!string.IsNullOrEmpty(InterfaceControl.Info?.Username))
if (string.IsNullOrEmpty(username))
{
username = InterfaceControl.Info.Username;
}
else
{
// ReSharper disable once SwitchStatementMissingSomeCases
switch (Settings.Default.EmptyCredentials)
switch (Properties.OptionsCredentialsPage.Default.EmptyCredentials)
{
case "windows":
username = Environment.UserName;
break;
case "custom" when !string.IsNullOrEmpty(Properties.OptionsCredentialsPage.Default.DefaultUsername):
username = Properties.OptionsCredentialsPage.Default.DefaultUsername;
break;
case "custom":
username = Settings.Default.DefaultUsername;
try
{
ExternalConnectors.TSS.SecretServerInterface.FetchSecretFromServer(
"SSAPI:" + Properties.OptionsCredentialsPage.Default.UserViaAPDefault, out username, out password,
out domain);
}
catch (Exception ex)
{
Event_ErrorOccured(this, "Secret Server Interface Error: " + ex.Message, 0);
}
break;
}
}
if (!string.IsNullOrEmpty(InterfaceControl.Info?.Password))
if (string.IsNullOrEmpty(password))
{
password = InterfaceControl.Info.Password;
}
else
{
if (Settings.Default.EmptyCredentials == "custom")
if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "custom")
{
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
password = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword,
Runtime.EncryptionKey);
password = cryptographyProvider.Decrypt(Properties.OptionsCredentialsPage.Default.DefaultPassword, Runtime.EncryptionKey);
}
}
@@ -163,16 +170,15 @@ namespace mRemoteNG.Connection.Protocol
PuttyProcess.Exited += ProcessExited;
PuttyProcess.Start();
PuttyProcess.WaitForInputIdle(Settings.Default.MaxPuttyWaitTime * 1000);
PuttyProcess.WaitForInputIdle(Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000);
var startTicks = Environment.TickCount;
while (PuttyHandle.ToInt32() == 0 &
Environment.TickCount < startTicks + Settings.Default.MaxPuttyWaitTime * 1000)
Environment.TickCount < startTicks + Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000)
{
if (_isPuttyNg)
{
PuttyHandle = NativeMethods.FindWindowEx(
InterfaceControl.Handle, new IntPtr(0), null, null);
PuttyHandle = NativeMethods.FindWindowEx(InterfaceControl.Handle, new IntPtr(0), null, null);
}
else
{
@@ -192,14 +198,9 @@ namespace mRemoteNG.Connection.Protocol
}
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, Language.PuttyStuff, true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
string.Format(Language.PuttyHandle, PuttyHandle), true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
string.Format(Language.PuttyTitle, PuttyProcess.MainWindowTitle),
true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
string.Format(Language.PanelHandle,
InterfaceControl.Parent.Handle), true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.PuttyHandle, PuttyHandle), true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.PuttyTitle, PuttyProcess.MainWindowTitle), true);
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.PanelHandle, InterfaceControl.Parent.Handle), true);
if (!string.IsNullOrEmpty(InterfaceControl.Info?.OpeningCommand))
{
@@ -214,9 +215,7 @@ namespace mRemoteNG.Connection.Protocol
}
catch (Exception ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
Language.ConnectionFailed + Environment.NewLine +
ex.Message);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ConnectionFailed + Environment.NewLine + ex.Message);
return false;
}
}
@@ -229,9 +228,7 @@ namespace mRemoteNG.Connection.Protocol
}
catch (Exception ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
Language.PuttyFocusFailed + Environment.NewLine + ex.Message,
true);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.PuttyFocusFailed + Environment.NewLine + ex.Message, true);
}
}

View File

@@ -307,6 +307,16 @@ namespace mRemoteNG.Connection.Protocol.RDP
{
_rdpClient.AdvancedSettings7.EnableCredSspSupport = connectionInfo.UseCredSsp;
}
if(_rdpVersion >= Versions.RDC81)
{
if (connectionInfo.UseRestrictedAdmin)
SetExtendedProperty("RestrictedLogon", true);
else if (connectionInfo.UseRCG)
{
SetExtendedProperty("DisableCredentialsDelegation", true);
SetExtendedProperty("RedirectedAuthentication", true);
}
}
SetUseConsoleSession();
SetPort();
@@ -463,9 +473,10 @@ namespace mRemoteNG.Connection.Protocol.RDP
var userName = connectionInfo?.Username ?? "";
var password = connectionInfo?.Password ?? "";
var domain = connectionInfo?.Domain ?? "";
var UserViaAPI = connectionInfo?.UserViaAPI ?? "";
// access secret server api if necessary
if (!string.IsNullOrEmpty(connectionInfo?.UserViaAPI))
if (!string.IsNullOrEmpty(UserViaAPI))
{
try
{
@@ -480,13 +491,26 @@ namespace mRemoteNG.Connection.Protocol.RDP
if (string.IsNullOrEmpty(userName))
{
if (Settings.Default.EmptyCredentials == "windows")
switch (Properties.OptionsCredentialsPage.Default.EmptyCredentials)
{
_rdpClient.UserName = Environment.UserName;
}
else if (Settings.Default.EmptyCredentials == "custom")
{
_rdpClient.UserName = Settings.Default.DefaultUsername;
case "windows":
_rdpClient.UserName = Environment.UserName;
break;
case "custom" when !string.IsNullOrEmpty(Properties.OptionsCredentialsPage.Default.DefaultUsername):
_rdpClient.UserName = Properties.OptionsCredentialsPage.Default.DefaultUsername;
break;
case "custom":
try
{
ExternalConnectors.TSS.SecretServerInterface.FetchSecretFromServer("SSAPI:" + Properties.OptionsCredentialsPage.Default.UserViaAPDefault, out userName, out password, out domain);
_rdpClient.UserName = userName;
}
catch (Exception ex)
{
Event_ErrorOccured(this, "Secret Server Interface Error: " + ex.Message, 0);
}
break;
}
}
else
@@ -496,13 +520,12 @@ namespace mRemoteNG.Connection.Protocol.RDP
if (string.IsNullOrEmpty(password))
{
if (Settings.Default.EmptyCredentials == "custom")
if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "custom")
{
if (Settings.Default.DefaultPassword != "")
if (Properties.OptionsCredentialsPage.Default.DefaultPassword != "")
{
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
_rdpClient.AdvancedSettings2.ClearTextPassword =
cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey);
_rdpClient.AdvancedSettings2.ClearTextPassword = cryptographyProvider.Decrypt(Properties.OptionsCredentialsPage.Default.DefaultPassword, Runtime.EncryptionKey);
}
}
}
@@ -513,14 +536,12 @@ namespace mRemoteNG.Connection.Protocol.RDP
if (string.IsNullOrEmpty(domain))
{
if (Settings.Default.EmptyCredentials == "windows")
_rdpClient.Domain = Properties.OptionsCredentialsPage.Default.EmptyCredentials switch
{
_rdpClient.Domain = Environment.UserDomainName;
}
else if (Settings.Default.EmptyCredentials == "custom")
{
_rdpClient.Domain = Settings.Default.DefaultDomain;
}
"windows" => Environment.UserDomainName,
"custom" => Properties.OptionsCredentialsPage.Default.DefaultDomain,
_ => _rdpClient.Domain
};
}
else
{
@@ -728,7 +749,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
Event_Disconnected(this, reason, discReason);
}
if (Settings.Default.ReconnectOnDisconnect)
if (Properties.OptionsAdvancedPage.Default.ReconnectOnDisconnect)
{
ReconnectGroup = new ReconnectGroup();
ReconnectGroup.CloseClicked += Event_ReconnectGroupCloseClicked;

View File

@@ -29,7 +29,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
protected set
{
base.SmartSize = value;
ReconnectForResize();
DoResizeClient();
}
}
@@ -39,7 +39,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
protected set
{
base.Fullscreen = value;
ReconnectForResize();
DoResizeClient();
}
}
@@ -50,19 +50,19 @@ namespace mRemoteNG.Connection.Protocol.RDP
public override void Resize(object sender, EventArgs e)
{
if (DoResize() && _controlBeginningSize.IsEmpty)
if (DoResizeControl() && _controlBeginningSize.IsEmpty)
{
ReconnectForResize();
DoResizeClient();
}
base.Resize(sender, e);
}
public override void ResizeEnd(object sender, EventArgs e)
{
DoResize();
DoResizeControl();
if (!(Control.Size == _controlBeginningSize))
{
ReconnectForResize();
DoResizeClient();
}
_controlBeginningSize = Size.Empty;
}
@@ -72,7 +72,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
return new AxMsRdpClient8NotSafeForScripting();
}
private void ReconnectForResize()
private void DoResizeClient()
{
if (!loginComplete)
return;
@@ -94,8 +94,8 @@ namespace mRemoteNG.Connection.Protocol.RDP
{
var size = Fullscreen
? Screen.FromControl(Control).Bounds.Size
: Control.Size;
RdpClient8.Reconnect((uint)size.Width, (uint)size.Height);
: Control.Size;
UpdateSessionDisplaySettings((uint)size.Width, (uint)size.Height);
}
catch (Exception ex)
{
@@ -106,7 +106,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
}
}
private bool DoResize()
private bool DoResizeControl()
{
Control.Location = InterfaceControl.Location;
// kmscode - this doesn't look right to me. But I'm not aware of any functionality issues with this currently...
@@ -120,5 +120,10 @@ namespace mRemoteNG.Connection.Protocol.RDP
return false;
}
}
protected virtual void UpdateSessionDisplaySettings(uint width, uint height)
{
RdpClient8.Reconnect(width, height);
}
}
}

View File

@@ -1,15 +1,26 @@
using System.Windows.Forms;
using AxMSTSCLib;
namespace mRemoteNG.Connection.Protocol.RDP
{
public class RdpProtocol9 : RdpProtocol8
{
protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc9;
protected override AxHost CreateActiveXRdpClientControl()
{
return new AxMsRdpClient9NotSafeForScripting();
}
}
}
using System;
using System.Windows.Forms;
using AxMSTSCLib;
using MSTSCLib;
namespace mRemoteNG.Connection.Protocol.RDP
{
public class RdpProtocol9 : RdpProtocol8
{
private MsRdpClient9NotSafeForScripting RdpClient9 =>
(MsRdpClient9NotSafeForScripting)((AxHost)Control).GetOcx();
protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc9;
protected override AxHost CreateActiveXRdpClientControl()
{
return new AxMsRdpClient9NotSafeForScripting();
}
protected override void UpdateSessionDisplaySettings(uint width, uint height)
{
RdpClient9.UpdateSessionDisplaySettings(width, height, width, height, 0, 1, 1);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<value>About</value>
@@ -1086,6 +1086,12 @@ If you run into such an error, please create a new connection file!</value>
<data name="PropertyDescriptionUseCredSsp" xml:space="preserve">
<value>Use the Credential Security Support Provider (CredSSP) for authentication if it is available.</value>
</data>
<data name="PropertyDescriptionUseRestrictedAdmin" xml:space="preserve">
<value>Use restricted admin mode on the target host (local system context).</value>
</data>
<data name="PropertyDescriptionUseRCG" xml:space="preserve">
<value>Use Remote Credential Guard to tunnel authentication on target back to source through the RDP channel.</value>
</data>
<data name="PropertyDescriptionUser1" xml:space="preserve">
<value>Feel free to enter any information you need here.</value>
</data>
@@ -1239,6 +1245,12 @@ If you run into such an error, please create a new connection file!</value>
<data name="UseCredSsp" xml:space="preserve">
<value>Use CredSSP</value>
</data>
<data name="UseRestrictedAdmin" xml:space="preserve">
<value>Use Restricted Admin</value>
</data>
<data name="UseRCG" xml:space="preserve">
<value>Use Remote Credential Guard</value>
</data>
<data name="UserField" xml:space="preserve">
<value>User Field</value>
</data>
@@ -2223,4 +2235,49 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="PropertyDescriptionEC2Region" xml:space="preserve">
<value>fetch aws instance info from this region</value>
</data>
<data name="ACLPermissionsHidden" xml:space="preserve">
<value>Hidden</value>
<comment>Permission then option will be hide completly from user</comment>
</data>
<data name="ACLPermissionsReadOnly" xml:space="preserve">
<value>ReadOnly</value>
<comment>Permission then option is visible but user can't modify it</comment>
</data>
<data name="ACLPermissionsWriteAllow" xml:space="preserve">
<value>WriteAllow</value>
<comment>Permission then user could modify an option value</comment>
</data>
<data name="lblConnectionsBackupPath" xml:space="preserve">
<value>Select location for connection data backup folder</value>
</data>
<data name="btnBrowsePath" xml:space="preserve">
<value>Browse</value>
</data>
<data name="lblACL" xml:space="preserve">
<value>ACL for user</value>
</data>
<data name="lblBackupEnable" xml:space="preserve">
<value>Backups for connection data</value>
</data>
<data name="lblBackupNameFormat" xml:space="preserve">
<value>Backup file name format</value>
</data>
<data name="lblBackupType" xml:space="preserve">
<value>Backup type</value>
</data>
<data name="lblConnectionsBackupFrequency" xml:space="preserve">
<value>Connection Backup Frequency</value>
</data>
<data name="lblConnectionsBackupMaxCount" xml:space="preserve">
<value>Maximum number of backups</value>
</data>
<data name="PageСontrolInOptionsMenu" xml:space="preserve">
<value>Page control in Options menu</value>
</data>
<data name="ShowForUser" xml:space="preserve">
<value>Show for user</value>
</data>
<data name="FiltermRemoteRemoteDesktopManagerCSV" xml:space="preserve">
<value>Remote Desktop Manager Files (*.csv)</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -6,26 +6,26 @@ namespace mRemoteNG.Messages.MessageFilteringOptions
{
public bool AllowDebugMessages
{
get => Settings.Default.TextLogMessageWriterWriteDebugMsgs;
set => Settings.Default.TextLogMessageWriterWriteDebugMsgs = value;
get => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteDebugMsgs;
set => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteDebugMsgs = value;
}
public bool AllowInfoMessages
{
get => Settings.Default.TextLogMessageWriterWriteInfoMsgs;
set => Settings.Default.TextLogMessageWriterWriteInfoMsgs = value;
get => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteInfoMsgs;
set => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteInfoMsgs = value;
}
public bool AllowWarningMessages
{
get => Settings.Default.TextLogMessageWriterWriteWarningMsgs;
set => Settings.Default.TextLogMessageWriterWriteWarningMsgs = value;
get => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteWarningMsgs;
set => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteWarningMsgs = value;
}
public bool AllowErrorMessages
{
get => Settings.Default.TextLogMessageWriterWriteErrorMsgs;
set => Settings.Default.TextLogMessageWriterWriteErrorMsgs = value;
get => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteErrorMsgs;
set => Properties.OptionsNotificationsPage.Default.TextLogMessageWriterWriteErrorMsgs = value;
}
}
}

View File

@@ -6,26 +6,26 @@ namespace mRemoteNG.Messages.MessageFilteringOptions
{
public bool AllowDebugMessages
{
get => Settings.Default.NotificationPanelWriterWriteDebugMsgs;
set => Settings.Default.NotificationPanelWriterWriteDebugMsgs = value;
get => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteDebugMsgs;
set => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteDebugMsgs = value;
}
public bool AllowInfoMessages
{
get => Settings.Default.NotificationPanelWriterWriteInfoMsgs;
set => Settings.Default.NotificationPanelWriterWriteInfoMsgs = value;
get => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteInfoMsgs;
set => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteInfoMsgs = value;
}
public bool AllowWarningMessages
{
get => Settings.Default.NotificationPanelWriterWriteWarningMsgs;
set => Settings.Default.NotificationPanelWriterWriteWarningMsgs = value;
get => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteWarningMsgs;
set => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteWarningMsgs = value;
}
public bool AllowErrorMessages
{
get => Settings.Default.NotificationPanelWriterWriteErrorMsgs;
set => Settings.Default.NotificationPanelWriterWriteErrorMsgs = value;
get => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteErrorMsgs;
set => Properties.OptionsNotificationsPage.Default.NotificationPanelWriterWriteErrorMsgs = value;
}
}
}

View File

@@ -12,20 +12,20 @@ namespace mRemoteNG.Messages.MessageFilteringOptions
public bool AllowInfoMessages
{
get => Settings.Default.SwitchToMCOnInformation;
set => Settings.Default.SwitchToMCOnInformation = value;
get => Properties.OptionsNotificationsPage.Default.SwitchToMCOnInformation;
set => Properties.OptionsNotificationsPage.Default.SwitchToMCOnInformation = value;
}
public bool AllowWarningMessages
{
get => Settings.Default.SwitchToMCOnWarning;
set => Settings.Default.SwitchToMCOnWarning = value;
get => Properties.OptionsNotificationsPage.Default.SwitchToMCOnWarning;
set => Properties.OptionsNotificationsPage.Default.SwitchToMCOnWarning = value;
}
public bool AllowErrorMessages
{
get => Settings.Default.SwitchToMCOnError;
set => Settings.Default.SwitchToMCOnError = value;
get => Properties.OptionsNotificationsPage.Default.SwitchToMCOnError;
set => Properties.OptionsNotificationsPage.Default.SwitchToMCOnError = value;
}
}
}

View File

@@ -6,26 +6,26 @@ namespace mRemoteNG.Messages.MessageFilteringOptions
{
public bool AllowDebugMessages
{
get => Settings.Default.PopupMessageWriterWriteDebugMsgs;
set => Settings.Default.PopupMessageWriterWriteDebugMsgs = value;
get => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteDebugMsgs;
set => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteDebugMsgs = value;
}
public bool AllowInfoMessages
{
get => Settings.Default.PopupMessageWriterWriteInfoMsgs;
set => Settings.Default.PopupMessageWriterWriteInfoMsgs = value;
get => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteInfoMsgs;
set => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteInfoMsgs = value;
}
public bool AllowWarningMessages
{
get => Settings.Default.PopupMessageWriterWriteWarningMsgs;
set => Settings.Default.PopupMessageWriterWriteWarningMsgs = value;
get => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteWarningMsgs;
set => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteWarningMsgs = value;
}
public bool AllowErrorMessages
{
get => Settings.Default.PopupMessageWriterWriteErrorMsgs;
set => Settings.Default.PopupMessageWriterWriteErrorMsgs = value;
get => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteErrorMsgs;
set => Properties.OptionsNotificationsPage.Default.PopupMessageWriterWriteErrorMsgs = value;
}
}
}

170
mRemoteNG/Properties/App.Designer.cs generated Normal file
View File

@@ -0,0 +1,170 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class App : global::System.Configuration.ApplicationSettingsBase {
private static App defaultInstance = ((App)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new App())));
public static App Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
public global::System.Drawing.Point MainFormLocation {
get {
return ((global::System.Drawing.Point)(this["MainFormLocation"]));
}
set {
this["MainFormLocation"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
public global::System.Drawing.Size MainFormSize {
get {
return ((global::System.Drawing.Size)(this["MainFormSize"]));
}
set {
this["MainFormSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Normal")]
public global::System.Windows.Forms.FormWindowState MainFormState {
get {
return ((global::System.Windows.Forms.FormWindowState)(this["MainFormState"]));
}
set {
this["MainFormState"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
public global::System.Drawing.Size MainFormRestoreSize {
get {
return ((global::System.Drawing.Size)(this["MainFormRestoreSize"]));
}
set {
this["MainFormRestoreSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
public global::System.Drawing.Point MainFormRestoreLocation {
get {
return ((global::System.Drawing.Point)(this["MainFormRestoreLocation"]));
}
set {
this["MainFormRestoreLocation"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MainFormKiosk {
get {
return ((bool)(this["MainFormKiosk"]));
}
set {
this["MainFormKiosk"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public string StartOnScreen {
get {
return ((string)(this["StartOnScreen"]));
}
set {
this["StartOnScreen"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool FirstStart {
get {
return ((bool)(this["FirstStart"]));
}
set {
this["FirstStart"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ResetPanels {
get {
return ((bool)(this["ResetPanels"]));
}
set {
this["ResetPanels"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ResetToolbars {
get {
return ((bool)(this["ResetToolbars"]));
}
set {
this["ResetToolbars"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool NoReconnect {
get {
return ((bool)(this["NoReconnect"]));
}
set {
this["NoReconnect"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool DoUpgrade {
get {
return ((bool)(this["DoUpgrade"]));
}
set {
this["DoUpgrade"] = value;
}
}
}
}

View File

@@ -0,0 +1,42 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="App">
<Profiles />
<Settings>
<Setting Name="MainFormLocation" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormSize" Type="System.Drawing.Size" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormState" Type="System.Windows.Forms.FormWindowState" Scope="User">
<Value Profile="(Default)">Normal</Value>
</Setting>
<Setting Name="MainFormRestoreSize" Type="System.Drawing.Size" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormRestoreLocation" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormKiosk" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="StartOnScreen" Type="System.String" Scope="User">
<Value Profile="(Default)">1</Value>
</Setting>
<Setting Name="FirstStart" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ResetPanels" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ResetToolbars" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NoReconnect" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DoUpgrade" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

36
mRemoteNG/Properties/AppUI.Designer.cs generated Normal file
View File

@@ -0,0 +1,36 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class AppUI : global::System.Configuration.ApplicationSettingsBase {
private static AppUI defaultInstance = ((AppUI)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AppUI())));
public static AppUI Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,lt,ja-JP,ko-KR,nb-NO,nl,pt,pt-BR,pl,ru,uk," +
"tr-TR,zh-CN,zh-TW")]
public string SupportedUICultures {
get {
return ((string)(this["SupportedUICultures"]));
}
}
}
}

View File

@@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="AppUI">
<Profiles />
<Settings>
<Setting Name="SupportedUICultures" Type="System.String" Scope="Application">
<Value Profile="(Default)">cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,lt,ja-JP,ko-KR,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,110 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsAdvancedPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsAdvancedPage defaultInstance = ((OptionsAdvancedPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsAdvancedPage())));
public static OptionsAdvancedPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ReconnectOnDisconnect {
get {
return ((bool)(this["ReconnectOnDisconnect"]));
}
set {
this["ReconnectOnDisconnect"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CustomPuttyPath {
get {
return ((string)(this["CustomPuttyPath"]));
}
set {
this["CustomPuttyPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UseCustomPuttyPath {
get {
return ((bool)(this["UseCustomPuttyPath"]));
}
set {
this["UseCustomPuttyPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("2")]
public int MaxPuttyWaitTime {
get {
return ((int)(this["MaxPuttyWaitTime"]));
}
set {
this["MaxPuttyWaitTime"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("5500")]
public int UVNCSCPort {
get {
return ((int)(this["UVNCSCPort"]));
}
set {
this["UVNCSCPort"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool RdpLoadBalanceInfoUseUtf8 {
get {
return ((bool)(this["RdpLoadBalanceInfoUseUtf8"]));
}
set {
this["RdpLoadBalanceInfoUseUtf8"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbAdvancedPageInOptionMenu {
get {
return ((bool)(this["cbAdvancedPageInOptionMenu"]));
}
set {
this["cbAdvancedPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsAdvancedPage">
<Profiles />
<Settings>
<Setting Name="ReconnectOnDisconnect" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CustomPuttyPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UseCustomPuttyPath" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MaxPuttyWaitTime" Type="System.Int32" Scope="User">
<Value Profile="(Default)">2</Value>
</Setting>
<Setting Name="UVNCSCPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">5500</Value>
</Setting>
<Setting Name="RdpLoadBalanceInfoUseUtf8" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbAdvancedPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsAppearancePage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsAppearancePage defaultInstance = ((OptionsAppearancePage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsAppearancePage())));
public static OptionsAppearancePage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool ShowSystemTrayIcon {
get {
return ((bool)(this["ShowSystemTrayIcon"]));
}
set {
this["ShowSystemTrayIcon"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MinimizeToTray {
get {
return ((bool)(this["MinimizeToTray"]));
}
set {
this["MinimizeToTray"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool CloseToTray {
get {
return ((bool)(this["CloseToTray"]));
}
set {
this["CloseToTray"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowDescriptionTooltipsInTree {
get {
return ((bool)(this["ShowDescriptionTooltipsInTree"]));
}
set {
this["ShowDescriptionTooltipsInTree"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowCompleteConsPathInTitle {
get {
return ((bool)(this["ShowCompleteConsPathInTitle"]));
}
set {
this["ShowCompleteConsPathInTitle"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbAppearancePageInOptionMenu {
get {
return ((bool)(this["cbAppearancePageInOptionMenu"]));
}
set {
this["cbAppearancePageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsAppearancePage">
<Profiles />
<Settings>
<Setting Name="ShowSystemTrayIcon" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="MinimizeToTray" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CloseToTray" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowDescriptionTooltipsInTree" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowCompleteConsPathInTitle" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbAppearancePageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,254 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsBackupPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsBackupPage defaultInstance = ((OptionsBackupPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsBackupPage())));
public static OptionsBackupPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("10")]
public int BackupFileKeepCount {
get {
return ((int)(this["BackupFileKeepCount"]));
}
set {
this["BackupFileKeepCount"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("{0}.{1:yyyyMMdd-HHmmssffff}.backup")]
public string BackupFileNameFormat {
get {
return ((string)(this["BackupFileNameFormat"]));
}
set {
this["BackupFileNameFormat"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string BackupLocation {
get {
return ((string)(this["BackupLocation"]));
}
set {
this["BackupLocation"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SaveConsOnExit {
get {
return ((bool)(this["SaveConsOnExit"]));
}
set {
this["SaveConsOnExit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int SaveConnectionsFrequency {
get {
return ((int)(this["SaveConnectionsFrequency"]));
}
set {
this["SaveConnectionsFrequency"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CustomConsPath {
get {
return ((string)(this["CustomConsPath"]));
}
set {
this["CustomConsPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SaveConnectionsAfterEveryEdit {
get {
return ((bool)(this["SaveConnectionsAfterEveryEdit"]));
}
set {
this["SaveConnectionsAfterEveryEdit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("50")]
public int AutoSaveEveryMinutes {
get {
return ((int)(this["AutoSaveEveryMinutes"]));
}
set {
this["AutoSaveEveryMinutes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool LoadConsFromCustomLocation {
get {
return ((bool)(this["LoadConsFromCustomLocation"]));
}
set {
this["LoadConsFromCustomLocation"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupEnableACL {
get {
return ((int)(this["cbBackupEnableACL"]));
}
set {
this["cbBackupEnableACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupTypeACL {
get {
return ((int)(this["cbBackupTypeACL"]));
}
set {
this["cbBackupTypeACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupFrequencyACL {
get {
return ((int)(this["cbBackupFrequencyACL"]));
}
set {
this["cbBackupFrequencyACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupNumberACL {
get {
return ((int)(this["cbBackupNumberACL"]));
}
set {
this["cbBackupNumberACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupNameFormatACL {
get {
return ((int)(this["cbBackupNameFormatACL"]));
}
set {
this["cbBackupNameFormatACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int cbBackupLocationACL {
get {
return ((int)(this["cbBackupLocationACL"]));
}
set {
this["cbBackupLocationACL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbBacupPageInOptionMenu {
get {
return ((bool)(this["cbBacupPageInOptionMenu"]));
}
set {
this["cbBacupPageInOptionMenu"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool BackupConnectionsOnExit {
get {
return ((bool)(this["BackupConnectionsOnExit"]));
}
set {
this["BackupConnectionsOnExit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool BackupConnectionsOnEdit {
get {
return ((bool)(this["BackupConnectionsOnEdit"]));
}
set {
this["BackupConnectionsOnEdit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool BackupConnectionsOnSave {
get {
return ((bool)(this["BackupConnectionsOnSave"]));
}
set {
this["BackupConnectionsOnSave"] = value;
}
}
}
}

View File

@@ -0,0 +1,63 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsBackupPage">
<Profiles />
<Settings>
<Setting Name="BackupFileKeepCount" Type="System.Int32" Scope="User">
<Value Profile="(Default)">10</Value>
</Setting>
<Setting Name="BackupFileNameFormat" Type="System.String" Scope="User">
<Value Profile="(Default)">{0}.{1:yyyyMMdd-HHmmssffff}.backup</Value>
</Setting>
<Setting Name="BackupLocation" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SaveConsOnExit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SaveConnectionsFrequency" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="CustomConsPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SaveConnectionsAfterEveryEdit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="AutoSaveEveryMinutes" Type="System.Int32" Scope="User">
<Value Profile="(Default)">50</Value>
</Setting>
<Setting Name="LoadConsFromCustomLocation" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbBackupEnableACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBackupTypeACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBackupFrequencyACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBackupNumberACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBackupNameFormatACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBackupLocationACL" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="cbBacupPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BackupConnectionsOnExit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BackupConnectionsOnEdit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BackupConnectionsOnSave" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsConnectionsPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsConnectionsPage defaultInstance = ((OptionsConnectionsPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsConnectionsPage())));
public static OptionsConnectionsPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int AutoSaveEveryMinutes {
get {
return ((int)(this["AutoSaveEveryMinutes"]));
}
set {
this["AutoSaveEveryMinutes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ConnectrionFilePath {
get {
return ((string)(this["ConnectrionFilePath"]));
}
set {
this["ConnectrionFilePath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbConnectionsPageInOptionMenu {
get {
return ((bool)(this["cbConnectionsPageInOptionMenu"]));
}
set {
this["cbConnectionsPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,15 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsConnectionsPage">
<Profiles />
<Settings>
<Setting Name="AutoSaveEveryMinutes" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="ConnectrionFilePath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="cbConnectionsPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsCredentialsPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsCredentialsPage defaultInstance = ((OptionsCredentialsPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsCredentialsPage())));
public static OptionsCredentialsPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string DefaultUsername {
get {
return ((string)(this["DefaultUsername"]));
}
set {
this["DefaultUsername"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string DefaultPassword {
get {
return ((string)(this["DefaultPassword"]));
}
set {
this["DefaultPassword"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string DefaultDomain {
get {
return ((string)(this["DefaultDomain"]));
}
set {
this["DefaultDomain"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string UserViaAPDefault {
get {
return ((string)(this["UserViaAPDefault"]));
}
set {
this["UserViaAPDefault"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("noinfo")]
public string EmptyCredentials {
get {
return ((string)(this["EmptyCredentials"]));
}
set {
this["EmptyCredentials"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbCredentialsPageInOptionMenu {
get {
return ((bool)(this["cbCredentialsPageInOptionMenu"]));
}
set {
this["cbCredentialsPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsCredentialsPage">
<Profiles />
<Settings>
<Setting Name="DefaultUsername" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DefaultPassword" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DefaultDomain" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UserViaAPDefault" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="EmptyCredentials" Type="System.String" Scope="User">
<Value Profile="(Default)">noinfo</Value>
</Setting>
<Setting Name="cbCredentialsPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,122 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsDBsPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsDBsPage defaultInstance = ((OptionsDBsPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsDBsPage())));
public static OptionsDBsPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UseSQLServer {
get {
return ((bool)(this["UseSQLServer"]));
}
set {
this["UseSQLServer"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("mssql")]
public string SQLServerType {
get {
return ((string)(this["SQLServerType"]));
}
set {
this["SQLServerType"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string SQLHost {
get {
return ((string)(this["SQLHost"]));
}
set {
this["SQLHost"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool SQLReadOnly {
get {
return ((bool)(this["SQLReadOnly"]));
}
set {
this["SQLReadOnly"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string SQLDatabaseName {
get {
return ((string)(this["SQLDatabaseName"]));
}
set {
this["SQLDatabaseName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string SQLUser {
get {
return ((string)(this["SQLUser"]));
}
set {
this["SQLUser"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string SQLPass {
get {
return ((string)(this["SQLPass"]));
}
set {
this["SQLPass"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbDBsPageInOptionMenu {
get {
return ((bool)(this["cbDBsPageInOptionMenu"]));
}
set {
this["cbDBsPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,30 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsDBsPage">
<Profiles />
<Settings>
<Setting Name="UseSQLServer" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SQLServerType" Type="System.String" Scope="User">
<Value Profile="(Default)">mssql</Value>
</Setting>
<Setting Name="SQLHost" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLReadOnly" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SQLDatabaseName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLUser" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLPass" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="cbDBsPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,242 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsNotificationsPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsNotificationsPage defaultInstance = ((OptionsNotificationsPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsNotificationsPage())));
public static OptionsNotificationsPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool NotificationPanelWriterWriteDebugMsgs {
get {
return ((bool)(this["NotificationPanelWriterWriteDebugMsgs"]));
}
set {
this["NotificationPanelWriterWriteDebugMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool NotificationPanelWriterWriteInfoMsgs {
get {
return ((bool)(this["NotificationPanelWriterWriteInfoMsgs"]));
}
set {
this["NotificationPanelWriterWriteInfoMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool NotificationPanelWriterWriteWarningMsgs {
get {
return ((bool)(this["NotificationPanelWriterWriteWarningMsgs"]));
}
set {
this["NotificationPanelWriterWriteWarningMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool NotificationPanelWriterWriteErrorMsgs {
get {
return ((bool)(this["NotificationPanelWriterWriteErrorMsgs"]));
}
set {
this["NotificationPanelWriterWriteErrorMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SwitchToMCOnInformation {
get {
return ((bool)(this["SwitchToMCOnInformation"]));
}
set {
this["SwitchToMCOnInformation"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SwitchToMCOnWarning {
get {
return ((bool)(this["SwitchToMCOnWarning"]));
}
set {
this["SwitchToMCOnWarning"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SwitchToMCOnError {
get {
return ((bool)(this["SwitchToMCOnError"]));
}
set {
this["SwitchToMCOnError"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool PopupMessageWriterWriteDebugMsgs {
get {
return ((bool)(this["PopupMessageWriterWriteDebugMsgs"]));
}
set {
this["PopupMessageWriterWriteDebugMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool PopupMessageWriterWriteInfoMsgs {
get {
return ((bool)(this["PopupMessageWriterWriteInfoMsgs"]));
}
set {
this["PopupMessageWriterWriteInfoMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool PopupMessageWriterWriteWarningMsgs {
get {
return ((bool)(this["PopupMessageWriterWriteWarningMsgs"]));
}
set {
this["PopupMessageWriterWriteWarningMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool PopupMessageWriterWriteErrorMsgs {
get {
return ((bool)(this["PopupMessageWriterWriteErrorMsgs"]));
}
set {
this["PopupMessageWriterWriteErrorMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool LogToApplicationDirectory {
get {
return ((bool)(this["LogToApplicationDirectory"]));
}
set {
this["LogToApplicationDirectory"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string LogFilePath {
get {
return ((string)(this["LogFilePath"]));
}
set {
this["LogFilePath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool TextLogMessageWriterWriteDebugMsgs {
get {
return ((bool)(this["TextLogMessageWriterWriteDebugMsgs"]));
}
set {
this["TextLogMessageWriterWriteDebugMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool TextLogMessageWriterWriteErrorMsgs {
get {
return ((bool)(this["TextLogMessageWriterWriteErrorMsgs"]));
}
set {
this["TextLogMessageWriterWriteErrorMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool TextLogMessageWriterWriteInfoMsgs {
get {
return ((bool)(this["TextLogMessageWriterWriteInfoMsgs"]));
}
set {
this["TextLogMessageWriterWriteInfoMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool TextLogMessageWriterWriteWarningMsgs {
get {
return ((bool)(this["TextLogMessageWriterWriteWarningMsgs"]));
}
set {
this["TextLogMessageWriterWriteWarningMsgs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbNotificationsPageInOptionMenu {
get {
return ((bool)(this["cbNotificationsPageInOptionMenu"]));
}
set {
this["cbNotificationsPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,60 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsNotificationsPage">
<Profiles />
<Settings>
<Setting Name="NotificationPanelWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SwitchToMCOnInformation" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SwitchToMCOnWarning" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SwitchToMCOnError" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="LogToApplicationDirectory" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LogFilePath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="TextLogMessageWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="cbNotificationsPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,86 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsSecurityPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsSecurityPage defaultInstance = ((OptionsSecurityPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsSecurityPage())));
public static OptionsSecurityPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool EncryptCompleteConnectionsFile {
get {
return ((bool)(this["EncryptCompleteConnectionsFile"]));
}
set {
this["EncryptCompleteConnectionsFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("AES")]
public global::mRemoteNG.Security.BlockCipherEngines EncryptionEngine {
get {
return ((global::mRemoteNG.Security.BlockCipherEngines)(this["EncryptionEngine"]));
}
set {
this["EncryptionEngine"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("GCM")]
public global::mRemoteNG.Security.BlockCipherModes EncryptionBlockCipherMode {
get {
return ((global::mRemoteNG.Security.BlockCipherModes)(this["EncryptionBlockCipherMode"]));
}
set {
this["EncryptionBlockCipherMode"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("10000")]
public int EncryptionKeyDerivationIterations {
get {
return ((int)(this["EncryptionKeyDerivationIterations"]));
}
set {
this["EncryptionKeyDerivationIterations"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbSecurityPageInOptionMenu {
get {
return ((bool)(this["cbSecurityPageInOptionMenu"]));
}
set {
this["cbSecurityPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,21 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsSecurityPage">
<Profiles />
<Settings>
<Setting Name="EncryptCompleteConnectionsFile" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="EncryptionEngine" Type="mRemoteNG.Security.BlockCipherEngines" Scope="User">
<Value Profile="(Default)">AES</Value>
</Setting>
<Setting Name="EncryptionBlockCipherMode" Type="mRemoteNG.Security.BlockCipherModes" Scope="User">
<Value Profile="(Default)">GCM</Value>
</Setting>
<Setting Name="EncryptionKeyDerivationIterations" Type="System.Int32" Scope="User">
<Value Profile="(Default)">10000</Value>
</Setting>
<Setting Name="cbSecurityPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsStartupExitPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsStartupExitPage defaultInstance = ((OptionsStartupExitPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsStartupExitPage())));
public static OptionsStartupExitPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool StartFullScreen {
get {
return ((bool)(this["StartFullScreen"]));
}
set {
this["StartFullScreen"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool StartMinimized {
get {
return ((bool)(this["StartMinimized"]));
}
set {
this["StartMinimized"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool SaveConnectionsOnExit {
get {
return ((bool)(this["SaveConnectionsOnExit"]));
}
set {
this["SaveConnectionsOnExit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool SingleInstance {
get {
return ((bool)(this["SingleInstance"]));
}
set {
this["SingleInstance"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool OpenConsFromLastSession {
get {
return ((bool)(this["OpenConsFromLastSession"]));
}
set {
this["OpenConsFromLastSession"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbStartupExitPageInOptionMenu {
get {
return ((bool)(this["cbStartupExitPageInOptionMenu"]));
}
set {
this["cbStartupExitPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsStartupExitPage">
<Profiles />
<Settings>
<Setting Name="StartFullScreen" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="StartMinimized" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SaveConnectionsOnExit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SingleInstance" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="OpenConsFromLastSession" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbStartupExitPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,158 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsTabsPanelsPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsTabsPanelsPage defaultInstance = ((OptionsTabsPanelsPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsTabsPanelsPage())));
public static OptionsTabsPanelsPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("General")]
public string StartUpPanelName {
get {
return ((string)(this["StartUpPanelName"]));
}
set {
this["StartUpPanelName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool AlwaysShowPanelTabs {
get {
return ((bool)(this["AlwaysShowPanelTabs"]));
}
set {
this["AlwaysShowPanelTabs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool CreateEmptyPanelOnStartUp {
get {
return ((bool)(this["CreateEmptyPanelOnStartUp"]));
}
set {
this["CreateEmptyPanelOnStartUp"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool AlwaysShowConnectionTabs {
get {
return ((bool)(this["AlwaysShowConnectionTabs"]));
}
set {
this["AlwaysShowConnectionTabs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool OpenTabsRightOfSelected {
get {
return ((bool)(this["OpenTabsRightOfSelected"]));
}
set {
this["OpenTabsRightOfSelected"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowLogonInfoOnTabs {
get {
return ((bool)(this["ShowLogonInfoOnTabs"]));
}
set {
this["ShowLogonInfoOnTabs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowProtocolOnTabs {
get {
return ((bool)(this["ShowProtocolOnTabs"]));
}
set {
this["ShowProtocolOnTabs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool IdentifyQuickConnectTabs {
get {
return ((bool)(this["IdentifyQuickConnectTabs"]));
}
set {
this["IdentifyQuickConnectTabs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool DoubleClickOnTabClosesIt {
get {
return ((bool)(this["DoubleClickOnTabClosesIt"]));
}
set {
this["DoubleClickOnTabClosesIt"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool AlwaysShowPanelSelectionDlg {
get {
return ((bool)(this["AlwaysShowPanelSelectionDlg"]));
}
set {
this["AlwaysShowPanelSelectionDlg"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbTabsPanelsPageInOptionMenu {
get {
return ((bool)(this["cbTabsPanelsPageInOptionMenu"]));
}
set {
this["cbTabsPanelsPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,39 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsTabsPanelsPage">
<Profiles />
<Settings>
<Setting Name="StartUpPanelName" Type="System.String" Scope="User">
<Value Profile="(Default)">General</Value>
</Setting>
<Setting Name="AlwaysShowPanelTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CreateEmptyPanelOnStartUp" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="AlwaysShowConnectionTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="OpenTabsRightOfSelected" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowLogonInfoOnTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowProtocolOnTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="IdentifyQuickConnectTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DoubleClickOnTabClosesIt" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="AlwaysShowPanelSelectionDlg" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbTabsPanelsPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsThemePage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsThemePage defaultInstance = ((OptionsThemePage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsThemePage())));
public static OptionsThemePage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ThemingActive {
get {
return ((bool)(this["ThemingActive"]));
}
set {
this["ThemingActive"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ThemeName {
get {
return ((string)(this["ThemeName"]));
}
set {
this["ThemeName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbThemePageInOptionMenu {
get {
return ((bool)(this["cbThemePageInOptionMenu"]));
}
set {
this["cbThemePageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,15 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsThemePage">
<Profiles />
<Settings>
<Setting Name="ThemingActive" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ThemeName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="cbThemePageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,200 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class OptionsUpdatesPage : global::System.Configuration.ApplicationSettingsBase {
private static OptionsUpdatesPage defaultInstance = ((OptionsUpdatesPage)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new OptionsUpdatesPage())));
public static OptionsUpdatesPage Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UpdatePending {
get {
return ((bool)(this["UpdatePending"]));
}
set {
this["UpdatePending"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("release")]
public string UpdateChannel {
get {
return ((string)(this["UpdateChannel"]));
}
set {
this["UpdateChannel"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://mremoteng.org/")]
public string UpdateAddress {
get {
return ((string)(this["UpdateAddress"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string UpdateProxyAddress {
get {
return ((string)(this["UpdateProxyAddress"]));
}
set {
this["UpdateProxyAddress"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string UpdateProxyAuthPass {
get {
return ((string)(this["UpdateProxyAuthPass"]));
}
set {
this["UpdateProxyAuthPass"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string UpdateProxyAuthUser {
get {
return ((string)(this["UpdateProxyAuthUser"]));
}
set {
this["UpdateProxyAuthUser"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("80")]
public int UpdateProxyPort {
get {
return ((int)(this["UpdateProxyPort"]));
}
set {
this["UpdateProxyPort"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UpdateProxyUseAuthentication {
get {
return ((bool)(this["UpdateProxyUseAuthentication"]));
}
set {
this["UpdateProxyUseAuthentication"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UpdateUseProxy {
get {
return ((bool)(this["UpdateUseProxy"]));
}
set {
this["UpdateUseProxy"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("dev")]
public string CurrentUpdateChannelType {
get {
return ((string)(this["CurrentUpdateChannelType"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool CheckForUpdatesOnStartup {
get {
return ((bool)(this["CheckForUpdatesOnStartup"]));
}
set {
this["CheckForUpdatesOnStartup"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1980-01-01")]
public global::System.DateTime CheckForUpdatesLastCheck {
get {
return ((global::System.DateTime)(this["CheckForUpdatesLastCheck"]));
}
set {
this["CheckForUpdatesLastCheck"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("14")]
public int CheckForUpdatesFrequencyDays {
get {
return ((int)(this["CheckForUpdatesFrequencyDays"]));
}
set {
this["CheckForUpdatesFrequencyDays"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool CheckForUpdatesAsked {
get {
return ((bool)(this["CheckForUpdatesAsked"]));
}
set {
this["CheckForUpdatesAsked"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool cbUpdatesPageInOptionMenu {
get {
return ((bool)(this["cbUpdatesPageInOptionMenu"]));
}
set {
this["cbUpdatesPageInOptionMenu"] = value;
}
}
}
}

View File

@@ -0,0 +1,51 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="OptionsUpdatesPage">
<Profiles />
<Settings>
<Setting Name="UpdatePending" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateChannel" Type="System.String" Scope="User">
<Value Profile="(Default)">release</Value>
</Setting>
<Setting Name="UpdateAddress" Type="System.String" Scope="Application">
<Value Profile="(Default)">https://mremoteng.org/</Value>
</Setting>
<Setting Name="UpdateProxyAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UpdateProxyAuthPass" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UpdateProxyAuthUser" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UpdateProxyPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">80</Value>
</Setting>
<Setting Name="UpdateProxyUseAuthentication" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateUseProxy" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CurrentUpdateChannelType" Type="System.String" Scope="Application">
<Value Profile="(Default)">dev</Value>
</Setting>
<Setting Name="CheckForUpdatesOnStartup" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="CheckForUpdatesLastCheck" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">1980-01-01</Value>
</Setting>
<Setting Name="CheckForUpdatesFrequencyDays" Type="System.Int32" Scope="User">
<Value Profile="(Default)">14</Value>
</Setting>
<Setting Name="CheckForUpdatesAsked" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="cbUpdatesPageInOptionMenu" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -112,12 +112,12 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ConnectedOverlay" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ConnectedOverlay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

File diff suppressed because it is too large Load Diff

View File

@@ -2,102 +2,9 @@
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="Settings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="MainFormLocation" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormSize" Type="System.Drawing.Size" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
<Setting Name="MainFormState" Type="System.Windows.Forms.FormWindowState" Scope="User">
<Value Profile="(Default)">Normal</Value>
</Setting>
<Setting Name="MainFormKiosk" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DoUpgrade" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="CustomPuttyPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SwitchToMCOnInformation" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SwitchToMCOnWarning" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SwitchToMCOnError" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LoadConsFromCustomLocation" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CustomConsPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SaveConsOnExit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="CheckForUpdatesOnStartup" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowDescriptionTooltipsInTree" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowSystemTrayIcon" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="OpenTabsRightOfSelected" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowLogonInfoOnTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SingleClickOnConnectionOpensIt" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="EmptyCredentials" Type="System.String" Scope="User">
<Value Profile="(Default)">noinfo</Value>
</Setting>
<Setting Name="DefaultUsername" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DefaultPassword" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DefaultDomain" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UseCustomPuttyPath" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="FirstStart" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowProtocolOnTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ResetPanels" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateUseProxy" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateProxyAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UpdateProxyPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">80</Value>
</Setting>
<Setting Name="UpdateProxyUseAuthentication" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateProxyAuthUser" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="UpdateProxyAuthPass" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ConDefaultDescription" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
@@ -152,21 +59,9 @@
<Setting Name="ConDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MaxPuttyWaitTime" Type="System.Int32" Scope="User">
<Value Profile="(Default)">2</Value>
</Setting>
<Setting Name="SingleInstance" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="OpenConsFromLastSession" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NoReconnect" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="AutoSaveEveryMinutes" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="ExtAppsTBVisible" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -188,21 +83,6 @@
<Setting Name="QuickyTBParentDock" Type="System.String" Scope="User">
<Value Profile="(Default)">Top</Value>
</Setting>
<Setting Name="ResetToolbars" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UseSQLServer" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SQLHost" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLUser" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLPass" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="InhDefaultCacheBitmaps" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -287,15 +167,6 @@
<Setting Name="SetHostnameLikeDisplayName" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DoubleClickOnTabClosesIt" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ReconnectOnDisconnect" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="AlwaysShowPanelSelectionDlg" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultVNCAuthMode" Type="System.String" Scope="User">
<Value Profile="(Default)">AuthVNC</Value>
</Setting>
@@ -362,9 +233,6 @@
<Setting Name="InhDefaultVNCProxyUsername" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MinimizeToTray" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SingleClickSwitchesToOpenConnection" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -374,9 +242,6 @@
<Setting Name="InhDefaultRDPAuthenticationLevel" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UVNCSCPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">5500</Value>
</Setting>
<Setting Name="XULRunnerPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
@@ -389,9 +254,6 @@
<Setting Name="InhDefaultMacAddress" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="EncryptCompleteConnectionsFile" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUserField" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
@@ -404,18 +266,6 @@
<Setting Name="InhDefaultExtApp" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CheckForUpdatesAsked" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CheckForUpdatesFrequencyDays" Type="System.Int32" Scope="User">
<Value Profile="(Default)">14</Value>
</Setting>
<Setting Name="CheckForUpdatesLastCheck" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">1980-01-01</Value>
</Setting>
<Setting Name="UpdatePending" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultRDGatewayUsageMethod" Type="System.String" Scope="User">
<Value Profile="(Default)">Never</Value>
</Setting>
@@ -488,42 +338,27 @@
<Setting Name="ConfirmCloseConnection" Type="System.Int32" Scope="User">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="MainFormRestoreSize" Type="System.Drawing.Size" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MainFormRestoreLocation" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SQLDatabaseName" Type="System.String" Scope="User">
<Value Profile="(Default)">mRemoteNG</Value>
</Setting>
<Setting Name="BackupFileKeepCount" Roaming="true" Type="System.Int32" Scope="User">
<Value Profile="(Default)">10</Value>
</Setting>
<Setting Name="BackupFileNameFormat" Roaming="true" Type="System.String" Scope="User">
<Value Profile="(Default)">{0}.{1:yyyyMMdd-HHmmssffff}.backup</Value>
</Setting>
<Setting Name="InhDefaultUseCredSsp" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseCredSsp" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="InhDefaultUseRestrictedAdmin" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseRestrictedAdmin" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultUseRCG" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseRCG" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseVmId" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="AlwaysShowPanelTabs" Roaming="true" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="IdentifyQuickConnectTabs" Roaming="true" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UpdateChannel" Type="System.String" Scope="User">
<Value Profile="(Default)">release</Value>
</Setting>
<Setting Name="ThemeName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ShowConfigHelpText" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
@@ -536,9 +371,6 @@
<Setting Name="CompatibilityWarnLenovoAutoScrollUtility" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="UpdateAddress" Type="System.String" Scope="Application">
<Value Profile="(Default)">https://mremoteng.org/</Value>
</Setting>
<Setting Name="ConDefaultLoadBalanceInfo" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
@@ -560,21 +392,9 @@
<Setting Name="KeysNextTab" Roaming="true" Type="System.String" Scope="User">
<Value Profile="(Default)">9/8, 34/8</Value>
</Setting>
<Setting Name="ShowCompleteConsPathInTitle" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConRDPOverallConnectionTimeout" Type="System.Int32" Scope="User">
<Value Profile="(Default)">20</Value>
</Setting>
<Setting Name="EncryptionEngine" Type="mRemoteNG.Security.BlockCipherEngines" Scope="User">
<Value Profile="(Default)">AES</Value>
</Setting>
<Setting Name="EncryptionBlockCipherMode" Type="mRemoteNG.Security.BlockCipherModes" Scope="User">
<Value Profile="(Default)">GCM</Value>
</Setting>
<Setting Name="EncryptionKeyDerivationIterations" Type="System.Int32" Scope="User">
<Value Profile="(Default)">10000</Value>
</Setting>
<Setting Name="ConDefaultSoundQuality" Type="System.String" Scope="User">
<Value Profile="(Default)">Dynamic</Value>
</Setting>
@@ -599,57 +419,9 @@
<Setting Name="ConDefaultCredentialRecord" Type="System.Guid" Scope="User">
<Value Profile="(Default)">00000000-0000-0000-0000-000000000000</Value>
</Setting>
<Setting Name="LogFilePath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="TextLogMessageWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="TextLogMessageWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="NotificationPanelWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteDebugMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteInfoMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteWarningMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PopupMessageWriterWriteErrorMsgs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="LogToApplicationDirectory" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="PromptUnlockCredReposOnStartup" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SupportedUICultures" Type="System.String" Scope="Application">
<Value Profile="(Default)">cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,lt,ja-JP,ko-KR,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW</Value>
</Setting>
<Setting Name="ThemingActive" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ConDefaultUsername" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
@@ -662,21 +434,12 @@
<Setting Name="ConDefaultPanel" Type="System.String" Scope="User">
<Value Profile="(Default)">General</Value>
</Setting>
<Setting Name="SaveConnectionsAfterEveryEdit" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="UseFilterSearch" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SQLReadOnly" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="LockToolbars" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="RdpLoadBalanceInfoUseUtf8" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MultiSshToolbarLocation" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)">0, 0</Value>
</Setting>
@@ -686,21 +449,12 @@
<Setting Name="MultiSshToolbarVisible" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CreateEmptyPanelOnStartUp" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="StartUpPanelName" Type="System.String" Scope="User">
<Value Profile="(Default)">General</Value>
</Setting>
<Setting Name="TrackActiveConnectionInConnectionTree" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PlaceSearchBarAboveConnectionTree" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="AlwaysShowConnectionTabs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="OverrideFIPSCheck" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -710,9 +464,6 @@
<Setting Name="InhDefaultFavorite" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SQLServerType" Type="System.String" Scope="User">
<Value Profile="(Default)">mssql</Value>
</Setting>
<Setting Name="DoNotTrimUsername" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -725,9 +476,6 @@
<Setting Name="InhDefaultUseVmId" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SaveConnectionsFrequency" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="ConDefaultRdpVersion" Type="System.String" Scope="User">
<Value Profile="(Default)">Highest</Value>
</Setting>
@@ -746,18 +494,12 @@
<Setting Name="ConDefaultSSHOptions" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="StartMinimized" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseEnhancedMode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultUseEnhancedMode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CloseToTray" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="StartupComponentsCheck" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -785,9 +527,6 @@
<Setting Name="InhDefaultICAEncryptionStrength" Type="System.String" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="StartFullScreen" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ViewMenuMessages" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -806,14 +545,26 @@
<Setting Name="OpeningCommand" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CurrentUpdateChannelType" Type="System.String" Scope="User">
<Value Profile="(Default)">dev</Value>
</Setting>
<Setting Name="ConDefaultRDPStartProgram" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ConDefaultRDPStartProgramWorkDir" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ConDefaultEC2InstanceId" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ConDefaultUserViaAPI" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ConDefaultOpeningCommand" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="InhDefaultUserViaAPI" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultOpeningCommand" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -1,50 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.77.3.0" name="mRemoteNG" />
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">
<activeCodePage>UTF-8</activeCodePage>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<dpiAwareness>PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
<heapType>SegmentHeap</heapType>
</asmv3:windowsSettings>
</asmv3:application>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
</application>
</compatibility>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</asmv1:assembly>
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10, 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

50
mRemoteNG/Properties/rbac.Designer.cs generated Normal file
View File

@@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
internal sealed partial class rbac : global::System.Configuration.ApplicationSettingsBase {
private static rbac defaultInstance = ((rbac)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new rbac())));
public static rbac Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("AdminRole")]
public string ActiveRole {
get {
return ((string)(this["ActiveRole"]));
}
set {
this["ActiveRole"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("mR3m0t3NG!")]
public string AdminRolePassword {
get {
return ((string)(this["AdminRolePassword"]));
}
set {
this["AdminRolePassword"] = value;
}
}
}
}

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="mRemoteNG.Properties" GeneratedClassName="rbac">
<Profiles />
<Settings>
<Setting Name="ActiveRole" Type="System.String" Scope="User">
<Value Profile="(Default)">AdminRole</Value>
</Setting>
<Setting Name="AdminRolePassword" Type="System.String" Scope="User">
<Value Profile="(Default)">mR3m0t3NG!</Value>
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

View File

@@ -175,5 +175,10 @@
<xs:attribute name="UserViaAPI" type="xs:string" use="optional" />
<xs:attribute name="EC2InstanceId" type="xs:string" use="optional" />
<xs:attribute name="EC2Region" type="xs:string" use="optional" />
<xs:attribute name="UseRCG" type="xs:boolean" use="optional" />
<xs:attribute name="UseRestrictedAdmin" type="xs:boolean" use="optional" />
<xs:attribute name="InheritUseRCG" type="xs:boolean" use="optional" />
<xs:attribute name="InheritUseRestrictedAdmin" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:schema>

View File

@@ -7,9 +7,8 @@ namespace mRemoteNG.Security.Factories
public ICryptographyProvider Build()
{
var provider =
new CryptoProviderFactory(Settings.Default.EncryptionEngine, Settings.Default.EncryptionBlockCipherMode)
.Build();
provider.KeyDerivationIterations = Settings.Default.EncryptionKeyDerivationIterations;
new CryptoProviderFactory(Properties.OptionsSecurityPage.Default.EncryptionEngine, Properties.OptionsSecurityPage.Default.EncryptionBlockCipherMode).Build();
provider.KeyDerivationIterations = Properties.OptionsSecurityPage.Default.EncryptionKeyDerivationIterations;
return provider;
}
}

View File

@@ -39,18 +39,18 @@ namespace mRemoteNG.Themes
private void SetActive()
{
if (themes[Settings.Default.ThemeName] != null)
ActiveTheme = (ThemeInfo)themes[Settings.Default.ThemeName];
if (themes[Properties.OptionsThemePage.Default.ThemeName] != null)
ActiveTheme = (ThemeInfo)themes[Properties.OptionsThemePage.Default.ThemeName];
else
{
ActiveTheme = DefaultTheme;
if (string.IsNullOrEmpty(Settings.Default.ThemeName)) return;
if (string.IsNullOrEmpty(Properties.OptionsThemePage.Default.ThemeName)) return;
//too early for logging to be enabled...
Debug.WriteLine("Detected invalid Theme in settings file. Resetting to default.");
// if we got here, then there's an invalid theme name in use, so just empty it out...
Settings.Default.ThemeName = "";
Settings.Default.Save();
Properties.OptionsThemePage.Default.ThemeName = "";
Properties.OptionsThemePage.Default.Save();
}
}
@@ -168,45 +168,27 @@ namespace mRemoteNG.Themes
//Load the embedded themes, extended palettes are taken from the vs2015 themes, trying to match the color theme
// 2012
var vs2012Light = new ThemeInfo("vs2012Light", new VS2012LightTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2012,
((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
var vs2012Light = new ThemeInfo("vs2012Light", new VS2012LightTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2012, ((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
themes.Add(vs2012Light.Name, vs2012Light);
var vs2012Dark = new ThemeInfo("vs2012Dark", new VS2012DarkTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2012,
((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
var vs2012Dark = new ThemeInfo("vs2012Dark", new VS2012DarkTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2012, ((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
themes.Add(vs2012Dark.Name, vs2012Dark);
var vs2012Blue = new ThemeInfo("vs2012Blue", new VS2012BlueTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2012,
((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
var vs2012Blue = new ThemeInfo("vs2012Blue", new VS2012BlueTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2012, ((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
themes.Add(vs2012Blue.Name, vs2012Blue);
// 2013
var vs2013Light = new ThemeInfo("vs2013Light", new VS2013LightTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2013,
((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
var vs2013Light = new ThemeInfo("vs2013Light", new VS2013LightTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2013, ((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
themes.Add(vs2013Light.Name, vs2013Light);
var vs2013Dark = new ThemeInfo("vs2013Dark", new VS2013DarkTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2013,
((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
var vs2013Dark = new ThemeInfo("vs2013Dark", new VS2013DarkTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2013, ((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
themes.Add(vs2013Dark.Name, vs2013Dark);
var vs2013Blue = new ThemeInfo("vs2013Blue", new VS2013BlueTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2013,
((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
var vs2013Blue = new ThemeInfo("vs2013Blue", new VS2013BlueTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2013, ((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
themes.Add(vs2013Blue.Name, vs2013Blue);
// 2015
var vs2015Light = new ThemeInfo("vs2015Light", new VS2015LightTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2015,
((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
var vs2015Light = new ThemeInfo("vs2015Light", new VS2015LightTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2015, ((ThemeInfo)themes["vs2015lightNG"]).ExtendedPalette);
themes.Add(vs2015Light.Name, vs2015Light);
var vs2015Dark = new ThemeInfo("vs2015Dark", new VS2015DarkTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2015,
((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
var vs2015Dark = new ThemeInfo("vs2015Dark", new VS2015DarkTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2015, ((ThemeInfo)themes["vs2015darkNG"]).ExtendedPalette);
themes.Add(vs2015Dark.Name, vs2015Dark);
var vs2015Blue = new ThemeInfo("vs2015Blue", new VS2015BlueTheme(), "",
VisualStudioToolStripExtender.VsVersion.Vs2015,
((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
var vs2015Blue = new ThemeInfo("vs2015Blue", new VS2015BlueTheme(), "", VisualStudioToolStripExtender.VsVersion.Vs2015, ((ThemeInfo)themes["vs2015blueNG"]).ExtendedPalette);
themes.Add(vs2015Blue.Name, vs2015Blue);
}
}
@@ -303,7 +285,7 @@ namespace mRemoteNG.Themes
{
if (themes.Count == 0) return;
_themeActive = value;
Settings.Default.ThemingActive = value;
Properties.OptionsThemePage.Default.ThemingActive = value;
NotifyThemeChanged(this, new PropertyChangedEventArgs(""));
}
}
@@ -324,20 +306,20 @@ namespace mRemoteNG.Themes
// Default accordingly...
if (value == null)
{
var changed = !Settings.Default.ThemeName.Equals(DefaultTheme.Name);
var changed = !Properties.OptionsThemePage.Default.ThemeName.Equals(DefaultTheme.Name);
Settings.Default.ThemeName = DefaultTheme.Name;
Properties.OptionsThemePage.Default.ThemeName = DefaultTheme.Name;
_activeTheme = DefaultTheme;
if (changed)
NotifyThemeChanged(this, new PropertyChangedEventArgs("theme"));
Settings.Default.Save();
Properties.OptionsThemePage.Default.Save();
return;
}
_activeTheme = value;
Settings.Default.ThemeName = value.Name;
Properties.OptionsThemePage.Default.ThemeName = value.Name;
NotifyThemeChanged(this, new PropertyChangedEventArgs("theme"));
}
}

View File

@@ -48,28 +48,28 @@ namespace mRemoteNG.Tools.Cmdline
{
if (args["resetpos"] == null && args["rp"] == null && args["reset"] == null) return;
_messageCollector.AddMessage(MessageClass.DebugMsg, "Cmdline arg: Resetting window positions.");
Settings.Default.MainFormKiosk = false;
Properties.App.Default.MainFormKiosk = false;
var newWidth = 900;
var newHeight = 600;
var newX = Screen.PrimaryScreen.WorkingArea.Width / 2 - newWidth / 2;
var newY = Screen.PrimaryScreen.WorkingArea.Height / 2 - newHeight / 2;
Settings.Default.MainFormLocation = new Point(newX, newY);
Settings.Default.MainFormSize = new Size(newWidth, newHeight);
Settings.Default.MainFormState = FormWindowState.Normal;
Properties.App.Default.MainFormLocation = new Point(newX, newY);
Properties.App.Default.MainFormSize = new Size(newWidth, newHeight);
Properties.App.Default.MainFormState = FormWindowState.Normal;
}
private void ParseResetPanelsArg(CmdArgumentsInterpreter args)
{
if (args["resetpanels"] == null && args["rpnl"] == null && args["reset"] == null) return;
_messageCollector.AddMessage(MessageClass.DebugMsg, "Cmdline arg: Resetting panels");
Settings.Default.ResetPanels = true;
Properties.App.Default.ResetPanels = true;
}
private void ParseResetToolbarArg(CmdArgumentsInterpreter args)
{
if (args["resettoolbar"] == null && args["rtbr"] == null && args["reset"] == null) return;
_messageCollector.AddMessage(MessageClass.DebugMsg, "Cmdline arg: Resetting toolbar position");
Settings.Default.ResetToolbars = true;
Properties.App.Default.ResetToolbars = true;
}
private void ParseNoReconnectArg(CmdArgumentsInterpreter args)
@@ -77,7 +77,7 @@ namespace mRemoteNG.Tools.Cmdline
if (args["noreconnect"] == null && args["norc"] == null) return;
_messageCollector.AddMessage(MessageClass.DebugMsg,
"Cmdline arg: Disabling reconnection to previously connected hosts");
Settings.Default.NoReconnect = true;
Properties.App.Default.NoReconnect = true;
}
private void ParseCustomConnectionPathArg(CmdArgumentsInterpreter args)
@@ -94,20 +94,19 @@ namespace mRemoteNG.Tools.Cmdline
{
if (File.Exists(Path.Combine(GeneralAppInfo.HomePath, args[consParam])))
{
Settings.Default.LoadConsFromCustomLocation = true;
Settings.Default.CustomConsPath = Path.Combine(GeneralAppInfo.HomePath, args[consParam]);
Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation = true;
Properties.OptionsBackupPage.Default.BackupLocation = Path.Combine(GeneralAppInfo.HomePath, args[consParam]);
return;
}
if (!File.Exists(Path.Combine(ConnectionsFileInfo.DefaultConnectionsPath, args[consParam]))) return;
Settings.Default.LoadConsFromCustomLocation = true;
Settings.Default.CustomConsPath =
Path.Combine(ConnectionsFileInfo.DefaultConnectionsPath, args[consParam]);
Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation = true;
Properties.OptionsBackupPage.Default.BackupLocation = Path.Combine(ConnectionsFileInfo.DefaultConnectionsPath, args[consParam]);
}
else
{
Settings.Default.LoadConsFromCustomLocation = true;
Settings.Default.CustomConsPath = args[consParam];
Properties.OptionsBackupPage.Default.LoadConsFromCustomLocation = true;
Properties.OptionsBackupPage.Default.BackupLocation = args[consParam];
}
}
}

View File

@@ -178,25 +178,23 @@ namespace mRemoteNG.Tools
case "username":
replacement = _connectionInfo.Username;
if (string.IsNullOrEmpty(replacement))
if (Settings.Default.EmptyCredentials == "windows")
if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "windows")
replacement = Environment.UserName;
else if (Settings.Default.EmptyCredentials == "custom")
replacement = Settings.Default.DefaultUsername;
else if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "custom")
replacement = Properties.OptionsCredentialsPage.Default.DefaultUsername;
break;
case "password":
replacement = _connectionInfo.Password;
if (string.IsNullOrEmpty(replacement) && Settings.Default.EmptyCredentials == "custom")
replacement = new LegacyRijndaelCryptographyProvider()
.Decrypt(Convert.ToString(Settings.Default.DefaultPassword),
Runtime.EncryptionKey);
if (string.IsNullOrEmpty(replacement) && Properties.OptionsCredentialsPage.Default.EmptyCredentials == "custom")
replacement = new LegacyRijndaelCryptographyProvider().Decrypt(Convert.ToString(Properties.OptionsCredentialsPage.Default.DefaultPassword), Runtime.EncryptionKey);
break;
case "domain":
replacement = _connectionInfo.Domain;
if (string.IsNullOrEmpty(replacement))
if (Settings.Default.EmptyCredentials == "windows")
if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "windows")
replacement = Environment.UserDomainName;
else if (Settings.Default.EmptyCredentials == "custom")
replacement = Settings.Default.DefaultDomain;
else if (Properties.OptionsCredentialsPage.Default.EmptyCredentials == "custom")
replacement = Properties.OptionsCredentialsPage.Default.DefaultDomain;
break;
case "description":
replacement = _connectionInfo.Description;

View File

@@ -13,6 +13,7 @@ using mRemoteNG.UI.Forms;
using MySql.Data.Types;
using mRemoteNG.Resources.Language;
using static System.String;
using System.Windows;
namespace mRemoteNG.Tools
{
@@ -43,9 +44,10 @@ namespace mRemoteNG.Tools
public static Optional<SecureString> PasswordDialog(string passwordName = null, bool verify = true)
{
var splash = FrmSplashScreen.getInstance();
if (!splash.IsDisposed && splash.Visible)
splash.Close();
var splash = FrmSplashScreenNew.GetInstance();
//TODO: something not right there
//if (PresentationSource.FromVisual(splash))
// splash.Close();
var passwordForm = new FrmPassword(passwordName, verify);
return passwordForm.GetKey();
@@ -64,7 +66,7 @@ namespace mRemoteNG.Tools
public static string DBDate(DateTime Dt)
{
switch (Settings.Default.SQLServerType)
switch (Properties.OptionsDBsPage.Default.SQLServerType)
{
case "mysql":
return Dt.ToString("yyyy/MM/dd HH:mm:ss");
@@ -76,7 +78,7 @@ namespace mRemoteNG.Tools
public static Type DBTimeStampType()
{
switch (Settings.Default.SQLServerType)
switch (Properties.OptionsDBsPage.Default.SQLServerType)
{
case "mysql":
return typeof(MySqlDateTime);
@@ -88,7 +90,7 @@ namespace mRemoteNG.Tools
public static object DBTimeStampNow()
{
switch (Settings.Default.SQLServerType)
switch (Properties.OptionsDBsPage.Default.SQLServerType)
{
case "mysql":
return new MySqlDateTime(DateTime.Now);
@@ -126,8 +128,7 @@ namespace mRemoteNG.Tools
{
var bmp = new Bitmap(sender.Width, sender.Height, PixelFormat.Format32bppRgb);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(sender.PointToScreen(Point.Empty), Point.Empty, bmp.Size,
CopyPixelOperation.SourceCopy);
g.CopyFromScreen(sender.PointToScreen(System.Drawing.Point.Empty), System.Drawing.Point.Empty, bmp.Size, CopyPixelOperation.SourceCopy);
return bmp;
}
}

View File

@@ -111,7 +111,7 @@ namespace mRemoteNG.Tools
FrmMain.Show();
FrmMain.WindowState = FrmMain.PreviousWindowState;
if (Settings.Default.ShowSystemTrayIcon) return;
if (Properties.OptionsAppearancePage.Default.ShowSystemTrayIcon) return;
Runtime.NotificationAreaIcon.Dispose();
Runtime.NotificationAreaIcon = null;
}

View File

@@ -110,12 +110,12 @@ namespace mRemoteNG.Tools
if (Process == null || Process.HasExited)
return IntPtr.Zero;
Process.WaitForInputIdle(Settings.Default.MaxPuttyWaitTime * 1000);
Process.WaitForInputIdle(Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000);
Handle = IntPtr.Zero;
var startTicks = Environment.TickCount;
while (Handle == IntPtr.Zero &&
Environment.TickCount < startTicks + (Settings.Default.MaxPuttyWaitTime * 1000))
Environment.TickCount < startTicks + (Properties.OptionsAdvancedPage.Default.MaxPuttyWaitTime * 1000))
{
Process.Refresh();
Handle = Process.MainWindowHandle;
@@ -152,8 +152,7 @@ namespace mRemoteNG.Tools
}
else
{
NativeMethods.SendMessage(control, NativeMethods.WM_GETTEXT, new IntPtr(stringBuilder.Capacity),
stringBuilder);
NativeMethods.SendMessage(control, NativeMethods.WM_GETTEXT, new IntPtr(stringBuilder.Capacity), stringBuilder);
if (stringBuilder.ToString() != text) continue;
controlHandle = control;
break;

View File

@@ -1,4 +1,4 @@
using mRemoteNG.Properties;
using mRemoteNG.Properties;
using mRemoteNG.Tools.Cmdline;
namespace mRemoteNG.Tools
@@ -7,9 +7,7 @@ namespace mRemoteNG.Tools
{
public bool Start(CommandLineArguments arguments = null)
{
var filename = Settings.Default.UseCustomPuttyPath
? Settings.Default.CustomPuttyPath
: App.Info.GeneralAppInfo.PuttyPath;
var filename = Properties.OptionsAdvancedPage.Default.UseCustomPuttyPath ? Properties.OptionsAdvancedPage.Default.CustomPuttyPath : App.Info.GeneralAppInfo.PuttyPath;
return Start(filename, arguments);
}
}

Some files were not shown because too many files have changed in this diff Show More