diff --git a/SharedLibraryNG/bin/Debug/SharedLibraryNG.dll b/SharedLibraryNG/bin/Debug/SharedLibraryNG.dll
new file mode 100644
index 000000000..c34ec1bb1
Binary files /dev/null and b/SharedLibraryNG/bin/Debug/SharedLibraryNG.dll differ
diff --git a/SharedLibraryNG/bin/Debug/SharedLibraryNG.pdb b/SharedLibraryNG/bin/Debug/SharedLibraryNG.pdb
new file mode 100644
index 000000000..838e9e472
Binary files /dev/null and b/SharedLibraryNG/bin/Debug/SharedLibraryNG.pdb differ
diff --git a/SharedLibraryNG/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SharedLibraryNG/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 000000000..bbaa4fbc5
Binary files /dev/null and b/SharedLibraryNG/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/SharedLibraryNG/obj/Debug/SharedLibraryNG.csproj.FileListAbsolute.txt b/SharedLibraryNG/obj/Debug/SharedLibraryNG.csproj.FileListAbsolute.txt
new file mode 100644
index 000000000..eac2f01dd
--- /dev/null
+++ b/SharedLibraryNG/obj/Debug/SharedLibraryNG.csproj.FileListAbsolute.txt
@@ -0,0 +1,5 @@
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\SharedLibraryNG\bin\Debug\SharedLibraryNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\SharedLibraryNG\bin\Debug\SharedLibraryNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\SharedLibraryNG\obj\Debug\SharedLibraryNG.csprojResolveAssemblyReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\SharedLibraryNG\obj\Debug\SharedLibraryNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\SharedLibraryNG\obj\Debug\SharedLibraryNG.pdb
diff --git a/SharedLibraryNG/obj/Debug/SharedLibraryNG.csprojResolveAssemblyReference.cache b/SharedLibraryNG/obj/Debug/SharedLibraryNG.csprojResolveAssemblyReference.cache
new file mode 100644
index 000000000..14bcd3f7c
Binary files /dev/null and b/SharedLibraryNG/obj/Debug/SharedLibraryNG.csprojResolveAssemblyReference.cache differ
diff --git a/SharedLibraryNG/obj/Debug/SharedLibraryNG.dll b/SharedLibraryNG/obj/Debug/SharedLibraryNG.dll
new file mode 100644
index 000000000..c34ec1bb1
Binary files /dev/null and b/SharedLibraryNG/obj/Debug/SharedLibraryNG.dll differ
diff --git a/SharedLibraryNG/obj/Debug/SharedLibraryNG.pdb b/SharedLibraryNG/obj/Debug/SharedLibraryNG.pdb
new file mode 100644
index 000000000..838e9e472
Binary files /dev/null and b/SharedLibraryNG/obj/Debug/SharedLibraryNG.pdb differ
diff --git a/TestProject/bin/Debug/ADTree.dll b/TestProject/bin/Debug/ADTree.dll
new file mode 100644
index 000000000..98e435b33
Binary files /dev/null and b/TestProject/bin/Debug/ADTree.dll differ
diff --git a/TestProject/bin/Debug/DiffieHellman.dll b/TestProject/bin/Debug/DiffieHellman.dll
new file mode 100644
index 000000000..aa3105110
Binary files /dev/null and b/TestProject/bin/Debug/DiffieHellman.dll differ
diff --git a/TestProject/bin/Debug/FilteredPropertyGrid.dll b/TestProject/bin/Debug/FilteredPropertyGrid.dll
new file mode 100644
index 000000000..4561e8a9b
Binary files /dev/null and b/TestProject/bin/Debug/FilteredPropertyGrid.dll differ
diff --git a/TestProject/bin/Debug/Help/CMDSwitches.htm b/TestProject/bin/Debug/Help/CMDSwitches.htm
new file mode 100644
index 000000000..842deea0b
--- /dev/null
+++ b/TestProject/bin/Debug/Help/CMDSwitches.htm
@@ -0,0 +1,28 @@
+
+
+
+ Command-Line Switches
+
+
+
+
+
+ The following is a list of command line switches supported by mRemote.
+
+ /cons :PathToConnectionsFile or /c :PathToConnectionsFile
+ Loads the connections file from the given path
+ /reset
+ Resets window position, panels and toolbars
+ /resetpos or /rp
+ Resets the window position
+ /resetpanels or /rpnl
+ Resets all panel's positions
+ Use this if you have troubles with panel layouts
+ /resettoolbar or /rtbr
+ Resets the positions of all toolbars
+ /noreconnect or /norc Temporary disables reconnect to previously opened sessions Use this if you have problems opening mRemote after you enabled the setting and
+ restarted mRemote
+
+
+
+
diff --git a/TestProject/bin/Debug/Help/Config.htm b/TestProject/bin/Debug/Help/Config.htm
new file mode 100644
index 000000000..ce9389855
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Config.htm
@@ -0,0 +1,13 @@
+
+
+
+ Config
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/TestProject/bin/Debug/Help/Configuration.htm b/TestProject/bin/Debug/Help/Configuration.htm
new file mode 100644
index 000000000..b7e0d1101
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Configuration.htm
@@ -0,0 +1,163 @@
+
+
+
+ Configuration
+
+
+
+
+
+ First start
+
+ Once you got mRemote installed and run it for the first time you should see a
+ screen like on the following screenshot.
+
+
+
+ The first thing that catches your attention will probably be the info box
+ popping up.
+ Don't freak out just yet, this is not a error message and it's totally ok to
+ show up on the first run.
+ It just tells you that the connections file could not be found at the default
+ location and that mRemote will create a new one for you at this location.
+ If you click anywhere else in the application the panel will hide itself again.
+ (Tip: You can also hit Escape to hide the Errors and Infos panel)
+
+
+
+ Now that we now about the Errors and Infos panel take a deep breath and just
+ stare at the gorgeous about screen for a few seconds. =)
+ No, seriously, to create your first connection continue reading.
+
+ Creating Connections
+
+ Right click the root item (the blue ball labeled "Connections") in the
+ Connections panel and select "Add Connection".
+
+
+
+ A new item shows up under the root item. You can give it a name now (or rename
+ it later). I just named mine "Test".
+
+
+
+ Now have a look at the Config panel in the bottom left, just under the
+ Connections panel.
+
+
+
+ As you may notice this is where you configure all the properties of connections
+ and folders.
+ There are a lot of values that can be set but for our first connection we will
+ keep things simple.
+
+ The most important things right now are that we tell the application which host
+ we want to connect to and which protocol we want to use.
+ In this example I will use a Windows 2003 server that has RDP (Remote Desktop
+ Protocol) enabled.
+ As RDP is the default protocol whenever you create a new connection I don't have
+ to change anything there.
+
+ The next thing I'll do is to fill the Hostname/IP field with the hostname I
+ want to connect to.
+
+
+
+ I'll also fill the Username and Password fields so I will be automatically
+ logged on to the server.
+
+
+
+ Ok, that's it, we are ready for our first connection test.
+
+ Opening and Closing Connections
+
+ There are multiple ways to open a connection in mRemote, but the easiest is to
+ just double-click the connection in the Connections panel.
+
+ If I do that now, a new panel named "General" with one tab inside named "Test"
+ will show up.
+
+
+
+ Alright, mRemote is now trying to connect to the specified host.
+
+ If it cannot connect you will see a message popping up like on the following
+ screenshot.
+
+
+
+ This for example means the hostname cannot be resolved.
+
+ Instead, if all goes well you should see the remote desktop.
+
+
+
+ If you do not want to log off from the remote machine but just close it you can
+ do this by simply double-clicking the tab labeled "test" or just close the whole
+ "General" panel by clicking the small "x" in the upper right corner.
+
+ Folders and Inheritance
+
+ Folders in mRemote cannot only be used to categorize connections but also to
+ apply properties to the underlying connections.
+
+ Example:
+ You have 10 Remote Desktop enabled servers in one domain and 15 in another
+ domain.
+ Normally you would spend a lot of time creating all those connections and
+ setting the individual properties like username, password, etc.
+ In mRemote there is an easier way. You just create two folders, one for domain A
+ and one for domain B and set all properties there.
+ Then create the Connections and let them inherit every property. The only
+ properties left to fill on Connection basis are the Connection's name and
+ hostname. Everything else will be inherited from the parent folder.
+
+ "Sounds cool, but how to do it?"
+ I'll show you how to do it!
+
+ First add a new folder.
+
+
+
+ Then give it a name and fill all the properties you need (just like you did with
+ the test Connection).
+
+
+
+
+
+ When you're done setting the values you can either just drag the test Connection
+ inside the folder or create a new one.
+
+
+
+ Right now nothing has changed and nothing will be inherited.
+ To enable inheritance switch to the inheritance view by clicking the dedicated
+ button.
+
+
+
+ The properties that show up now are almost the same as before, but you can only
+ select yes or no.
+
+
+
+ When no is selected the property will not be inherited, yes indicates an
+ inherited property.
+ For this test set "Inherit Everything" to Yes.
+
+ Now if you switch back to the properties view (the button left of the
+ inheritance button) you should see that not much is left of all those
+ properties.
+
+
+
+ Only the Name and Hostname/IP properties are left over, everything else will be
+ inherited from the parent folder.
+ Of course you can also only let some of the properties be inherited.
+
+ Just play around with this a bit and you'll get the hang of it.
+
+
+
diff --git a/TestProject/bin/Debug/Help/ConfigurationSQL.htm b/TestProject/bin/Debug/Help/ConfigurationSQL.htm
new file mode 100644
index 000000000..419ec236f
--- /dev/null
+++ b/TestProject/bin/Debug/Help/ConfigurationSQL.htm
@@ -0,0 +1,49 @@
+
+
+
+ SQL Configuration
+
+
+
+
+
+ Warning
+
+ The SQL feature is in an early beta stage and not intended for use in an
+ productive environment!
+ I recommend you to do a full backup of your connections and settings before
+ switching to SQL Server.
+
+ Steps to configure your SQL Server
+
+ Create a new Database called "mRemoteNG" on your SQL Server.
+ Run the SQL Script below on the newly created Database.
+ Give the users that you want to grant access to the mRemote Connections Database
+ Read/Write permissions on the Database.
+
+
+ Steps to configure mRemoteNG for SQL
+
+ Start mRemoteNG if it's not already running.
+ Go to Options - Connections.
+ Check the box that says "Use SQL Server to load & save connections".
+ Fill in your SQL Server hostname or ip address.
+ If you do not use your Windows logon info to authenticate against the SQL Server
+ fill in the correct Username and Password.
+ Click OK to apply the changes. The main window title should now change to
+ "mRemoteNG | SQL Server".
+ Now click on File - Save to update the tables on your SQL Server with the data
+ from the loaded connections xml file. (Do not click File - New, this doesn't
+ work yet)
+ You should now be able to do everything you were able to do with the XML storage
+ plus see the changes live on another mRemoteNG instance that is connected to the
+ same Database.
+
+
+
+ SQL Table creation Script
+
+ Click here to view the SQL script
+
+
+
diff --git a/TestProject/bin/Debug/Help/Connection.htm b/TestProject/bin/Debug/Help/Connection.htm
new file mode 100644
index 000000000..22e2784eb
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Connection.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connection
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/Connections.htm b/TestProject/bin/Debug/Help/Connections.htm
new file mode 100644
index 000000000..6c2e919a8
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Connections.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connections
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/TestProject/bin/Debug/Help/ErrorsAndInfos.htm b/TestProject/bin/Debug/Help/ErrorsAndInfos.htm
new file mode 100644
index 000000000..8659fe062
--- /dev/null
+++ b/TestProject/bin/Debug/Help/ErrorsAndInfos.htm
@@ -0,0 +1,13 @@
+
+
+
+ Errors and Infos
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/ExternalTools.htm b/TestProject/bin/Debug/Help/ExternalTools.htm
new file mode 100644
index 000000000..5f9a91af5
--- /dev/null
+++ b/TestProject/bin/Debug/Help/ExternalTools.htm
@@ -0,0 +1,245 @@
+
+
+
+ External Tools
+
+
+
+
+
+
+ Introduction to External Tools
+
+ External Tools can help you get things done that can't be done in
+ mRemoteNG.
+ You can for example start a command prompt or launch your favorite FTP tool from
+ within mRemoteNG.
+ This wouldn't make much sense by itself because you can already launch your
+ applications by using the Windows Start Menu, Quick Launch or whatever you
+ prefer to use
+ to start your apps.
+
+ But there's more!
+
+ In mRemoteNG, you can launch applications and tell them what to do with the use of
+ arguments (parameters) and variables of the currently selected Connection.
+ You can, for example, select your home router's SSH Connection entry and do a
+ traceroute (tracert) on that host.
+ This is much quicker and more powerful than opening the console and typing
+ "tracert yourhost".
+
+ The external tools configuration is stored in %APPDATA%\mRemoteNG\extApps.xml
+
+
+ Variables
+
+
+
+ Variables and arguments can be used to tell the external tool what to do.
+
+ This is the list of variables supported by mRemoteNG:
+
+
+
+ %NAME%
+ %HOSTNAME%
+ %PORT%
+ %USERNAME%
+ %PASSWORD%
+ %DOMAIN%
+ %DESCRIPTION%
+ %MACADDRESS%
+ %USERFIELD%
+
+
+
+ Variables always refer to the currently selected connection. Variable names are case-insensitive.
+ Variables can be used in both the Filename and Arguments fields.
+
+
+ mRemoteNG will also expand environment variables such as %PATH% and
+ %USERPROFILE%.
+ If you need to use an environment variable with the same name as an mRemoteNG
+ variable, use \% instead of %. The most common use of this is for the USERNAME
+ environment variable. %USERNAME% will be expanded to the username set in the
+ currently selected connection. \%USERNAME\% will be expanded to the value set in
+ the USERNAME environment variable.
+
+ If you need to send a variable name to a program without mRemoteNG expanding it,
+ use ^% instead of %. mRemoteNG will remove the caret (^) and leave the rest
+ unchanged. For example, ^%USERNAME^% will be sent to the program as %USERNAME%
+ and will not be expanded.
+
+
+ Special Character Escaping
+
+
+
+ Expanded variables will be escaped using the rules below. There are two levels
+ of escaping that are done. The first is escaping for standard argument splitting
+ (C/C++ argv, CommandLineToArgvW, etc). The second is escaping shell
+ metacharacters for ShellExecute.
+
+ Argument splitting escaping:
+
+
+ Each quotation mark will be escaped by a backslash.
+ One or more backslashes (\) followed by a quotation mark ("):
+
+ Each backslash will be escaped by another backslash.
+ The quotation mark will be escaped by a backslash.
+ If the connection's user field contains
+ "This" is a \"test\".
+ Then %USERFIELD% is replaced with
+ \"This\" is a \\\"test\\\".
+
+
+ A variable name followed by a quotation mark (for example, %USERFIELD%") with
+ a value ending in one or more backslashes:
+
+ Each backslash will be escaped by another backslash.
+ Example:
+ If the connection's user field contains c:\Example\
+ Then "%USERFIELD%" is replaced with "c:\Example\\"
+
+
+
+
+
+ To disable
+ argument splitting escaping for a variable, precede its name with a minus (-)
+ sign. For example, %-USERFIELD%.
+
+ Shell metacharacter escaping:
+
+
+ The shell metacharacters are ( ) % ! ^ " < > & |
+ Each shell metacharacter will be escaped by a caret (^).
+
+
+ To disable both argument splitting and shell metacharacter escaping for a
+ variable, precede its name with an exclamation point (!). For example,
+ %!USERFIELD%. This is not recommended and may cause unexpected results.
+
+ Only variables that have been expanded will be escaped. It is up to you to
+ escape the rest of the arguments.
+
+
+ Variable Examples
+
+
+ Arguments User Field Result
+
+ %USERFIELD% "Example" Text
+ \^"Example\^" Text
+
+
+ %-USERFIELD% "Example" Text
+ ^"Example^" Text
+
+
+ %!USERFIELD% "Example" Text
+ "Example" Text
+
+
+ ^%USERFIELD^% "Example" Text
+ %USERFIELD%
+
+
+ ^^%USERFIELD^^% "Example" Text
+ ^%USERFIELD^%
+
+
+ -d "%USERFIELD%" c:\Example\ -d "c:\Example\\"
+
+
+ -d "%-USERFIELD%" c:\Example\ -d "c:\Example\"
+
+
+ -d "%USERFIELD%" Left
+ & Right -d "Left ^& Right"
+
+
+ -d "%!USERFIELD%" Left
+ & Right -d "Left & Right"
+
+
+ %WINDIR% N/A c:\Windows\
+
+
+ \%WINDIR\% N/A c:\Windows\
+
+
+ \^%WINDIR\^% N/A
+ \%WINDIR\%
+
+
+ \\%WINDIR\\% N/A \\%WINDIR\\%
+
+
+
+
+ Example
+
+ First of all, start the external tools editor. To do this, click Tools in the main menu and
+ select External Tools.
+ You will see a screen like on the following screenshot.
+
+
+
+ The fields below the list are greyed out because you haven't created an external tool
+ entry yet.
+ To create one, right click the blank area in the list and select Add, as in the
+ screenshot below.
+
+
+
+ This is what you'll get:
+
+
+
+ So the three fields are now available and need to be filled.
+ The Display Name is simply the name you will see when you want to launch that
+ tool, so give it a descriptive name.
+ I named mine Traceroute as I will create a external tool that will start the
+ tracert command in the console.
+
+
+
+ Ok, the next thing we'll need is a filename. This is the program that we
+ want to be executed.
+ I simply type in cmd for a Windows cmd console.
+
+
+
+ Now the fun part comes in—the arguments.
+ The Windows cmd has a command line argument that tells the console to launch the
+ command followed by that argument and stay open.
+ It's /K. (There's also /C, this is useful when you want the console to close
+ after the command was executed)
+ In this case, I'll use /K as I want to look through the result when the command
+ completes.
+ After that, I just type tracert %HostName%. This tells the console to do a
+ traceroute on the hostname of the currently selected Connection.
+
+
+
+ Alright! That's all we'll need.
+ Now right click one of you connections, click Tools, External Tools
+ and select Traceroute.
+
+
+
+ Voil! A console window will popup and execute your tracert command.
+
+
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/ImportFromAD.htm b/TestProject/bin/Debug/Help/ImportFromAD.htm
new file mode 100644
index 000000000..fb9585b99
--- /dev/null
+++ b/TestProject/bin/Debug/Help/ImportFromAD.htm
@@ -0,0 +1,13 @@
+
+
+
+ Import from Active Directory
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/Index.htm b/TestProject/bin/Debug/Help/Index.htm
new file mode 100644
index 000000000..388465618
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Index.htm
@@ -0,0 +1,38 @@
+
+
+
+mRemote Help
+
+
+
+
+ Introduction
+ Getting started:
+
+ User Interface:
+
+ Quick Reference
+
+
diff --git a/TestProject/bin/Debug/Help/Installation.htm b/TestProject/bin/Debug/Help/Installation.htm
new file mode 100644
index 000000000..f9cd6feaa
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Installation.htm
@@ -0,0 +1,48 @@
+
+
+
+ Installation
+
+
+
+
+
+ Downloads are provided in four different packages, the setup package, binary package,
+ portable package and
+ the source package. They are described below.
+
+ Setup Package
+
+ The setup package is the compiled version of mRemote which comes in the form of
+ a NSIS generated setup.
+ The common way to get mRemote up and running
+
+ Bin Package
+
+ The binary package is a zip package and contains the same files as the setup
+ package but has no automated installer.
+
+ Portable Package
+
+ The portable package consists of the same files as the bin package but contains
+ an modified version of the executable which stores and loads all your settings
+ from files in the application's directory.
+ This package can be used to run mRemote from an USB stick an preserve your
+ configuration wherever you go.
+
+ Source Package
+
+
+ The source package is a zip package and contains the source code in form of a
+ Visual Studio 2008 solution.
+
+
+
+ Updating and Uninstalling
+
+ mRemote can be updated without uninstalling it before.
+ There are no user preferences stored in the application directory (except if you
+ put them there), so uninstalling doesn't wipe your settings.
+
+
+
diff --git a/TestProject/bin/Debug/Help/Introduction.htm b/TestProject/bin/Debug/Help/Introduction.htm
new file mode 100644
index 000000000..8fa9f8fe2
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Introduction.htm
@@ -0,0 +1,45 @@
+
+
+
+ Introduction
+
+
+
+
+
+ Introduction
+
+ mRemote is a multi-protocol remote connections manager.
+ As of Version 1.00 it supports the RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S protocols.
+ The main goal is to minimize window clutter and to provide a easy gui for managing all your remote connections.
+
+
+ Features
+
+ Free and Open Source, released under the GPL
+ Panels and tabs allow to group certain connections together, dock them to any side of the window or completely undock them and move them to another screen for example
+ Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)
+ Easy to organize and maintain list of connections
+ Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info
+ Support for importing connections from Active Directory
+ Allows creating nested containers (folders) to categorize connections
+ "Quick Connect" feature to quickly open a connection without creating an entry
+ "Quick Search" feature to quickly find a connection while typing
+ Support for SCP/SFTP (SSH) file transfers
+ Assign icons to connections to easily identify purpose
+ Screenshot manager allows to collect multiple screenshots and save them all together or copy them to the clipboard
+ View remote session info and log off sessions (RDP)
+ Portable (with the use of command line switches)
+ "Auto-Update" feature
+ Show description tooltips when hoovering over connections
+ System tray icon with connection menu
+ Fullscreen (Kiosk) mode
+ Assign global credentials to use when no information is provided on connection basis
+ Host Up/Down (Ping) feature shows if the selected host answers to a ping
+
+ License
+
+ The application is released under the GPL (V2)
+ Binary and source code packages are available for download.
+
+
diff --git a/TestProject/bin/Debug/Help/Main.css b/TestProject/bin/Debug/Help/Main.css
new file mode 100644
index 000000000..b2b8afd18
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Main.css
@@ -0,0 +1,148 @@
+/* COMMON STUFF */
+
+body
+{
+ background-color: #FFFFFF;
+ margin-left: 10px;
+ margin-top: 10px;
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+
+body, td, th
+{
+ font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #333333;
+}
+
+img
+{
+ border: none;
+}
+
+ul
+{
+ list-style: square;
+}
+
+
+
+/* HEADINGS */
+
+.heading1
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 16px;
+ color: Black;
+}
+.heading1 a:link
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:visited
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:hover
+{
+ color: Black;
+ text-decoration: none;
+ border-bottom: 5px solid #e9e9e9;
+}
+
+.heading2
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 15px;
+ color: Black;
+}
+
+.heading3
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 14px;
+ color: Black;
+}
+
+.heading4
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: Black;
+}
+
+.heading5
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ color: Black;
+}
+
+
+
+
+/* LINKS */
+
+a:link
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:visited
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:hover
+{
+ color: Black;
+ text-decoration: underline;
+}
+
+
+
+
+/* TABLES */
+
+table {
+ border-collapse: collapse;
+}
+
+table, th, td {
+ border: 1px solid black;
+}
+
+th,td {
+ padding: 5px;
+}
+
+th {
+ background-color: lightgrey;
+ text-align: left;
+}
+
+
+/* MISC STYLES */
+
+.Code
+{
+ padding-right: 5px;
+ padding-left: 5px;
+ color: #000000;
+ font-family: 'Courier New' , Monospace;
+ background-color: #C1C1C1;
+}
+
+.monospace {
+ white-space: nowrap;
+ font-family: 'Courier New', monospace;
+}
+
+.nowrap {
+ white-space: nowrap
+}
diff --git a/TestProject/bin/Debug/Help/MainMenu.htm b/TestProject/bin/Debug/Help/MainMenu.htm
new file mode 100644
index 000000000..1b8ac409a
--- /dev/null
+++ b/TestProject/bin/Debug/Help/MainMenu.htm
@@ -0,0 +1,13 @@
+
+
+
+ Main Menu
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/TestProject/bin/Debug/Help/Options.htm b/TestProject/bin/Debug/Help/Options.htm
new file mode 100644
index 000000000..90535aa16
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Options.htm
@@ -0,0 +1,13 @@
+
+
+
+ Options
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/PortScan.htm b/TestProject/bin/Debug/Help/PortScan.htm
new file mode 100644
index 000000000..5d96e08f4
--- /dev/null
+++ b/TestProject/bin/Debug/Help/PortScan.htm
@@ -0,0 +1,13 @@
+
+
+
+ Port Scan
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/TestProject/bin/Debug/Help/Prerequisites.htm b/TestProject/bin/Debug/Help/Prerequisites.htm
new file mode 100644
index 000000000..68e24ee3a
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Prerequisites.htm
@@ -0,0 +1,35 @@
+
+
+
+ Prerequisites
+
+
+
+
+
+ Supported Operating Systems:
+
+
+ Prerequisites:
+
+
+ ATTENTION!
+ mRemote was only tested under 32bit environments, so
+ 64bit systems are
+ unsupported but may run mRemote just as usual.
+
+
+
diff --git a/TestProject/bin/Debug/Help/QuickConnect.htm b/TestProject/bin/Debug/Help/QuickConnect.htm
new file mode 100644
index 000000000..943e82e9a
--- /dev/null
+++ b/TestProject/bin/Debug/Help/QuickConnect.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Connect
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/QuickReference.htm b/TestProject/bin/Debug/Help/QuickReference.htm
new file mode 100644
index 000000000..c088ed03a
--- /dev/null
+++ b/TestProject/bin/Debug/Help/QuickReference.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Reference
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/SQLScript.txt b/TestProject/bin/Debug/Help/SQLScript.txt
new file mode 100644
index 000000000..a70599561
--- /dev/null
+++ b/TestProject/bin/Debug/Help/SQLScript.txt
@@ -0,0 +1,141 @@
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblCons]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblRoot]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblUpdate]
+GO
+
+CREATE TABLE [dbo].[tblCons] (
+ [ID] [int] IDENTITY (1001, 1) NOT NULL ,
+ [ConstantID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PositionID] [int] NOT NULL ,
+ [ParentID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [LastChange] [datetime] NOT NULL ,
+ [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Type] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Expanded] [bit] NOT NULL ,
+ [Description] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Icon] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Panel] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Username] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [DomainName] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Password] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Hostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Protocol] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [PuttySession] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Port] [int] NOT NULL ,
+ [ConnectToConsole] [bit] NOT NULL ,
+ [UseCredSsp] [bit] NOT NULL ,
+ [RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ICAEncryptionStrength] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Colors] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Resolution] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [DisplayWallpaper] [bit] NOT NULL ,
+ [DisplayThemes] [bit] NOT NULL ,
+ [EnableFontSmoothing] [bit] NOT NULL ,
+ [EnableDesktopComposition] [bit] NOT NULL ,
+ [CacheBitmaps] [bit] NOT NULL ,
+ [RedirectDiskDrives] [bit] NOT NULL ,
+ [RedirectPorts] [bit] NOT NULL ,
+ [RedirectPrinters] [bit] NOT NULL ,
+ [RedirectSmartCards] [bit] NOT NULL ,
+ [RedirectSound] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RedirectKeys] [bit] NOT NULL ,
+ [Connected] [bit] NOT NULL ,
+ [PreExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PostExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCCompression] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCEncoding] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCAuthMode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyType] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyIP] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPort] [int] NULL ,
+ [VNCProxyUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCColors] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCSmartSizeMode] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCViewOnly] [bit] NOT NULL ,
+ [RDGatewayUsageMethod] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayHostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayUseConnectionCredentials] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayDomain] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [InheritCacheBitmaps] [bit] NOT NULL ,
+ [InheritColors] [bit] NOT NULL ,
+ [InheritDescription] [bit] NOT NULL ,
+ [InheritDisplayThemes] [bit] NOT NULL ,
+ [InheritDisplayWallpaper] [bit] NOT NULL ,
+ [InheritEnableFontSmoothing] [bit] NOT NULL ,
+ [InheritEnableDesktopComposition] [bit] NOT NULL ,
+ [InheritDomain] [bit] NOT NULL ,
+ [InheritIcon] [bit] NOT NULL ,
+ [InheritPanel] [bit] NOT NULL ,
+ [InheritPassword] [bit] NOT NULL ,
+ [InheritPort] [bit] NOT NULL ,
+ [InheritProtocol] [bit] NOT NULL ,
+ [InheritPuttySession] [bit] NOT NULL ,
+ [InheritRedirectDiskDrives] [bit] NOT NULL ,
+ [InheritRedirectKeys] [bit] NOT NULL ,
+ [InheritRedirectPorts] [bit] NOT NULL ,
+ [InheritRedirectPrinters] [bit] NOT NULL ,
+ [InheritRedirectSmartCards] [bit] NOT NULL ,
+ [InheritRedirectSound] [bit] NOT NULL ,
+ [InheritResolution] [bit] NOT NULL ,
+ [InheritUseConsoleSession] [bit] NOT NULL ,
+ [InheritUseCredSsp] [bit] NOT NULL ,
+ [InheritRenderingEngine] [bit] NOT NULL ,
+ [InheritICAEncryptionStrength] [bit] NOT NULL ,
+ [InheritRDPAuthenticationLevel] [bit] NOT NULL ,
+ [InheritUsername] [bit] NOT NULL ,
+ [InheritPreExtApp] [bit] NOT NULL ,
+ [InheritPostExtApp] [bit] NOT NULL ,
+ [InheritMacAddress] [bit] NOT NULL ,
+ [InheritUserField] [bit] NOT NULL ,
+ [InheritExtApp] [bit] NOT NULL ,
+ [InheritVNCCompression] [bit] NOT NULL,
+ [InheritVNCEncoding] [bit] NOT NULL ,
+ [InheritVNCAuthMode] [bit] NOT NULL ,
+ [InheritVNCProxyType] [bit] NOT NULL ,
+ [InheritVNCProxyIP] [bit] NOT NULL ,
+ [InheritVNCProxyPort] [bit] NOT NULL ,
+ [InheritVNCProxyUsername] [bit] NOT NULL ,
+ [InheritVNCProxyPassword] [bit] NOT NULL ,
+ [InheritVNCColors] [bit] NOT NULL ,
+ [InheritVNCSmartSizeMode] [bit] NOT NULL ,
+ [InheritVNCViewOnly] [bit] NOT NULL ,
+ [InheritRDGatewayUsageMethod] [bit] NOT NULL ,
+ [InheritRDGatewayHostname] [bit] NOT NULL ,
+ [InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL ,
+ [InheritRDGatewayUsername] [bit] NOT NULL ,
+ [InheritRDGatewayPassword] [bit] NOT NULL ,
+ [InheritRDGatewayDomain] [bit] NOT NULL ,
+ [LoadBalanceInfo] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [AutomaticResize] [bit] NOT NULL DEFAULT 1 ,
+ [InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 ,
+ [InheritAutomaticResize] [bit] NOT NULL DEFAULT 0
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblRoot] (
+ [Name] [varchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Export] [bit] NOT NULL ,
+ [Protected] [varchar] (4048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [ConfVersion] [float] NOT NULL
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblUpdate] (
+ [LastUpdate] [datetime] NULL
+) ON [PRIMARY]
+GO
+
diff --git a/TestProject/bin/Debug/Help/SSHFileTransfer.htm b/TestProject/bin/Debug/Help/SSHFileTransfer.htm
new file mode 100644
index 000000000..11094cf78
--- /dev/null
+++ b/TestProject/bin/Debug/Help/SSHFileTransfer.htm
@@ -0,0 +1,13 @@
+
+
+
+ SSH File Transfer
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/SaveAsExport.htm b/TestProject/bin/Debug/Help/SaveAsExport.htm
new file mode 100644
index 000000000..6f0518181
--- /dev/null
+++ b/TestProject/bin/Debug/Help/SaveAsExport.htm
@@ -0,0 +1,13 @@
+
+
+
+ Save As / Export
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/ScreenshotManager.htm b/TestProject/bin/Debug/Help/ScreenshotManager.htm
new file mode 100644
index 000000000..9687ba0f2
--- /dev/null
+++ b/TestProject/bin/Debug/Help/ScreenshotManager.htm
@@ -0,0 +1,13 @@
+
+
+
+ Screenshot Manager
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/01.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/01.png
new file mode 100644
index 000000000..af7434b8e
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/01.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/02.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/02.png
new file mode 100644
index 000000000..f859e5c7f
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/02.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/03.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/03.png
new file mode 100644
index 000000000..ca1c8ea5b
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/03.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/04.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/04.png
new file mode 100644
index 000000000..fb3096ad7
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/04.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/05.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/05.png
new file mode 100644
index 000000000..54d099427
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/05.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/06.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/06.png
new file mode 100644
index 000000000..9b50fcb8d
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/06.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/07.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/07.png
new file mode 100644
index 000000000..fed9440db
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/07.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/08.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/08.png
new file mode 100644
index 000000000..cf6eac257
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/08.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/09.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/09.png
new file mode 100644
index 000000000..a60a92e8f
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/09.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/10.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/10.png
new file mode 100644
index 000000000..2d064c1e7
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/10.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/11.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/11.png
new file mode 100644
index 000000000..daa443650
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/11.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/12.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/12.png
new file mode 100644
index 000000000..7bf9c39d2
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/12.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/13.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/13.png
new file mode 100644
index 000000000..9f5cc5a93
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/13.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/14.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/14.png
new file mode 100644
index 000000000..d7549110f
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/14.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/15.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/15.png
new file mode 100644
index 000000000..17ada9012
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/15.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/16.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/16.png
new file mode 100644
index 000000000..6c0c2d686
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/16.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Configuration/17.png b/TestProject/bin/Debug/Help/Screenshots/Configuration/17.png
new file mode 100644
index 000000000..5b6d4f23b
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Configuration/17.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/01.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/01.png
new file mode 100644
index 000000000..2cbd401e6
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/01.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/02.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/02.png
new file mode 100644
index 000000000..2f25956d5
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/02.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/03.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/03.png
new file mode 100644
index 000000000..3a7a8ed2c
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/03.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/04.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/04.png
new file mode 100644
index 000000000..e8ac720dd
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/04.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/05.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/05.png
new file mode 100644
index 000000000..9e719ca30
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/05.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/06.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/06.png
new file mode 100644
index 000000000..a5e90d290
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/06.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/07.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/07.png
new file mode 100644
index 000000000..52f96e91f
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/07.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/External Tools/08.png b/TestProject/bin/Debug/Help/Screenshots/External Tools/08.png
new file mode 100644
index 000000000..7b90f49da
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/External Tools/08.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Main Menu/File.png b/TestProject/bin/Debug/Help/Screenshots/Main Menu/File.png
new file mode 100644
index 000000000..3f2038760
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Main Menu/File.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Main Menu/Info.png b/TestProject/bin/Debug/Help/Screenshots/Main Menu/Info.png
new file mode 100644
index 000000000..b7efeb861
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Main Menu/Info.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Main Menu/QuickConnect.png b/TestProject/bin/Debug/Help/Screenshots/Main Menu/QuickConnect.png
new file mode 100644
index 000000000..7ed0dbe9b
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Main Menu/QuickConnect.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Main Menu/Tools.png b/TestProject/bin/Debug/Help/Screenshots/Main Menu/Tools.png
new file mode 100644
index 000000000..70b7be4f5
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Main Menu/Tools.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Main Menu/View.png b/TestProject/bin/Debug/Help/Screenshots/Main Menu/View.png
new file mode 100644
index 000000000..3efc7b2ef
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Main Menu/View.png differ
diff --git a/TestProject/bin/Debug/Help/Screenshots/Reference/01.png b/TestProject/bin/Debug/Help/Screenshots/Reference/01.png
new file mode 100644
index 000000000..431af8282
Binary files /dev/null and b/TestProject/bin/Debug/Help/Screenshots/Reference/01.png differ
diff --git a/TestProject/bin/Debug/Help/Sessions.htm b/TestProject/bin/Debug/Help/Sessions.htm
new file mode 100644
index 000000000..3897f7bee
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Sessions.htm
@@ -0,0 +1,13 @@
+
+
+
+ Sessions
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/Help/Update.htm b/TestProject/bin/Debug/Help/Update.htm
new file mode 100644
index 000000000..339d3a563
--- /dev/null
+++ b/TestProject/bin/Debug/Help/Update.htm
@@ -0,0 +1,13 @@
+
+
+
+ Update
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/IPTextBox.dll b/TestProject/bin/Debug/IPTextBox.dll
new file mode 100644
index 000000000..e340f4856
Binary files /dev/null and b/TestProject/bin/Debug/IPTextBox.dll differ
diff --git a/TestProject/bin/Debug/Icons/Anti Virus.ico b/TestProject/bin/Debug/Icons/Anti Virus.ico
new file mode 100644
index 000000000..815d01c4c
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Anti Virus.ico differ
diff --git a/TestProject/bin/Debug/Icons/Backup.ico b/TestProject/bin/Debug/Icons/Backup.ico
new file mode 100644
index 000000000..3e9165148
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Backup.ico differ
diff --git a/TestProject/bin/Debug/Icons/Build Server.ico b/TestProject/bin/Debug/Icons/Build Server.ico
new file mode 100644
index 000000000..b664fa74e
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Build Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/Database.ico b/TestProject/bin/Debug/Icons/Database.ico
new file mode 100644
index 000000000..0926231a4
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Database.ico differ
diff --git a/TestProject/bin/Debug/Icons/Domain Controller.ico b/TestProject/bin/Debug/Icons/Domain Controller.ico
new file mode 100644
index 000000000..0582f3cac
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Domain Controller.ico differ
diff --git a/TestProject/bin/Debug/Icons/ESX.ico b/TestProject/bin/Debug/Icons/ESX.ico
new file mode 100644
index 000000000..54eeb2a4d
Binary files /dev/null and b/TestProject/bin/Debug/Icons/ESX.ico differ
diff --git a/TestProject/bin/Debug/Icons/Fax.ico b/TestProject/bin/Debug/Icons/Fax.ico
new file mode 100644
index 000000000..3bdc790ab
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Fax.ico differ
diff --git a/TestProject/bin/Debug/Icons/File Server.ico b/TestProject/bin/Debug/Icons/File Server.ico
new file mode 100644
index 000000000..67676b7d7
Binary files /dev/null and b/TestProject/bin/Debug/Icons/File Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/Finance.ico b/TestProject/bin/Debug/Icons/Finance.ico
new file mode 100644
index 000000000..ab813dca8
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Finance.ico differ
diff --git a/TestProject/bin/Debug/Icons/Firewall.ico b/TestProject/bin/Debug/Icons/Firewall.ico
new file mode 100644
index 000000000..2343ae6a6
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Firewall.ico differ
diff --git a/TestProject/bin/Debug/Icons/Linux.ico b/TestProject/bin/Debug/Icons/Linux.ico
new file mode 100644
index 000000000..cb8f13a90
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Linux.ico differ
diff --git a/TestProject/bin/Debug/Icons/Log.ico b/TestProject/bin/Debug/Icons/Log.ico
new file mode 100644
index 000000000..789653ef1
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Log.ico differ
diff --git a/TestProject/bin/Debug/Icons/Mail Server.ico b/TestProject/bin/Debug/Icons/Mail Server.ico
new file mode 100644
index 000000000..9f0d18069
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Mail Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/PuTTY.ico b/TestProject/bin/Debug/Icons/PuTTY.ico
new file mode 100644
index 000000000..f7a1840a8
Binary files /dev/null and b/TestProject/bin/Debug/Icons/PuTTY.ico differ
diff --git a/TestProject/bin/Debug/Icons/Remote Desktop.ico b/TestProject/bin/Debug/Icons/Remote Desktop.ico
new file mode 100644
index 000000000..2ac9c2123
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Remote Desktop.ico differ
diff --git a/TestProject/bin/Debug/Icons/Router.ico b/TestProject/bin/Debug/Icons/Router.ico
new file mode 100644
index 000000000..b1cd8e60c
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Router.ico differ
diff --git a/TestProject/bin/Debug/Icons/SSH.ico b/TestProject/bin/Debug/Icons/SSH.ico
new file mode 100644
index 000000000..12b5b5809
Binary files /dev/null and b/TestProject/bin/Debug/Icons/SSH.ico differ
diff --git a/TestProject/bin/Debug/Icons/SharePoint.ico b/TestProject/bin/Debug/Icons/SharePoint.ico
new file mode 100644
index 000000000..5c420c311
Binary files /dev/null and b/TestProject/bin/Debug/Icons/SharePoint.ico differ
diff --git a/TestProject/bin/Debug/Icons/Switch.ico b/TestProject/bin/Debug/Icons/Switch.ico
new file mode 100644
index 000000000..acb7482ad
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Switch.ico differ
diff --git a/TestProject/bin/Debug/Icons/Tel.ico b/TestProject/bin/Debug/Icons/Tel.ico
new file mode 100644
index 000000000..b4b401fc0
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Tel.ico differ
diff --git a/TestProject/bin/Debug/Icons/Telnet.ico b/TestProject/bin/Debug/Icons/Telnet.ico
new file mode 100644
index 000000000..ebe0c036a
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Telnet.ico differ
diff --git a/TestProject/bin/Debug/Icons/Terminal Server.ico b/TestProject/bin/Debug/Icons/Terminal Server.ico
new file mode 100644
index 000000000..c19c6ba67
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Terminal Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/Test Server.ico b/TestProject/bin/Debug/Icons/Test Server.ico
new file mode 100644
index 000000000..6159d9f8c
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Test Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/Virtual Machine.ico b/TestProject/bin/Debug/Icons/Virtual Machine.ico
new file mode 100644
index 000000000..00d805f8e
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Virtual Machine.ico differ
diff --git a/TestProject/bin/Debug/Icons/Web Server.ico b/TestProject/bin/Debug/Icons/Web Server.ico
new file mode 100644
index 000000000..d2aa024d7
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Web Server.ico differ
diff --git a/TestProject/bin/Debug/Icons/WiFi.ico b/TestProject/bin/Debug/Icons/WiFi.ico
new file mode 100644
index 000000000..860757459
Binary files /dev/null and b/TestProject/bin/Debug/Icons/WiFi.ico differ
diff --git a/TestProject/bin/Debug/Icons/Windows.ico b/TestProject/bin/Debug/Icons/Windows.ico
new file mode 100644
index 000000000..3a9752bad
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Windows.ico differ
diff --git a/TestProject/bin/Debug/Icons/Workstation.ico b/TestProject/bin/Debug/Icons/Workstation.ico
new file mode 100644
index 000000000..95cbf2321
Binary files /dev/null and b/TestProject/bin/Debug/Icons/Workstation.ico differ
diff --git a/TestProject/bin/Debug/Icons/mRemote.ico b/TestProject/bin/Debug/Icons/mRemote.ico
new file mode 100644
index 000000000..02b38ac0b
Binary files /dev/null and b/TestProject/bin/Debug/Icons/mRemote.ico differ
diff --git a/TestProject/bin/Debug/Icons/mRemoteNG.ico b/TestProject/bin/Debug/Icons/mRemoteNG.ico
new file mode 100644
index 000000000..08c1072aa
Binary files /dev/null and b/TestProject/bin/Debug/Icons/mRemoteNG.ico differ
diff --git a/TestProject/bin/Debug/MagicLibrary.dll b/TestProject/bin/Debug/MagicLibrary.dll
new file mode 100644
index 000000000..24cfa5d0a
Binary files /dev/null and b/TestProject/bin/Debug/MagicLibrary.dll differ
diff --git a/TestProject/bin/Debug/MiniGeckoBrowser.dll b/TestProject/bin/Debug/MiniGeckoBrowser.dll
new file mode 100644
index 000000000..901b73cfc
Binary files /dev/null and b/TestProject/bin/Debug/MiniGeckoBrowser.dll differ
diff --git a/TestProject/bin/Debug/MiniTabControl.dll b/TestProject/bin/Debug/MiniTabControl.dll
new file mode 100644
index 000000000..04bb12dd7
Binary files /dev/null and b/TestProject/bin/Debug/MiniTabControl.dll differ
diff --git a/TestProject/bin/Debug/Org.Mentalis.Security.dll b/TestProject/bin/Debug/Org.Mentalis.Security.dll
new file mode 100644
index 000000000..bac39dd9c
Binary files /dev/null and b/TestProject/bin/Debug/Org.Mentalis.Security.dll differ
diff --git a/TestProject/bin/Debug/PSTaskDialog.dll b/TestProject/bin/Debug/PSTaskDialog.dll
new file mode 100644
index 000000000..7d74bce32
Binary files /dev/null and b/TestProject/bin/Debug/PSTaskDialog.dll differ
diff --git a/TestProject/bin/Debug/SharedLibraryNG.dll b/TestProject/bin/Debug/SharedLibraryNG.dll
new file mode 100644
index 000000000..c34ec1bb1
Binary files /dev/null and b/TestProject/bin/Debug/SharedLibraryNG.dll differ
diff --git a/TestProject/bin/Debug/SharedLibraryNG.pdb b/TestProject/bin/Debug/SharedLibraryNG.pdb
new file mode 100644
index 000000000..838e9e472
Binary files /dev/null and b/TestProject/bin/Debug/SharedLibraryNG.pdb differ
diff --git a/TestProject/bin/Debug/Skybound.Gecko.dll b/TestProject/bin/Debug/Skybound.Gecko.dll
new file mode 100644
index 000000000..19abc441e
Binary files /dev/null and b/TestProject/bin/Debug/Skybound.Gecko.dll differ
diff --git a/TestProject/bin/Debug/Tamir.SharpSSH.dll b/TestProject/bin/Debug/Tamir.SharpSSH.dll
new file mode 100644
index 000000000..9d217c26f
Binary files /dev/null and b/TestProject/bin/Debug/Tamir.SharpSSH.dll differ
diff --git a/TestProject/bin/Debug/TestProject.dll b/TestProject/bin/Debug/TestProject.dll
new file mode 100644
index 000000000..46caa2180
Binary files /dev/null and b/TestProject/bin/Debug/TestProject.dll differ
diff --git a/TestProject/bin/Debug/TestProject.pdb b/TestProject/bin/Debug/TestProject.pdb
new file mode 100644
index 000000000..b52757fa5
Binary files /dev/null and b/TestProject/bin/Debug/TestProject.pdb differ
diff --git a/TestProject/bin/Debug/TestProject.xml b/TestProject/bin/Debug/TestProject.xml
new file mode 100644
index 000000000..5dfeb1f32
--- /dev/null
+++ b/TestProject/bin/Debug/TestProject.xml
@@ -0,0 +1,25 @@
+
+
+
+
+TestProject
+
+
+
+
+
+Gets or sets the test context which provides
+information about and functionality for the current test run.
+
+
+
+A test for ParseArguments
+
+
+
+This is a test class for ExternalToolTest and is intended
+to contain all ExternalToolTest Unit Tests
+
+
+
+
\ No newline at end of file
diff --git a/TestProject/bin/Debug/VncSharpNG.dll b/TestProject/bin/Debug/VncSharpNG.dll
new file mode 100644
index 000000000..f9c9dc1d1
Binary files /dev/null and b/TestProject/bin/Debug/VncSharpNG.dll differ
diff --git a/TestProject/bin/Debug/VncSharpNG.pdb b/TestProject/bin/Debug/VncSharpNG.pdb
new file mode 100644
index 000000000..15ee70043
Binary files /dev/null and b/TestProject/bin/Debug/VncSharpNG.pdb differ
diff --git a/TestProject/bin/Debug/WeifenLuo.WinFormsUI.Docking.dll b/TestProject/bin/Debug/WeifenLuo.WinFormsUI.Docking.dll
new file mode 100644
index 000000000..ea1da8876
Binary files /dev/null and b/TestProject/bin/Debug/WeifenLuo.WinFormsUI.Docking.dll differ
diff --git a/TestProject/bin/Debug/de/mRemoteNG.resources.dll b/TestProject/bin/Debug/de/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c89d53ae8
Binary files /dev/null and b/TestProject/bin/Debug/de/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/el/mRemoteNG.resources.dll b/TestProject/bin/Debug/el/mRemoteNG.resources.dll
new file mode 100644
index 000000000..155321036
Binary files /dev/null and b/TestProject/bin/Debug/el/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/en-US/mRemoteNG.resources.dll b/TestProject/bin/Debug/en-US/mRemoteNG.resources.dll
new file mode 100644
index 000000000..6c9a4742f
Binary files /dev/null and b/TestProject/bin/Debug/en-US/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/es-AR/mRemoteNG.resources.dll b/TestProject/bin/Debug/es-AR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3568a6112
Binary files /dev/null and b/TestProject/bin/Debug/es-AR/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/es/mRemoteNG.resources.dll b/TestProject/bin/Debug/es/mRemoteNG.resources.dll
new file mode 100644
index 000000000..470c47cb3
Binary files /dev/null and b/TestProject/bin/Debug/es/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/fr/mRemoteNG.resources.dll b/TestProject/bin/Debug/fr/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3f52b2dd5
Binary files /dev/null and b/TestProject/bin/Debug/fr/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/hu/mRemoteNG.resources.dll b/TestProject/bin/Debug/hu/mRemoteNG.resources.dll
new file mode 100644
index 000000000..59ff4d55e
Binary files /dev/null and b/TestProject/bin/Debug/hu/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/it/mRemoteNG.resources.dll b/TestProject/bin/Debug/it/mRemoteNG.resources.dll
new file mode 100644
index 000000000..37f5e8f47
Binary files /dev/null and b/TestProject/bin/Debug/it/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/log4net.dll b/TestProject/bin/Debug/log4net.dll
new file mode 100644
index 000000000..ffc57e112
Binary files /dev/null and b/TestProject/bin/Debug/log4net.dll differ
diff --git a/TestProject/bin/Debug/mRemoteNG.exe b/TestProject/bin/Debug/mRemoteNG.exe
new file mode 100644
index 000000000..97cca3c72
Binary files /dev/null and b/TestProject/bin/Debug/mRemoteNG.exe differ
diff --git a/TestProject/bin/Debug/mRemoteNG.pdb b/TestProject/bin/Debug/mRemoteNG.pdb
new file mode 100644
index 000000000..0512eedef
Binary files /dev/null and b/TestProject/bin/Debug/mRemoteNG.pdb differ
diff --git a/TestProject/bin/Debug/mRemoteNG_Accessor.exe b/TestProject/bin/Debug/mRemoteNG_Accessor.exe
new file mode 100644
index 000000000..0bfa5e7be
Binary files /dev/null and b/TestProject/bin/Debug/mRemoteNG_Accessor.exe differ
diff --git a/TestProject/bin/Debug/mRemoteNG_Accessor.pdb b/TestProject/bin/Debug/mRemoteNG_Accessor.pdb
new file mode 100644
index 000000000..4afc26d4d
Binary files /dev/null and b/TestProject/bin/Debug/mRemoteNG_Accessor.pdb differ
diff --git a/TestProject/bin/Debug/nb-NO/mRemoteNG.resources.dll b/TestProject/bin/Debug/nb-NO/mRemoteNG.resources.dll
new file mode 100644
index 000000000..1150927bd
Binary files /dev/null and b/TestProject/bin/Debug/nb-NO/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/nl/mRemoteNG.resources.dll b/TestProject/bin/Debug/nl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..b13f664ba
Binary files /dev/null and b/TestProject/bin/Debug/nl/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/pl/mRemoteNG.resources.dll b/TestProject/bin/Debug/pl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..892e14224
Binary files /dev/null and b/TestProject/bin/Debug/pl/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/pt-BR/mRemoteNG.resources.dll b/TestProject/bin/Debug/pt-BR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..0dbf4a082
Binary files /dev/null and b/TestProject/bin/Debug/pt-BR/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/pt/mRemoteNG.resources.dll b/TestProject/bin/Debug/pt/mRemoteNG.resources.dll
new file mode 100644
index 000000000..d40786b9f
Binary files /dev/null and b/TestProject/bin/Debug/pt/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/ru/mRemoteNG.resources.dll b/TestProject/bin/Debug/ru/mRemoteNG.resources.dll
new file mode 100644
index 000000000..800d66443
Binary files /dev/null and b/TestProject/bin/Debug/ru/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/uk/mRemoteNG.resources.dll b/TestProject/bin/Debug/uk/mRemoteNG.resources.dll
new file mode 100644
index 000000000..bca5aa575
Binary files /dev/null and b/TestProject/bin/Debug/uk/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/zh-CN/mRemoteNG.resources.dll b/TestProject/bin/Debug/zh-CN/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c1e86f55e
Binary files /dev/null and b/TestProject/bin/Debug/zh-CN/mRemoteNG.resources.dll differ
diff --git a/TestProject/bin/Debug/zh-TW/mRemoteNG.resources.dll b/TestProject/bin/Debug/zh-TW/mRemoteNG.resources.dll
new file mode 100644
index 000000000..adfbc7dc8
Binary files /dev/null and b/TestProject/bin/Debug/zh-TW/mRemoteNG.resources.dll differ
diff --git a/TestProject/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/TestProject/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 000000000..c26ebc5fe
Binary files /dev/null and b/TestProject/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/TestProject/obj/Debug/TestProject.dll b/TestProject/obj/Debug/TestProject.dll
new file mode 100644
index 000000000..46caa2180
Binary files /dev/null and b/TestProject/obj/Debug/TestProject.dll differ
diff --git a/TestProject/obj/Debug/TestProject.pdb b/TestProject/obj/Debug/TestProject.pdb
new file mode 100644
index 000000000..b52757fa5
Binary files /dev/null and b/TestProject/obj/Debug/TestProject.pdb differ
diff --git a/TestProject/obj/Debug/TestProject.vbproj.FileListAbsolute.txt b/TestProject/obj/Debug/TestProject.vbproj.FileListAbsolute.txt
new file mode 100644
index 000000000..3edc7bd05
--- /dev/null
+++ b/TestProject/obj/Debug/TestProject.vbproj.FileListAbsolute.txt
@@ -0,0 +1,130 @@
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\CMDSwitches.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Config.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Configuration.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Connection.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Connections.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\ConfigurationSQL.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Index.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\PortScan.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\ExternalTools.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\ErrorsAndInfos.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\ImportFromAD.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Installation.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Introduction.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\MainMenu.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Options.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Prerequisites.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\QuickConnect.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\QuickReference.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\SaveAsExport.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\ScreenshotManager.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\02.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\03.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\04.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\05.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\06.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\07.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\08.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\09.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\10.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\11.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\12.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\13.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\14.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\15.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\16.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Configuration\17.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\02.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\03.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\04.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\05.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\06.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\07.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\External Tools\08.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Main Menu\File.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Main Menu\Info.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Main Menu\QuickConnect.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Main Menu\Tools.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Main Menu\View.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Screenshots\Reference\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Sessions.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\SQLScript.txt
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\SSHFileTransfer.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Update.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Help\Main.css
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Anti Virus.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Backup.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Build Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Database.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Domain Controller.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\ESX.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Fax.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\File Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Finance.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Firewall.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Linux.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Log.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Mail Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\mRemote.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\mRemoteNG.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\PuTTY.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Remote Desktop.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Router.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\SharePoint.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\SSH.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Switch.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Tel.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Telnet.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Terminal Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Test Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Virtual Machine.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Web Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\WiFi.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Windows.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Icons\Workstation.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\TestProject.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\TestProject.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\TestProject.xml
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\ADTree.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\DiffieHellman.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\FilteredPropertyGrid.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\IPTextBox.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\log4net.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\MiniGeckoBrowser.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\MiniTabControl.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\mRemoteNG.exe
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Org.Mentalis.Security.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\PSTaskDialog.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Skybound.Gecko.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\Tamir.SharpSSH.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\VncSharpNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\SharedLibraryNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\mRemoteNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\VncSharpNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\SharedLibraryNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\de\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\el\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\en-US\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\es\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\es-AR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\fr\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\hu\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\it\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\nb-NO\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\nl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\pl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\pt\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\pt-BR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\ru\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\uk\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\zh-CN\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\zh-TW\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\mRemoteNG_Accessor.exe
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\bin\Debug\mRemoteNG_Accessor.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\obj\Debug\TestProject.vbprojResolveAssemblyReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\obj\Debug\TestProject.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\obj\Debug\TestProject.xml
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\TestProject\obj\Debug\TestProject.pdb
diff --git a/TestProject/obj/Debug/TestProject.vbprojResolveAssemblyReference.cache b/TestProject/obj/Debug/TestProject.vbprojResolveAssemblyReference.cache
new file mode 100644
index 000000000..f9a627b39
Binary files /dev/null and b/TestProject/obj/Debug/TestProject.vbprojResolveAssemblyReference.cache differ
diff --git a/TestProject/obj/Debug/TestProject.xml b/TestProject/obj/Debug/TestProject.xml
new file mode 100644
index 000000000..5dfeb1f32
--- /dev/null
+++ b/TestProject/obj/Debug/TestProject.xml
@@ -0,0 +1,25 @@
+
+
+
+
+TestProject
+
+
+
+
+
+Gets or sets the test context which provides
+information about and functionality for the current test run.
+
+
+
+A test for ParseArguments
+
+
+
+This is a test class for ExternalToolTest and is intended
+to contain all ExternalToolTest Unit Tests
+
+
+
+
\ No newline at end of file
diff --git a/TestProject/obj/Debug/mRemoteNG_Accessor.exe b/TestProject/obj/Debug/mRemoteNG_Accessor.exe
new file mode 100644
index 000000000..5be8a69a9
Binary files /dev/null and b/TestProject/obj/Debug/mRemoteNG_Accessor.exe differ
diff --git a/TestProject/obj/Debug/mRemoteNG_Accessor.pdb b/TestProject/obj/Debug/mRemoteNG_Accessor.pdb
new file mode 100644
index 000000000..c29d497e0
Binary files /dev/null and b/TestProject/obj/Debug/mRemoteNG_Accessor.pdb differ
diff --git a/mRemoteV1.ConvertedToC#/App/App.Runtime.cs b/mRemoteV1.ConvertedToC#/App/App.Runtime.cs
index 0e44710b4..1fa50ea06 100644
--- a/mRemoteV1.ConvertedToC#/App/App.Runtime.cs
+++ b/mRemoteV1.ConvertedToC#/App/App.Runtime.cs
@@ -1,1860 +1,1858 @@
+using Crownwood;
+using log4net;
using Microsoft.VisualBasic;
+using Microsoft.Win32;
+using mRemoteNG;
+using mRemoteNG.Config;
+using mRemoteNG.Connection;
+using mRemoteNG.Forms;
+using mRemoteNG.Forms.OptionsPages;
+using mRemoteNG.Messages;
+using mRemoteNG.Tools;
+using PSTaskDialog;
using System;
using System.Collections;
using System.Collections.Generic;
-using System.Data;
-using System.Drawing;
-using System.Diagnostics;
-using System.Windows.Forms;
using System.ComponentModel;
-using mRemoteNG.Forms;
-using mRemoteNG.Config;
-using log4net;
-using mRemoteNG.Messages;
-using mRemoteNG.Connection;
-using mRemoteNG.Tools;
-using mRemoteNG.Forms.OptionsPages;
-using PSTaskDialog;
-using WeifenLuo.WinFormsUI.Docking;
-using System.IO;
-using Crownwood;
-using System.Threading;
-using System.Xml;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
using System.Environment;
+using System.IO;
using System.Management;
-using Microsoft.Win32;
+using System.Threading;
+using System.Timers;
+using System.Windows.Forms;
+using System.Xml;
+using WeifenLuo.WinFormsUI.Docking;
using Timer = System.Timers.Timer;
-namespace mRemoteNG.App
+namespace mRemoteNG
{
- public class Runtime
- {
- private Runtime()
- {
- // Fix Warning 292 CA1053 : Microsoft.Design : Because type 'Native' contains only 'static' ('Shared' in Visual Basic) members, add a default private constructor to prevent the compiler from adding a default public constructor.
- }
+ namespace App
+ {
+ public class Runtime
+ {
- #region "Public Properties"
- public static frmMain MainForm { get; set; }
+ #region "Public Properties"
+ public static frmMain MainForm { get; set; }
- private static Connection.List _connectionList;
- public static List ConnectionList {
- get { return _connectionList; }
- set { _connectionList = value; }
- }
+ private static Connection.List _connectionList;
+ public static List ConnectionList {
+ get { return _connectionList; }
+ set { _connectionList = value; }
+ }
- private static Connection.List _previousConnectionList;
- public static List PreviousConnectionList {
- get { return _previousConnectionList; }
- set { _previousConnectionList = value; }
- }
+ private static Connection.List _previousConnectionList;
+ public static List PreviousConnectionList {
+ get { return _previousConnectionList; }
+ set { _previousConnectionList = value; }
+ }
- private static Container.List _containerList;
- public static Container.List ContainerList {
- get { return _containerList; }
- set { _containerList = value; }
- }
+ private static Container.List _containerList;
+ public static Container.List ContainerList {
+ get { return _containerList; }
+ set { _containerList = value; }
+ }
- private static Container.List _previousContainerList;
- public static Container.List PreviousContainerList {
- get { return _previousContainerList; }
- set { _previousContainerList = value; }
- }
+ private static Container.List _previousContainerList;
+ public static Container.List PreviousContainerList {
+ get { return _previousContainerList; }
+ set { _previousContainerList = value; }
+ }
- private static Credential.List _credentialList;
- public static Credential.List CredentialList {
- get { return _credentialList; }
- set { _credentialList = value; }
- }
+ private static Credential.List _credentialList;
+ public static Credential.List CredentialList {
+ get { return _credentialList; }
+ set { _credentialList = value; }
+ }
- private static Credential.List _previousCredentialList;
- public static Credential.List PreviousCredentialList {
- get { return _previousCredentialList; }
- set { _previousCredentialList = value; }
- }
+ private static Credential.List _previousCredentialList;
+ public static Credential.List PreviousCredentialList {
+ get { return _previousCredentialList; }
+ set { _previousCredentialList = value; }
+ }
- private static UI.Window.List _windowList;
- public static UI.Window.List WindowList {
- get { return _windowList; }
- set { _windowList = value; }
- }
+ private static UI.Window.List _windowList;
+ public static UI.Window.List WindowList {
+ get { return _windowList; }
+ set { _windowList = value; }
+ }
- private static Messages.Collector _messageCollector;
- public static Collector MessageCollector {
- get { return _messageCollector; }
- set { _messageCollector = value; }
- }
+ private static Messages.Collector _messageCollector;
+ public static Collector MessageCollector {
+ get { return _messageCollector; }
+ set { _messageCollector = value; }
+ }
- private static Tools.Controls.NotificationAreaIcon _notificationAreaIcon;
- public static Tools.Controls.NotificationAreaIcon NotificationAreaIcon {
- get { return _notificationAreaIcon; }
- set { _notificationAreaIcon = value; }
- }
+ private static Tools.Controls.NotificationAreaIcon _notificationAreaIcon;
+ public static Tools.Controls.NotificationAreaIcon NotificationAreaIcon {
+ get { return _notificationAreaIcon; }
+ set { _notificationAreaIcon = value; }
+ }
- private static Tools.SystemMenu _systemMenu;
- public static SystemMenu SystemMenu {
- get { return _systemMenu; }
- set { _systemMenu = value; }
- }
+ private static Tools.SystemMenu _systemMenu;
+ public static SystemMenu SystemMenu {
+ get { return _systemMenu; }
+ set { _systemMenu = value; }
+ }
- private static log4net.ILog _log;
- public static ILog Log {
- get { return _log; }
- set { _log = value; }
- }
+ private static log4net.ILog _log;
+ public static ILog Log {
+ get { return _log; }
+ set { _log = value; }
+ }
- private static bool _isConnectionsFileLoaded;
- public static bool IsConnectionsFileLoaded {
- get { return _isConnectionsFileLoaded; }
- set { _isConnectionsFileLoaded = value; }
- }
+ private static bool _isConnectionsFileLoaded;
+ public static bool IsConnectionsFileLoaded {
+ get { return _isConnectionsFileLoaded; }
+ set { _isConnectionsFileLoaded = value; }
+ }
- private System.Timers.Timer withEventsField__timerSqlWatcher;
- private static System.Timers.Timer _timerSqlWatcher {
- get { return withEventsField__timerSqlWatcher; }
- set {
- if (withEventsField__timerSqlWatcher != null) {
- withEventsField__timerSqlWatcher.Elapsed -= tmrSqlWatcher_Elapsed;
- }
- withEventsField__timerSqlWatcher = value;
- if (withEventsField__timerSqlWatcher != null) {
- withEventsField__timerSqlWatcher.Elapsed += tmrSqlWatcher_Elapsed;
- }
- }
- }
- public static Timer TimerSqlWatcher {
- get { return _timerSqlWatcher; }
- set { _timerSqlWatcher = value; }
- }
+ private static Timer _timerSqlWatcher;
- private static System.DateTime _lastSqlUpdate;
- public static System.DateTime LastSqlUpdate {
- get { return _lastSqlUpdate; }
- set { _lastSqlUpdate = value; }
- }
+ public static Timer TimerSqlWatcher
+ {
+ get { return _timerSqlWatcher; }
+ set
+ {
+ _timerSqlWatcher = value;
+ _timerSqlWatcher.Elapsed += new ElapsedEventHandler(tmrSqlWatcher_Elapsed);
+ }
+ }
+ public static Timer TimerSqlWatcher {
+ get { return _timerSqlWatcher; }
+ set { _timerSqlWatcher = value; }
+ }
- private static string _lastSelected;
- public static string LastSelected {
- get { return _lastSelected; }
- set { _lastSelected = value; }
- }
+ private static System.DateTime _lastSqlUpdate;
+ public static System.DateTime LastSqlUpdate {
+ get { return _lastSqlUpdate; }
+ set { _lastSqlUpdate = value; }
+ }
- private static mRemoteNG.Connection.Info _defaultConnection;
- public static Connection.Info DefaultConnection {
- get { return _defaultConnection; }
- set { _defaultConnection = value; }
- }
+ private static string _lastSelected;
+ public static string LastSelected {
+ get { return _lastSelected; }
+ set { _lastSelected = value; }
+ }
- private static mRemoteNG.Connection.Info.Inheritance _defaultInheritance;
- public static Connection.Info.Inheritance DefaultInheritance {
- get { return _defaultInheritance; }
- set { _defaultInheritance = value; }
- }
+ private static mRemoteNG.Connection.Info _defaultConnection;
+ public static Connection.Info DefaultConnection {
+ get { return _defaultConnection; }
+ set { _defaultConnection = value; }
+ }
- private static ArrayList _externalTools = new ArrayList();
- public static ArrayList ExternalTools {
- get { return _externalTools; }
- set { _externalTools = value; }
- }
+ private static mRemoteNG.Connection.Info.Inheritance _defaultInheritance;
+ public static Connection.Info.Inheritance DefaultInheritance {
+ get { return _defaultInheritance; }
+ set { _defaultInheritance = value; }
+ }
- #endregion
+ private static ArrayList _externalTools = new ArrayList();
+ public static ArrayList ExternalTools {
+ get { return _externalTools; }
+ set { _externalTools = value; }
+ }
- #region "Classes"
- public class Windows
- {
- public static UI.Window.Tree treeForm;
- public static DockContent treePanel = new DockContent();
- public static UI.Window.Config configForm;
- public static DockContent configPanel = new DockContent();
- public static UI.Window.ErrorsAndInfos errorsForm;
- public static DockContent errorsPanel = new DockContent();
- public static UI.Window.Sessions sessionsForm;
- public static DockContent sessionsPanel = new DockContent();
- public static UI.Window.ScreenshotManager screenshotForm;
- public static DockContent screenshotPanel = new DockContent();
- public static ExportForm exportForm;
- public static DockContent exportPanel = new DockContent();
- public static UI.Window.About aboutForm;
- public static DockContent aboutPanel = new DockContent();
- public static UI.Window.Update updateForm;
- public static DockContent updatePanel = new DockContent();
- public static UI.Window.SSHTransfer sshtransferForm;
- public static DockContent sshtransferPanel = new DockContent();
- public static UI.Window.ActiveDirectoryImport adimportForm;
- public static DockContent adimportPanel = new DockContent();
- public static UI.Window.Help helpForm;
- public static DockContent helpPanel = new DockContent();
- public static UI.Window.ExternalTools externalappsForm;
- public static DockContent externalappsPanel = new DockContent();
- public static UI.Window.PortScan portscanForm;
- public static DockContent portscanPanel = new DockContent();
- public static UI.Window.UltraVNCSC ultravncscForm;
- public static DockContent ultravncscPanel = new DockContent();
- public static UI.Window.ComponentsCheck componentscheckForm;
- public static DockContent componentscheckPanel = new DockContent();
- public static UI.Window.Announcement AnnouncementForm;
+ #endregion
- public static DockContent AnnouncementPanel = new DockContent();
- public static void Show(UI.Window.Type windowType, bool portScanImport = false)
- {
- try {
- switch (windowType) {
- case mRemoteNG.UI.Window.Type.About:
- if (aboutForm == null || aboutForm.IsDisposed) {
- aboutForm = new UI.Window.About(aboutPanel);
- aboutPanel = aboutForm;
- }
+ #region "Classes"
+ public class Windows
+ {
+ public static UI.Window.Tree treeForm;
+ public static DockContent treePanel = new DockContent();
+ public static UI.Window.Config configForm;
+ public static DockContent configPanel = new DockContent();
+ public static UI.Window.ErrorsAndInfos errorsForm;
+ public static DockContent errorsPanel = new DockContent();
+ public static UI.Window.Sessions sessionsForm;
+ public static DockContent sessionsPanel = new DockContent();
+ public static UI.Window.ScreenshotManager screenshotForm;
+ public static DockContent screenshotPanel = new DockContent();
+ public static ExportForm exportForm;
+ public static DockContent exportPanel = new DockContent();
+ public static UI.Window.About aboutForm;
+ public static DockContent aboutPanel = new DockContent();
+ public static UI.Window.Update updateForm;
+ public static DockContent updatePanel = new DockContent();
+ public static UI.Window.SSHTransfer sshtransferForm;
+ public static DockContent sshtransferPanel = new DockContent();
+ public static UI.Window.ActiveDirectoryImport adimportForm;
+ public static DockContent adimportPanel = new DockContent();
+ public static UI.Window.Help helpForm;
+ public static DockContent helpPanel = new DockContent();
+ public static UI.Window.ExternalTools externalappsForm;
+ public static DockContent externalappsPanel = new DockContent();
+ public static UI.Window.PortScan portscanForm;
+ public static DockContent portscanPanel = new DockContent();
+ public static UI.Window.UltraVNCSC ultravncscForm;
+ public static DockContent ultravncscPanel = new DockContent();
+ public static UI.Window.ComponentsCheck componentscheckForm;
+ public static DockContent componentscheckPanel = new DockContent();
+ public static UI.Window.Announcement AnnouncementForm;
- aboutForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.ActiveDirectoryImport:
- if (adimportForm == null || adimportForm.IsDisposed) {
- adimportForm = new UI.Window.ActiveDirectoryImport(adimportPanel);
- adimportPanel = adimportForm;
- }
+ public static DockContent AnnouncementPanel = new DockContent();
+ public static void Show(UI.Window.Type windowType, bool portScanImport = false)
+ {
+ try {
+ switch (windowType) {
+ case mRemoteNG.UI.Window.Type.About:
+ if (aboutForm == null || aboutForm.IsDisposed) {
+ aboutForm = new UI.Window.About(aboutPanel);
+ aboutPanel = aboutForm;
+ }
- adimportPanel.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.Options:
- using (OptionsForm optionsForm = new OptionsForm()) {
- optionsForm.ShowDialog(frmMain);
- }
+ aboutForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.ActiveDirectoryImport:
+ if (adimportForm == null || adimportForm.IsDisposed) {
+ adimportForm = new UI.Window.ActiveDirectoryImport(adimportPanel);
+ adimportPanel = adimportForm;
+ }
- break;
- case mRemoteNG.UI.Window.Type.SSHTransfer:
- sshtransferForm = new UI.Window.SSHTransfer(sshtransferPanel);
- sshtransferPanel = sshtransferForm;
+ adimportPanel.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.Options:
+ optionsForm = new frmOptions(optionsPanel);
+ optionsForm.Show(frmMain.Default.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.SSHTransfer:
+ sshtransferForm = new UI.Window.SSHTransfer(sshtransferPanel);
+ sshtransferPanel = sshtransferForm;
- sshtransferForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.Update:
- if (updateForm == null || updateForm.IsDisposed) {
- updateForm = new UI.Window.Update(updatePanel);
- updatePanel = updateForm;
- }
+ sshtransferForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.Update:
+ if (updateForm == null || updateForm.IsDisposed) {
+ updateForm = new UI.Window.Update(updatePanel);
+ updatePanel = updateForm;
+ }
- updateForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.Help:
- if (helpForm == null || helpForm.IsDisposed) {
- helpForm = new UI.Window.Help(helpPanel);
- helpPanel = helpForm;
- }
+ updateForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.Help:
+ if (helpForm == null || helpForm.IsDisposed) {
+ helpForm = new UI.Window.Help(helpPanel);
+ helpPanel = helpForm;
+ }
- helpForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.ExternalApps:
- if (externalappsForm == null || externalappsForm.IsDisposed) {
- externalappsForm = new UI.Window.ExternalTools(externalappsPanel);
- externalappsPanel = externalappsForm;
- }
+ helpForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.ExternalApps:
+ if (externalappsForm == null || externalappsForm.IsDisposed) {
+ externalappsForm = new UI.Window.ExternalTools(externalappsPanel);
+ externalappsPanel = externalappsForm;
+ }
- externalappsForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.PortScan:
- portscanForm = new UI.Window.PortScan(portscanPanel, portScanImport);
- portscanPanel = portscanForm;
+ externalappsForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.PortScan:
+ portscanForm = new UI.Window.PortScan(portscanPanel, portScanImport);
+ portscanPanel = portscanForm;
- portscanForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.UltraVNCSC:
- if (ultravncscForm == null || ultravncscForm.IsDisposed) {
- ultravncscForm = new UI.Window.UltraVNCSC(ultravncscPanel);
- ultravncscPanel = ultravncscForm;
- }
+ portscanForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.UltraVNCSC:
+ if (ultravncscForm == null || ultravncscForm.IsDisposed) {
+ ultravncscForm = new UI.Window.UltraVNCSC(ultravncscPanel);
+ ultravncscPanel = ultravncscForm;
+ }
- ultravncscForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.ComponentsCheck:
- if (componentscheckForm == null || componentscheckForm.IsDisposed) {
- componentscheckForm = new UI.Window.ComponentsCheck(componentscheckPanel);
- componentscheckPanel = componentscheckForm;
- }
+ ultravncscForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.ComponentsCheck:
+ if (componentscheckForm == null || componentscheckForm.IsDisposed) {
+ componentscheckForm = new UI.Window.ComponentsCheck(componentscheckPanel);
+ componentscheckPanel = componentscheckForm;
+ }
- componentscheckForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- case mRemoteNG.UI.Window.Type.Announcement:
- if (AnnouncementForm == null || AnnouncementForm.IsDisposed) {
- AnnouncementForm = new UI.Window.Announcement(AnnouncementPanel);
- AnnouncementPanel = AnnouncementForm;
- }
+ componentscheckForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ case mRemoteNG.UI.Window.Type.Announcement:
+ if (AnnouncementForm == null || AnnouncementForm.IsDisposed) {
+ AnnouncementForm = new UI.Window.Announcement(AnnouncementPanel);
+ AnnouncementPanel = AnnouncementForm;
+ }
- AnnouncementForm.Show(My.MyProject.Forms.frmMain.pnlDock);
- break;
- }
- } catch (Exception ex) {
- Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "App.Runtime.Windows.Show() failed." + Constants.vbNewLine + ex.Message, true);
- }
- }
+ AnnouncementForm.Show(My.MyProject.Forms.frmMain.pnlDock);
+ break;
+ }
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "App.Runtime.Windows.Show() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
- public static void ShowUpdatesTab()
- {
- using (OptionsForm optionsForm = new OptionsForm()) {
- optionsForm.ShowDialog(frmMain, typeof(UpdatesPage));
- }
- }
- }
+ public static void ShowUpdatesTab()
+ {
+ using (OptionsForm optionsForm = new OptionsForm()) {
+ optionsForm.ShowDialog(frmMain, typeof(UpdatesPage));
+ }
+ }
+ }
- public class Screens
- {
- public static void SendFormToScreen(Screen Screen)
- {
- bool wasMax = false;
+ public class Screens
+ {
+ public static void SendFormToScreen(Screen Screen)
+ {
+ bool wasMax = false;
- if (My.MyProject.Forms.frmMain.WindowState == FormWindowState.Maximized) {
- wasMax = true;
- My.MyProject.Forms.frmMain.WindowState = FormWindowState.Normal;
- }
+ if (My.MyProject.Forms.frmMain.WindowState == FormWindowState.Maximized) {
+ wasMax = true;
+ My.MyProject.Forms.frmMain.WindowState = FormWindowState.Normal;
+ }
- My.MyProject.Forms.frmMain.Location = Screen.Bounds.Location;
+ My.MyProject.Forms.frmMain.Location = Screen.Bounds.Location;
- if (wasMax) {
- My.MyProject.Forms.frmMain.WindowState = FormWindowState.Maximized;
- }
- }
+ if (wasMax) {
+ My.MyProject.Forms.frmMain.WindowState = FormWindowState.Maximized;
+ }
+ }
- public static void SendPanelToScreen(DockContent Panel, Screen Screen)
- {
- Panel.DockState = DockState.Float;
- Panel.ParentForm.Left = Screen.Bounds.Location.X;
- Panel.ParentForm.Top = Screen.Bounds.Location.Y;
- }
- }
+ public static void SendPanelToScreen(DockContent Panel, Screen Screen)
+ {
+ Panel.DockState = DockState.Float;
+ Panel.ParentForm.Left = Screen.Bounds.Location.X;
+ Panel.ParentForm.Top = Screen.Bounds.Location.Y;
+ }
+ }
- public class Startup
- {
- public static void CheckCompatibility()
- {
- CheckFipsPolicy();
- CheckLenovoAutoScrollUtility();
- }
+ public class Startup
+ {
+ public static void CheckCompatibility()
+ {
+ CheckFipsPolicy();
+ CheckLenovoAutoScrollUtility();
+ }
- private static void CheckFipsPolicy()
- {
- RegistryKey regKey = null;
+ private static void CheckFipsPolicy()
+ {
+ RegistryKey regKey = null;
- bool isFipsPolicyEnabled = false;
+ bool isFipsPolicyEnabled = false;
- // Windows XP/Windows Server 2003
- regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa");
- if (regKey != null) {
- if (!(regKey.GetValue("FIPSAlgorithmPolicy") == 0))
- isFipsPolicyEnabled = true;
- }
+ // Windows XP/Windows Server 2003
+ regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa");
+ if (regKey != null) {
+ if (!(regKey.GetValue("FIPSAlgorithmPolicy") == 0))
+ isFipsPolicyEnabled = true;
+ }
- // Windows Vista/Windows Server 2008 and newer
- regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy");
- if (regKey != null) {
- if (!(regKey.GetValue("Enabled") == 0))
- isFipsPolicyEnabled = true;
- }
+ // Windows Vista/Windows Server 2008 and newer
+ regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy");
+ if (regKey != null) {
+ if (!(regKey.GetValue("Enabled") == 0))
+ isFipsPolicyEnabled = true;
+ }
- if (isFipsPolicyEnabled) {
- MessageBox.Show(frmMain, string.Format(mRemoteNG.My.Language.strErrorFipsPolicyIncompatible, mRemoteNG.My.MyProject.Application.Info.ProductName), mRemoteNG.My.MyProject.Application.Info.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
- Environment.Exit(1);
- }
- }
+ if (isFipsPolicyEnabled) {
+ MessageBox.Show(frmMain, string.Format(mRemoteNG.My.Language.strErrorFipsPolicyIncompatible, mRemoteNG.My.MyProject.Application.Info.ProductName), mRemoteNG.My.MyProject.Application.Info.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Environment.Exit(1);
+ }
+ }
- private static void CheckLenovoAutoScrollUtility()
- {
- if (!mRemoteNG.My.Settings.CompatibilityWarnLenovoAutoScrollUtility)
- return;
+ private static void CheckLenovoAutoScrollUtility()
+ {
+ if (!mRemoteNG.My.Settings.CompatibilityWarnLenovoAutoScrollUtility)
+ return;
- Process[] proccesses = {
+ Process[] proccesses = {
- };
- try {
- proccesses = Process.GetProcessesByName("virtscrl");
- } catch {
- }
- if (proccesses.Length == 0)
- return;
-
- cTaskDialog.MessageBox(Application.ProductName, mRemoteNG.My.Language.strCompatibilityProblemDetected, string.Format(mRemoteNG.My.Language.strCompatibilityLenovoAutoScrollUtilityDetected, System.Windows.Forms.Application.ProductName), "", "", mRemoteNG.My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.OK, eSysIcons.Warning, null);
- if (cTaskDialog.VerificationChecked) {
- mRemoteNG.My.Settings.CompatibilityWarnLenovoAutoScrollUtility = false;
- }
- }
-
- public static void CreatePanels()
- {
- Windows.configForm = new UI.Window.Config(Windows.configPanel);
- Windows.configPanel = Windows.configForm;
-
- Windows.treeForm = new UI.Window.Tree(Windows.treePanel);
- Windows.treePanel = Windows.treeForm;
- mRemoteNG.Tree.Node.TreeView = Windows.treeForm.tvConnections;
-
- Windows.errorsForm = new UI.Window.ErrorsAndInfos(Windows.errorsPanel);
- Windows.errorsPanel = Windows.errorsForm;
-
- Windows.sessionsForm = new UI.Window.Sessions(Windows.sessionsPanel);
- Windows.sessionsPanel = Windows.sessionsForm;
-
- Windows.screenshotForm = new UI.Window.ScreenshotManager(Windows.screenshotPanel);
- Windows.screenshotPanel = Windows.screenshotForm;
-
- Windows.updateForm = new UI.Window.Update(Windows.updatePanel);
- Windows.updatePanel = Windows.updateForm;
-
- Windows.AnnouncementForm = new UI.Window.Announcement(Windows.AnnouncementPanel);
- Windows.AnnouncementPanel = Windows.AnnouncementForm;
- }
-
- public static void SetDefaultLayout()
- {
- My.MyProject.Forms.frmMain.pnlDock.Visible = false;
-
- My.MyProject.Forms.frmMain.pnlDock.DockLeftPortion = My.MyProject.Forms.frmMain.pnlDock.Width * 0.2;
- My.MyProject.Forms.frmMain.pnlDock.DockRightPortion = My.MyProject.Forms.frmMain.pnlDock.Width * 0.2;
- My.MyProject.Forms.frmMain.pnlDock.DockTopPortion = My.MyProject.Forms.frmMain.pnlDock.Height * 0.25;
- My.MyProject.Forms.frmMain.pnlDock.DockBottomPortion = My.MyProject.Forms.frmMain.pnlDock.Height * 0.25;
-
- Windows.treePanel.Show(My.MyProject.Forms.frmMain.pnlDock, DockState.DockLeft);
- Windows.configPanel.Show(My.MyProject.Forms.frmMain.pnlDock);
- Windows.configPanel.DockTo(Windows.treePanel.Pane, DockStyle.Bottom, -1);
-
- Windows.screenshotForm.Hide();
-
- My.MyProject.Forms.frmMain.pnlDock.Visible = true;
- }
-
- public static void GetConnectionIcons()
- {
- string iPath = mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Icons\\";
-
- if (Directory.Exists(iPath) == false) {
- return;
- }
-
- foreach (string f in Directory.GetFiles(iPath, "*.ico", SearchOption.AllDirectories)) {
- FileInfo fInfo = new FileInfo(f);
-
- Array.Resize(ref mRemoteNG.Connection.Icon.Icons, mRemoteNG.Connection.Icon.Icons.Length + 1);
- mRemoteNG.Connection.Icon.Icons.SetValue(fInfo.Name.Replace(".ico", ""), mRemoteNG.Connection.Icon.Icons.Length - 1);
- }
- }
-
- public static void CreateLogger()
- {
- log4net.Config.XmlConfigurator.Configure();
-
- string logFilePath = null;
- #if !PORTABLE
- logFilePath = Path.Combine(Environment.GetFolderPath(SpecialFolder.LocalApplicationData), Application.ProductName);
- #else
- logFilePath = Application.StartupPath;
- #endif
- string logFileName = Path.ChangeExtension(Application.ProductName, ".log");
- string logFile = Path.Combine(logFilePath, logFileName);
-
- log4net.Repository.ILoggerRepository repository = LogManager.GetRepository();
- log4net.Appender.IAppender[] appenders = repository.GetAppenders();
- log4net.Appender.FileAppender fileAppender = null;
- foreach (log4net.Appender.IAppender appender in appenders) {
- fileAppender = appender as Appender.FileAppender;
- if (!(fileAppender == null || !(fileAppender.Name == "LogFileAppender"))) {
- fileAppender.File = logFile;
- fileAppender.ActivateOptions();
- }
- }
-
- Runtime.Log = LogManager.GetLogger("Logger");
-
- #if !PORTABLE
- if (mRemoteNG.My.Settings.WriteLogFile) {
- Runtime.Log.InfoFormat("{0} {1} starting.", Application.ProductName, Application.ProductVersion);
- #else
- Runtime.Log.InfoFormat("{0} {1} {2} starting.", Application.ProductName, Application.ProductVersion, mRemoteNG.My.Language.strLabelPortableEdition);
- #endif
- Runtime.Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs());
-
- string osVersion = string.Empty;
- string servicePack = string.Empty;
- try {
- foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary=True").Get()) {
- osVersion = managementObject.GetPropertyValue("Caption").Trim();
- int servicePackNumber = managementObject.GetPropertyValue("ServicePackMajorVersion");
- if (!(servicePackNumber == 0))
- servicePack = string.Format("Service Pack {0}", servicePackNumber);
- }
- } catch (Exception ex) {
- Runtime.Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message);
- }
-
- string architecture = string.Empty;
- try {
- foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID='CPU0'").Get()) {
- int addressWidth = managementObject.GetPropertyValue("AddressWidth");
- architecture = string.Format("{0}-bit", addressWidth);
- }
- } catch (Exception ex) {
- Runtime.Log.WarnFormat("Error retrieving operating system address width from WMI. {0}", ex.Message);
- }
-
- Runtime.Log.InfoFormat(string.Join(" ", Array.FindAll(new string[] {
- osVersion,
- servicePack,
- architecture
- }, s => !string.IsNullOrEmpty(s))));
-
- Runtime.Log.InfoFormat("Microsoft .NET CLR {0}", Version.ToString());
- Runtime.Log.InfoFormat("System Culture: {0}/{1}", Thread.CurrentThread.CurrentUICulture.Name, Thread.CurrentThread.CurrentUICulture.NativeName);
- }
- }
-
- private static Update _appUpdate;
- public static void CheckForUpdate()
- {
- if (_appUpdate == null) {
- _appUpdate = new Update();
- } else if (_appUpdate.IsGetUpdateInfoRunning) {
- return;
- }
-
- System.DateTime nextUpdateCheck = mRemoteNG.My.Settings.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(mRemoteNG.My.Settings.CheckForUpdatesFrequencyDays));
- if (!mRemoteNG.My.Settings.UpdatePending & System.DateTime.UtcNow < nextUpdateCheck)
- return;
-
- _appUpdate.GetUpdateInfoCompletedEvent += GetUpdateInfoCompleted;
- _appUpdate.GetUpdateInfoAsync();
- }
-
- private static void GetUpdateInfoCompleted(object sender, AsyncCompletedEventArgs e)
- {
- if (Runtime.MainForm.InvokeRequired) {
- Runtime.MainForm.Invoke(new AsyncCompletedEventHandler(GetUpdateInfoCompleted), new object[] {
- sender,
- e
- });
- return;
- }
-
- try {
- _appUpdate.GetUpdateInfoCompletedEvent -= GetUpdateInfoCompleted;
-
- if (e.Cancelled)
- return;
- if (e.Error != null)
- throw e.Error;
-
- if (_appUpdate.IsUpdateAvailable())
- Windows.Show(mRemoteNG.UI.Window.Type.Update);
- } catch (Exception ex) {
- Runtime.MessageCollector.AddExceptionMessage("GetUpdateInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
- }
- }
-
- public static void CheckForAnnouncement()
- {
- if (_appUpdate == null) {
- _appUpdate = new Update();
- } else if (_appUpdate.IsGetAnnouncementInfoRunning) {
- return;
- }
-
- _appUpdate.GetAnnouncementInfoCompletedEvent += GetAnnouncementInfoCompleted;
- _appUpdate.GetAnnouncementInfoAsync();
- }
-
- private static void GetAnnouncementInfoCompleted(object sender, AsyncCompletedEventArgs e)
- {
- if (Runtime.MainForm.InvokeRequired) {
- Runtime.MainForm.Invoke(new AsyncCompletedEventHandler(GetAnnouncementInfoCompleted), new object[] {
- sender,
- e
- });
- return;
- }
-
- try {
- _appUpdate.GetAnnouncementInfoCompletedEvent -= GetAnnouncementInfoCompleted;
-
- if (e.Cancelled)
- return;
- if (e.Error != null)
- throw e.Error;
-
- if (_appUpdate.IsAnnouncementAvailable())
- Windows.Show(mRemoteNG.UI.Window.Type.Announcement);
- } catch (Exception ex) {
- Runtime.MessageCollector.AddExceptionMessage("GetAnnouncementInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
- }
- }
-
- public static void ParseCommandLineArgs()
- {
- try {
- Tools.Misc.CMDArguments cmd = new Tools.Misc.CMDArguments(Environment.GetCommandLineArgs());
-
- string ConsParam = "";
- if (cmd["cons"] != null) {
- ConsParam = "cons";
- }
- if (cmd["c"] != null) {
- ConsParam = "c";
- }
-
- string ResetPosParam = "";
- if (cmd["resetpos"] != null) {
- ResetPosParam = "resetpos";
- }
- if (cmd["rp"] != null) {
- ResetPosParam = "rp";
- }
-
- string ResetPanelsParam = "";
- if (cmd["resetpanels"] != null) {
- ResetPanelsParam = "resetpanels";
- }
- if (cmd["rpnl"] != null) {
- ResetPanelsParam = "rpnl";
- }
-
- string ResetToolbarsParam = "";
- if (cmd["resettoolbar"] != null) {
- ResetToolbarsParam = "resettoolbar";
- }
- if (cmd["rtbr"] != null) {
- ResetToolbarsParam = "rtbr";
- }
-
- if (cmd["reset"] != null) {
- ResetPosParam = "rp";
- ResetPanelsParam = "rpnl";
- ResetToolbarsParam = "rtbr";
- }
-
- string NoReconnectParam = "";
- if (cmd["noreconnect"] != null) {
- NoReconnectParam = "noreconnect";
- }
- if (cmd["norc"] != null) {
- NoReconnectParam = "norc";
- }
-
- if (!string.IsNullOrEmpty(ConsParam)) {
- if (File.Exists(cmd[ConsParam]) == false) {
- if (File.Exists(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\" + cmd[ConsParam])) {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\" + cmd[ConsParam];
- return;
- } else if (File.Exists(mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam])) {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam];
- return;
- }
- } else {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = cmd[ConsParam];
- return;
- }
- }
-
- if (!string.IsNullOrEmpty(ResetPosParam)) {
- mRemoteNG.My.Settings.MainFormKiosk = false;
- mRemoteNG.My.Settings.MainFormLocation = new Point(999, 999);
- mRemoteNG.My.Settings.MainFormSize = new Size(900, 600);
- mRemoteNG.My.Settings.MainFormState = FormWindowState.Normal;
- }
-
- if (!string.IsNullOrEmpty(ResetPanelsParam)) {
- mRemoteNG.My.Settings.ResetPanels = true;
- }
-
- if (!string.IsNullOrEmpty(NoReconnectParam)) {
- mRemoteNG.My.Settings.NoReconnect = true;
- }
-
- if (!string.IsNullOrEmpty(ResetToolbarsParam)) {
- mRemoteNG.My.Settings.ResetToolbars = true;
- }
- } catch (Exception ex) {
- Runtime.MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strCommandLineArgsCouldNotBeParsed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void CreateSQLUpdateHandlerAndStartTimer()
- {
- if (mRemoteNG.My.Settings.UseSQLServer == true) {
- mRemoteNG.Tools.Misc.SQLUpdateCheckFinished += Runtime.SQLUpdateCheckFinished;
- Runtime.TimerSqlWatcher = new System.Timers.Timer(3000);
- Runtime.TimerSqlWatcher.Start();
- }
- }
-
- public static void DestroySQLUpdateHandlerAndStopTimer()
- {
- try {
- Runtime.LastSqlUpdate = null;
- mRemoteNG.Tools.Misc.SQLUpdateCheckFinished -= Runtime.SQLUpdateCheckFinished;
- if (Runtime.TimerSqlWatcher != null) {
- Runtime.TimerSqlWatcher.Stop();
- Runtime.TimerSqlWatcher.Close();
- }
- } catch (Exception ex) {
- }
- }
- }
-
- public class Shutdown
- {
- public static void Quit(string updateFilePath = null)
- {
- _updateFilePath = updateFilePath;
- My.MyProject.Forms.frmMain.Close();
- }
-
- public static void Cleanup()
- {
- try {
- mRemoteNG.Config.Putty.Sessions.StopWatcher();
-
- if (Runtime.NotificationAreaIcon != null) {
- if (Runtime.NotificationAreaIcon.Disposed == false) {
- Runtime.NotificationAreaIcon.Dispose();
- }
- }
-
- if (mRemoteNG.My.Settings.SaveConsOnExit)
- Runtime.SaveConnections();
-
- mRemoteNG.Config.Settings.Save.Save();
-
- IeBrowserEmulation.Unregister();
- } catch (Exception ex) {
- Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, mRemoteNG.My.Language.strSettingsCouldNotBeSavedOrTrayDispose + Constants.vbNewLine + ex.Message, true);
- }
- }
-
- public static void StartUpdate()
- {
- if (!UpdatePending())
- return;
- try {
- Process.Start(_updateFilePath);
- } catch (Exception ex) {
- Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "The update could not be started." + Constants.vbNewLine + ex.Message, true);
- }
- }
-
-
- private static string _updateFilePath = null;
- public static bool UpdatePending {
- get { return !string.IsNullOrEmpty(_updateFilePath); }
- }
- }
- #endregion
-
- #region "Default Connection"
- public static mRemoteNG.Connection.Info DefaultConnectionFromSettings()
- {
- DefaultConnection = new mRemoteNG.Connection.Info();
- DefaultConnection.IsDefault = true;
-
- return DefaultConnection;
- }
-
- public static void DefaultConnectionToSettings()
- {
- var _with1 = DefaultConnection;
- mRemoteNG.My.Settings.ConDefaultDescription = _with1.Description;
- mRemoteNG.My.Settings.ConDefaultIcon = _with1.Icon;
- mRemoteNG.My.Settings.ConDefaultUsername = _with1.Username;
- mRemoteNG.My.Settings.ConDefaultPassword = _with1.Password;
- mRemoteNG.My.Settings.ConDefaultDomain = _with1.Domain;
- mRemoteNG.My.Settings.ConDefaultProtocol = _with1.Protocol.ToString;
- mRemoteNG.My.Settings.ConDefaultPuttySession = _with1.PuttySession;
- mRemoteNG.My.Settings.ConDefaultICAEncryptionStrength = _with1.ICAEncryption.ToString;
- mRemoteNG.My.Settings.ConDefaultRDPAuthenticationLevel = _with1.RDPAuthenticationLevel.ToString;
- mRemoteNG.My.Settings.ConDefaultLoadBalanceInfo = _with1.LoadBalanceInfo;
- mRemoteNG.My.Settings.ConDefaultUseConsoleSession = _with1.UseConsoleSession;
- mRemoteNG.My.Settings.ConDefaultUseCredSsp = _with1.UseCredSsp;
- mRemoteNG.My.Settings.ConDefaultRenderingEngine = _with1.RenderingEngine.ToString;
- mRemoteNG.My.Settings.ConDefaultResolution = _with1.Resolution.ToString;
- mRemoteNG.My.Settings.ConDefaultAutomaticResize = _with1.AutomaticResize;
- mRemoteNG.My.Settings.ConDefaultColors = _with1.Colors.ToString;
- mRemoteNG.My.Settings.ConDefaultCacheBitmaps = _with1.CacheBitmaps;
- mRemoteNG.My.Settings.ConDefaultDisplayWallpaper = _with1.DisplayWallpaper;
- mRemoteNG.My.Settings.ConDefaultDisplayThemes = _with1.DisplayThemes;
- mRemoteNG.My.Settings.ConDefaultEnableFontSmoothing = _with1.EnableFontSmoothing;
- mRemoteNG.My.Settings.ConDefaultEnableDesktopComposition = _with1.EnableDesktopComposition;
- mRemoteNG.My.Settings.ConDefaultRedirectKeys = _with1.RedirectKeys;
- mRemoteNG.My.Settings.ConDefaultRedirectDiskDrives = _with1.RedirectDiskDrives;
- mRemoteNG.My.Settings.ConDefaultRedirectPrinters = _with1.RedirectPrinters;
- mRemoteNG.My.Settings.ConDefaultRedirectPorts = _with1.RedirectPorts;
- mRemoteNG.My.Settings.ConDefaultRedirectSmartCards = _with1.RedirectSmartCards;
- mRemoteNG.My.Settings.ConDefaultRedirectSound = _with1.RedirectSound.ToString;
- mRemoteNG.My.Settings.ConDefaultPreExtApp = _with1.PreExtApp;
- mRemoteNG.My.Settings.ConDefaultPostExtApp = _with1.PostExtApp;
- mRemoteNG.My.Settings.ConDefaultMacAddress = _with1.MacAddress;
- mRemoteNG.My.Settings.ConDefaultUserField = _with1.UserField;
- mRemoteNG.My.Settings.ConDefaultVNCAuthMode = _with1.VNCAuthMode.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCColors = _with1.VNCColors.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCCompression = _with1.VNCCompression.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCEncoding = _with1.VNCEncoding.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCProxyIP = _with1.VNCProxyIP;
- mRemoteNG.My.Settings.ConDefaultVNCProxyPassword = _with1.VNCProxyPassword;
- mRemoteNG.My.Settings.ConDefaultVNCProxyPort = _with1.VNCProxyPort;
- mRemoteNG.My.Settings.ConDefaultVNCProxyType = _with1.VNCProxyType.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCProxyUsername = _with1.VNCProxyUsername;
- mRemoteNG.My.Settings.ConDefaultVNCSmartSizeMode = _with1.VNCSmartSizeMode.ToString;
- mRemoteNG.My.Settings.ConDefaultVNCViewOnly = _with1.VNCViewOnly;
- mRemoteNG.My.Settings.ConDefaultExtApp = _with1.ExtApp;
- mRemoteNG.My.Settings.ConDefaultRDGatewayUsageMethod = _with1.RDGatewayUsageMethod.ToString;
- mRemoteNG.My.Settings.ConDefaultRDGatewayHostname = _with1.RDGatewayHostname;
- mRemoteNG.My.Settings.ConDefaultRDGatewayUsername = _with1.RDGatewayUsername;
- mRemoteNG.My.Settings.ConDefaultRDGatewayPassword = _with1.RDGatewayPassword;
- mRemoteNG.My.Settings.ConDefaultRDGatewayDomain = _with1.RDGatewayDomain;
- mRemoteNG.My.Settings.ConDefaultRDGatewayUseConnectionCredentials = _with1.RDGatewayUseConnectionCredentials.ToString;
- }
- #endregion
-
- #region "Default Inheritance"
- public static mRemoteNG.Connection.Info.Inheritance DefaultInheritanceFromSettings()
- {
- DefaultInheritance = new mRemoteNG.Connection.Info.Inheritance(null);
- DefaultInheritance.IsDefault = true;
-
- return DefaultInheritance;
- }
-
- public static void DefaultInheritanceToSettings()
- {
- var _with2 = DefaultInheritance;
- mRemoteNG.My.Settings.InhDefaultDescription = _with2.Description;
- mRemoteNG.My.Settings.InhDefaultIcon = _with2.Icon;
- mRemoteNG.My.Settings.InhDefaultPanel = _with2.Panel;
- mRemoteNG.My.Settings.InhDefaultUsername = _with2.Username;
- mRemoteNG.My.Settings.InhDefaultPassword = _with2.Password;
- mRemoteNG.My.Settings.InhDefaultDomain = _with2.Domain;
- mRemoteNG.My.Settings.InhDefaultProtocol = _with2.Protocol;
- mRemoteNG.My.Settings.InhDefaultPort = _with2.Port;
- mRemoteNG.My.Settings.InhDefaultPuttySession = _with2.PuttySession;
- mRemoteNG.My.Settings.InhDefaultUseConsoleSession = _with2.UseConsoleSession;
- mRemoteNG.My.Settings.InhDefaultUseCredSsp = _with2.UseCredSsp;
- mRemoteNG.My.Settings.InhDefaultRenderingEngine = _with2.RenderingEngine;
- mRemoteNG.My.Settings.InhDefaultICAEncryptionStrength = _with2.ICAEncryption;
- mRemoteNG.My.Settings.InhDefaultRDPAuthenticationLevel = _with2.RDPAuthenticationLevel;
- mRemoteNG.My.Settings.InhDefaultLoadBalanceInfo = _with2.LoadBalanceInfo;
- mRemoteNG.My.Settings.InhDefaultResolution = _with2.Resolution;
- mRemoteNG.My.Settings.InhDefaultAutomaticResize = _with2.AutomaticResize;
- mRemoteNG.My.Settings.InhDefaultColors = _with2.Colors;
- mRemoteNG.My.Settings.InhDefaultCacheBitmaps = _with2.CacheBitmaps;
- mRemoteNG.My.Settings.InhDefaultDisplayWallpaper = _with2.DisplayWallpaper;
- mRemoteNG.My.Settings.InhDefaultDisplayThemes = _with2.DisplayThemes;
- mRemoteNG.My.Settings.InhDefaultEnableFontSmoothing = _with2.EnableFontSmoothing;
- mRemoteNG.My.Settings.InhDefaultEnableDesktopComposition = _with2.EnableDesktopComposition;
- mRemoteNG.My.Settings.InhDefaultRedirectKeys = _with2.RedirectKeys;
- mRemoteNG.My.Settings.InhDefaultRedirectDiskDrives = _with2.RedirectDiskDrives;
- mRemoteNG.My.Settings.InhDefaultRedirectPrinters = _with2.RedirectPrinters;
- mRemoteNG.My.Settings.InhDefaultRedirectPorts = _with2.RedirectPorts;
- mRemoteNG.My.Settings.InhDefaultRedirectSmartCards = _with2.RedirectSmartCards;
- mRemoteNG.My.Settings.InhDefaultRedirectSound = _with2.RedirectSound;
- mRemoteNG.My.Settings.InhDefaultPreExtApp = _with2.PreExtApp;
- mRemoteNG.My.Settings.InhDefaultPostExtApp = _with2.PostExtApp;
- mRemoteNG.My.Settings.InhDefaultMacAddress = _with2.MacAddress;
- mRemoteNG.My.Settings.InhDefaultUserField = _with2.UserField;
- // VNC inheritance
- mRemoteNG.My.Settings.InhDefaultVNCAuthMode = _with2.VNCAuthMode;
- mRemoteNG.My.Settings.InhDefaultVNCColors = _with2.VNCColors;
- mRemoteNG.My.Settings.InhDefaultVNCCompression = _with2.VNCCompression;
- mRemoteNG.My.Settings.InhDefaultVNCEncoding = _with2.VNCEncoding;
- mRemoteNG.My.Settings.InhDefaultVNCProxyIP = _with2.VNCProxyIP;
- mRemoteNG.My.Settings.InhDefaultVNCProxyPassword = _with2.VNCProxyPassword;
- mRemoteNG.My.Settings.InhDefaultVNCProxyPort = _with2.VNCProxyPort;
- mRemoteNG.My.Settings.InhDefaultVNCProxyType = _with2.VNCProxyType;
- mRemoteNG.My.Settings.InhDefaultVNCProxyUsername = _with2.VNCProxyUsername;
- mRemoteNG.My.Settings.InhDefaultVNCSmartSizeMode = _with2.VNCSmartSizeMode;
- mRemoteNG.My.Settings.InhDefaultVNCViewOnly = _with2.VNCViewOnly;
- // Ext. App inheritance
- mRemoteNG.My.Settings.InhDefaultExtApp = _with2.ExtApp;
- // RDP gateway inheritance
- mRemoteNG.My.Settings.InhDefaultRDGatewayUsageMethod = _with2.RDGatewayUsageMethod;
- mRemoteNG.My.Settings.InhDefaultRDGatewayHostname = _with2.RDGatewayHostname;
- mRemoteNG.My.Settings.InhDefaultRDGatewayUsername = _with2.RDGatewayUsername;
- mRemoteNG.My.Settings.InhDefaultRDGatewayPassword = _with2.RDGatewayPassword;
- mRemoteNG.My.Settings.InhDefaultRDGatewayDomain = _with2.RDGatewayDomain;
- mRemoteNG.My.Settings.InhDefaultRDGatewayUseConnectionCredentials = _with2.RDGatewayUseConnectionCredentials;
- }
- #endregion
-
- #region "Panels"
- public static System.Windows.Forms.Form AddPanel(string title = "", bool noTabber = false)
- {
- try {
- if (string.IsNullOrEmpty(title)) {
- title = mRemoteNG.My.Language.strNewPanel;
- }
-
- DockContent pnlcForm = new DockContent();
- UI.Window.Connection cForm = new UI.Window.Connection(pnlcForm);
- pnlcForm = cForm;
-
- //create context menu
- ContextMenuStrip cMen = new ContextMenuStrip();
-
- //create rename item
- ToolStripMenuItem cMenRen = new ToolStripMenuItem();
- cMenRen.Text = mRemoteNG.My.Language.strRename;
- cMenRen.Image = mRemoteNG.My.Resources.Rename;
- cMenRen.Tag = pnlcForm;
- cMenRen.Click += cMenConnectionPanelRename_Click;
-
- ToolStripMenuItem cMenScreens = new ToolStripMenuItem();
- cMenScreens.Text = mRemoteNG.My.Language.strSendTo;
- cMenScreens.Image = mRemoteNG.My.Resources.Monitor;
- cMenScreens.Tag = pnlcForm;
- cMenScreens.DropDownItems.Add("Dummy");
- cMenScreens.DropDownOpening += cMenConnectionPanelScreens_DropDownOpening;
-
- cMen.Items.AddRange(new ToolStripMenuItem[] {
- cMenRen,
- cMenScreens
- });
-
- pnlcForm.TabPageContextMenuStrip = cMen;
-
- (cForm as UI.Window.Connection).SetFormText(title.Replace("&", "&&"));
-
- pnlcForm.Show(My.MyProject.Forms.frmMain.pnlDock, DockState.Document);
-
- if (noTabber) {
- (cForm as UI.Window.Connection).TabController.Dispose();
- } else {
- WindowList.Add(cForm);
- }
-
- return cForm;
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't add panel" + Constants.vbNewLine + ex.Message);
- return null;
- }
- }
-
- private static void cMenConnectionPanelRename_Click(System.Object sender, System.EventArgs e)
- {
- try {
- UI.Window.Connection conW = null;
- conW = sender.Tag;
-
- string nTitle = Interaction.InputBox(mRemoteNG.My.Language.strNewTitle + ":", , sender.Tag.Text.Replace("&&", "&"));
-
- if (!string.IsNullOrEmpty(nTitle)) {
- conW.SetFormText(nTitle.Replace("&", "&&"));
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't rename panel" + Constants.vbNewLine + ex.Message);
- }
- }
-
- private static void cMenConnectionPanelScreens_DropDownOpening(System.Object sender, System.EventArgs e)
- {
- try {
- ToolStripMenuItem cMenScreens = sender;
- cMenScreens.DropDownItems.Clear();
-
- for (int i = 0; i <= Screen.AllScreens.Length - 1; i++) {
- ToolStripMenuItem cMenScreen = new ToolStripMenuItem(mRemoteNG.My.Language.strScreen + " " + i + 1);
- cMenScreen.Tag = new ArrayList();
- cMenScreen.Image = mRemoteNG.My.Resources.Monitor_GoTo;
- (cMenScreen.Tag as ArrayList).Add(Screen.AllScreens[i]);
- (cMenScreen.Tag as ArrayList).Add(cMenScreens.Tag);
- cMenScreen.Click += cMenConnectionPanelScreen_Click;
-
- cMenScreens.DropDownItems.Add(cMenScreen);
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't enumerate screens" + Constants.vbNewLine + ex.Message);
- }
- }
-
- private static void cMenConnectionPanelScreen_Click(object sender, System.EventArgs e)
- {
- try {
- Screen screen = (sender as ToolStripMenuItem).Tag(0);
- DockContent panel = (sender as ToolStripMenuItem).Tag(1);
- Screens.SendPanelToScreen(panel, screen);
- } catch (Exception ex) {
- }
- }
- #endregion
-
- #region "Credential Loading/Saving"
-
- public static void LoadCredentials()
- {
- }
- #endregion
-
- #region "Connections Loading/Saving"
- public static void NewConnections(string filename)
- {
- try {
- ConnectionList = new Connection.List();
- ContainerList = new Container.List();
-
- mRemoteNG.Config.Connections.Load connectionsLoad = new mRemoteNG.Config.Connections.Load();
-
- if (filename == GetDefaultStartupConnectionFileName()) {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
- } else {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = filename;
- }
-
- Directory.CreateDirectory(Path.GetDirectoryName(filename));
-
- // Use File.Open with FileMode.CreateNew so that we don't overwrite an existing file
- using (FileStream fileStream = File.Open(filename, FileMode.CreateNew, FileAccess.Write, FileShare.None)) {
- using (XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, System.Text.Encoding.UTF8)) {
- var _with3 = xmlTextWriter;
- _with3.Formatting = Formatting.Indented;
- _with3.Indentation = 4;
-
- _with3.WriteStartDocument();
-
- _with3.WriteStartElement("Connections");
- // Do not localize
- _with3.WriteAttributeString("Name", mRemoteNG.My.Language.strConnections);
- _with3.WriteAttributeString("Export", "", "False");
- _with3.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY");
- _with3.WriteAttributeString("ConfVersion", "", "2.5");
-
- _with3.WriteEndElement();
- _with3.WriteEndDocument();
-
- _with3.Close();
- }
- }
-
- connectionsLoad.ConnectionList = ConnectionList;
- connectionsLoad.ContainerList = ContainerList;
-
- mRemoteNG.Tree.Node.ResetTree();
-
- connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
-
- // Load config
- connectionsLoad.ConnectionFileName = filename;
- connectionsLoad.Load(false);
-
- Windows.treeForm.tvConnections.SelectedNode = connectionsLoad.RootTreeNode;
- } catch (Exception ex) {
- MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strCouldNotCreateNewConnectionsFile, ex, MessageClass.ErrorMsg);
- }
- }
-
- private static void LoadConnectionsBG(bool WithDialog = false, bool Update = false)
- {
- _withDialog = false;
- _loadUpdate = true;
-
- Thread t = new Thread(LoadConnectionsBGd);
- t.SetApartmentState(System.Threading.ApartmentState.STA);
- t.Start();
- }
-
- private static bool _withDialog = false;
- private static bool _loadUpdate = false;
- private static void LoadConnectionsBGd()
- {
- LoadConnections(_withDialog, _loadUpdate);
- }
-
- public static void LoadConnections(bool withDialog = false, bool update = false)
- {
- mRemoteNG.Config.Connections.Load connectionsLoad = new mRemoteNG.Config.Connections.Load();
-
- try {
- bool tmrWasEnabled = false;
- if (TimerSqlWatcher != null) {
- tmrWasEnabled = TimerSqlWatcher.Enabled;
-
- if (TimerSqlWatcher.Enabled == true) {
- TimerSqlWatcher.Stop();
- }
- }
-
- if (ConnectionList != null & ContainerList != null) {
- PreviousConnectionList = ConnectionList.Copy();
- PreviousContainerList = ContainerList.Copy();
- }
-
- ConnectionList = new Connection.List();
- ContainerList = new Container.List();
-
- if (!mRemoteNG.My.Settings.UseSQLServer) {
- if (withDialog) {
- OpenFileDialog loadDialog = mRemoteNG.Tools.Controls.ConnectionsLoadDialog();
-
- if (loadDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
- connectionsLoad.ConnectionFileName = loadDialog.FileName;
- } else {
- return;
- }
- } else {
- connectionsLoad.ConnectionFileName = GetStartupConnectionFileName();
- }
-
- CreateBackupFile(connectionsLoad.ConnectionFileName);
- }
-
- connectionsLoad.ConnectionList = ConnectionList;
- connectionsLoad.ContainerList = ContainerList;
-
- if (PreviousConnectionList != null & PreviousContainerList != null) {
- connectionsLoad.PreviousConnectionList = PreviousConnectionList;
- connectionsLoad.PreviousContainerList = PreviousContainerList;
- }
-
- if (update == true) {
- connectionsLoad.PreviousSelected = LastSelected;
- }
-
- mRemoteNG.Tree.Node.ResetTree();
-
- connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
-
- connectionsLoad.UseSQL = mRemoteNG.My.Settings.UseSQLServer;
- connectionsLoad.SQLHost = mRemoteNG.My.Settings.SQLHost;
- connectionsLoad.SQLDatabaseName = mRemoteNG.My.Settings.SQLDatabaseName;
- connectionsLoad.SQLUsername = mRemoteNG.My.Settings.SQLUser;
- connectionsLoad.SQLPassword = mRemoteNG.Security.Crypt.Decrypt(mRemoteNG.My.Settings.SQLPass, Info.General.EncryptionKey);
- connectionsLoad.SQLUpdate = update;
-
- connectionsLoad.Load(false);
-
- if (mRemoteNG.My.Settings.UseSQLServer == true) {
- LastSqlUpdate = DateAndTime.Now;
- } else {
- if (connectionsLoad.ConnectionFileName == GetDefaultStartupConnectionFileName()) {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
- } else {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = connectionsLoad.ConnectionFileName;
- }
- }
-
- if (tmrWasEnabled & TimerSqlWatcher != null) {
- TimerSqlWatcher.Start();
- }
- } catch (Exception ex) {
- if (mRemoteNG.My.Settings.UseSQLServer) {
- MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strLoadFromSqlFailed, ex);
- string commandButtons = string.Join("|", {
- mRemoteNG.My.Language.strCommandTryAgain,
- mRemoteNG.My.Language.strCommandOpenConnectionFile,
- string.Format(mRemoteNG.My.Language.strCommandExitProgram, Application.ProductName)
- });
- cTaskDialog.ShowCommandBox(Application.ProductName, mRemoteNG.My.Language.strLoadFromSqlFailed, mRemoteNG.My.Language.strLoadFromSqlFailedContent, Misc.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, eSysIcons.Error, null);
- switch (cTaskDialog.CommandButtonResult) {
- case 0:
- LoadConnections(withDialog, update);
- return;
- case 1:
- mRemoteNG.My.Settings.UseSQLServer = false;
- LoadConnections(true, update);
- return;
- default:
- Application.Exit();
- return;
- }
- } else {
- if (ex is FileNotFoundException & !withDialog) {
- MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotBeLoadedNew, connectionsLoad.ConnectionFileName), ex, MessageClass.InformationMsg);
- NewConnections(connectionsLoad.ConnectionFileName);
- return;
- }
-
- MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotBeLoaded, connectionsLoad.ConnectionFileName), ex);
- if (!(connectionsLoad.ConnectionFileName == GetStartupConnectionFileName())) {
- LoadConnections(withDialog, update);
- return;
- } else {
- Interaction.MsgBox(string.Format(mRemoteNG.My.Language.strErrorStartupConnectionFileLoad, Constants.vbNewLine, Application.ProductName, GetStartupConnectionFileName(), Misc.GetExceptionMessageRecursive(ex)), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical);
- Application.Exit();
- return;
- }
- }
- }
- }
-
- protected static void CreateBackupFile(string fileName)
- {
- // This intentionally doesn't prune any existing backup files. We just assume the user doesn't want any new ones created.
- if (mRemoteNG.My.Settings.BackupFileKeepCount == 0)
- return;
-
- try {
- string backupFileName = string.Format(mRemoteNG.My.Settings.BackupFileNameFormat, fileName, DateTime.UtcNow);
- File.Copy(fileName, backupFileName);
- PruneBackupFiles(fileName);
- } catch (Exception ex) {
- MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strConnectionsFileBackupFailed, ex, MessageClass.WarningMsg);
- throw;
- }
- }
-
- protected static void PruneBackupFiles(string baseName)
- {
- string fileName = Path.GetFileName(baseName);
- string directoryName = Path.GetDirectoryName(baseName);
-
- if (string.IsNullOrEmpty(fileName) | string.IsNullOrEmpty(directoryName))
- return;
-
- string searchPattern = string.Format(mRemoteNG.My.Settings.BackupFileNameFormat, fileName, "*");
- string[] files = Directory.GetFiles(directoryName, searchPattern);
-
- if (files.Length <= mRemoteNG.My.Settings.BackupFileKeepCount)
- return;
-
- Array.Sort(files);
- Array.Resize(ref files, files.Length - mRemoteNG.My.Settings.BackupFileKeepCount);
-
- foreach (string file in files) {
- System.IO.File.Delete(file);
- }
- }
-
- public static string GetDefaultStartupConnectionFileName()
- {
- string newPath = mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + Info.Connections.DefaultConnectionsFile;
- #if Not PORTABLE
- string oldPath = Environment.GetFolderPath(SpecialFolder.LocalApplicationData) + "\\" + mRemoteNG.My.MyProject.Application.Info.ProductName + "\\" + Info.Connections.DefaultConnectionsFile;
- if (File.Exists(oldPath)) {
- return oldPath;
- }
- #endif
- return newPath;
- }
-
- public static string GetStartupConnectionFileName()
- {
- if (mRemoteNG.My.Settings.LoadConsFromCustomLocation == false) {
- return GetDefaultStartupConnectionFileName();
- } else {
- return mRemoteNG.My.Settings.CustomConsPath;
- }
- }
-
- public static void SaveConnectionsBG()
- {
- _saveUpdate = true;
-
- Thread t = new Thread(SaveConnectionsBGd);
- t.SetApartmentState(System.Threading.ApartmentState.STA);
- t.Start();
- }
-
- private static bool _saveUpdate = false;
- private static object _saveLock = new object();
- private static void SaveConnectionsBGd()
- {
- Monitor.Enter(_saveLock);
- SaveConnections(_saveUpdate);
- Monitor.Exit(_saveLock);
- }
-
- public static void SaveConnections(bool Update = false)
- {
- if (!IsConnectionsFileLoaded)
- return;
-
- bool previousTimerState = false;
-
- try {
- if (Update == true & mRemoteNG.My.Settings.UseSQLServer == false) {
- return;
- }
-
- if (TimerSqlWatcher != null) {
- previousTimerState = TimerSqlWatcher.Enabled;
- TimerSqlWatcher.Enabled = false;
- }
-
- Config.Connections.Save conS = new Config.Connections.Save();
-
- if (!mRemoteNG.My.Settings.UseSQLServer) {
- conS.ConnectionFileName = GetStartupConnectionFileName();
- }
-
- conS.ConnectionList = ConnectionList;
- conS.ContainerList = ContainerList;
- conS.Export = false;
- conS.SaveSecurity = new Security.Save(false);
- conS.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
-
- if (mRemoteNG.My.Settings.UseSQLServer == true) {
- conS.SaveFormat = mRemoteNG.Config.Connections.Save.Format.SQL;
- conS.SQLHost = mRemoteNG.My.Settings.SQLHost;
- conS.SQLDatabaseName = mRemoteNG.My.Settings.SQLDatabaseName;
- conS.SQLUsername = mRemoteNG.My.Settings.SQLUser;
- conS.SQLPassword = mRemoteNG.Security.Crypt.Decrypt(mRemoteNG.My.Settings.SQLPass, mRemoteNG.App.Info.General.EncryptionKey);
- }
-
- conS.Save();
-
- if (mRemoteNG.My.Settings.UseSQLServer == true) {
- LastSqlUpdate = DateAndTime.Now;
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionsFileCouldNotBeSaved + Constants.vbNewLine + ex.Message);
- } finally {
- if (TimerSqlWatcher != null) {
- TimerSqlWatcher.Enabled = previousTimerState;
- }
- }
- }
-
- public static void SaveConnectionsAs()
- {
- bool previousTimerState = false;
- mRemoteNG.Config.Connections.Save connectionsSave = new mRemoteNG.Config.Connections.Save();
-
- try {
- if (TimerSqlWatcher != null) {
- previousTimerState = TimerSqlWatcher.Enabled;
- TimerSqlWatcher.Enabled = false;
- }
-
- using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {
- var _with4 = saveFileDialog;
- _with4.CheckPathExists = true;
- _with4.InitialDirectory = Info.Connections.DefaultConnectionsPath;
- _with4.FileName = Info.Connections.DefaultConnectionsFile;
- _with4.OverwritePrompt = true;
-
- List fileTypes = new List();
- fileTypes.AddRange({
- mRemoteNG.My.Language.strFiltermRemoteXML,
- "*.xml"
- });
- fileTypes.AddRange({
- mRemoteNG.My.Language.strFilterAll,
- "*.*"
- });
-
- _with4.Filter = string.Join("|", fileTypes.ToArray());
-
- if (!(saveFileDialog.ShowDialog(frmMain) == DialogResult.OK))
- return;
-
- var _with5 = connectionsSave;
- _with5.SaveFormat = mRemoteNG.Config.Connections.Save.Format.mRXML;
- _with5.ConnectionFileName = saveFileDialog.FileName;
- _with5.Export = false;
- _with5.SaveSecurity = new Security.Save();
- _with5.ConnectionList = ConnectionList;
- _with5.ContainerList = ContainerList;
- _with5.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
-
- connectionsSave.Save();
-
- if (saveFileDialog.FileName == GetDefaultStartupConnectionFileName()) {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
- } else {
- mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
- mRemoteNG.My.Settings.CustomConsPath = saveFileDialog.FileName;
- }
- }
- } catch (Exception ex) {
- MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotSaveAs, connectionsSave.ConnectionFileName), ex);
- } finally {
- if (TimerSqlWatcher != null) {
- TimerSqlWatcher.Enabled = previousTimerState;
- }
- }
- }
- #endregion
-
- #region "Opening Connection"
- public static Connection.Info CreateQuickConnect(string connectionString, mRemoteNG.Connection.Protocol.Protocols protocol)
- {
- try {
- Uri uri = new Uri("dummyscheme" + uri.SchemeDelimiter + connectionString);
-
- if (string.IsNullOrEmpty(uri.Host))
- return null;
-
- Connection.Info newConnectionInfo = new Connection.Info();
-
- if (mRemoteNG.My.Settings.IdentifyQuickConnectTabs) {
- newConnectionInfo.Name = string.Format(mRemoteNG.My.Language.strQuick, uri.Host);
- } else {
- newConnectionInfo.Name = uri.Host;
- }
-
- newConnectionInfo.Protocol = protocol;
- newConnectionInfo.Hostname = uri.Host;
- if (uri.Port == -1) {
- newConnectionInfo.SetDefaultPort();
- } else {
- newConnectionInfo.Port = uri.Port;
- }
- newConnectionInfo.IsQuickConnect = true;
-
- return newConnectionInfo;
- } catch (Exception ex) {
- MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strQuickConnectFailed, ex, MessageClass.ErrorMsg);
- return null;
- }
- }
-
- public static void OpenConnection()
- {
- try {
- OpenConnection(mRemoteNG.Connection.Info.Force.None);
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void OpenConnection(mRemoteNG.Connection.Info.Force Force)
- {
- try {
- if (Windows.treeForm.tvConnections.SelectedNode.Tag == null) {
- return;
- }
-
- if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession) {
- OpenConnection(Windows.treeForm.tvConnections.SelectedNode.Tag, Force);
- } else if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Container) {
- foreach (TreeNode tNode in mRemoteNG.Tree.Node.SelectedNode.Nodes) {
- if (mRemoteNG.Tree.Node.GetNodeType(tNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession) {
- if (tNode.Tag != null) {
- OpenConnection(tNode.Tag, Force);
- }
- }
- }
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo)
- {
- try {
- OpenConnection(ConnectionInfo, mRemoteNG.Connection.Info.Force.None);
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm)
- {
- try {
- OpenConnectionFinal(ConnectionInfo, mRemoteNG.Connection.Info.Force.None, ConnectionForm);
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm, Connection.Info.Force Force)
- {
- try {
- OpenConnectionFinal(ConnectionInfo, Force, ConnectionForm);
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, mRemoteNG.Connection.Info.Force Force)
- {
- try {
- OpenConnectionFinal(ConnectionInfo, Force, null);
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- private static void OpenConnectionFinal(mRemoteNG.Connection.Info newConnectionInfo, mRemoteNG.Connection.Info.Force Force, System.Windows.Forms.Form ConForm)
- {
- try {
- if (string.IsNullOrEmpty(newConnectionInfo.Hostname) & newConnectionInfo.Protocol != mRemoteNG.Connection.Protocol.Protocols.IntApp) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strConnectionOpenFailedNoHostname);
- return;
- }
-
- if (!string.IsNullOrEmpty(newConnectionInfo.PreExtApp)) {
- Tools.ExternalTool extA = mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.PreExtApp);
- if (extA != null) {
- extA.Start(newConnectionInfo);
- }
- }
-
- if ((Force & mRemoteNG.Connection.Info.Force.DoNotJump) != mRemoteNG.Connection.Info.Force.DoNotJump) {
- if (SwitchToOpenConnection(newConnectionInfo)) {
- return;
- }
- }
-
- mRemoteNG.Connection.Protocol.Base newProtocol = null;
- // Create connection based on protocol type
- switch (newConnectionInfo.Protocol) {
- case mRemoteNG.Connection.Protocol.Protocols.RDP:
- newProtocol = new mRemoteNG.Connection.Protocol.RDP();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.VNC:
- newProtocol = new mRemoteNG.Connection.Protocol.VNC();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.SSH1:
- newProtocol = new mRemoteNG.Connection.Protocol.SSH1();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.SSH2:
- newProtocol = new mRemoteNG.Connection.Protocol.SSH2();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.Telnet:
- newProtocol = new mRemoteNG.Connection.Protocol.Telnet();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.Rlogin:
- newProtocol = new mRemoteNG.Connection.Protocol.Rlogin();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.RAW:
- newProtocol = new mRemoteNG.Connection.Protocol.RAW();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.HTTP:
- newProtocol = new mRemoteNG.Connection.Protocol.HTTP(newConnectionInfo.RenderingEngine);
- break;
- case mRemoteNG.Connection.Protocol.Protocols.HTTPS:
- newProtocol = new mRemoteNG.Connection.Protocol.HTTPS(newConnectionInfo.RenderingEngine);
- break;
- case mRemoteNG.Connection.Protocol.Protocols.ICA:
- newProtocol = new mRemoteNG.Connection.Protocol.ICA();
- break;
- case mRemoteNG.Connection.Protocol.Protocols.IntApp:
- newProtocol = new mRemoteNG.Connection.Protocol.IntegratedProgram();
-
- if (string.IsNullOrEmpty(newConnectionInfo.ExtApp)) {
- throw new Exception(mRemoteNG.My.Language.strNoExtAppDefined);
- }
- break;
- default:
- return;
-
- break;
- }
-
- Control cContainer = null;
- System.Windows.Forms.Form cForm = null;
-
- string cPnl = null;
- if (string.IsNullOrEmpty(newConnectionInfo.Panel) | (Force & mRemoteNG.Connection.Info.Force.OverridePanel) == mRemoteNG.Connection.Info.Force.OverridePanel | mRemoteNG.My.Settings.AlwaysShowPanelSelectionDlg) {
- frmChoosePanel frmPnl = new frmChoosePanel();
- if (frmPnl.ShowDialog() == DialogResult.OK) {
- cPnl = frmPnl.Panel;
- } else {
- return;
- }
- } else {
- cPnl = newConnectionInfo.Panel;
- }
-
- if (ConForm == null) {
- cForm = WindowList.FromString(cPnl);
- } else {
- cForm = ConForm;
- }
-
- if (cForm == null) {
- cForm = AddPanel(cPnl);
- cForm.Focus();
- } else {
- (cForm as UI.Window.Connection).Show(My.MyProject.Forms.frmMain.pnlDock);
- (cForm as UI.Window.Connection).Focus();
- }
-
- cContainer = (cForm as UI.Window.Connection).AddConnectionTab(newConnectionInfo);
-
- if (newConnectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.IntApp) {
- if (mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon != null) {
- (cContainer as Magic.Controls.TabPage).Icon = mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon;
- }
- }
-
- newProtocol.Closed += (cForm as UI.Window.Connection).Prot_Event_Closed;
-
- newProtocol.Disconnected += Prot_Event_Disconnected;
- newProtocol.Connected += Prot_Event_Connected;
- newProtocol.Closed += Prot_Event_Closed;
- newProtocol.ErrorOccured += Prot_Event_ErrorOccured;
-
- newProtocol.InterfaceControl = new Connection.InterfaceControl(cContainer, newProtocol, newConnectionInfo);
-
- newProtocol.Force = Force;
-
- if (newProtocol.SetProps() == false) {
- newProtocol.Close();
- return;
- }
-
- if (newProtocol.Connect() == false) {
- newProtocol.Close();
- return;
- }
-
- newConnectionInfo.OpenConnections.Add(newProtocol);
-
- if (newConnectionInfo.IsQuickConnect == false) {
- if (newConnectionInfo.Protocol != mRemoteNG.Connection.Protocol.Protocols.IntApp) {
- mRemoteNG.Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionOpen);
- } else {
- Tools.ExternalTool extApp = GetExtAppByName(newConnectionInfo.ExtApp);
- if (extApp != null) {
- if (extApp.TryIntegrate) {
- if (newConnectionInfo.TreeNode != null) {
- mRemoteNG.Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionOpen);
- }
- }
- }
- }
- }
-
- My.MyProject.Forms.frmMain.SelectedConnection = newConnectionInfo;
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
- }
- }
-
- public static bool SwitchToOpenConnection(Connection.Info nCi)
- {
- mRemoteNG.Connection.InterfaceControl IC = FindConnectionContainer(nCi);
-
- if (IC != null) {
- (IC.FindForm() as UI.Window.Connection).Focus();
- (IC.FindForm() as UI.Window.Connection).Show(My.MyProject.Forms.frmMain.pnlDock);
- Crownwood.Magic.Controls.TabPage t = IC.Parent;
- t.Selected = true;
- return true;
- }
-
- return false;
- }
- #endregion
-
- #region "Event Handlers"
- public static void Prot_Event_Disconnected(object sender, string DisconnectedMessage)
- {
- try {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, string.Format(mRemoteNG.My.Language.strProtocolEventDisconnected, DisconnectedMessage), true);
-
- Connection.Protocol.Base Prot = sender;
- if (Prot.InterfaceControl.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP) {
- string[] Reason = DisconnectedMessage.Split(Constants.vbCrLf);
- string ReasonCode = Reason[0];
- string ReasonDescription = Reason[1];
- if (ReasonCode > 3) {
- if (!string.IsNullOrEmpty(ReasonDescription)) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strRdpDisconnected + Constants.vbNewLine + ReasonDescription + Constants.vbNewLine + string.Format(mRemoteNG.My.Language.strErrorCode, ReasonCode));
- } else {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strRdpDisconnected + Constants.vbNewLine + string.Format(mRemoteNG.My.Language.strErrorCode, ReasonCode));
- }
- }
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, string.Format(mRemoteNG.My.Language.strProtocolEventDisconnectFailed, ex.Message), true);
- }
- }
-
- public static void Prot_Event_Closed(object sender)
- {
- try {
- Connection.Protocol.Base Prot = sender;
-
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnenctionCloseEvent, true);
-
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ReportMsg, string.Format(mRemoteNG.My.Language.strConnenctionClosedByUser, Prot.InterfaceControl.Info.Hostname, Prot.InterfaceControl.Info.Protocol.ToString(), mRemoteNG.My.MyProject.User.Name));
-
- Prot.InterfaceControl.Info.OpenConnections.Remove(Prot);
-
- if (Prot.InterfaceControl.Info.OpenConnections.Count < 1 & Prot.InterfaceControl.Info.IsQuickConnect == false) {
- mRemoteNG.Tree.Node.SetNodeImage(Prot.InterfaceControl.Info.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionClosed);
- }
-
- if (!string.IsNullOrEmpty(Prot.InterfaceControl.Info.PostExtApp)) {
- Tools.ExternalTool extA = mRemoteNG.App.Runtime.GetExtAppByName(Prot.InterfaceControl.Info.PostExtApp);
- if (extA != null) {
- extA.Start(Prot.InterfaceControl.Info);
- }
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnenctionCloseEventFailed + Constants.vbNewLine + ex.Message, true);
- }
- }
-
- public static void Prot_Event_Connected(object sender)
- {
- mRemoteNG.Connection.Protocol.Base prot = sender;
-
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnectionEventConnected, true);
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ReportMsg, string.Format(mRemoteNG.My.Language.strConnectionEventConnectedDetail, prot.InterfaceControl.Info.Hostname, prot.InterfaceControl.Info.Protocol.ToString(), mRemoteNG.My.MyProject.User.Name, prot.InterfaceControl.Info.Description, prot.InterfaceControl.Info.UserField));
- }
-
- public static void Prot_Event_ErrorOccured(object sender, string ErrorMessage)
- {
- try {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnectionEventErrorOccured, true);
-
- Connection.Protocol.Base Prot = sender;
-
- if (Prot.InterfaceControl.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP) {
- if (ErrorMessage > -1) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, string.Format(mRemoteNG.My.Language.strConnectionRdpErrorDetail, ErrorMessage, mRemoteNG.Connection.Protocol.RDP.FatalErrors.GetError(ErrorMessage)));
- }
- }
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionEventConnectionFailed + Constants.vbNewLine + ex.Message, true);
- }
- }
- #endregion
-
- #region "External Apps"
- public static Tools.ExternalTool GetExtAppByName(string Name)
- {
- foreach (Tools.ExternalTool extA in ExternalTools) {
- if (extA.DisplayName == Name) {
- return extA;
- }
- }
-
- return null;
- }
- #endregion
-
- #region "Misc"
- public static void GoToURL(string URL)
- {
- mRemoteNG.Connection.Info cI = new mRemoteNG.Connection.Info();
-
- cI.Name = "";
- cI.Hostname = URL;
- if (URL.StartsWith("https:")) {
- cI.Protocol = mRemoteNG.Connection.Protocol.Protocols.HTTPS;
- } else {
- cI.Protocol = mRemoteNG.Connection.Protocol.Protocols.HTTP;
- }
- cI.SetDefaultPort();
- cI.IsQuickConnect = true;
-
- mRemoteNG.App.Runtime.OpenConnection(cI, mRemoteNG.Connection.Info.Force.DoNotJump);
- }
-
- public static void GoToWebsite()
- {
- GoToURL(mRemoteNG.App.Info.General.URLHome);
- }
-
- public static void GoToDonate()
- {
- GoToURL(mRemoteNG.App.Info.General.URLDonate);
- }
-
- public static void GoToForum()
- {
- GoToURL(mRemoteNG.App.Info.General.URLForum);
- }
-
- public static void GoToBugs()
- {
- GoToURL(mRemoteNG.App.Info.General.URLBugs);
- }
-
- public static void Report(string Text)
- {
- try {
- StreamWriter sWr = new StreamWriter(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Report.log", true);
- sWr.WriteLine(Text);
- sWr.Close();
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strLogWriteToFileFailed);
- }
- }
-
- public static bool SaveReport()
- {
- StreamReader streamReader = null;
- StreamWriter streamWriter = null;
- try {
- streamReader = new StreamReader(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Report.log");
- string text = streamReader.ReadToEnd();
- streamReader.Close();
-
- streamWriter = new StreamWriter(mRemoteNG.App.Info.General.ReportingFilePath, true);
- streamWriter.Write(text);
-
- return true;
- } catch (Exception ex) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strLogWriteToFileFinalLocationFailed + Constants.vbNewLine + ex.Message, true);
- return false;
- } finally {
- if (streamReader != null) {
- streamReader.Close();
- streamReader.Dispose();
- }
- if (streamWriter != null) {
- streamWriter.Close();
- streamWriter.Dispose();
- }
- }
- }
-
- public static Connection.InterfaceControl FindConnectionContainer(Connection.Info ConI)
- {
- if (ConI.OpenConnections.Count > 0) {
- for (int i = 0; i <= WindowList.Count - 1; i++) {
- if (WindowList[i] is UI.Window.Connection) {
- UI.Window.Connection conW = WindowList[i];
-
- if (conW.TabController != null) {
- foreach (Crownwood.Magic.Controls.TabPage t in conW.TabController.TabPages) {
- if (t.Controls[0] != null) {
- if (t.Controls[0] is Connection.InterfaceControl) {
- Connection.InterfaceControl IC = t.Controls[0];
- if (object.ReferenceEquals(IC.Info, ConI)) {
- return IC;
- }
- }
- }
- }
- }
- }
- }
- }
-
- return null;
- }
-
- // Override the font of all controls in a container with the default font based on the OS version
- public static void FontOverride(ref Control ctlParent)
- {
- Control ctlChild = null;
- foreach (Control ctlChild_loopVariable in ctlParent.Controls) {
- ctlChild = ctlChild_loopVariable;
- ctlChild.Font = new System.Drawing.Font(SystemFonts.MessageBoxFont.Name, ctlChild.Font.Size, ctlChild.Font.Style, ctlChild.Font.Unit, ctlChild.Font.GdiCharSet);
- if (ctlChild.Controls.Count > 0) {
- FontOverride(ref ctlChild);
- }
- }
- }
- #endregion
-
- #region "SQL Watcher"
- private static void tmrSqlWatcher_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
- {
- mRemoteNG.Tools.Misc.IsSQLUpdateAvailableBG();
- }
-
- private static void SQLUpdateCheckFinished(bool UpdateAvailable)
- {
- if (UpdateAvailable == true) {
- MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strSqlUpdateCheckUpdateAvailable, true);
- LoadConnectionsBG();
- }
- }
- #endregion
-
- }
+ };
+ try {
+ proccesses = Process.GetProcessesByName("virtscrl");
+ } catch {
+ }
+ if (proccesses.Length == 0)
+ return;
+
+ cTaskDialog.MessageBox(Application.ProductName, mRemoteNG.My.Language.strCompatibilityProblemDetected, string.Format(mRemoteNG.My.Language.strCompatibilityLenovoAutoScrollUtilityDetected, System.Windows.Forms.Application.ProductName), "", "", mRemoteNG.My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.OK, eSysIcons.Warning, null);
+ if (cTaskDialog.VerificationChecked) {
+ mRemoteNG.My.Settings.CompatibilityWarnLenovoAutoScrollUtility = false;
+ }
+ }
+
+ public static void CreatePanels()
+ {
+ Windows.configForm = new UI.Window.Config(Windows.configPanel);
+ Windows.configPanel = Windows.configForm;
+
+ Windows.treeForm = new UI.Window.Tree(Windows.treePanel);
+ Windows.treePanel = Windows.treeForm;
+ mRemoteNG.Tree.Node.TreeView = Windows.treeForm.tvConnections;
+
+ Windows.errorsForm = new UI.Window.ErrorsAndInfos(Windows.errorsPanel);
+ Windows.errorsPanel = Windows.errorsForm;
+
+ Windows.sessionsForm = new UI.Window.Sessions(Windows.sessionsPanel);
+ Windows.sessionsPanel = Windows.sessionsForm;
+
+ Windows.screenshotForm = new UI.Window.ScreenshotManager(Windows.screenshotPanel);
+ Windows.screenshotPanel = Windows.screenshotForm;
+
+ Windows.updateForm = new UI.Window.Update(Windows.updatePanel);
+ Windows.updatePanel = Windows.updateForm;
+
+ Windows.AnnouncementForm = new UI.Window.Announcement(Windows.AnnouncementPanel);
+ Windows.AnnouncementPanel = Windows.AnnouncementForm;
+ }
+
+ public static void SetDefaultLayout()
+ {
+ My.MyProject.Forms.frmMain.pnlDock.Visible = false;
+
+ My.MyProject.Forms.frmMain.pnlDock.DockLeftPortion = My.MyProject.Forms.frmMain.pnlDock.Width * 0.2;
+ My.MyProject.Forms.frmMain.pnlDock.DockRightPortion = My.MyProject.Forms.frmMain.pnlDock.Width * 0.2;
+ My.MyProject.Forms.frmMain.pnlDock.DockTopPortion = My.MyProject.Forms.frmMain.pnlDock.Height * 0.25;
+ My.MyProject.Forms.frmMain.pnlDock.DockBottomPortion = My.MyProject.Forms.frmMain.pnlDock.Height * 0.25;
+
+ Windows.treePanel.Show(My.MyProject.Forms.frmMain.pnlDock, DockState.DockLeft);
+ Windows.configPanel.Show(My.MyProject.Forms.frmMain.pnlDock);
+ Windows.configPanel.DockTo(Windows.treePanel.Pane, DockStyle.Bottom, -1);
+
+ Windows.screenshotForm.Hide();
+
+ My.MyProject.Forms.frmMain.pnlDock.Visible = true;
+ }
+
+ public static void GetConnectionIcons()
+ {
+ string iPath = mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Icons\\";
+
+ if (Directory.Exists(iPath) == false) {
+ return;
+ }
+
+ foreach (string f in Directory.GetFiles(iPath, "*.ico", SearchOption.AllDirectories)) {
+ FileInfo fInfo = new FileInfo(f);
+
+ Array.Resize(ref mRemoteNG.Connection.Icon.Icons, mRemoteNG.Connection.Icon.Icons.Length + 1);
+ mRemoteNG.Connection.Icon.Icons.SetValue(fInfo.Name.Replace(".ico", ""), mRemoteNG.Connection.Icon.Icons.Length - 1);
+ }
+ }
+
+ public static void CreateLogger()
+ {
+ log4net.Config.XmlConfigurator.Configure();
+
+ string logFilePath = null;
+ #if !PORTABLE
+ logFilePath = Path.Combine(Environment.GetFolderPath(SpecialFolder.LocalApplicationData), Application.ProductName);
+ #else
+ logFilePath = Application.StartupPath;
+ #endif
+ string logFileName = Path.ChangeExtension(Application.ProductName, ".log");
+ string logFile = Path.Combine(logFilePath, logFileName);
+
+ log4net.Repository.ILoggerRepository repository = LogManager.GetRepository();
+ log4net.Appender.IAppender[] appenders = repository.GetAppenders();
+ log4net.Appender.FileAppender fileAppender = null;
+ foreach (log4net.Appender.IAppender appender in appenders) {
+ fileAppender = appender as Appender.FileAppender;
+ if (!(fileAppender == null || !(fileAppender.Name == "LogFileAppender"))) {
+ fileAppender.File = logFile;
+ fileAppender.ActivateOptions();
+ }
+ }
+
+ Runtime.Log = LogManager.GetLogger("Logger");
+
+ #if !PORTABLE
+ if (mRemoteNG.My.Settings.WriteLogFile) {
+ Runtime.Log.InfoFormat("{0} {1} starting.", Application.ProductName, Application.ProductVersion);
+ #else
+ Runtime.Log.InfoFormat("{0} {1} {2} starting.", Application.ProductName, Application.ProductVersion, mRemoteNG.My.Language.strLabelPortableEdition);
+ #endif
+ Runtime.Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs());
+
+ string osVersion = string.Empty;
+ string servicePack = string.Empty;
+ try {
+ foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary=True").Get()) {
+ osVersion = managementObject.GetPropertyValue("Caption").Trim();
+ int servicePackNumber = (int)managementObject.GetPropertyValue("ServicePackMajorVersion");
+ if (!(servicePackNumber == 0))
+ servicePack = string.Format("Service Pack {0}", servicePackNumber);
+ }
+ } catch (Exception ex) {
+ Runtime.Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message);
+ }
+
+ string architecture = string.Empty;
+ try {
+ foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID='CPU0'").Get()) {
+ int addressWidth = (int)managementObject.GetPropertyValue("AddressWidth");
+ architecture = string.Format("{0}-bit", addressWidth);
+ }
+ } catch (Exception ex) {
+ Runtime.Log.WarnFormat("Error retrieving operating system address width from WMI. {0}", ex.Message);
+ }
+
+ Runtime.Log.InfoFormat(string.Join(" ", Array.FindAll(new string[] {
+ osVersion,
+ servicePack,
+ architecture
+ }, s => !string.IsNullOrEmpty(s))));
+
+ Runtime.Log.InfoFormat("Microsoft .NET CLR {0}", Environment.Version.ToString());
+ Runtime.Log.InfoFormat("System Culture: {0}/{1}", Thread.CurrentThread.CurrentUICulture.Name, Thread.CurrentThread.CurrentUICulture.NativeName);
+ }
+ }
+
+ private static Update _appUpdate;
+ public static void CheckForUpdate()
+ {
+ if (_appUpdate == null) {
+ _appUpdate = new Update();
+ } else if (_appUpdate.IsGetUpdateInfoRunning) {
+ return;
+ }
+
+ System.DateTime nextUpdateCheck = mRemoteNG.My.Settings.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(mRemoteNG.My.Settings.CheckForUpdatesFrequencyDays));
+
+ if (!mRemoteNG.My.Settings.UpdatePending & System.DateTime.UtcNow < nextUpdateCheck)
+ return;
+
+ _appUpdate.GetUpdateInfoCompletedEvent += GetUpdateInfoCompleted;
+ _appUpdate.GetUpdateInfoAsync();
+ }
+
+ private static void GetUpdateInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (Runtime.MainForm.InvokeRequired) {
+ Runtime.MainForm.Invoke(new AsyncCompletedEventHandler(GetUpdateInfoCompleted), new object[] {
+ sender,
+ e
+ });
+ return;
+ }
+
+ try {
+ _appUpdate.GetUpdateInfoCompletedEvent -= GetUpdateInfoCompleted;
+
+ if (e.Cancelled)
+ return;
+ if (e.Error != null)
+ throw e.Error;
+
+ if (_appUpdate.IsUpdateAvailable())
+ Windows.Show(mRemoteNG.UI.Window.Type.Update);
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddExceptionMessage("GetUpdateInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public static void CheckForAnnouncement()
+ {
+ if (_appUpdate == null) {
+ _appUpdate = new Update();
+ } else if (_appUpdate.IsGetAnnouncementInfoRunning) {
+ return;
+ }
+
+ _appUpdate.GetAnnouncementInfoCompletedEvent += GetAnnouncementInfoCompleted;
+ _appUpdate.GetAnnouncementInfoAsync();
+ }
+
+ private static void GetAnnouncementInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (Runtime.MainForm.InvokeRequired) {
+ Runtime.MainForm.Invoke(new AsyncCompletedEventHandler(GetAnnouncementInfoCompleted), new object[] {
+ sender,
+ e
+ });
+ return;
+ }
+
+ try {
+ _appUpdate.GetAnnouncementInfoCompletedEvent -= GetAnnouncementInfoCompleted;
+
+ if (e.Cancelled)
+ return;
+ if (e.Error != null)
+ throw e.Error;
+
+ if (_appUpdate.IsAnnouncementAvailable())
+ Windows.Show(mRemoteNG.UI.Window.Type.Announcement);
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddExceptionMessage("GetAnnouncementInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public static void ParseCommandLineArgs()
+ {
+ try {
+ Tools.Misc.CMDArguments cmd = new Tools.Misc.CMDArguments(Environment.GetCommandLineArgs());
+
+ string ConsParam = "";
+ if (cmd["cons"] != null) {
+ ConsParam = "cons";
+ }
+ if (cmd["c"] != null) {
+ ConsParam = "c";
+ }
+
+ string ResetPosParam = "";
+ if (cmd["resetpos"] != null) {
+ ResetPosParam = "resetpos";
+ }
+ if (cmd["rp"] != null) {
+ ResetPosParam = "rp";
+ }
+
+ string ResetPanelsParam = "";
+ if (cmd["resetpanels"] != null) {
+ ResetPanelsParam = "resetpanels";
+ }
+ if (cmd["rpnl"] != null) {
+ ResetPanelsParam = "rpnl";
+ }
+
+ string ResetToolbarsParam = "";
+ if (cmd["resettoolbar"] != null) {
+ ResetToolbarsParam = "resettoolbar";
+ }
+ if (cmd["rtbr"] != null) {
+ ResetToolbarsParam = "rtbr";
+ }
+
+ if (cmd["reset"] != null) {
+ ResetPosParam = "rp";
+ ResetPanelsParam = "rpnl";
+ ResetToolbarsParam = "rtbr";
+ }
+
+ string NoReconnectParam = "";
+ if (cmd["noreconnect"] != null) {
+ NoReconnectParam = "noreconnect";
+ }
+ if (cmd["norc"] != null) {
+ NoReconnectParam = "norc";
+ }
+
+ if (!string.IsNullOrEmpty(ConsParam)) {
+ if (File.Exists(cmd[ConsParam]) == false) {
+ if (File.Exists(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\" + cmd[ConsParam])) {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\" + cmd[ConsParam];
+ return;
+ } else if (File.Exists(mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam])) {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam];
+ return;
+ }
+ } else {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = cmd[ConsParam];
+ return;
+ }
+ }
+
+ if (!string.IsNullOrEmpty(ResetPosParam)) {
+ mRemoteNG.My.Settings.MainFormKiosk = false;
+ mRemoteNG.My.Settings.MainFormLocation = new Point(999, 999);
+ mRemoteNG.My.Settings.MainFormSize = new Size(900, 600);
+ mRemoteNG.My.Settings.MainFormState = FormWindowState.Normal;
+ }
+
+ if (!string.IsNullOrEmpty(ResetPanelsParam)) {
+ mRemoteNG.My.Settings.ResetPanels = true;
+ }
+
+ if (!string.IsNullOrEmpty(NoReconnectParam)) {
+ mRemoteNG.My.Settings.NoReconnect = true;
+ }
+
+ if (!string.IsNullOrEmpty(ResetToolbarsParam)) {
+ mRemoteNG.My.Settings.ResetToolbars = true;
+ }
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strCommandLineArgsCouldNotBeParsed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void CreateSQLUpdateHandlerAndStartTimer()
+ {
+ if (mRemoteNG.My.Settings.UseSQLServer == true) {
+ mRemoteNG.Tools.Misc.SQLUpdateCheckFinished += Runtime.SQLUpdateCheckFinished;
+ Runtime.TimerSqlWatcher = new System.Timers.Timer(3000);
+ Runtime.TimerSqlWatcher.Start();
+ }
+ }
+
+ public static void DestroySQLUpdateHandlerAndStopTimer()
+ {
+ try {
+ Runtime.LastSqlUpdate = null;
+ mRemoteNG.Tools.Misc.SQLUpdateCheckFinished -= Runtime.SQLUpdateCheckFinished;
+ if (Runtime.TimerSqlWatcher != null) {
+ Runtime.TimerSqlWatcher.Stop();
+ Runtime.TimerSqlWatcher.Close();
+ }
+ } catch (Exception ex) {
+ }
+ }
+ }
+
+ public class Shutdown
+ {
+ public static void Quit(string updateFilePath = null)
+ {
+ _updateFilePath = updateFilePath;
+ My.MyProject.Forms.frmMain.Close();
+ }
+
+ public static void Cleanup()
+ {
+ try {
+ mRemoteNG.Config.Putty.Sessions.StopWatcher();
+
+ if (Runtime.NotificationAreaIcon != null) {
+ if (Runtime.NotificationAreaIcon.Disposed == false) {
+ Runtime.NotificationAreaIcon.Dispose();
+ }
+ }
+
+ if (mRemoteNG.My.Settings.SaveConsOnExit)
+ Runtime.SaveConnections();
+
+ mRemoteNG.Config.Settings.Save.Save();
+
+ IeBrowserEmulation.Unregister();
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, mRemoteNG.My.Language.strSettingsCouldNotBeSavedOrTrayDispose + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void StartUpdate()
+ {
+ if (!UpdatePending())
+ return;
+ try {
+ Process.Start(_updateFilePath);
+ } catch (Exception ex) {
+ Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "The update could not be started." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+
+ private static string _updateFilePath = null;
+ public static bool UpdatePending {
+ get { return !string.IsNullOrEmpty(_updateFilePath); }
+ }
+ }
+ #endregion
+
+ #region "Default Connection"
+ public static Connection.Info DefaultConnectionFromSettings()
+ {
+ DefaultConnection = new Connection.Info();
+ DefaultConnection.IsDefault = true;
+
+ return DefaultConnection;
+ }
+
+ public static void DefaultConnectionToSettings()
+ {
+ var _with1 = DefaultConnection;
+ mRemoteNG.My.Settings.ConDefaultDescription = _with1.Description;
+ mRemoteNG.My.Settings.ConDefaultIcon = _with1.Icon;
+ mRemoteNG.My.Settings.ConDefaultUsername = _with1.Username;
+ mRemoteNG.My.Settings.ConDefaultPassword = _with1.Password;
+ mRemoteNG.My.Settings.ConDefaultDomain = _with1.Domain;
+ mRemoteNG.My.Settings.ConDefaultProtocol = _with1.Protocol.ToString;
+ mRemoteNG.My.Settings.ConDefaultPuttySession = _with1.PuttySession;
+ mRemoteNG.My.Settings.ConDefaultICAEncryptionStrength = _with1.ICAEncryption.ToString;
+ mRemoteNG.My.Settings.ConDefaultRDPAuthenticationLevel = _with1.RDPAuthenticationLevel.ToString;
+ mRemoteNG.My.Settings.ConDefaultLoadBalanceInfo = _with1.LoadBalanceInfo;
+ mRemoteNG.My.Settings.ConDefaultUseConsoleSession = _with1.UseConsoleSession;
+ mRemoteNG.My.Settings.ConDefaultUseCredSsp = _with1.UseCredSsp;
+ mRemoteNG.My.Settings.ConDefaultRenderingEngine = _with1.RenderingEngine.ToString;
+ mRemoteNG.My.Settings.ConDefaultResolution = _with1.Resolution.ToString;
+ mRemoteNG.My.Settings.ConDefaultAutomaticResize = _with1.AutomaticResize;
+ mRemoteNG.My.Settings.ConDefaultColors = _with1.Colors.ToString;
+ mRemoteNG.My.Settings.ConDefaultCacheBitmaps = _with1.CacheBitmaps;
+ mRemoteNG.My.Settings.ConDefaultDisplayWallpaper = _with1.DisplayWallpaper;
+ mRemoteNG.My.Settings.ConDefaultDisplayThemes = _with1.DisplayThemes;
+ mRemoteNG.My.Settings.ConDefaultEnableFontSmoothing = _with1.EnableFontSmoothing;
+ mRemoteNG.My.Settings.ConDefaultEnableDesktopComposition = _with1.EnableDesktopComposition;
+ mRemoteNG.My.Settings.ConDefaultRedirectKeys = _with1.RedirectKeys;
+ mRemoteNG.My.Settings.ConDefaultRedirectDiskDrives = _with1.RedirectDiskDrives;
+ mRemoteNG.My.Settings.ConDefaultRedirectPrinters = _with1.RedirectPrinters;
+ mRemoteNG.My.Settings.ConDefaultRedirectPorts = _with1.RedirectPorts;
+ mRemoteNG.My.Settings.ConDefaultRedirectSmartCards = _with1.RedirectSmartCards;
+ mRemoteNG.My.Settings.ConDefaultRedirectSound = _with1.RedirectSound.ToString;
+ mRemoteNG.My.Settings.ConDefaultPreExtApp = _with1.PreExtApp;
+ mRemoteNG.My.Settings.ConDefaultPostExtApp = _with1.PostExtApp;
+ mRemoteNG.My.Settings.ConDefaultMacAddress = _with1.MacAddress;
+ mRemoteNG.My.Settings.ConDefaultUserField = _with1.UserField;
+ mRemoteNG.My.Settings.ConDefaultVNCAuthMode = _with1.VNCAuthMode.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCColors = _with1.VNCColors.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCCompression = _with1.VNCCompression.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCEncoding = _with1.VNCEncoding.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCProxyIP = _with1.VNCProxyIP;
+ mRemoteNG.My.Settings.ConDefaultVNCProxyPassword = _with1.VNCProxyPassword;
+ mRemoteNG.My.Settings.ConDefaultVNCProxyPort = _with1.VNCProxyPort;
+ mRemoteNG.My.Settings.ConDefaultVNCProxyType = _with1.VNCProxyType.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCProxyUsername = _with1.VNCProxyUsername;
+ mRemoteNG.My.Settings.ConDefaultVNCSmartSizeMode = _with1.VNCSmartSizeMode.ToString;
+ mRemoteNG.My.Settings.ConDefaultVNCViewOnly = _with1.VNCViewOnly;
+ mRemoteNG.My.Settings.ConDefaultExtApp = _with1.ExtApp;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayUsageMethod = _with1.RDGatewayUsageMethod.ToString;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayHostname = _with1.RDGatewayHostname;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayUsername = _with1.RDGatewayUsername;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayPassword = _with1.RDGatewayPassword;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayDomain = _with1.RDGatewayDomain;
+ mRemoteNG.My.Settings.ConDefaultRDGatewayUseConnectionCredentials = _with1.RDGatewayUseConnectionCredentials.ToString;
+ }
+ #endregion
+
+ #region "Default Inheritance"
+ public static mRemoteNG.Connection.Info.Inheritance DefaultInheritanceFromSettings()
+ {
+ DefaultInheritance = new mRemoteNG.Connection.Info.Inheritance(null);
+ DefaultInheritance.IsDefault = true;
+
+ return DefaultInheritance;
+ }
+
+ public static void DefaultInheritanceToSettings()
+ {
+ var _with2 = DefaultInheritance;
+ mRemoteNG.My.Settings.InhDefaultDescription = _with2.Description;
+ mRemoteNG.My.Settings.InhDefaultIcon = _with2.Icon;
+ mRemoteNG.My.Settings.InhDefaultPanel = _with2.Panel;
+ mRemoteNG.My.Settings.InhDefaultUsername = _with2.Username;
+ mRemoteNG.My.Settings.InhDefaultPassword = _with2.Password;
+ mRemoteNG.My.Settings.InhDefaultDomain = _with2.Domain;
+ mRemoteNG.My.Settings.InhDefaultProtocol = _with2.Protocol;
+ mRemoteNG.My.Settings.InhDefaultPort = _with2.Port;
+ mRemoteNG.My.Settings.InhDefaultPuttySession = _with2.PuttySession;
+ mRemoteNG.My.Settings.InhDefaultUseConsoleSession = _with2.UseConsoleSession;
+ mRemoteNG.My.Settings.InhDefaultUseCredSsp = _with2.UseCredSsp;
+ mRemoteNG.My.Settings.InhDefaultRenderingEngine = _with2.RenderingEngine;
+ mRemoteNG.My.Settings.InhDefaultICAEncryptionStrength = _with2.ICAEncryption;
+ mRemoteNG.My.Settings.InhDefaultRDPAuthenticationLevel = _with2.RDPAuthenticationLevel;
+ mRemoteNG.My.Settings.InhDefaultLoadBalanceInfo = _with2.LoadBalanceInfo;
+ mRemoteNG.My.Settings.InhDefaultResolution = _with2.Resolution;
+ mRemoteNG.My.Settings.InhDefaultAutomaticResize = _with2.AutomaticResize;
+ mRemoteNG.My.Settings.InhDefaultColors = _with2.Colors;
+ mRemoteNG.My.Settings.InhDefaultCacheBitmaps = _with2.CacheBitmaps;
+ mRemoteNG.My.Settings.InhDefaultDisplayWallpaper = _with2.DisplayWallpaper;
+ mRemoteNG.My.Settings.InhDefaultDisplayThemes = _with2.DisplayThemes;
+ mRemoteNG.My.Settings.InhDefaultEnableFontSmoothing = _with2.EnableFontSmoothing;
+ mRemoteNG.My.Settings.InhDefaultEnableDesktopComposition = _with2.EnableDesktopComposition;
+ mRemoteNG.My.Settings.InhDefaultRedirectKeys = _with2.RedirectKeys;
+ mRemoteNG.My.Settings.InhDefaultRedirectDiskDrives = _with2.RedirectDiskDrives;
+ mRemoteNG.My.Settings.InhDefaultRedirectPrinters = _with2.RedirectPrinters;
+ mRemoteNG.My.Settings.InhDefaultRedirectPorts = _with2.RedirectPorts;
+ mRemoteNG.My.Settings.InhDefaultRedirectSmartCards = _with2.RedirectSmartCards;
+ mRemoteNG.My.Settings.InhDefaultRedirectSound = _with2.RedirectSound;
+ mRemoteNG.My.Settings.InhDefaultPreExtApp = _with2.PreExtApp;
+ mRemoteNG.My.Settings.InhDefaultPostExtApp = _with2.PostExtApp;
+ mRemoteNG.My.Settings.InhDefaultMacAddress = _with2.MacAddress;
+ mRemoteNG.My.Settings.InhDefaultUserField = _with2.UserField;
+ // VNC inheritance
+ mRemoteNG.My.Settings.InhDefaultVNCAuthMode = _with2.VNCAuthMode;
+ mRemoteNG.My.Settings.InhDefaultVNCColors = _with2.VNCColors;
+ mRemoteNG.My.Settings.InhDefaultVNCCompression = _with2.VNCCompression;
+ mRemoteNG.My.Settings.InhDefaultVNCEncoding = _with2.VNCEncoding;
+ mRemoteNG.My.Settings.InhDefaultVNCProxyIP = _with2.VNCProxyIP;
+ mRemoteNG.My.Settings.InhDefaultVNCProxyPassword = _with2.VNCProxyPassword;
+ mRemoteNG.My.Settings.InhDefaultVNCProxyPort = _with2.VNCProxyPort;
+ mRemoteNG.My.Settings.InhDefaultVNCProxyType = _with2.VNCProxyType;
+ mRemoteNG.My.Settings.InhDefaultVNCProxyUsername = _with2.VNCProxyUsername;
+ mRemoteNG.My.Settings.InhDefaultVNCSmartSizeMode = _with2.VNCSmartSizeMode;
+ mRemoteNG.My.Settings.InhDefaultVNCViewOnly = _with2.VNCViewOnly;
+ // Ext. App inheritance
+ mRemoteNG.My.Settings.InhDefaultExtApp = _with2.ExtApp;
+ // RDP gateway inheritance
+ mRemoteNG.My.Settings.InhDefaultRDGatewayUsageMethod = _with2.RDGatewayUsageMethod;
+ mRemoteNG.My.Settings.InhDefaultRDGatewayHostname = _with2.RDGatewayHostname;
+ mRemoteNG.My.Settings.InhDefaultRDGatewayUsername = _with2.RDGatewayUsername;
+ mRemoteNG.My.Settings.InhDefaultRDGatewayPassword = _with2.RDGatewayPassword;
+ mRemoteNG.My.Settings.InhDefaultRDGatewayDomain = _with2.RDGatewayDomain;
+ mRemoteNG.My.Settings.InhDefaultRDGatewayUseConnectionCredentials = _with2.RDGatewayUseConnectionCredentials;
+ }
+ #endregion
+
+ #region "Panels"
+ public static System.Windows.Forms.Form AddPanel(string title = "", bool noTabber = false)
+ {
+ try {
+ if (string.IsNullOrEmpty(title)) {
+ title = mRemoteNG.My.Language.strNewPanel;
+ }
+
+ DockContent pnlcForm = new DockContent();
+ UI.Window.Connection cForm = new UI.Window.Connection(pnlcForm);
+ pnlcForm = cForm;
+
+ //create context menu
+ ContextMenuStrip cMen = new ContextMenuStrip();
+
+ //create rename item
+ ToolStripMenuItem cMenRen = new ToolStripMenuItem();
+ cMenRen.Text = mRemoteNG.My.Language.strRename;
+ cMenRen.Image = mRemoteNG.My.Resources.Rename;
+ cMenRen.Tag = pnlcForm;
+ cMenRen.Click += cMenConnectionPanelRename_Click;
+
+ ToolStripMenuItem cMenScreens = new ToolStripMenuItem();
+ cMenScreens.Text = mRemoteNG.My.Language.strSendTo;
+ cMenScreens.Image = mRemoteNG.My.Resources.Monitor;
+ cMenScreens.Tag = pnlcForm;
+ cMenScreens.DropDownItems.Add("Dummy");
+ cMenScreens.DropDownOpening += cMenConnectionPanelScreens_DropDownOpening;
+
+ cMen.Items.AddRange(new ToolStripMenuItem[] {
+ cMenRen,
+ cMenScreens
+ });
+
+ pnlcForm.TabPageContextMenuStrip = cMen;
+
+ (cForm as UI.Window.Connection).SetFormText(title.Replace("&", "&&"));
+
+ pnlcForm.Show(My.MyProject.Forms.frmMain.pnlDock, DockState.Document);
+
+ if (noTabber) {
+ (cForm as UI.Window.Connection).TabController.Dispose();
+ } else {
+ WindowList.Add(cForm);
+ }
+
+ return cForm;
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't add panel" + Constants.vbNewLine + ex.Message);
+ return null;
+ }
+ }
+
+ private static void cMenConnectionPanelRename_Click(System.Object sender, System.EventArgs e)
+ {
+ try {
+ UI.Window.Connection conW = null;
+ conW = sender.Tag;
+
+ string nTitle = Interaction.InputBox(mRemoteNG.My.Language.strNewTitle + ":", , sender.Tag.Text.Replace("&&", "&"));
+
+ if (!string.IsNullOrEmpty(nTitle)) {
+ conW.SetFormText(nTitle.Replace("&", "&&"));
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't rename panel" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void cMenConnectionPanelScreens_DropDownOpening(System.Object sender, System.EventArgs e)
+ {
+ try {
+ ToolStripMenuItem cMenScreens = sender;
+ cMenScreens.DropDownItems.Clear();
+
+ for (int i = 0; i <= Screen.AllScreens.Length - 1; i++) {
+ ToolStripMenuItem cMenScreen = new ToolStripMenuItem(mRemoteNG.My.Language.strScreen + " " + i + 1);
+ cMenScreen.Tag = new ArrayList();
+ cMenScreen.Image = mRemoteNG.My.Resources.Monitor_GoTo;
+ (cMenScreen.Tag as ArrayList).Add(Screen.AllScreens[i]);
+ (cMenScreen.Tag as ArrayList).Add(cMenScreens.Tag);
+ cMenScreen.Click += cMenConnectionPanelScreen_Click;
+
+ cMenScreens.DropDownItems.Add(cMenScreen);
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, "Couldn't enumerate screens" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void cMenConnectionPanelScreen_Click(object sender, System.EventArgs e)
+ {
+ try {
+ Screen screen = (sender as ToolStripMenuItem).Tag(0);
+ DockContent panel = (sender as ToolStripMenuItem).Tag(1);
+ Screens.SendPanelToScreen(panel, screen);
+ } catch (Exception ex) {
+ }
+ }
+ #endregion
+
+ #region "Credential Loading/Saving"
+
+ public static void LoadCredentials()
+ {
+ }
+ #endregion
+
+ #region "Connections Loading/Saving"
+ public static void NewConnections(string filename)
+ {
+ try {
+ ConnectionList = new Connection.List();
+ ContainerList = new Container.List();
+
+ mRemoteNG.Config.Connections.Load connectionsLoad = new mRemoteNG.Config.Connections.Load();
+
+ if (filename == GetDefaultStartupConnectionFileName()) {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
+ } else {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = filename;
+ }
+
+ Directory.CreateDirectory(Path.GetDirectoryName(filename));
+
+ // Use File.Open with FileMode.CreateNew so that we don't overwrite an existing file
+ using (FileStream fileStream = File.Open(filename, FileMode.CreateNew, FileAccess.Write, FileShare.None)) {
+ using (XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, System.Text.Encoding.UTF8)) {
+ var _with3 = xmlTextWriter;
+ _with3.Formatting = Formatting.Indented;
+ _with3.Indentation = 4;
+
+ _with3.WriteStartDocument();
+
+ _with3.WriteStartElement("Connections");
+ // Do not localize
+ _with3.WriteAttributeString("Name", mRemoteNG.My.Language.strConnections);
+ _with3.WriteAttributeString("Export", "", "False");
+ _with3.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY");
+ _with3.WriteAttributeString("ConfVersion", "", "2.5");
+
+ _with3.WriteEndElement();
+ _with3.WriteEndDocument();
+
+ _with3.Close();
+ }
+ }
+
+ connectionsLoad.ConnectionList = ConnectionList;
+ connectionsLoad.ContainerList = ContainerList;
+
+ mRemoteNG.Tree.Node.ResetTree();
+
+ connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ // Load config
+ connectionsLoad.ConnectionFileName = filename;
+ connectionsLoad.Load(false);
+
+ Windows.treeForm.tvConnections.SelectedNode = connectionsLoad.RootTreeNode;
+ } catch (Exception ex) {
+ MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strCouldNotCreateNewConnectionsFile, ex, MessageClass.ErrorMsg);
+ }
+ }
+
+ private static void LoadConnectionsBG(bool WithDialog = false, bool Update = false)
+ {
+ _withDialog = false;
+ _loadUpdate = true;
+
+ Thread t = new Thread(LoadConnectionsBGd);
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.Start();
+ }
+
+ private static bool _withDialog = false;
+ private static bool _loadUpdate = false;
+ private static void LoadConnectionsBGd()
+ {
+ LoadConnections(_withDialog, _loadUpdate);
+ }
+
+ public static void LoadConnections(bool withDialog = false, bool update = false)
+ {
+ mRemoteNG.Config.Connections.Load connectionsLoad = new mRemoteNG.Config.Connections.Load();
+
+ try {
+ bool tmrWasEnabled = false;
+ if (TimerSqlWatcher != null) {
+ tmrWasEnabled = TimerSqlWatcher.Enabled;
+
+ if (TimerSqlWatcher.Enabled == true) {
+ TimerSqlWatcher.Stop();
+ }
+ }
+
+ if (ConnectionList != null & ContainerList != null) {
+ PreviousConnectionList = ConnectionList.Copy();
+ PreviousContainerList = ContainerList.Copy();
+ }
+
+ ConnectionList = new Connection.List();
+ ContainerList = new Container.List();
+
+ if (!mRemoteNG.My.Settings.UseSQLServer) {
+ if (withDialog) {
+ OpenFileDialog loadDialog = mRemoteNG.Tools.Controls.ConnectionsLoadDialog();
+
+ if (loadDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
+ connectionsLoad.ConnectionFileName = loadDialog.FileName;
+ } else {
+ return;
+ }
+ } else {
+ connectionsLoad.ConnectionFileName = GetStartupConnectionFileName();
+ }
+
+ CreateBackupFile(connectionsLoad.ConnectionFileName);
+ }
+
+ connectionsLoad.ConnectionList = ConnectionList;
+ connectionsLoad.ContainerList = ContainerList;
+
+ if (PreviousConnectionList != null & PreviousContainerList != null) {
+ connectionsLoad.PreviousConnectionList = PreviousConnectionList;
+ connectionsLoad.PreviousContainerList = PreviousContainerList;
+ }
+
+ if (update == true) {
+ connectionsLoad.PreviousSelected = LastSelected;
+ }
+
+ mRemoteNG.Tree.Node.ResetTree();
+
+ connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ connectionsLoad.UseSQL = mRemoteNG.My.Settings.UseSQLServer;
+ connectionsLoad.SQLHost = mRemoteNG.My.Settings.SQLHost;
+ connectionsLoad.SQLDatabaseName = mRemoteNG.My.Settings.SQLDatabaseName;
+ connectionsLoad.SQLUsername = mRemoteNG.My.Settings.SQLUser;
+ connectionsLoad.SQLPassword = mRemoteNG.Security.Crypt.Decrypt(mRemoteNG.My.Settings.SQLPass, Info.General.EncryptionKey);
+ connectionsLoad.SQLUpdate = update;
+
+ connectionsLoad.Load(false);
+
+ if (mRemoteNG.My.Settings.UseSQLServer == true) {
+ LastSqlUpdate = DateAndTime.Now;
+ } else {
+ if (connectionsLoad.ConnectionFileName == GetDefaultStartupConnectionFileName()) {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
+ } else {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = connectionsLoad.ConnectionFileName;
+ }
+ }
+
+ if (tmrWasEnabled & TimerSqlWatcher != null) {
+ TimerSqlWatcher.Start();
+ }
+ } catch (Exception ex) {
+ if (mRemoteNG.My.Settings.UseSQLServer) {
+ MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strLoadFromSqlFailed, ex);
+ string commandButtons = string.Join("|", {
+ mRemoteNG.My.Language.strCommandTryAgain,
+ mRemoteNG.My.Language.strCommandOpenConnectionFile,
+ string.Format(mRemoteNG.My.Language.strCommandExitProgram, Application.ProductName)
+ });
+ cTaskDialog.ShowCommandBox(Application.ProductName, mRemoteNG.My.Language.strLoadFromSqlFailed, mRemoteNG.My.Language.strLoadFromSqlFailedContent, Misc.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, eSysIcons.Error, null);
+ switch (cTaskDialog.CommandButtonResult) {
+ case 0:
+ LoadConnections(withDialog, update);
+ return;
+ case 1:
+ mRemoteNG.My.Settings.UseSQLServer = false;
+ LoadConnections(true, update);
+ return;
+ default:
+ Application.Exit();
+ return;
+ }
+ } else {
+ if (ex is FileNotFoundException & !withDialog) {
+ MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotBeLoadedNew, connectionsLoad.ConnectionFileName), ex, MessageClass.InformationMsg);
+ NewConnections(connectionsLoad.ConnectionFileName);
+ return;
+ }
+
+ MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotBeLoaded, connectionsLoad.ConnectionFileName), ex);
+ if (!(connectionsLoad.ConnectionFileName == GetStartupConnectionFileName())) {
+ LoadConnections(withDialog, update);
+ return;
+ } else {
+ Interaction.MsgBox(string.Format(mRemoteNG.My.Language.strErrorStartupConnectionFileLoad, Constants.vbNewLine, Application.ProductName, GetStartupConnectionFileName(), Misc.GetExceptionMessageRecursive(ex)), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical);
+ Application.Exit();
+ return;
+ }
+ }
+ }
+ }
+
+ protected static void CreateBackupFile(string fileName)
+ {
+ // This intentionally doesn't prune any existing backup files. We just assume the user doesn't want any new ones created.
+ if (mRemoteNG.My.Settings.BackupFileKeepCount == 0)
+ return;
+
+ try {
+ string backupFileName = string.Format(mRemoteNG.My.Settings.BackupFileNameFormat, fileName, DateTime.UtcNow);
+ File.Copy(fileName, backupFileName);
+ PruneBackupFiles(fileName);
+ } catch (Exception ex) {
+ MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strConnectionsFileBackupFailed, ex, MessageClass.WarningMsg);
+ throw;
+ }
+ }
+
+ protected static void PruneBackupFiles(string baseName)
+ {
+ string fileName = Path.GetFileName(baseName);
+ string directoryName = Path.GetDirectoryName(baseName);
+
+ if (string.IsNullOrEmpty(fileName) | string.IsNullOrEmpty(directoryName))
+ return;
+
+ string searchPattern = string.Format(mRemoteNG.My.Settings.BackupFileNameFormat, fileName, "*");
+ string[] files = Directory.GetFiles(directoryName, searchPattern);
+
+ if (files.Length <= mRemoteNG.My.Settings.BackupFileKeepCount)
+ return;
+
+ Array.Sort(files);
+ Array.Resize(ref files, files.Length - mRemoteNG.My.Settings.BackupFileKeepCount);
+
+ foreach (string file in files) {
+ System.IO.File.Delete(file);
+ }
+ }
+
+ public static string GetDefaultStartupConnectionFileName()
+ {
+ string newPath = mRemoteNG.App.Info.Connections.DefaultConnectionsPath + "\\" + Info.Connections.DefaultConnectionsFile;
+ #if !PORTABLE
+ string oldPath = Environment.GetFolderPath(SpecialFolder.LocalApplicationData) + "\\" + mRemoteNG.My.MyProject.Application.Info.ProductName + "\\" + Info.Connections.DefaultConnectionsFile;
+ if (File.Exists(oldPath)) {
+ return oldPath;
+ }
+ #endif
+ return newPath;
+ }
+
+ public static string GetStartupConnectionFileName()
+ {
+ if (mRemoteNG.My.Settings.LoadConsFromCustomLocation == false) {
+ return GetDefaultStartupConnectionFileName();
+ } else {
+ return mRemoteNG.My.Settings.CustomConsPath;
+ }
+ }
+
+ public static void SaveConnectionsBG()
+ {
+ _saveUpdate = true;
+
+ Thread t = new Thread(SaveConnectionsBGd);
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.Start();
+ }
+
+ private static bool _saveUpdate = false;
+ private static object _saveLock = new object();
+ private static void SaveConnectionsBGd()
+ {
+ Monitor.Enter(_saveLock);
+ SaveConnections(_saveUpdate);
+ Monitor.Exit(_saveLock);
+ }
+
+ public static void SaveConnections(bool Update = false)
+ {
+ if (!IsConnectionsFileLoaded)
+ return;
+
+ bool previousTimerState = false;
+
+ try {
+ if (Update == true & mRemoteNG.My.Settings.UseSQLServer == false) {
+ return;
+ }
+
+ if (TimerSqlWatcher != null) {
+ previousTimerState = TimerSqlWatcher.Enabled;
+ TimerSqlWatcher.Enabled = false;
+ }
+
+ Config.Connections.Save conS = new Config.Connections.Save();
+
+ if (!mRemoteNG.My.Settings.UseSQLServer) {
+ conS.ConnectionFileName = GetStartupConnectionFileName();
+ }
+
+ conS.ConnectionList = ConnectionList;
+ conS.ContainerList = ContainerList;
+ conS.Export = false;
+ conS.SaveSecurity = new Security.Save(false);
+ conS.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ if (mRemoteNG.My.Settings.UseSQLServer == true) {
+ conS.SaveFormat = mRemoteNG.Config.Connections.Save.Format.SQL;
+ conS.SQLHost = mRemoteNG.My.Settings.SQLHost;
+ conS.SQLDatabaseName = mRemoteNG.My.Settings.SQLDatabaseName;
+ conS.SQLUsername = mRemoteNG.My.Settings.SQLUser;
+ conS.SQLPassword = mRemoteNG.Security.Crypt.Decrypt(mRemoteNG.My.Settings.SQLPass, mRemoteNG.App.Info.General.EncryptionKey);
+ }
+
+ conS.Save();
+
+ if (mRemoteNG.My.Settings.UseSQLServer == true) {
+ LastSqlUpdate = DateAndTime.Now;
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionsFileCouldNotBeSaved + Constants.vbNewLine + ex.Message);
+ } finally {
+ if (TimerSqlWatcher != null) {
+ TimerSqlWatcher.Enabled = previousTimerState;
+ }
+ }
+ }
+
+ public static void SaveConnectionsAs()
+ {
+ bool previousTimerState = false;
+ mRemoteNG.Config.Connections.Save connectionsSave = new mRemoteNG.Config.Connections.Save();
+
+ try {
+ if (TimerSqlWatcher != null) {
+ previousTimerState = TimerSqlWatcher.Enabled;
+ TimerSqlWatcher.Enabled = false;
+ }
+
+ using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {
+ var _with4 = saveFileDialog;
+ _with4.CheckPathExists = true;
+ _with4.InitialDirectory = Info.Connections.DefaultConnectionsPath;
+ _with4.FileName = Info.Connections.DefaultConnectionsFile;
+ _with4.OverwritePrompt = true;
+
+ List fileTypes = new List();
+ fileTypes.AddRange({
+ mRemoteNG.My.Language.strFiltermRemoteXML,
+ "*.xml"
+ });
+ fileTypes.AddRange({
+ mRemoteNG.My.Language.strFilterAll,
+ "*.*"
+ });
+
+ _with4.Filter = string.Join("|", fileTypes.ToArray());
+
+ if (!(saveFileDialog.ShowDialog(frmMain) == DialogResult.OK))
+ return;
+
+ var _with5 = connectionsSave;
+ _with5.SaveFormat = mRemoteNG.Config.Connections.Save.Format.mRXML;
+ _with5.ConnectionFileName = saveFileDialog.FileName;
+ _with5.Export = false;
+ _with5.SaveSecurity = new Security.Save();
+ _with5.ConnectionList = ConnectionList;
+ _with5.ContainerList = ContainerList;
+ _with5.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ connectionsSave.Save();
+
+ if (saveFileDialog.FileName == GetDefaultStartupConnectionFileName()) {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = false;
+ } else {
+ mRemoteNG.My.Settings.LoadConsFromCustomLocation = true;
+ mRemoteNG.My.Settings.CustomConsPath = saveFileDialog.FileName;
+ }
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddExceptionMessage(string.Format(mRemoteNG.My.Language.strConnectionsFileCouldNotSaveAs, connectionsSave.ConnectionFileName), ex);
+ } finally {
+ if (TimerSqlWatcher != null) {
+ TimerSqlWatcher.Enabled = previousTimerState;
+ }
+ }
+ }
+ #endregion
+
+ #region "Opening Connection"
+ public static Connection.Info CreateQuickConnect(string connectionString, mRemoteNG.Connection.Protocol.Protocols protocol)
+ {
+ try {
+ Uri uri = new Uri("dummyscheme" + uri.SchemeDelimiter + connectionString);
+
+ if (string.IsNullOrEmpty(uri.Host))
+ return null;
+
+ Connection.Info newConnectionInfo = new Connection.Info();
+
+ if (mRemoteNG.My.Settings.IdentifyQuickConnectTabs) {
+ newConnectionInfo.Name = string.Format(mRemoteNG.My.Language.strQuick, uri.Host);
+ } else {
+ newConnectionInfo.Name = uri.Host;
+ }
+
+ newConnectionInfo.Protocol = protocol;
+ newConnectionInfo.Hostname = uri.Host;
+ if (uri.Port == -1) {
+ newConnectionInfo.SetDefaultPort();
+ } else {
+ newConnectionInfo.Port = uri.Port;
+ }
+ newConnectionInfo.IsQuickConnect = true;
+
+ return newConnectionInfo;
+ } catch (Exception ex) {
+ MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strQuickConnectFailed, ex, MessageClass.ErrorMsg);
+ return null;
+ }
+ }
+
+ public static void OpenConnection()
+ {
+ try {
+ OpenConnection(mRemoteNG.Connection.Info.Force.None);
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info.Force Force)
+ {
+ try {
+ if (Windows.treeForm.tvConnections.SelectedNode.Tag == null) {
+ return;
+ }
+
+ if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession) {
+ OpenConnection(Windows.treeForm.tvConnections.SelectedNode.Tag, Force);
+ } else if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Container) {
+ foreach (TreeNode tNode in mRemoteNG.Tree.Node.SelectedNode.Nodes) {
+ if (mRemoteNG.Tree.Node.GetNodeType(tNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession) {
+ if (tNode.Tag != null) {
+ OpenConnection(tNode.Tag, Force);
+ }
+ }
+ }
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo)
+ {
+ try {
+ OpenConnection(ConnectionInfo, mRemoteNG.Connection.Info.Force.None);
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm)
+ {
+ try {
+ OpenConnectionFinal(ConnectionInfo, mRemoteNG.Connection.Info.Force.None, ConnectionForm);
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm, Connection.Info.Force Force)
+ {
+ try {
+ OpenConnectionFinal(ConnectionInfo, Force, ConnectionForm);
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, mRemoteNG.Connection.Info.Force Force)
+ {
+ try {
+ OpenConnectionFinal(ConnectionInfo, Force, null);
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void OpenConnectionFinal(mRemoteNG.Connection.Info newConnectionInfo, mRemoteNG.Connection.Info.Force Force, System.Windows.Forms.Form ConForm)
+ {
+ try {
+ if (string.IsNullOrEmpty(newConnectionInfo.Hostname) & newConnectionInfo.Protocol != mRemoteNG.Connection.Protocol.Protocols.IntApp) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strConnectionOpenFailedNoHostname);
+ return;
+ }
+
+ if (!string.IsNullOrEmpty(newConnectionInfo.PreExtApp)) {
+ Tools.ExternalTool extA = mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.PreExtApp);
+ if (extA != null) {
+ extA.Start(newConnectionInfo);
+ }
+ }
+
+ if ((Force & mRemoteNG.Connection.Info.Force.DoNotJump) != mRemoteNG.Connection.Info.Force.DoNotJump) {
+ if (SwitchToOpenConnection(newConnectionInfo)) {
+ return;
+ }
+ }
+
+ mRemoteNG.Connection.Protocol.Base newProtocol = null;
+ // Create connection based on protocol type
+ switch (newConnectionInfo.Protocol) {
+ case mRemoteNG.Connection.Protocol.Protocols.RDP:
+ newProtocol = new mRemoteNG.Connection.Protocol.RDP();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.VNC:
+ newProtocol = new mRemoteNG.Connection.Protocol.VNC();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH1:
+ newProtocol = new mRemoteNG.Connection.Protocol.SSH1();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH2:
+ newProtocol = new mRemoteNG.Connection.Protocol.SSH2();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.Telnet:
+ newProtocol = new mRemoteNG.Connection.Protocol.Telnet();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.Rlogin:
+ newProtocol = new mRemoteNG.Connection.Protocol.Rlogin();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.RAW:
+ newProtocol = new mRemoteNG.Connection.Protocol.RAW();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTP:
+ newProtocol = new mRemoteNG.Connection.Protocol.HTTP(newConnectionInfo.RenderingEngine);
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTPS:
+ newProtocol = new mRemoteNG.Connection.Protocol.HTTPS(newConnectionInfo.RenderingEngine);
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.ICA:
+ newProtocol = new mRemoteNG.Connection.Protocol.ICA();
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.IntApp:
+ newProtocol = new mRemoteNG.Connection.Protocol.IntegratedProgram();
+
+ if (string.IsNullOrEmpty(newConnectionInfo.ExtApp)) {
+ throw new Exception(mRemoteNG.My.Language.strNoExtAppDefined);
+ }
+ break;
+ default:
+ return;
+
+ break;
+ }
+
+ Control cContainer = null;
+ System.Windows.Forms.Form cForm = null;
+
+ string cPnl = null;
+ if (string.IsNullOrEmpty(newConnectionInfo.Panel) | (Force & mRemoteNG.Connection.Info.Force.OverridePanel) == mRemoteNG.Connection.Info.Force.OverridePanel | mRemoteNG.My.Settings.AlwaysShowPanelSelectionDlg) {
+ frmChoosePanel frmPnl = new frmChoosePanel();
+ if (frmPnl.ShowDialog() == DialogResult.OK) {
+ cPnl = frmPnl.Panel;
+ } else {
+ return;
+ }
+ } else {
+ cPnl = newConnectionInfo.Panel;
+ }
+
+ if (ConForm == null) {
+ cForm = WindowList.FromString(cPnl);
+ } else {
+ cForm = ConForm;
+ }
+
+ if (cForm == null) {
+ cForm = AddPanel(cPnl);
+ cForm.Focus();
+ } else {
+ (cForm as UI.Window.Connection).Show(My.MyProject.Forms.frmMain.pnlDock);
+ (cForm as UI.Window.Connection).Focus();
+ }
+
+ cContainer = (cForm as UI.Window.Connection).AddConnectionTab(newConnectionInfo);
+
+ if (newConnectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.IntApp) {
+ if (mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon != null) {
+ (cContainer as Magic.Controls.TabPage).Icon = mRemoteNG.App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon;
+ }
+ }
+
+ newProtocol.Closed += (cForm as UI.Window.Connection).Prot_Event_Closed;
+
+ newProtocol.Disconnected += Prot_Event_Disconnected;
+ newProtocol.Connected += Prot_Event_Connected;
+ newProtocol.Closed += Prot_Event_Closed;
+ newProtocol.ErrorOccured += Prot_Event_ErrorOccured;
+
+ newProtocol.InterfaceControl = new Connection.InterfaceControl(cContainer, newProtocol, newConnectionInfo);
+
+ newProtocol.Force = Force;
+
+ if (newProtocol.SetProps() == false) {
+ newProtocol.Close();
+ return;
+ }
+
+ if (newProtocol.Connect() == false) {
+ newProtocol.Close();
+ return;
+ }
+
+ newConnectionInfo.OpenConnections.Add(newProtocol);
+
+ if (newConnectionInfo.IsQuickConnect == false) {
+ if (newConnectionInfo.Protocol != mRemoteNG.Connection.Protocol.Protocols.IntApp) {
+ mRemoteNG.Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionOpen);
+ } else {
+ Tools.ExternalTool extApp = GetExtAppByName(newConnectionInfo.ExtApp);
+ if (extApp != null) {
+ if (extApp.TryIntegrate) {
+ if (newConnectionInfo.TreeNode != null) {
+ mRemoteNG.Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionOpen);
+ }
+ }
+ }
+ }
+ }
+
+ My.MyProject.Forms.frmMain.SelectedConnection = newConnectionInfo;
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static bool SwitchToOpenConnection(Connection.Info nCi)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = FindConnectionContainer(nCi);
+
+ if (IC != null) {
+ (IC.FindForm() as UI.Window.Connection).Focus();
+ (IC.FindForm() as UI.Window.Connection).Show(My.MyProject.Forms.frmMain.pnlDock);
+ Crownwood.Magic.Controls.TabPage t = IC.Parent;
+ t.Selected = true;
+ return true;
+ }
+
+ return false;
+ }
+ #endregion
+
+ #region "Event Handlers"
+ public static void Prot_Event_Disconnected(object sender, string DisconnectedMessage)
+ {
+ try {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, string.Format(mRemoteNG.My.Language.strProtocolEventDisconnected, DisconnectedMessage), true);
+
+ Connection.Protocol.Base Prot = sender;
+ if (Prot.InterfaceControl.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP) {
+ string[] Reason = DisconnectedMessage.Split(Constants.vbCrLf);
+ string ReasonCode = Reason[0];
+ string ReasonDescription = Reason[1];
+ if (ReasonCode > 3) {
+ if (!string.IsNullOrEmpty(ReasonDescription)) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strRdpDisconnected + Constants.vbNewLine + ReasonDescription + Constants.vbNewLine + string.Format(mRemoteNG.My.Language.strErrorCode, ReasonCode));
+ } else {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, mRemoteNG.My.Language.strRdpDisconnected + Constants.vbNewLine + string.Format(mRemoteNG.My.Language.strErrorCode, ReasonCode));
+ }
+ }
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, string.Format(mRemoteNG.My.Language.strProtocolEventDisconnectFailed, ex.Message), true);
+ }
+ }
+
+ public static void Prot_Event_Closed(object sender)
+ {
+ try {
+ Connection.Protocol.Base Prot = sender;
+
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnenctionCloseEvent, true);
+
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ReportMsg, string.Format(mRemoteNG.My.Language.strConnenctionClosedByUser, Prot.InterfaceControl.Info.Hostname, Prot.InterfaceControl.Info.Protocol.ToString(), mRemoteNG.My.MyProject.User.Name));
+
+ Prot.InterfaceControl.Info.OpenConnections.Remove(Prot);
+
+ if (Prot.InterfaceControl.Info.OpenConnections.Count < 1 & Prot.InterfaceControl.Info.IsQuickConnect == false) {
+ mRemoteNG.Tree.Node.SetNodeImage(Prot.InterfaceControl.Info.TreeNode, mRemoteNG.Images.Enums.TreeImage.ConnectionClosed);
+ }
+
+ if (!string.IsNullOrEmpty(Prot.InterfaceControl.Info.PostExtApp)) {
+ Tools.ExternalTool extA = mRemoteNG.App.Runtime.GetExtAppByName(Prot.InterfaceControl.Info.PostExtApp);
+ if (extA != null) {
+ extA.Start(Prot.InterfaceControl.Info);
+ }
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnenctionCloseEventFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void Prot_Event_Connected(object sender)
+ {
+ mRemoteNG.Connection.Protocol.Base prot = sender;
+
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnectionEventConnected, true);
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ReportMsg, string.Format(mRemoteNG.My.Language.strConnectionEventConnectedDetail, prot.InterfaceControl.Info.Hostname, prot.InterfaceControl.Info.Protocol.ToString(), mRemoteNG.My.MyProject.User.Name, prot.InterfaceControl.Info.Description, prot.InterfaceControl.Info.UserField));
+ }
+
+ public static void Prot_Event_ErrorOccured(object sender, string ErrorMessage)
+ {
+ try {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strConnectionEventErrorOccured, true);
+
+ Connection.Protocol.Base Prot = sender;
+
+ if (Prot.InterfaceControl.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP) {
+ if (ErrorMessage > -1) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.WarningMsg, string.Format(mRemoteNG.My.Language.strConnectionRdpErrorDetail, ErrorMessage, mRemoteNG.Connection.Protocol.RDP.FatalErrors.GetError(ErrorMessage)));
+ }
+ }
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strConnectionEventConnectionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ #endregion
+
+ #region "External Apps"
+ public static Tools.ExternalTool GetExtAppByName(string Name)
+ {
+ foreach (Tools.ExternalTool extA in ExternalTools) {
+ if (extA.DisplayName == Name) {
+ return extA;
+ }
+ }
+
+ return null;
+ }
+ #endregion
+
+ #region "Misc"
+ public static void GoToURL(string URL)
+ {
+ mRemoteNG.Connection.Info cI = new mRemoteNG.Connection.Info();
+
+ cI.Name = "";
+ cI.Hostname = URL;
+ if (URL.StartsWith("https:")) {
+ cI.Protocol = mRemoteNG.Connection.Protocol.Protocols.HTTPS;
+ } else {
+ cI.Protocol = mRemoteNG.Connection.Protocol.Protocols.HTTP;
+ }
+ cI.SetDefaultPort();
+ cI.IsQuickConnect = true;
+
+ mRemoteNG.App.Runtime.OpenConnection(cI, mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ public static void GoToWebsite()
+ {
+ GoToURL(mRemoteNG.App.Info.General.URLHome);
+ }
+
+ public static void GoToDonate()
+ {
+ GoToURL(mRemoteNG.App.Info.General.URLDonate);
+ }
+
+ public static void GoToForum()
+ {
+ GoToURL(mRemoteNG.App.Info.General.URLForum);
+ }
+
+ public static void GoToBugs()
+ {
+ GoToURL(mRemoteNG.App.Info.General.URLBugs);
+ }
+
+ public static void Report(string Text)
+ {
+ try {
+ StreamWriter sWr = new StreamWriter(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Report.log", true);
+ sWr.WriteLine(Text);
+ sWr.Close();
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strLogWriteToFileFailed);
+ }
+ }
+
+ public static bool SaveReport()
+ {
+ StreamReader streamReader = null;
+ StreamWriter streamWriter = null;
+ try {
+ streamReader = new StreamReader(mRemoteNG.My.MyProject.Application.Info.DirectoryPath + "\\Report.log");
+ string text = streamReader.ReadToEnd();
+ streamReader.Close();
+
+ streamWriter = new StreamWriter(mRemoteNG.App.Info.General.ReportingFilePath, true);
+ streamWriter.Write(text);
+
+ return true;
+ } catch (Exception ex) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.ErrorMsg, mRemoteNG.My.Language.strLogWriteToFileFinalLocationFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ } finally {
+ if (streamReader != null) {
+ streamReader.Close();
+ streamReader.Dispose();
+ }
+ if (streamWriter != null) {
+ streamWriter.Close();
+ streamWriter.Dispose();
+ }
+ }
+ }
+
+ public static Connection.InterfaceControl FindConnectionContainer(Connection.Info ConI)
+ {
+ if (ConI.OpenConnections.Count > 0) {
+ for (int i = 0; i <= WindowList.Count - 1; i++) {
+ if (WindowList[i] is UI.Window.Connection) {
+ UI.Window.Connection conW = WindowList[i];
+
+ if (conW.TabController != null) {
+ foreach (Crownwood.Magic.Controls.TabPage t in conW.TabController.TabPages) {
+ if (t.Controls[0] != null) {
+ if (t.Controls[0] is Connection.InterfaceControl) {
+ Connection.InterfaceControl IC = t.Controls[0];
+ if (object.ReferenceEquals(IC.Info, ConI)) {
+ return IC;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ // Override the font of all controls in a container with the default font based on the OS version
+ public static void FontOverride(ref Control ctlParent)
+ {
+ Control ctlChild = null;
+ foreach (Control ctlChild_loopVariable in ctlParent.Controls) {
+ ctlChild = ctlChild_loopVariable;
+ ctlChild.Font = new System.Drawing.Font(SystemFonts.MessageBoxFont.Name, ctlChild.Font.Size, ctlChild.Font.Style, ctlChild.Font.Unit, ctlChild.Font.GdiCharSet);
+ if (ctlChild.Controls.Count > 0) {
+ FontOverride(ref ctlChild);
+ }
+ }
+ }
+ #endregion
+
+ #region "SQL Watcher"
+ private static void tmrSqlWatcher_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ Misc.IsSQLUpdateAvailableBG();
+ }
+
+ private static void SQLUpdateCheckFinished(bool UpdateAvailable)
+ {
+ if (UpdateAvailable == true) {
+ MessageCollector.AddMessage(mRemoteNG.Messages.MessageClass.InformationMsg, mRemoteNG.My.Language.strSqlUpdateCheckUpdateAvailable, true);
+ LoadConnectionsBG();
+ }
+ }
+ #endregion
+
+ }
+ }
}
diff --git a/mRemoteV1.ConvertedToC#/Config/Config.Settings.Load.cs b/mRemoteV1.ConvertedToC#/Config/Config.Settings.Load.cs
index 2d0d801a1..8a44616af 100644
--- a/mRemoteV1.ConvertedToC#/Config/Config.Settings.Load.cs
+++ b/mRemoteV1.ConvertedToC#/Config/Config.Settings.Load.cs
@@ -205,12 +205,12 @@ namespace mRemoteNG.Config
string newPath = mRemoteNG.App.Info.Settings.SettingsPath + "\\" + mRemoteNG.App.Info.Settings.LayoutFileName;
if (File.Exists(newPath)) {
_with6.pnlDock.LoadFromXml(newPath, GetContentFromPersistString);
- #if Not PORTABLE
+ #if !PORTABLE
} else if (File.Exists(oldPath)) {
_with6.pnlDock.LoadFromXml(oldPath, GetContentFromPersistString);
#endif
} else {
- Startup.SetDefaultLayout();
+ mRemoteNG.App.Runtime.Startup.SetDefaultLayout();
}
} catch (Exception ex) {
mRemoteNG.App.Runtime.Log.Error("LoadPanelsFromXML failed" + Constants.vbNewLine + ex.Message);
diff --git a/mRemoteV1.ConvertedToC#/Connection/Connection.Info.cs b/mRemoteV1.ConvertedToC#/Connection/Connection.Info.cs
index eb8ab6e94..343d72edb 100644
--- a/mRemoteV1.ConvertedToC#/Connection/Connection.Info.cs
+++ b/mRemoteV1.ConvertedToC#/Connection/Connection.Info.cs
@@ -12,536 +12,605 @@ using mRemoteNG.App.Runtime;
using mRemoteNG.Config;
using System.Reflection;
-namespace mRemoteNG.Connection
+namespace mRemoteNG
{
- [DefaultProperty("Name")]
- public partial class Info
- {
- #region "Public Properties"
- #region "Display"
- [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNameName"), LocalizedDescription("strPropertyDescriptionName")]
- public virtual string Name { get; set; }
-
- private string _description = mRemoteNG.My.Settings.ConDefaultDescription;
- [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNameDescription"), LocalizedDescription("strPropertyDescriptionDescription")]
- public virtual string Description {
- get { return GetInheritedPropertyValue("Description", _description); }
- set { _description = value; }
- }
-
- private string _icon = mRemoteNG.My.Settings.ConDefaultIcon;
- [LocalizedCategory("strCategoryDisplay", 1), TypeConverter(typeof(Icon)), LocalizedDisplayName("strPropertyNameIcon"), LocalizedDescription("strPropertyDescriptionIcon")]
- public virtual string Icon {
- get { return GetInheritedPropertyValue("Icon", _icon); }
- set { _icon = value; }
- }
-
- private string _panel = mRemoteNG.My.Language.strGeneral;
- [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNamePanel"), LocalizedDescription("strPropertyDescriptionPanel")]
- public virtual string Panel {
- get { return GetInheritedPropertyValue("Panel", _panel); }
- set { _panel = value; }
- }
- #endregion
- #region "Connection"
- private string _hostname = string.Empty;
- [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameAddress"), LocalizedDescription("strPropertyDescriptionAddress")]
- public virtual string Hostname {
- get { return _hostname.Trim(); }
- set {
- if (string.IsNullOrEmpty(value)) {
- _hostname = string.Empty;
- } else {
- _hostname = value.Trim();
- }
- }
- }
-
- private string _username = mRemoteNG.My.Settings.ConDefaultUsername;
- [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameUsername"), LocalizedDescription("strPropertyDescriptionUsername")]
- public virtual string Username {
- get { return GetInheritedPropertyValue("Username", _username); }
- set { _username = value.Trim(); }
- }
-
- private string _password = mRemoteNG.My.Settings.ConDefaultPassword;
- [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNamePassword"), LocalizedDescription("strPropertyDescriptionPassword"), PasswordPropertyText(true)]
- public virtual string Password {
- get { return GetInheritedPropertyValue("Password", _password); }
- set { _password = value; }
- }
-
- private string _domain = mRemoteNG.My.Settings.ConDefaultDomain;
- [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameDomain"), LocalizedDescription("strPropertyDescriptionDomain")]
- public string Domain {
- get { return GetInheritedPropertyValue("Domain", _domain).Trim(); }
- set { _domain = value.Trim(); }
- }
- #endregion
- #region "Protocol"
- private Protocol.Protocols _protocol = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.Protocols), mRemoteNG.My.Settings.ConDefaultProtocol);
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameProtocol"), LocalizedDescription("strPropertyDescriptionProtocol"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public virtual Protocol.Protocols Protocol {
- get { return GetInheritedPropertyValue("Protocol", _protocol); }
- set { _protocol = value; }
- }
-
- private string _extApp = mRemoteNG.My.Settings.ConDefaultExtApp;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameExternalTool"), LocalizedDescription("strPropertyDescriptionExternalTool"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
- public string ExtApp {
- get { return GetInheritedPropertyValue("ExtApp", _extApp); }
- set { _extApp = value; }
- }
-
- private int _port;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNamePort"), LocalizedDescription("strPropertyDescriptionPort")]
- public virtual int Port {
- get { return GetInheritedPropertyValue("Port", _port); }
- set { _port = value; }
- }
-
- private string _puttySession = mRemoteNG.My.Settings.ConDefaultPuttySession;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNamePuttySession"), LocalizedDescription("strPropertyDescriptionPuttySession"), TypeConverter(typeof(Putty.Sessions.SessionList))]
- public virtual string PuttySession {
- get { return GetInheritedPropertyValue("PuttySession", _puttySession); }
- set { _puttySession = value; }
- }
-
- private Protocol.ICA.EncryptionStrength _icaEncryption = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.ICA.EncryptionStrength), mRemoteNG.My.Settings.ConDefaultICAEncryptionStrength);
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameEncryptionStrength"), LocalizedDescription("strPropertyDescriptionEncryptionStrength"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.ICA.EncryptionStrength ICAEncryption {
- get { return GetInheritedPropertyValue("ICAEncryption", _icaEncryption); }
- set { _icaEncryption = value; }
- }
-
- private bool _useConsoleSession = mRemoteNG.My.Settings.ConDefaultUseConsoleSession;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameUseConsoleSession"), LocalizedDescription("strPropertyDescriptionUseConsoleSession"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool UseConsoleSession {
- get { return GetInheritedPropertyValue("UseConsoleSession", _useConsoleSession); }
- set { _useConsoleSession = value; }
- }
-
- private Protocol.RDP.AuthenticationLevel _rdpAuthenticationLevel = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.AuthenticationLevel), mRemoteNG.My.Settings.ConDefaultRDPAuthenticationLevel);
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameAuthenticationLevel"), LocalizedDescription("strPropertyDescriptionAuthenticationLevel"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.AuthenticationLevel RDPAuthenticationLevel {
- get { return GetInheritedPropertyValue("RDPAuthenticationLevel", _rdpAuthenticationLevel); }
- set { _rdpAuthenticationLevel = value; }
- }
-
- private string _loadBalanceInfo = mRemoteNG.My.Settings.ConDefaultLoadBalanceInfo;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameLoadBalanceInfo"), LocalizedDescription("strPropertyDescriptionLoadBalanceInfo")]
- public string LoadBalanceInfo {
- get { return GetInheritedPropertyValue("LoadBalanceInfo", _loadBalanceInfo).Trim(); }
- set { _loadBalanceInfo = value.Trim(); }
- }
-
- private Protocol.HTTPBase.RenderingEngine _renderingEngine = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.HTTPBase.RenderingEngine), mRemoteNG.My.Settings.ConDefaultRenderingEngine);
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameRenderingEngine"), LocalizedDescription("strPropertyDescriptionRenderingEngine"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.HTTPBase.RenderingEngine RenderingEngine {
- get { return GetInheritedPropertyValue("RenderingEngine", _renderingEngine); }
- set { _renderingEngine = value; }
- }
-
- private bool _useCredSsp = mRemoteNG.My.Settings.ConDefaultUseCredSsp;
- [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameUseCredSsp"), LocalizedDescription("strPropertyDescriptionUseCredSsp"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool UseCredSsp {
- get { return GetInheritedPropertyValue("UseCredSsp", _useCredSsp); }
- set { _useCredSsp = value; }
- }
- #endregion
- #region "RD Gateway"
- private Protocol.RDP.RDGatewayUsageMethod _rdGatewayUsageMethod = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDGatewayUsageMethod), mRemoteNG.My.Settings.ConDefaultRDGatewayUsageMethod);
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUsageMethod"), LocalizedDescription("strPropertyDescriptionRDGatewayUsageMethod"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.RDGatewayUsageMethod RDGatewayUsageMethod {
- get { return GetInheritedPropertyValue("RDGatewayUsageMethod", _rdGatewayUsageMethod); }
- set { _rdGatewayUsageMethod = value; }
- }
-
- private string _rdGatewayHostname = mRemoteNG.My.Settings.ConDefaultRDGatewayHostname;
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayHostname"), LocalizedDescription("strPropertyDescriptionRDGatewayHostname")]
- public string RDGatewayHostname {
- get { return GetInheritedPropertyValue("RDGatewayHostname", _rdGatewayHostname).Trim(); }
- set { _rdGatewayHostname = value.Trim(); }
- }
-
- private Protocol.RDP.RDGatewayUseConnectionCredentials _rdGatewayUseConnectionCredentials = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDGatewayUseConnectionCredentials), mRemoteNG.My.Settings.ConDefaultRDGatewayUseConnectionCredentials);
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUseConnectionCredentials"), LocalizedDescription("strPropertyDescriptionRDGatewayUseConnectionCredentials"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials {
- get { return GetInheritedPropertyValue("RDGatewayUseConnectionCredentials", _rdGatewayUseConnectionCredentials); }
- set { _rdGatewayUseConnectionCredentials = value; }
- }
-
- private string _rdGatewayUsername = mRemoteNG.My.Settings.ConDefaultRDGatewayUsername;
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUsername"), LocalizedDescription("strPropertyDescriptionRDGatewayUsername")]
- public string RDGatewayUsername {
- get { return GetInheritedPropertyValue("RDGatewayUsername", _rdGatewayUsername).Trim(); }
- set { _rdGatewayUsername = value.Trim(); }
- }
-
- private string _rdGatewayPassword = mRemoteNG.My.Settings.ConDefaultRDGatewayPassword;
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayPassword"), LocalizedDescription("strPropertyNameRDGatewayPassword"), PasswordPropertyText(true)]
- public string RDGatewayPassword {
- get { return GetInheritedPropertyValue("RDGatewayPassword", _rdGatewayPassword); }
- set { _rdGatewayPassword = value; }
- }
-
- private string _rdGatewayDomain = mRemoteNG.My.Settings.ConDefaultRDGatewayDomain;
- [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayDomain"), LocalizedDescription("strPropertyDescriptionRDGatewayDomain")]
- public string RDGatewayDomain {
- get { return GetInheritedPropertyValue("RDGatewayDomain", _rdGatewayDomain).Trim(); }
- set { _rdGatewayDomain = value.Trim(); }
- }
- #endregion
- #region "Appearance"
- private Protocol.RDP.RDPResolutions _resolution = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPResolutions), mRemoteNG.My.Settings.ConDefaultResolution);
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameResolution"), LocalizedDescription("strPropertyDescriptionResolution"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.RDPResolutions Resolution {
- get { return GetInheritedPropertyValue("Resolution", _resolution); }
- set { _resolution = value; }
- }
-
- private bool _automaticResize = mRemoteNG.My.Settings.ConDefaultAutomaticResize;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameAutomaticResize"), LocalizedDescription("strPropertyDescriptionAutomaticResize"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool AutomaticResize {
- get { return GetInheritedPropertyValue("AutomaticResize", _automaticResize); }
- set { _automaticResize = value; }
- }
-
- private Protocol.RDP.RDPColors _colors = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPColors), mRemoteNG.My.Settings.ConDefaultColors);
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameColors"), LocalizedDescription("strPropertyDescriptionColors"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.RDPColors Colors {
- get { return GetInheritedPropertyValue("Colors", _colors); }
- set { _colors = value; }
- }
-
- private bool _cacheBitmaps = mRemoteNG.My.Settings.ConDefaultCacheBitmaps;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameCacheBitmaps"), LocalizedDescription("strPropertyDescriptionCacheBitmaps"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool CacheBitmaps {
- get { return GetInheritedPropertyValue("CacheBitmaps", _cacheBitmaps); }
- set { _cacheBitmaps = value; }
- }
-
- private bool _displayWallpaper = mRemoteNG.My.Settings.ConDefaultDisplayWallpaper;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameDisplayWallpaper"), LocalizedDescription("strPropertyDescriptionDisplayWallpaper"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool DisplayWallpaper {
- get { return GetInheritedPropertyValue("DisplayWallpaper", _displayWallpaper); }
- set { _displayWallpaper = value; }
- }
-
- private bool _displayThemes = mRemoteNG.My.Settings.ConDefaultDisplayThemes;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameDisplayThemes"), LocalizedDescription("strPropertyDescriptionDisplayThemes"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool DisplayThemes {
- get { return GetInheritedPropertyValue("DisplayThemes", _displayThemes); }
- set { _displayThemes = value; }
- }
-
- private bool _enableFontSmoothing = mRemoteNG.My.Settings.ConDefaultEnableFontSmoothing;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameEnableFontSmoothing"), LocalizedDescription("strPropertyDescriptionEnableFontSmoothing"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool EnableFontSmoothing {
- get { return GetInheritedPropertyValue("EnableFontSmoothing", _enableFontSmoothing); }
- set { _enableFontSmoothing = value; }
- }
-
- private bool _enableDesktopComposition = mRemoteNG.My.Settings.ConDefaultEnableDesktopComposition;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameEnableDesktopComposition"), LocalizedDescription("strPropertyDescriptionEnableDesktopComposition"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool EnableDesktopComposition {
- get { return GetInheritedPropertyValue("EnableDesktopComposition", _enableDesktopComposition); }
- set { _enableDesktopComposition = value; }
- }
- #endregion
- #region "Redirect"
- private bool _redirectKeys = mRemoteNG.My.Settings.ConDefaultRedirectKeys;
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectKeys"), LocalizedDescription("strPropertyDescriptionRedirectKeys"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool RedirectKeys {
- get { return GetInheritedPropertyValue("RedirectKeys", _redirectKeys); }
- set { _redirectKeys = value; }
- }
-
- private bool _redirectDiskDrives = mRemoteNG.My.Settings.ConDefaultRedirectDiskDrives;
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectDrives"), LocalizedDescription("strPropertyDescriptionRedirectDrives"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool RedirectDiskDrives {
- get { return GetInheritedPropertyValue("RedirectDiskDrives", _redirectDiskDrives); }
- set { _redirectDiskDrives = value; }
- }
-
- private bool _redirectPrinters = mRemoteNG.My.Settings.ConDefaultRedirectPrinters;
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectPrinters"), LocalizedDescription("strPropertyDescriptionRedirectPrinters"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool RedirectPrinters {
- get { return GetInheritedPropertyValue("RedirectPrinters", _redirectPrinters); }
- set { _redirectPrinters = value; }
- }
-
- private bool _redirectPorts = mRemoteNG.My.Settings.ConDefaultRedirectPorts;
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectPorts"), LocalizedDescription("strPropertyDescriptionRedirectPorts"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool RedirectPorts {
- get { return GetInheritedPropertyValue("RedirectPorts", _redirectPorts); }
- set { _redirectPorts = value; }
- }
-
- private bool _redirectSmartCards = mRemoteNG.My.Settings.ConDefaultRedirectSmartCards;
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectSmartCards"), LocalizedDescription("strPropertyDescriptionRedirectSmartCards"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool RedirectSmartCards {
- get { return GetInheritedPropertyValue("RedirectSmartCards", _redirectSmartCards); }
- set { _redirectSmartCards = value; }
- }
-
- private Protocol.RDP.RDPSounds _redirectSound = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPSounds), mRemoteNG.My.Settings.ConDefaultRedirectSound);
- [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectSounds"), LocalizedDescription("strPropertyDescriptionRedirectSounds"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.RDP.RDPSounds RedirectSound {
- get { return GetInheritedPropertyValue("RedirectSound", _redirectSound); }
- set { _redirectSound = value; }
- }
- #endregion
- #region "Misc"
- private string _preExtApp = mRemoteNG.My.Settings.ConDefaultPreExtApp;
- [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameExternalToolBefore"), LocalizedDescription("strPropertyDescriptionExternalToolBefore"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
- public virtual string PreExtApp {
- get { return GetInheritedPropertyValue("PreExtApp", _preExtApp); }
- set { _preExtApp = value; }
- }
-
- private string _postExtApp = mRemoteNG.My.Settings.ConDefaultPostExtApp;
- [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameExternalToolAfter"), LocalizedDescription("strPropertyDescriptionExternalToolAfter"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
- public virtual string PostExtApp {
- get { return GetInheritedPropertyValue("PostExtApp", _postExtApp); }
- set { _postExtApp = value; }
- }
-
- private string _macAddress = mRemoteNG.My.Settings.ConDefaultMacAddress;
- [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameMACAddress"), LocalizedDescription("strPropertyDescriptionMACAddress")]
- public virtual string MacAddress {
- get { return GetInheritedPropertyValue("MacAddress", _macAddress); }
- set { _macAddress = value; }
- }
-
- private string _userField = mRemoteNG.My.Settings.ConDefaultUserField;
- [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameUser1"), LocalizedDescription("strPropertyDescriptionUser1")]
- public virtual string UserField {
- get { return GetInheritedPropertyValue("UserField", _userField); }
- set { _userField = value; }
- }
- #endregion
- #region "VNC"
- private Protocol.VNC.Compression _vncCompression = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Compression), mRemoteNG.My.Settings.ConDefaultVNCCompression);
- [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameCompression"), LocalizedDescription("strPropertyDescriptionCompression"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.Compression VNCCompression {
- get { return GetInheritedPropertyValue("VNCCompression", _vncCompression); }
- set { _vncCompression = value; }
- }
-
- private Protocol.VNC.Encoding _vncEncoding = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Encoding), mRemoteNG.My.Settings.ConDefaultVNCEncoding);
- [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameEncoding"), LocalizedDescription("strPropertyDescriptionEncoding"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.Encoding VNCEncoding {
- get { return GetInheritedPropertyValue("VNCEncoding", _vncEncoding); }
- set { _vncEncoding = value; }
- }
-
-
- private Protocol.VNC.AuthMode _vncAuthMode = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.AuthMode), mRemoteNG.My.Settings.ConDefaultVNCAuthMode);
- [LocalizedCategory("strCategoryConnection", 2), Browsable(false), LocalizedDisplayName("strPropertyNameAuthenticationMode"), LocalizedDescription("strPropertyDescriptionAuthenticationMode"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.AuthMode VNCAuthMode {
- get { return GetInheritedPropertyValue("VNCAuthMode", _vncAuthMode); }
- set { _vncAuthMode = value; }
- }
-
- private Protocol.VNC.ProxyType _vncProxyType = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.ProxyType), mRemoteNG.My.Settings.ConDefaultVNCProxyType);
- [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyType"), LocalizedDescription("strPropertyDescriptionVNCProxyType"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.ProxyType VNCProxyType {
- get { return GetInheritedPropertyValue("VNCProxyType", _vncProxyType); }
- set { _vncProxyType = value; }
- }
-
- private string _vncProxyIP = mRemoteNG.My.Settings.ConDefaultVNCProxyIP;
- [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyAddress"), LocalizedDescription("strPropertyDescriptionVNCProxyAddress")]
- public string VNCProxyIP {
- get { return GetInheritedPropertyValue("VNCProxyIP", _vncProxyIP); }
- set { _vncProxyIP = value; }
- }
-
- private int _vncProxyPort = mRemoteNG.My.Settings.ConDefaultVNCProxyPort;
- [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyPort"), LocalizedDescription("strPropertyDescriptionVNCProxyPort")]
- public int VNCProxyPort {
- get { return GetInheritedPropertyValue("VNCProxyPort", _vncProxyPort); }
- set { _vncProxyPort = value; }
- }
-
- private string _vncProxyUsername = mRemoteNG.My.Settings.ConDefaultVNCProxyUsername;
- [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyUsername"), LocalizedDescription("strPropertyDescriptionVNCProxyUsername")]
- public string VNCProxyUsername {
- get { return GetInheritedPropertyValue("VNCProxyUsername", _vncProxyUsername); }
- set { _vncProxyUsername = value; }
- }
-
- private string _vncProxyPassword = mRemoteNG.My.Settings.ConDefaultVNCProxyPassword;
- [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyPassword"), LocalizedDescription("strPropertyDescriptionVNCProxyPassword"), PasswordPropertyText(true)]
- public string VNCProxyPassword {
- get { return GetInheritedPropertyValue("VNCProxyPassword", _vncProxyPassword); }
- set { _vncProxyPassword = value; }
- }
-
- private Protocol.VNC.Colors _vncColors = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Colors), mRemoteNG.My.Settings.ConDefaultVNCColors);
- [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameColors"), LocalizedDescription("strPropertyDescriptionColors"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.Colors VNCColors {
- get { return GetInheritedPropertyValue("VNCColors", _vncColors); }
- set { _vncColors = value; }
- }
-
- private Protocol.VNC.SmartSizeMode _vncSmartSizeMode = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.SmartSizeMode), mRemoteNG.My.Settings.ConDefaultVNCSmartSizeMode);
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameSmartSizeMode"), LocalizedDescription("strPropertyDescriptionSmartSizeMode"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
- public Protocol.VNC.SmartSizeMode VNCSmartSizeMode {
- get { return GetInheritedPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode); }
- set { _vncSmartSizeMode = value; }
- }
-
- private bool _vncViewOnly = mRemoteNG.My.Settings.ConDefaultVNCViewOnly;
- [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameViewOnly"), LocalizedDescription("strPropertyDescriptionViewOnly"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
- public bool VNCViewOnly {
- get { return GetInheritedPropertyValue("VNCViewOnly", _vncViewOnly); }
- set { _vncViewOnly = value; }
- }
- #endregion
-
- [Browsable(false)]
- public Inheritance Inherit { get; set; }
-
- [Browsable(false)]
- public Protocol.List OpenConnections { get; set; }
-
- [Browsable(false)]
- public bool IsContainer { get; set; }
-
- [Browsable(false)]
- public bool IsDefault { get; set; }
-
- [Browsable(false)]
- public Container.Info Parent { get; set; }
-
- [Browsable(false)]
- public int PositionID { get; set; }
-
- [Browsable(false)]
- public string ConstantID { get; set; }
-
- [Browsable(false)]
- public TreeNode TreeNode { get; set; }
-
- [Browsable(false)]
- public bool IsQuickConnect { get; set; }
-
- [Browsable(false)]
- public bool PleaseConnect { get; set; }
- #endregion
-
- #region "Constructors"
- public Info()
- {
- SetDefaults();
- }
-
- public Info(Container.Info parent)
- {
- SetDefaults();
- IsContainer = true;
- this.Parent = parent;
- }
- #endregion
-
- #region "Public Methods"
- public Info Copy()
- {
- Info newConnectionInfo = MemberwiseClone();
- newConnectionInfo.ConstantID = mRemoteNG.Tools.Misc.CreateConstantID();
- newConnectionInfo._OpenConnections = new Protocol.List();
- return newConnectionInfo;
- }
-
- public void SetDefaults()
- {
- if (Port == 0)
- SetDefaultPort();
- }
-
- public int GetDefaultPort()
- {
- return GetDefaultPort(Protocol);
- }
-
- public void SetDefaultPort()
- {
- Port = GetDefaultPort();
- }
- #endregion
-
- #region "Public Enumerations"
- [Flags()]
- public enum Force
- {
- None = 0,
- UseConsoleSession = 1,
- Fullscreen = 2,
- DoNotJump = 4,
- OverridePanel = 8,
- DontUseConsoleSession = 16,
- NoCredentials = 32
- }
- #endregion
-
- #region "Private Methods"
- private TPropertyType GetInheritedPropertyValue(string propertyName, TPropertyType value)
- {
- Type inheritType = Inherit.GetType();
- PropertyInfo inheritPropertyInfo = inheritType.GetProperty(propertyName);
- bool inheritPropertyValue = inheritPropertyInfo.GetValue(Inherit, BindingFlags.GetProperty, null, null, null);
-
- if (inheritPropertyValue & Parent != null) {
- Info parentConnectionInfo = null;
- if (IsContainer) {
- parentConnectionInfo = Parent.Parent.ConnectionInfo;
- } else {
- parentConnectionInfo = Parent.ConnectionInfo;
- }
-
- Type connectionInfoType = parentConnectionInfo.GetType();
- PropertyInfo parentPropertyInfo = connectionInfoType.GetProperty(propertyName);
- TPropertyType parentPropertyValue = parentPropertyInfo.GetValue(parentConnectionInfo, BindingFlags.GetProperty, null, null, null);
-
- return parentPropertyValue;
- } else {
- return value;
- }
- }
-
- private static int GetDefaultPort(Protocol.Protocols protocol)
- {
- try {
- switch (protocol) {
- case mRemoteNG.Connection.Protocol.Protocols.RDP:
- return mRemoteNG.Connection.Protocol.RDP.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.VNC:
- return mRemoteNG.Connection.Protocol.VNC.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.SSH1:
- return mRemoteNG.Connection.Protocol.SSH1.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.SSH2:
- return mRemoteNG.Connection.Protocol.SSH2.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.Telnet:
- return mRemoteNG.Connection.Protocol.Telnet.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.Rlogin:
- return mRemoteNG.Connection.Protocol.Rlogin.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.RAW:
- return mRemoteNG.Connection.Protocol.RAW.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.HTTP:
- return mRemoteNG.Connection.Protocol.HTTP.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.HTTPS:
- return mRemoteNG.Connection.Protocol.HTTPS.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.ICA:
- return mRemoteNG.Connection.Protocol.ICA.Defaults.Port;
- case mRemoteNG.Connection.Protocol.Protocols.IntApp:
- return mRemoteNG.Connection.Protocol.IntegratedProgram.Defaults.Port;
- }
- } catch (Exception ex) {
- mRemoteNG.App.Runtime.MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strConnectionSetDefaultPortFailed, ex, mRemoteNG.Messages.MessageClass.ErrorMsg);
- }
- }
- #endregion
- }
+ namespace Connection
+ {
+ [DefaultProperty("Name")]
+ public partial class Info
+ {
+ #region "Public Properties"
+ #region "Display"
+ [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNameName"), LocalizedDescription("strPropertyDescriptionName")]
+ public virtual string Name { get; set; }
+
+ private string _description = mRemoteNG.My.Settings.ConDefaultDescription;
+ [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNameDescription"), LocalizedDescription("strPropertyDescriptionDescription")]
+ public virtual string Description
+ {
+ get { return GetInheritedPropertyValue("Description", _description); }
+ set { _description = value; }
+ }
+
+ private string _icon = mRemoteNG.My.Settings.ConDefaultIcon;
+ [LocalizedCategory("strCategoryDisplay", 1), TypeConverter(typeof(Icon)), LocalizedDisplayName("strPropertyNameIcon"), LocalizedDescription("strPropertyDescriptionIcon")]
+ public virtual string Icon
+ {
+ get { return GetInheritedPropertyValue("Icon", _icon); }
+ set { _icon = value; }
+ }
+
+ private string _panel = mRemoteNG.My.Language.strGeneral;
+ [LocalizedCategory("strCategoryDisplay", 1), LocalizedDisplayName("strPropertyNamePanel"), LocalizedDescription("strPropertyDescriptionPanel")]
+ public virtual string Panel
+ {
+ get { return GetInheritedPropertyValue("Panel", _panel); }
+ set { _panel = value; }
+ }
+ #endregion
+ #region "Connection"
+ private string _hostname = string.Empty;
+ [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameAddress"), LocalizedDescription("strPropertyDescriptionAddress")]
+ public virtual string Hostname
+ {
+ get { return _hostname.Trim(); }
+ set
+ {
+ if (string.IsNullOrEmpty(value))
+ {
+ _hostname = string.Empty;
+ }
+ else
+ {
+ _hostname = value.Trim();
+ }
+ }
+ }
+
+ private string _username = mRemoteNG.My.Settings.ConDefaultUsername;
+ [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameUsername"), LocalizedDescription("strPropertyDescriptionUsername")]
+ public virtual string Username
+ {
+ get { return GetInheritedPropertyValue("Username", _username); }
+ set { _username = value.Trim(); }
+ }
+
+ private string _password = mRemoteNG.My.Settings.ConDefaultPassword;
+ [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNamePassword"), LocalizedDescription("strPropertyDescriptionPassword"), PasswordPropertyText(true)]
+ public virtual string Password
+ {
+ get { return GetInheritedPropertyValue("Password", _password); }
+ set { _password = value; }
+ }
+
+ private string _domain = mRemoteNG.My.Settings.ConDefaultDomain;
+ [LocalizedCategory("strCategoryConnection", 2), LocalizedDisplayName("strPropertyNameDomain"), LocalizedDescription("strPropertyDescriptionDomain")]
+ public string Domain
+ {
+ get { return GetInheritedPropertyValue("Domain", _domain).Trim(); }
+ set { _domain = value.Trim(); }
+ }
+ #endregion
+ #region "Protocol"
+ private Protocol.Protocols _protocol = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.Protocols), mRemoteNG.My.Settings.ConDefaultProtocol);
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameProtocol"), LocalizedDescription("strPropertyDescriptionProtocol"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public virtual Protocol.Protocols Protocol
+ {
+ get { return GetInheritedPropertyValue("Protocol", _protocol); }
+ set { _protocol = value; }
+ }
+
+ private string _extApp = mRemoteNG.My.Settings.ConDefaultExtApp;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameExternalTool"), LocalizedDescription("strPropertyDescriptionExternalTool"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
+ public string ExtApp
+ {
+ get { return GetInheritedPropertyValue("ExtApp", _extApp); }
+ set { _extApp = value; }
+ }
+
+ private int _port;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNamePort"), LocalizedDescription("strPropertyDescriptionPort")]
+ public virtual int Port
+ {
+ get { return GetInheritedPropertyValue("Port", _port); }
+ set { _port = value; }
+ }
+
+ private string _puttySession = mRemoteNG.My.Settings.ConDefaultPuttySession;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNamePuttySession"), LocalizedDescription("strPropertyDescriptionPuttySession"), TypeConverter(typeof(Putty.Sessions.SessionList))]
+ public virtual string PuttySession
+ {
+ get { return GetInheritedPropertyValue("PuttySession", _puttySession); }
+ set { _puttySession = value; }
+ }
+
+ private Protocol.ICA.EncryptionStrength _icaEncryption = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.ICA.EncryptionStrength), mRemoteNG.My.Settings.ConDefaultICAEncryptionStrength);
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameEncryptionStrength"), LocalizedDescription("strPropertyDescriptionEncryptionStrength"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.ICA.EncryptionStrength ICAEncryption
+ {
+ get { return GetInheritedPropertyValue("ICAEncryption", _icaEncryption); }
+ set { _icaEncryption = value; }
+ }
+
+ private bool _useConsoleSession = mRemoteNG.My.Settings.ConDefaultUseConsoleSession;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameUseConsoleSession"), LocalizedDescription("strPropertyDescriptionUseConsoleSession"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool UseConsoleSession
+ {
+ get { return GetInheritedPropertyValue("UseConsoleSession", _useConsoleSession); }
+ set { _useConsoleSession = value; }
+ }
+
+ private Protocol.RDP.AuthenticationLevel _rdpAuthenticationLevel = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.AuthenticationLevel), mRemoteNG.My.Settings.ConDefaultRDPAuthenticationLevel);
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameAuthenticationLevel"), LocalizedDescription("strPropertyDescriptionAuthenticationLevel"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.AuthenticationLevel RDPAuthenticationLevel
+ {
+ get { return GetInheritedPropertyValue("RDPAuthenticationLevel", _rdpAuthenticationLevel); }
+ set { _rdpAuthenticationLevel = value; }
+ }
+
+ private string _loadBalanceInfo = mRemoteNG.My.Settings.ConDefaultLoadBalanceInfo;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameLoadBalanceInfo"), LocalizedDescription("strPropertyDescriptionLoadBalanceInfo")]
+ public string LoadBalanceInfo
+ {
+ get { return GetInheritedPropertyValue("LoadBalanceInfo", _loadBalanceInfo).Trim(); }
+ set { _loadBalanceInfo = value.Trim(); }
+ }
+
+ private Protocol.HTTPBase.RenderingEngine _renderingEngine = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.HTTPBase.RenderingEngine), mRemoteNG.My.Settings.ConDefaultRenderingEngine);
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameRenderingEngine"), LocalizedDescription("strPropertyDescriptionRenderingEngine"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.HTTPBase.RenderingEngine RenderingEngine
+ {
+ get { return GetInheritedPropertyValue("RenderingEngine", _renderingEngine); }
+ set { _renderingEngine = value; }
+ }
+
+ private bool _useCredSsp = mRemoteNG.My.Settings.ConDefaultUseCredSsp;
+ [LocalizedCategory("strCategoryProtocol", 3), LocalizedDisplayName("strPropertyNameUseCredSsp"), LocalizedDescription("strPropertyDescriptionUseCredSsp"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool UseCredSsp
+ {
+ get { return GetInheritedPropertyValue("UseCredSsp", _useCredSsp); }
+ set { _useCredSsp = value; }
+ }
+ #endregion
+ #region "RD Gateway"
+ private Protocol.RDP.RDGatewayUsageMethod _rdGatewayUsageMethod = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDGatewayUsageMethod), mRemoteNG.My.Settings.ConDefaultRDGatewayUsageMethod);
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUsageMethod"), LocalizedDescription("strPropertyDescriptionRDGatewayUsageMethod"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDGatewayUsageMethod RDGatewayUsageMethod
+ {
+ get { return GetInheritedPropertyValue("RDGatewayUsageMethod", _rdGatewayUsageMethod); }
+ set { _rdGatewayUsageMethod = value; }
+ }
+
+ private string _rdGatewayHostname = mRemoteNG.My.Settings.ConDefaultRDGatewayHostname;
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayHostname"), LocalizedDescription("strPropertyDescriptionRDGatewayHostname")]
+ public string RDGatewayHostname
+ {
+ get { return GetInheritedPropertyValue("RDGatewayHostname", _rdGatewayHostname).Trim(); }
+ set { _rdGatewayHostname = value.Trim(); }
+ }
+
+ private Protocol.RDP.RDGatewayUseConnectionCredentials _rdGatewayUseConnectionCredentials = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDGatewayUseConnectionCredentials), mRemoteNG.My.Settings.ConDefaultRDGatewayUseConnectionCredentials);
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUseConnectionCredentials"), LocalizedDescription("strPropertyDescriptionRDGatewayUseConnectionCredentials"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials
+ {
+ get { return GetInheritedPropertyValue("RDGatewayUseConnectionCredentials", _rdGatewayUseConnectionCredentials); }
+ set { _rdGatewayUseConnectionCredentials = value; }
+ }
+
+ private string _rdGatewayUsername = mRemoteNG.My.Settings.ConDefaultRDGatewayUsername;
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayUsername"), LocalizedDescription("strPropertyDescriptionRDGatewayUsername")]
+ public string RDGatewayUsername
+ {
+ get { return GetInheritedPropertyValue("RDGatewayUsername", _rdGatewayUsername).Trim(); }
+ set { _rdGatewayUsername = value.Trim(); }
+ }
+
+ private string _rdGatewayPassword = mRemoteNG.My.Settings.ConDefaultRDGatewayPassword;
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayPassword"), LocalizedDescription("strPropertyNameRDGatewayPassword"), PasswordPropertyText(true)]
+ public string RDGatewayPassword
+ {
+ get { return GetInheritedPropertyValue("RDGatewayPassword", _rdGatewayPassword); }
+ set { _rdGatewayPassword = value; }
+ }
+
+ private string _rdGatewayDomain = mRemoteNG.My.Settings.ConDefaultRDGatewayDomain;
+ [LocalizedCategory("strCategoryGateway", 4), LocalizedDisplayName("strPropertyNameRDGatewayDomain"), LocalizedDescription("strPropertyDescriptionRDGatewayDomain")]
+ public string RDGatewayDomain
+ {
+ get { return GetInheritedPropertyValue("RDGatewayDomain", _rdGatewayDomain).Trim(); }
+ set { _rdGatewayDomain = value.Trim(); }
+ }
+ #endregion
+ #region "Appearance"
+ private Protocol.RDP.RDPResolutions _resolution = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPResolutions), mRemoteNG.My.Settings.ConDefaultResolution);
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameResolution"), LocalizedDescription("strPropertyDescriptionResolution"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPResolutions Resolution
+ {
+ get { return GetInheritedPropertyValue("Resolution", _resolution); }
+ set { _resolution = value; }
+ }
+
+ private bool _automaticResize = mRemoteNG.My.Settings.ConDefaultAutomaticResize;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameAutomaticResize"), LocalizedDescription("strPropertyDescriptionAutomaticResize"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool AutomaticResize
+ {
+ get { return GetInheritedPropertyValue("AutomaticResize", _automaticResize); }
+ set { _automaticResize = value; }
+ }
+
+ private Protocol.RDP.RDPColors _colors = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPColors), mRemoteNG.My.Settings.ConDefaultColors);
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameColors"), LocalizedDescription("strPropertyDescriptionColors"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPColors Colors
+ {
+ get { return GetInheritedPropertyValue("Colors", _colors); }
+ set { _colors = value; }
+ }
+
+ private bool _cacheBitmaps = mRemoteNG.My.Settings.ConDefaultCacheBitmaps;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameCacheBitmaps"), LocalizedDescription("strPropertyDescriptionCacheBitmaps"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool CacheBitmaps
+ {
+ get { return GetInheritedPropertyValue("CacheBitmaps", _cacheBitmaps); }
+ set { _cacheBitmaps = value; }
+ }
+
+ private bool _displayWallpaper = mRemoteNG.My.Settings.ConDefaultDisplayWallpaper;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameDisplayWallpaper"), LocalizedDescription("strPropertyDescriptionDisplayWallpaper"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool DisplayWallpaper
+ {
+ get { return GetInheritedPropertyValue("DisplayWallpaper", _displayWallpaper); }
+ set { _displayWallpaper = value; }
+ }
+
+ private bool _displayThemes = mRemoteNG.My.Settings.ConDefaultDisplayThemes;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameDisplayThemes"), LocalizedDescription("strPropertyDescriptionDisplayThemes"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool DisplayThemes
+ {
+ get { return GetInheritedPropertyValue("DisplayThemes", _displayThemes); }
+ set { _displayThemes = value; }
+ }
+
+ private bool _enableFontSmoothing = mRemoteNG.My.Settings.ConDefaultEnableFontSmoothing;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameEnableFontSmoothing"), LocalizedDescription("strPropertyDescriptionEnableFontSmoothing"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool EnableFontSmoothing
+ {
+ get { return GetInheritedPropertyValue("EnableFontSmoothing", _enableFontSmoothing); }
+ set { _enableFontSmoothing = value; }
+ }
+
+ private bool _enableDesktopComposition = mRemoteNG.My.Settings.ConDefaultEnableDesktopComposition;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameEnableDesktopComposition"), LocalizedDescription("strPropertyDescriptionEnableDesktopComposition"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool EnableDesktopComposition
+ {
+ get { return GetInheritedPropertyValue("EnableDesktopComposition", _enableDesktopComposition); }
+ set { _enableDesktopComposition = value; }
+ }
+ #endregion
+ #region "Redirect"
+ private bool _redirectKeys = mRemoteNG.My.Settings.ConDefaultRedirectKeys;
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectKeys"), LocalizedDescription("strPropertyDescriptionRedirectKeys"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectKeys
+ {
+ get { return GetInheritedPropertyValue("RedirectKeys", _redirectKeys); }
+ set { _redirectKeys = value; }
+ }
+
+ private bool _redirectDiskDrives = mRemoteNG.My.Settings.ConDefaultRedirectDiskDrives;
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectDrives"), LocalizedDescription("strPropertyDescriptionRedirectDrives"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectDiskDrives
+ {
+ get { return GetInheritedPropertyValue("RedirectDiskDrives", _redirectDiskDrives); }
+ set { _redirectDiskDrives = value; }
+ }
+
+ private bool _redirectPrinters = mRemoteNG.My.Settings.ConDefaultRedirectPrinters;
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectPrinters"), LocalizedDescription("strPropertyDescriptionRedirectPrinters"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectPrinters
+ {
+ get { return GetInheritedPropertyValue("RedirectPrinters", _redirectPrinters); }
+ set { _redirectPrinters = value; }
+ }
+
+ private bool _redirectPorts = mRemoteNG.My.Settings.ConDefaultRedirectPorts;
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectPorts"), LocalizedDescription("strPropertyDescriptionRedirectPorts"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectPorts
+ {
+ get { return GetInheritedPropertyValue("RedirectPorts", _redirectPorts); }
+ set { _redirectPorts = value; }
+ }
+
+ private bool _redirectSmartCards = mRemoteNG.My.Settings.ConDefaultRedirectSmartCards;
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectSmartCards"), LocalizedDescription("strPropertyDescriptionRedirectSmartCards"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectSmartCards
+ {
+ get { return GetInheritedPropertyValue("RedirectSmartCards", _redirectSmartCards); }
+ set { _redirectSmartCards = value; }
+ }
+
+ private Protocol.RDP.RDPSounds _redirectSound = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.RDP.RDPSounds), mRemoteNG.My.Settings.ConDefaultRedirectSound);
+ [LocalizedCategory("strCategoryRedirect", 6), LocalizedDisplayName("strPropertyNameRedirectSounds"), LocalizedDescription("strPropertyDescriptionRedirectSounds"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPSounds RedirectSound
+ {
+ get { return GetInheritedPropertyValue("RedirectSound", _redirectSound); }
+ set { _redirectSound = value; }
+ }
+ #endregion
+ #region "Misc"
+ private string _preExtApp = mRemoteNG.My.Settings.ConDefaultPreExtApp;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameExternalToolBefore"), LocalizedDescription("strPropertyDescriptionExternalToolBefore"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
+ public virtual string PreExtApp
+ {
+ get { return GetInheritedPropertyValue("PreExtApp", _preExtApp); }
+ set { _preExtApp = value; }
+ }
+
+ private string _postExtApp = mRemoteNG.My.Settings.ConDefaultPostExtApp;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameExternalToolAfter"), LocalizedDescription("strPropertyDescriptionExternalToolAfter"), TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
+ public virtual string PostExtApp
+ {
+ get { return GetInheritedPropertyValue("PostExtApp", _postExtApp); }
+ set { _postExtApp = value; }
+ }
+
+ private string _macAddress = mRemoteNG.My.Settings.ConDefaultMacAddress;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameMACAddress"), LocalizedDescription("strPropertyDescriptionMACAddress")]
+ public virtual string MacAddress
+ {
+ get { return GetInheritedPropertyValue("MacAddress", _macAddress); }
+ set { _macAddress = value; }
+ }
+
+ private string _userField = mRemoteNG.My.Settings.ConDefaultUserField;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), LocalizedDisplayName("strPropertyNameUser1"), LocalizedDescription("strPropertyDescriptionUser1")]
+ public virtual string UserField
+ {
+ get { return GetInheritedPropertyValue("UserField", _userField); }
+ set { _userField = value; }
+ }
+ #endregion
+ #region "VNC"
+ private Protocol.VNC.Compression _vncCompression = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Compression), mRemoteNG.My.Settings.ConDefaultVNCCompression);
+ [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameCompression"), LocalizedDescription("strPropertyDescriptionCompression"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Compression VNCCompression
+ {
+ get { return GetInheritedPropertyValue("VNCCompression", _vncCompression); }
+ set { _vncCompression = value; }
+ }
+
+ private Protocol.VNC.Encoding _vncEncoding = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Encoding), mRemoteNG.My.Settings.ConDefaultVNCEncoding);
+ [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameEncoding"), LocalizedDescription("strPropertyDescriptionEncoding"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Encoding VNCEncoding
+ {
+ get { return GetInheritedPropertyValue("VNCEncoding", _vncEncoding); }
+ set { _vncEncoding = value; }
+ }
+
+
+ private Protocol.VNC.AuthMode _vncAuthMode = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.AuthMode), mRemoteNG.My.Settings.ConDefaultVNCAuthMode);
+ [LocalizedCategory("strCategoryConnection", 2), Browsable(false), LocalizedDisplayName("strPropertyNameAuthenticationMode"), LocalizedDescription("strPropertyDescriptionAuthenticationMode"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.AuthMode VNCAuthMode
+ {
+ get { return GetInheritedPropertyValue("VNCAuthMode", _vncAuthMode); }
+ set { _vncAuthMode = value; }
+ }
+
+ private Protocol.VNC.ProxyType _vncProxyType = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.ProxyType), mRemoteNG.My.Settings.ConDefaultVNCProxyType);
+ [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyType"), LocalizedDescription("strPropertyDescriptionVNCProxyType"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.ProxyType VNCProxyType
+ {
+ get { return GetInheritedPropertyValue("VNCProxyType", _vncProxyType); }
+ set { _vncProxyType = value; }
+ }
+
+ private string _vncProxyIP = mRemoteNG.My.Settings.ConDefaultVNCProxyIP;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyAddress"), LocalizedDescription("strPropertyDescriptionVNCProxyAddress")]
+ public string VNCProxyIP
+ {
+ get { return GetInheritedPropertyValue("VNCProxyIP", _vncProxyIP); }
+ set { _vncProxyIP = value; }
+ }
+
+ private int _vncProxyPort = mRemoteNG.My.Settings.ConDefaultVNCProxyPort;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyPort"), LocalizedDescription("strPropertyDescriptionVNCProxyPort")]
+ public int VNCProxyPort
+ {
+ get { return GetInheritedPropertyValue("VNCProxyPort", _vncProxyPort); }
+ set { _vncProxyPort = value; }
+ }
+
+ private string _vncProxyUsername = mRemoteNG.My.Settings.ConDefaultVNCProxyUsername;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyUsername"), LocalizedDescription("strPropertyDescriptionVNCProxyUsername")]
+ public string VNCProxyUsername
+ {
+ get { return GetInheritedPropertyValue("VNCProxyUsername", _vncProxyUsername); }
+ set { _vncProxyUsername = value; }
+ }
+
+ private string _vncProxyPassword = mRemoteNG.My.Settings.ConDefaultVNCProxyPassword;
+ [LocalizedCategory("strCategoryMiscellaneous", 7), Browsable(false), LocalizedDisplayName("strPropertyNameVNCProxyPassword"), LocalizedDescription("strPropertyDescriptionVNCProxyPassword"), PasswordPropertyText(true)]
+ public string VNCProxyPassword
+ {
+ get { return GetInheritedPropertyValue("VNCProxyPassword", _vncProxyPassword); }
+ set { _vncProxyPassword = value; }
+ }
+
+ private Protocol.VNC.Colors _vncColors = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.Colors), mRemoteNG.My.Settings.ConDefaultVNCColors);
+ [LocalizedCategory("strCategoryAppearance", 5), Browsable(false), LocalizedDisplayName("strPropertyNameColors"), LocalizedDescription("strPropertyDescriptionColors"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Colors VNCColors
+ {
+ get { return GetInheritedPropertyValue("VNCColors", _vncColors); }
+ set { _vncColors = value; }
+ }
+
+ private Protocol.VNC.SmartSizeMode _vncSmartSizeMode = mRemoteNG.Tools.Misc.StringToEnum(typeof(Protocol.VNC.SmartSizeMode), mRemoteNG.My.Settings.ConDefaultVNCSmartSizeMode);
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameSmartSizeMode"), LocalizedDescription("strPropertyDescriptionSmartSizeMode"), TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.SmartSizeMode VNCSmartSizeMode
+ {
+ get { return GetInheritedPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode); }
+ set { _vncSmartSizeMode = value; }
+ }
+
+ private bool _vncViewOnly = mRemoteNG.My.Settings.ConDefaultVNCViewOnly;
+ [LocalizedCategory("strCategoryAppearance", 5), LocalizedDisplayName("strPropertyNameViewOnly"), LocalizedDescription("strPropertyDescriptionViewOnly"), TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool VNCViewOnly
+ {
+ get { return GetInheritedPropertyValue("VNCViewOnly", _vncViewOnly); }
+ set { _vncViewOnly = value; }
+ }
+ #endregion
+
+ [Browsable(false)]
+ public Inheritance Inherit { get; set; }
+
+ [Browsable(false)]
+ public Protocol.List OpenConnections { get; set; }
+
+ [Browsable(false)]
+ public bool IsContainer { get; set; }
+
+ [Browsable(false)]
+ public bool IsDefault { get; set; }
+
+ [Browsable(false)]
+ public Container.Info Parent { get; set; }
+
+ [Browsable(false)]
+ public int PositionID { get; set; }
+
+ [Browsable(false)]
+ public string ConstantID { get; set; }
+
+ [Browsable(false)]
+ public TreeNode TreeNode { get; set; }
+
+ [Browsable(false)]
+ public bool IsQuickConnect { get; set; }
+
+ [Browsable(false)]
+ public bool PleaseConnect { get; set; }
+ #endregion
+
+ #region "Constructors"
+ public Info()
+ {
+ SetDefaults();
+ }
+
+ public Info(Container.Info parent)
+ {
+ SetDefaults();
+ IsContainer = true;
+ this.Parent = parent;
+ }
+ #endregion
+
+ #region "Public Methods"
+ public Info Copy()
+ {
+ Info newConnectionInfo = MemberwiseClone();
+ newConnectionInfo.ConstantID = mRemoteNG.Tools.Misc.CreateConstantID();
+ newConnectionInfo._OpenConnections = new Protocol.List();
+ return newConnectionInfo;
+ }
+
+ public void SetDefaults()
+ {
+ if (Port == 0)
+ SetDefaultPort();
+ }
+
+ public int GetDefaultPort()
+ {
+ return GetDefaultPort(Protocol);
+ }
+
+ public void SetDefaultPort()
+ {
+ Port = GetDefaultPort();
+ }
+ #endregion
+
+ #region "Public Enumerations"
+ [Flags()]
+ public enum Force
+ {
+ None = 0,
+ UseConsoleSession = 1,
+ Fullscreen = 2,
+ DoNotJump = 4,
+ OverridePanel = 8,
+ DontUseConsoleSession = 16,
+ NoCredentials = 32
+ }
+ #endregion
+
+ #region "Private Methods"
+ private TPropertyType GetInheritedPropertyValue(string propertyName, TPropertyType value)
+ {
+ Type inheritType = Inherit.GetType();
+ PropertyInfo inheritPropertyInfo = inheritType.GetProperty(propertyName);
+ bool inheritPropertyValue = inheritPropertyInfo.GetValue(Inherit, BindingFlags.GetProperty, null, null, null);
+
+ if (inheritPropertyValue & Parent != null)
+ {
+ Info parentConnectionInfo = null;
+ if (IsContainer)
+ {
+ parentConnectionInfo = Parent.Parent.ConnectionInfo;
+ }
+ else
+ {
+ parentConnectionInfo = Parent.ConnectionInfo;
+ }
+
+ Type connectionInfoType = parentConnectionInfo.GetType();
+ PropertyInfo parentPropertyInfo = connectionInfoType.GetProperty(propertyName);
+ TPropertyType parentPropertyValue = parentPropertyInfo.GetValue(parentConnectionInfo, BindingFlags.GetProperty, null, null, null);
+
+ return parentPropertyValue;
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ private static int GetDefaultPort(Protocol.Protocols protocol)
+ {
+ try
+ {
+ switch (protocol)
+ {
+ case mRemoteNG.Connection.Protocol.Protocols.RDP:
+ return mRemoteNG.Connection.Protocol.RDP.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.VNC:
+ return mRemoteNG.Connection.Protocol.VNC.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH1:
+ return mRemoteNG.Connection.Protocol.SSH1.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH2:
+ return mRemoteNG.Connection.Protocol.SSH2.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.Telnet:
+ return mRemoteNG.Connection.Protocol.Telnet.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.Rlogin:
+ return mRemoteNG.Connection.Protocol.Rlogin.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.RAW:
+ return mRemoteNG.Connection.Protocol.RAW.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTP:
+ return mRemoteNG.Connection.Protocol.HTTP.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTPS:
+ return mRemoteNG.Connection.Protocol.HTTPS.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.ICA:
+ return mRemoteNG.Connection.Protocol.ICA.Defaults.Port;
+ case mRemoteNG.Connection.Protocol.Protocols.IntApp:
+ return mRemoteNG.Connection.Protocol.IntegratedProgram.Defaults.Port;
+ }
+ }
+ catch (Exception ex)
+ {
+ mRemoteNG.App.Runtime.MessageCollector.AddExceptionMessage(mRemoteNG.My.Language.strConnectionSetDefaultPortFailed, ex, mRemoteNG.Messages.MessageClass.ErrorMsg);
+ }
+ }
+ #endregion
+ }
+ }
}
diff --git a/mRemoteV1.ConvertedToC#/Properties/Settings.Designer.cs b/mRemoteV1.ConvertedToC#/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..418051432
--- /dev/null
+++ b/mRemoteV1.ConvertedToC#/Properties/Settings.Designer.cs
@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+//
+// 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.
+//
+//------------------------------------------------------------------------------
+
+namespace mRemoteNG.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public global::System.Drawing.Point MainFormLocation {
+ get {
+ return ((global::System.Drawing.Point)(this["MainFormLocation"]));
+ }
+ set {
+ this["MainFormLocation"] = value;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1.ConvertedToC#/Properties/Settings.settings b/mRemoteV1.ConvertedToC#/Properties/Settings.settings
new file mode 100644
index 000000000..489d8c0c4
--- /dev/null
+++ b/mRemoteV1.ConvertedToC#/Properties/Settings.settings
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1.ConvertedToC#/References/ADTree.dll b/mRemoteV1.ConvertedToC#/References/ADTree.dll
new file mode 100644
index 000000000..98e435b33
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/ADTree.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/AxInterop.MSTSCLib.dll b/mRemoteV1.ConvertedToC#/References/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..c0da0a918
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/AxInterop.WFICALib.dll b/mRemoteV1.ConvertedToC#/References/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..4cdd784ab
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/DiffieHellman.dll b/mRemoteV1.ConvertedToC#/References/DiffieHellman.dll
new file mode 100644
index 000000000..aa3105110
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/DiffieHellman.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/FilteredPropertyGrid.dll b/mRemoteV1.ConvertedToC#/References/FilteredPropertyGrid.dll
new file mode 100644
index 000000000..4561e8a9b
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/FilteredPropertyGrid.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/IPTextBox.dll b/mRemoteV1.ConvertedToC#/References/IPTextBox.dll
new file mode 100644
index 000000000..e340f4856
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/IPTextBox.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Interop.EOLWTSCOM.dll b/mRemoteV1.ConvertedToC#/References/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..95995ebd6
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Interop.MSTSCLib.dll b/mRemoteV1.ConvertedToC#/References/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..f53087b4d
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Interop.SHDocVw.dll b/mRemoteV1.ConvertedToC#/References/Interop.SHDocVw.dll
new file mode 100644
index 000000000..9e8396f98
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Interop.WFICALib.dll b/mRemoteV1.ConvertedToC#/References/Interop.WFICALib.dll
new file mode 100644
index 000000000..f0b43e0df
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Interop.WFICALib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/MagicLibrary.dll b/mRemoteV1.ConvertedToC#/References/MagicLibrary.dll
new file mode 100644
index 000000000..24cfa5d0a
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/MagicLibrary.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/MiniGeckoBrowser.dll b/mRemoteV1.ConvertedToC#/References/MiniGeckoBrowser.dll
new file mode 100644
index 000000000..901b73cfc
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/MiniGeckoBrowser.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/MiniTabControl.dll b/mRemoteV1.ConvertedToC#/References/MiniTabControl.dll
new file mode 100644
index 000000000..04bb12dd7
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/MiniTabControl.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Org.Mentalis.Security.dll b/mRemoteV1.ConvertedToC#/References/Org.Mentalis.Security.dll
new file mode 100644
index 000000000..bac39dd9c
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Org.Mentalis.Security.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/PSTaskDialog.dll b/mRemoteV1.ConvertedToC#/References/PSTaskDialog.dll
new file mode 100644
index 000000000..7d74bce32
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/PSTaskDialog.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Skybound.Gecko.dll b/mRemoteV1.ConvertedToC#/References/Skybound.Gecko.dll
new file mode 100644
index 000000000..19abc441e
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Skybound.Gecko.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/Tamir.SharpSSH.dll b/mRemoteV1.ConvertedToC#/References/Tamir.SharpSSH.dll
new file mode 100644
index 000000000..9d217c26f
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/Tamir.SharpSSH.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/VncSharpNG.dll b/mRemoteV1.ConvertedToC#/References/VncSharpNG.dll
new file mode 100644
index 000000000..f9c9dc1d1
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/VncSharpNG.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/VncSharpNG.pdb b/mRemoteV1.ConvertedToC#/References/VncSharpNG.pdb
new file mode 100644
index 000000000..15ee70043
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/VncSharpNG.pdb differ
diff --git a/mRemoteV1.ConvertedToC#/References/WeifenLuo.WinFormsUI.Docking.dll b/mRemoteV1.ConvertedToC#/References/WeifenLuo.WinFormsUI.Docking.dll
new file mode 100644
index 000000000..ea1da8876
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/WeifenLuo.WinFormsUI.Docking.dll differ
diff --git a/mRemoteV1.ConvertedToC#/References/log4net.dll b/mRemoteV1.ConvertedToC#/References/log4net.dll
new file mode 100644
index 000000000..ffc57e112
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/References/log4net.dll differ
diff --git a/mRemoteV1.ConvertedToC#/Tools/Authenticode.cs b/mRemoteV1.ConvertedToC#/Tools/Authenticode.cs
index caf6e4588..db26d9fb7 100644
--- a/mRemoteV1.ConvertedToC#/Tools/Authenticode.cs
+++ b/mRemoteV1.ConvertedToC#/Tools/Authenticode.cs
@@ -29,7 +29,7 @@ namespace mRemoteNG.Tools
IntPtr trustDataPointer = default(IntPtr);
try {
FileInfo fileInfo = new FileInfo(FilePath);
- if (!fileInfo.Exists()) {
+ if (!fileInfo.Exists) {
_status = StatusValue.FileNotExist;
return _status;
}
@@ -60,13 +60,13 @@ namespace mRemoteNG.Tools
Win32.WINTRUST_DATA trustData = new Win32.WINTRUST_DATA();
var _with1 = trustData;
- _with1.dwUIChoice = Display;
+ _with1.dwUIChoice = (uint)Display;
_with1.fdwRevocationChecks = Win32.WTD_REVOKE_WHOLECHAIN;
_with1.dwUnionChoice = Win32.WTD_CHOICE_FILE;
_with1.pFile = trustFileInfoPointer;
_with1.dwStateAction = Win32.WTD_STATEACTION_IGNORE;
_with1.dwProvFlags = Win32.WTD_DISABLE_MD2_MD4;
- _with1.dwUIContext = DisplayContext;
+ _with1.dwUIContext = (uint)DisplayContext;
trustDataPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(trustData));
Marshal.StructureToPtr(trustData, trustDataPointer, false);
@@ -95,7 +95,7 @@ namespace mRemoteNG.Tools
return _status;
} catch (CryptographicException ex) {
PropertyInfo hResultProperty = ex.GetType().GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
- int hResult = hResultProperty.GetValue(ex, null);
+ int hResult = (int)hResultProperty.GetValue(ex, null);
if (hResult == Win32.CRYPT_E_NO_MATCH) {
_status = StatusValue.NoSignature;
return _status;
@@ -170,7 +170,7 @@ namespace mRemoteNG.Tools
#endregion
#region "Public Enums"
- public enum DisplayValue : UInt32
+ public enum DisplayValue : uint
{
Unknown = 0,
All = Win32.WTD_UI_ALL,
@@ -179,7 +179,7 @@ namespace mRemoteNG.Tools
NoGood = Win32.WTD_UI_NOGOOD
}
- public enum DisplayContextValue : UInt32
+ public enum DisplayContextValue : uint
{
Execute = Win32.WTD_UICONTEXT_EXECUTE,
Install = Win32.WTD_UICONTEXT_INSTALL
@@ -212,7 +212,7 @@ IntPtr pWVTData);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class WINTRUST_DATA
{
- public UInt32 cbStruct = Marshal.SizeOf(typeof(WINTRUST_DATA));
+ public UInt32 cbStruct = (uint)Marshal.SizeOf(typeof(WINTRUST_DATA));
public IntPtr pPolicyCallbackData;
public IntPtr pSIPClientData;
public UInt32 dwUIChoice;
@@ -229,7 +229,7 @@ IntPtr pWVTData);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class WINTRUST_FILE_INFO
{
- public UInt32 cbStruct = Marshal.SizeOf(typeof(WINTRUST_FILE_INFO));
+ public UInt32 cbStruct = (uint)Marshal.SizeOf(typeof(WINTRUST_FILE_INFO));
[MarshalAs(UnmanagedType.LPTStr)]
public string pcwszFilePath;
public IntPtr hFile;
@@ -237,10 +237,10 @@ IntPtr pWVTData);
}
- public const int CRYPT_E_NO_MATCH = 0x80092009;
- public const int TRUST_E_SUBJECT_NOT_TRUSTED = 0x800b0004;
+ public const int CRYPT_E_NO_MATCH = (int)0x80092009;
+ public const int TRUST_E_SUBJECT_NOT_TRUSTED = (int)0x800b0004;
- public const int TRUST_E_NOSIGNATURE = 0x800b0100;
+ public const int TRUST_E_NOSIGNATURE = (int)0x800b0100;
public static readonly Guid WINTRUST_ACTION_GENERIC_VERIFY_V2 = new Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}");
public const UInt32 WTD_CHOICE_FILE = 1;
diff --git a/mRemoteV1.ConvertedToC#/bin/Debug Portable/mRemoteNG.vshost.exe b/mRemoteV1.ConvertedToC#/bin/Debug Portable/mRemoteNG.vshost.exe
new file mode 100644
index 000000000..a2140ff29
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/bin/Debug Portable/mRemoteNG.vshost.exe differ
diff --git a/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj b/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj
index d3accdde9..0ee919308 100644
--- a/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj
+++ b/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj
@@ -343,6 +343,11 @@ editbin.exe /LARGEADDRESSAWARE "$(TargetPath)"
True
Resources.resx
+
+ True
+ True
+ Settings.settings
+
@@ -636,6 +641,7 @@ editbin.exe /LARGEADDRESSAWARE "$(TargetPath)"
+
MyApplicationCodeGenerator
@@ -653,6 +659,10 @@ editbin.exe /LARGEADDRESSAWARE "$(TargetPath)"
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
diff --git a/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj.user b/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj.user
new file mode 100644
index 000000000..e1c572c87
--- /dev/null
+++ b/mRemoteV1.ConvertedToC#/mRemoteV1.Converted.csproj.user
@@ -0,0 +1,14 @@
+
+
+
+ C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1.ConvertedToC#\References\
+ publish\
+
+
+
+
+
+ en-US
+ false
+
+
\ No newline at end of file
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.MSTSCLib.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..b7e045c34
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.WFICALib.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..d66f8e2a1
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache b/mRemoteV1.ConvertedToC#/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 000000000..a66e27a8c
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.EOLWTSCOM.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..da5d0fe6f
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.MSTSCLib.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..aa6373103
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.SHDocVw.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.SHDocVw.dll
new file mode 100644
index 000000000..7984193d0
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.WFICALib.dll b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.WFICALib.dll
new file mode 100644
index 000000000..52b982dd4
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/Interop.WFICALib.dll differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.GenerateResource.Cache b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.GenerateResource.Cache
new file mode 100644
index 000000000..614bd6d56
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.GenerateResource.Cache differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.ResolveComReference.cache b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.ResolveComReference.cache
new file mode 100644
index 000000000..f02aa7572
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csproj.ResolveComReference.cache differ
diff --git a/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csprojResolveAssemblyReference.cache b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csprojResolveAssemblyReference.cache
new file mode 100644
index 000000000..6b0fef510
Binary files /dev/null and b/mRemoteV1.ConvertedToC#/obj/Debug Portable/mRemoteV1.Converted.csprojResolveAssemblyReference.cache differ
diff --git a/mRemoteV1.v12.suo b/mRemoteV1.v12.suo
new file mode 100644
index 000000000..d0a01be53
Binary files /dev/null and b/mRemoteV1.v12.suo differ
diff --git a/mRemoteV1/CS/App/App.Info.cs b/mRemoteV1/CS/App/App.Info.cs
new file mode 100644
index 000000000..71243db85
--- /dev/null
+++ b/mRemoteV1/CS/App/App.Info.cs
@@ -0,0 +1,110 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using System.Environment;
+using System.Threading;
+
+
+namespace mRemoteNG.App.Info
+{
+ public class General
+ {
+ public static readonly string URLHome = "http://www.mremoteng.org/";
+ public static readonly string URLDonate = "http://donate.mremoteng.org/";
+ public static readonly string URLForum = "http://forum.mremoteng.org/";
+ public static readonly string URLBugs = "http://bugs.mremoteng.org/";
+ public static readonly string HomePath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath;
+ public static string EncryptionKey = "mR3m";
+ public static string ReportingFilePath = "";
+ public static readonly string PuttyPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\PuTTYNG.exe";
+public static string UserAgent
+ {
+ get
+ {
+ List details = new List();
+ details.Add("compatible");
+ if (System.Environment.OSVersion.Platform == PlatformID.Win32NT)
+ {
+ details.Add(string.Format("Windows NT {0}.{1}", System.Environment.OSVersion.Version.Major, System.Environment.OSVersion.Version.Minor));
+ }
+ else
+ {
+ details.Add(System.Environment.OSVersion.VersionString);
+ }
+ if (Tools.EnvironmentInfo.IsWow64)
+ {
+ details.Add("WOW64");
+ }
+ details.Add(Thread.CurrentThread.CurrentUICulture.Name);
+ details.Add(string.Format(".NET CLR {0}", Version.ToString()));
+ string detailsString = string.Join("; ", details.ToArray());
+
+ return string.Format("Mozilla/4.0 ({0}) {1}/{2}", detailsString, System.Windows.Forms.Application.ProductName, System.Windows.Forms.Application.ProductVersion);
+ }
+ }
+ }
+
+ public class Settings
+ {
+#if !PORTABLE
+ public static readonly string SettingsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) + "\\" + (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName;
+#else
+ public static readonly string SettingsPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath;
+#endif
+ public static readonly string LayoutFileName = "pnlLayout.xml";
+ public static readonly string ExtAppsFilesName = "extApps.xml";
+ public const string ThemesFileName = "Themes.xml";
+ }
+
+ public class Update
+ {
+public static string FileName
+ {
+ get
+ {
+#if DEBUG
+ return "update-debug.txt";
+#endif
+//
+// if ((string) (My.Settings.Default.UpdateChannel.ToLowerInvariant()) == "beta")
+// {
+// return "update-beta.txt";
+// }
+// else if ((string) (My.Settings.Default.UpdateChannel.ToLowerInvariant()) == "debug")
+// {
+// return "update-debug.txt";
+// }
+// else
+// {
+// return "update.txt";
+// }
+ }
+ }
+ }
+
+ public class Connections
+ {
+ public static readonly string DefaultConnectionsPath = App.Info.Settings.SettingsPath;
+ public static readonly string DefaultConnectionsFile = "confCons.xml";
+ public static readonly string DefaultConnectionsFileNew = "confConsNew.xml";
+ public static readonly double ConnectionFileVersion = 2.5;
+ }
+
+ public class Credentials
+ {
+ public static readonly string CredentialsPath = App.Info.Settings.SettingsPath;
+ public static readonly string CredentialsFile = "confCreds.xml";
+ public static readonly string CredentialsFileNew = "confCredsNew.xml";
+ public static readonly double CredentialsFileVersion = 1.0;
+ }
+}
diff --git a/mRemoteV1/CS/App/App.Native.cs b/mRemoteV1/CS/App/App.Native.cs
new file mode 100644
index 000000000..1b58bcf07
--- /dev/null
+++ b/mRemoteV1/CS/App/App.Native.cs
@@ -0,0 +1,183 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+
+
+namespace mRemoteNG.App
+{
+ public static class Native
+ {
+#region Functions
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool AppendMenu(IntPtr hMenu, int uFlags, IntPtr uIDNewItem, string lpNewItem);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr CreatePopupMenu();
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr GetForegroundWindow();
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, IntPtr uIDNewItem, string lpNewItem);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern int IsIconic(IntPtr hWnd);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern int SendMessage(IntPtr hWnd, int msg, int wparam, int lparam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool SetForegroundWindow(IntPtr hWnd);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool SetMenuItemBitmaps(IntPtr hMenu, int uPosition, int uFlags, IntPtr hBitmapUnchecked, IntPtr hBitmapChecked);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern int SetWindowLong(IntPtr hWnd, int nIndex, long dwNewLong);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr WindowFromPoint(Point point);
+#endregion
+
+#region Structures
+ [StructLayout(LayoutKind.Sequential)]public struct WINDOWPOS
+ {
+ public IntPtr hwnd;
+ public IntPtr hwndInsertAfter;
+ public int x;
+ public int y;
+ public int cx;
+ public int cy;
+ public int flags;
+ }
+#endregion
+
+#region Helpers
+ public static int MAKELONG(int wLow, int wHigh)
+ {
+ return wLow | wHigh << 16;
+ }
+
+ public static int MAKELPARAM(ref int wLow, ref int wHigh)
+ {
+ return MAKELONG(wLow, wHigh);
+ }
+
+ public static int LOWORD(int value)
+ {
+ return value & 0xFFFF;
+ }
+
+ public static int LOWORD(IntPtr value)
+ {
+ return LOWORD(value.ToInt32());
+ }
+
+ public static int HIWORD(int value)
+ {
+ return value >> 16;
+ }
+
+ public static int HIWORD(IntPtr value)
+ {
+ return HIWORD(value.ToInt32());
+ }
+
+#endregion
+
+#region Constants
+ // GetWindowLong
+ public const int GWL_STYLE = (-16);
+
+ // AppendMenu / ModifyMenu / DeleteMenu / RemoveMenu
+ public const int MF_BYCOMMAND = 0x0;
+ public const int MF_BYPOSITION = 0x400;
+ public const int MF_STRING = 0x0;
+ public const int MF_POPUP = 0x10;
+ public const int MF_SEPARATOR = 0x800;
+
+ // WM_LBUTTONDOWN / WM_LBUTTONUP
+ public const int MK_LBUTTON = 0x1;
+
+ // ShowWindow
+ public const int SW_SHOWMAXIMIZED = 3;
+ public const int SW_RESTORE = 9;
+
+ // SetWindowPos / WM_WINDOWPOSCHANGING / WM_WINDOWPOSCHANGED
+ public const int SWP_NOSIZE = 0x1;
+ public const int SWP_NOMOVE = 0x2;
+ public const int SWP_NOZORDER = 0x4;
+ public const int SWP_NOREDRAW = 0x8;
+ public const int SWP_NOACTIVATE = 0x10;
+ public const int SWP_DRAWFRAME = 0x20;
+ public const int SWP_FRAMECHANGED = 0x20;
+ public const int SWP_SHOWWINDOW = 0x40;
+ public const int SWP_HIDEWINDOW = 0x80;
+ public const int SWP_NOCOPYBITS = 0x100;
+ public const int SWP_NOOWNERZORDER = 0x200;
+ public const int SWP_NOSENDCHANGING = 0x400;
+ public const int SWP_NOCLIENTSIZE = 0x800;
+ public const int SWP_NOCLIENTMOVE = 0x1000;
+ public const int SWP_DEFERERASE = 0x2000;
+ public const int SWP_ASYNCWINDOWPOS = 0x4000;
+ public const int SWP_STATECHANGED = 0x8000;
+
+ // WM_ACTIVATE
+ public const int WA_INACTIVE = 0x0;
+ public const int WA_ACTIVE = 0x1;
+ public const int WA_CLICKACTIVE = 0x2;
+
+ // Window Messages
+ public const int WM_CREATE = 0x1;
+ public const int WM_DESTROY = 0x2;
+ public const int WM_ACTIVATE = 0x6;
+ public const int WM_GETTEXT = 0xD;
+ public const int WM_CLOSE = 0x10;
+ public const int WM_ACTIVATEAPP = 0x1C;
+ public const int WM_MOUSEACTIVATE = 0x21;
+ public const int WM_WINDOWPOSCHANGED = 0x47;
+ public const int WM_KEYDOWN = 0x100;
+ public const int WM_KEYUP = 0x101;
+ public const int WM_SYSCOMMAND = 0x112;
+ public const int WM_MOUSEMOVE = 0x200;
+ public const int WM_LBUTTONDOWN = 0x201;
+ public const int WM_LBUTTONUP = 0x202;
+ public const int WM_RBUTTONDOWN = 0x204;
+ public const int WM_RBUTTONUP = 0x205;
+ public const int WM_MBUTTONDOWN = 0x207;
+ public const int WM_MBUTTONUP = 0x208;
+ public const int WM_XBUTTONDOWN = 0x20B;
+ public const int WM_XBUTTONUP = 0x20C;
+ public const int WM_PARENTNOTIFY = 0x210;
+ public const int WM_ENTERSIZEMOVE = 0x231;
+ public const int WM_EXITSIZEMOVE = 0x232;
+ public const int WM_DRAWCLIPBOARD = 0x308;
+ public const int WM_CHANGECBCHAIN = 0x30D;
+
+ // Window Styles
+ public const int WS_MAXIMIZE = 0x1000000;
+ public const int WS_VISIBLE = 0x10000000;
+ public const int WS_CHILD = 0x40000000;
+ public const int WS_EX_MDICHILD = 0x40;
+
+ // Virtual Key Codes
+ public const int VK_CONTROL = 0x11;
+ public const int VK_C = 0x67;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/App/App.Runtime.cs b/mRemoteV1/CS/App/App.Runtime.cs
new file mode 100644
index 000000000..6ccad2568
--- /dev/null
+++ b/mRemoteV1/CS/App/App.Runtime.cs
@@ -0,0 +1,2284 @@
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using System.ComponentModel;
+using mRemoteNG.Forms;
+using mRemoteNG.Config;
+using log4net;
+using mRemoteNG;
+using mRemoteNG.Messages;
+using mRemoteNG.Connection;
+using mRemoteNG.Tools;
+using mRemoteNG.Forms.OptionsPages;
+using PSTaskDialog;
+using WeifenLuo.WinFormsUI.Docking;
+using System.IO;
+using Crownwood;
+using System.Threading;
+using System.Xml;
+//using System.Environment;
+using System.Management;
+using Microsoft.Win32;
+//using Timer = System.Timers.Timer;
+
+
+namespace mRemoteNG.App
+{
+ public class Runtime
+ {
+ private Runtime()
+ {
+ // Fix Warning 292 CA1053 : Microsoft.Design : Because type 'Native' contains only 'static' ('Shared' in Visual Basic) members, add a default private constructor to prevent the compiler from adding a default public constructor.
+ }
+
+ #region Public Properties
+ public static frmMain MainForm {get; set;}
+
+ private static Connection.List _connectionList;
+ public static List ConnectionList
+ {
+ get
+ {
+ return _connectionList;
+ }
+ set
+ {
+ _connectionList = value;
+ }
+ }
+
+ private static Connection.List _previousConnectionList;
+ public static List PreviousConnectionList
+ {
+ get
+ {
+ return _previousConnectionList;
+ }
+ set
+ {
+ _previousConnectionList = value;
+ }
+ }
+
+ private static Container.List _containerList;
+ public static Container.List ContainerList
+ {
+ get
+ {
+ return _containerList;
+ }
+ set
+ {
+ _containerList = value;
+ }
+ }
+
+ private static Container.List _previousContainerList;
+ public static Container.List PreviousContainerList
+ {
+ get
+ {
+ return _previousContainerList;
+ }
+ set
+ {
+ _previousContainerList = value;
+ }
+ }
+
+ private static Credential.List _credentialList;
+ public static Credential.List CredentialList
+ {
+ get
+ {
+ return _credentialList;
+ }
+ set
+ {
+ _credentialList = value;
+ }
+ }
+
+ private static Credential.List _previousCredentialList;
+ public static Credential.List PreviousCredentialList
+ {
+ get
+ {
+ return _previousCredentialList;
+ }
+ set
+ {
+ _previousCredentialList = value;
+ }
+ }
+
+
+ private static UI.Window.List _windowList;
+ public static UI.Window.List WindowList
+ {
+ get
+ {
+ return _windowList;
+ }
+ set
+ {
+ _windowList = value;
+ }
+ }
+
+ private static Messages.Collector _messageCollector;
+ public static Collector MessageCollector
+ {
+ get
+ {
+ return _messageCollector;
+ }
+ set
+ {
+ _messageCollector = value;
+ }
+ }
+
+ private static Tools.Controls.NotificationAreaIcon _notificationAreaIcon;
+ public static Tools.Controls.NotificationAreaIcon NotificationAreaIcon
+ {
+ get
+ {
+ return _notificationAreaIcon;
+ }
+ set
+ {
+ _notificationAreaIcon = value;
+ }
+ }
+
+ private static mRemoteNG.Tools.SystemMenu _systemMenu;
+ public static SystemMenu SystemMenu
+ {
+ get
+ {
+ return _systemMenu;
+ }
+ set
+ {
+ _systemMenu = value;
+ }
+ }
+
+ private static log4net.ILog _log;
+ public static ILog Log
+ {
+ get
+ {
+ return _log;
+ }
+ set
+ {
+ _log = value;
+ }
+ }
+
+ private static bool _isConnectionsFileLoaded;
+ public static bool IsConnectionsFileLoaded
+ {
+ get
+ {
+ return _isConnectionsFileLoaded;
+ }
+ set
+ {
+ _isConnectionsFileLoaded = value;
+ }
+ }
+
+ private static System.Timers.Timer _timerSqlWatcher;
+ public static System.Timers.Timer TimerSqlWatcher
+ {
+ get
+ {
+ return _timerSqlWatcher;
+ }
+ set
+ {
+ _timerSqlWatcher = value;
+ _timerSqlWatcher.Elapsed += tmrSqlWatcher_Elapsed;
+ }
+ }
+
+ private static DateTime _lastSqlUpdate;
+ public static DateTime LastSqlUpdate
+ {
+ get
+ {
+ return _lastSqlUpdate;
+ }
+ set
+ {
+ _lastSqlUpdate = value;
+ }
+ }
+
+ private static string _lastSelected;
+ public static string LastSelected
+ {
+ get
+ {
+ return _lastSelected;
+ }
+ set
+ {
+ _lastSelected = value;
+ }
+ }
+
+ private static Connection.Info _defaultConnection;
+ public static Connection.Info DefaultConnection
+ {
+ get
+ {
+ return _defaultConnection;
+ }
+ set
+ {
+ _defaultConnection = value;
+ }
+ }
+
+ private static Connection.Info.Inheritance _defaultInheritance;
+ public static Connection.Info.Inheritance DefaultInheritance
+ {
+ get
+ {
+ return _defaultInheritance;
+ }
+ set
+ {
+ _defaultInheritance = value;
+ }
+ }
+
+ private static ArrayList _externalTools = new ArrayList();
+ public static ArrayList ExternalTools
+ {
+ get
+ {
+ return _externalTools;
+ }
+ set
+ {
+ _externalTools = value;
+ }
+ }
+
+ #endregion
+
+ #region Classes
+ public class Windows
+ {
+ public static UI.Window.Tree treeForm;
+ public static DockContent treePanel = new DockContent();
+ public static UI.Window.Config configForm;
+ public static DockContent configPanel = new DockContent();
+ public static UI.Window.ErrorsAndInfos errorsForm;
+ public static DockContent errorsPanel = new DockContent();
+ public static UI.Window.Sessions sessionsForm;
+ public static DockContent sessionsPanel = new DockContent();
+ public static UI.Window.ScreenshotManager screenshotForm;
+ public static DockContent screenshotPanel = new DockContent();
+ public static ExportForm exportForm;
+ public static DockContent exportPanel = new DockContent();
+ public static UI.Window.About aboutForm;
+ public static DockContent aboutPanel = new DockContent();
+ public static Update updateForm;
+ public static DockContent updatePanel = new DockContent();
+ public static UI.Window.SSHTransfer sshtransferForm;
+ public static DockContent sshtransferPanel = new DockContent();
+ public static UI.Window.ActiveDirectoryImport adimportForm;
+ public static DockContent adimportPanel = new DockContent();
+ public static Help helpForm;
+ public static DockContent helpPanel = new DockContent();
+ public static UI.Window.ExternalTools externalappsForm;
+ public static DockContent externalappsPanel = new DockContent();
+ public static UI.Window.PortScan portscanForm;
+ public static DockContent portscanPanel = new DockContent();
+ public static UI.Window.UltraVNCSC ultravncscForm;
+ public static DockContent ultravncscPanel = new DockContent();
+ public static UI.Window.ComponentsCheck componentscheckForm;
+ public static DockContent componentscheckPanel = new DockContent();
+ public static UI.Window.Announcement AnnouncementForm;
+ public static DockContent AnnouncementPanel = new DockContent();
+
+ public static void Show(Type windowType, bool portScanImport = false)
+ {
+ try
+ {
+ switch (windowType)
+ {
+ case UI.Window.Type.About:
+ if (aboutForm == null || aboutForm.IsDisposed)
+ {
+ aboutForm = new UI.Window.About(aboutPanel);
+ aboutPanel = aboutForm;
+ }
+
+ aboutForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.ActiveDirectoryImport:
+ if (adimportForm == null || adimportForm.IsDisposed)
+ {
+ adimportForm = new UI.Window.ActiveDirectoryImport(adimportPanel);
+ adimportPanel = adimportForm;
+ }
+
+ adimportPanel.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.Options:
+ using (OptionsForm optionsForm = new OptionsForm())
+ {
+ optionsForm.ShowDialog(frmMain);
+ }
+
+ break;
+ case UI.Window.Type.SSHTransfer:
+ sshtransferForm = new UI.Window.SSHTransfer(sshtransferPanel);
+ sshtransferPanel = sshtransferForm;
+
+ sshtransferForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.Update:
+ if (updateForm == null || updateForm.IsDisposed)
+ {
+ updateForm = new UI.Window.Update(updatePanel);
+ updatePanel = updateForm;
+ }
+
+ updateForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.Help:
+ if (helpForm == null || helpForm.IsDisposed)
+ {
+ helpForm = new UI.Window.Help(helpPanel);
+ helpPanel = helpForm;
+ }
+
+ helpForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.ExternalApps:
+ if (externalappsForm == null || externalappsForm.IsDisposed)
+ {
+ externalappsForm = new UI.Window.ExternalTools(externalappsPanel);
+ externalappsPanel = externalappsForm;
+ }
+
+ externalappsForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.PortScan:
+ portscanForm = new UI.Window.PortScan(portscanPanel, portScanImport);
+ portscanPanel = portscanForm;
+
+ portscanForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.UltraVNCSC:
+ if (ultravncscForm == null || ultravncscForm.IsDisposed)
+ {
+ ultravncscForm = new UI.Window.UltraVNCSC(ultravncscPanel);
+ ultravncscPanel = ultravncscForm;
+ }
+
+ ultravncscForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.ComponentsCheck:
+ if (componentscheckForm == null || componentscheckForm.IsDisposed)
+ {
+ componentscheckForm = new UI.Window.ComponentsCheck(componentscheckPanel);
+ componentscheckPanel = componentscheckForm;
+ }
+
+ componentscheckForm.Show(frmMain.Default.pnlDock);
+ break;
+ case UI.Window.Type.Announcement:
+ if (AnnouncementForm == null || AnnouncementForm.IsDisposed)
+ {
+ AnnouncementForm = new UI.Window.Announcement(AnnouncementPanel);
+ AnnouncementPanel = AnnouncementForm;
+ }
+
+ AnnouncementForm.Show(frmMain.Default.pnlDock);
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, "App.Runtime.Windows.Show() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void ShowUpdatesTab()
+ {
+ using (OptionsForm optionsForm = new OptionsForm())
+ {
+ optionsForm.ShowDialog(frmMain, typeof(UpdatesPage));
+ }
+
+ }
+ }
+
+ public class Screens
+ {
+ public static void SendFormToScreen(Screen Screen)
+ {
+ bool wasMax = false;
+
+ if (frmMain.Default.WindowState == FormWindowState.Maximized)
+ {
+ wasMax = true;
+ frmMain.Default.WindowState = FormWindowState.Normal;
+ }
+
+ frmMain.Default.Location = Screen.Bounds.Location;
+
+ if (wasMax)
+ {
+ frmMain.Default.WindowState = FormWindowState.Maximized;
+ }
+ }
+
+ public static void SendPanelToScreen(DockContent Panel, Screen Screen)
+ {
+ Panel.DockState = DockState.Float;
+ Panel.ParentForm.Left = Screen.Bounds.Location.X;
+ Panel.ParentForm.Top = Screen.Bounds.Location.Y;
+ }
+ }
+
+ public class Startup
+ {
+ public static void CheckCompatibility()
+ {
+ CheckFipsPolicy();
+ CheckLenovoAutoScrollUtility();
+ }
+
+ private static void CheckFipsPolicy()
+ {
+ RegistryKey regKey = default(RegistryKey);
+
+ bool isFipsPolicyEnabled = false;
+
+ // Windows XP/Windows Server 2003
+ regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa");
+ if (regKey != null)
+ {
+ if (!((int)regKey.GetValue("FIPSAlgorithmPolicy") == 0))
+ {
+ isFipsPolicyEnabled = true;
+ }
+ }
+
+ // Windows Vista/Windows Server 2008 and newer
+ regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy");
+ if (regKey != null)
+ {
+ if (!((int)regKey.GetValue("Enabled") == 0))
+ {
+ isFipsPolicyEnabled = true;
+ }
+ }
+
+ if (isFipsPolicyEnabled)
+ {
+ MessageBox.Show(frmMain, string.Format(My.Language.strErrorFipsPolicyIncompatible, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName), (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ System.Environment.Exit(1);
+ }
+ }
+
+ private static void CheckLenovoAutoScrollUtility()
+ {
+ if (!My.Settings.Default.CompatibilityWarnLenovoAutoScrollUtility)
+ {
+ return ;
+ }
+
+ Process[] proccesses = new Process[] {};
+ try
+ {
+ proccesses = Process.GetProcessesByName("virtscrl");
+ }
+ catch
+ {
+ }
+ if (proccesses.Length == 0)
+ {
+ return ;
+ }
+
+ cTaskDialog.MessageBox(System.Windows.Forms.Application.ProductName, My.Language.strCompatibilityProblemDetected, string.Format(My.Language.strCompatibilityLenovoAutoScrollUtilityDetected, System.Windows.Forms.Application.ProductName), "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.OK, eSysIcons.Warning, null);
+ if (cTaskDialog.VerificationChecked)
+ {
+ My.Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false;
+ }
+ }
+
+ public static void CreatePanels()
+ {
+ Windows.configForm = new UI.Window.Config(Windows.configPanel);
+ Windows.configPanel = Windows.configForm;
+
+ Windows.treeForm = new UI.Window.Tree(Windows.treePanel);
+ Windows.treePanel = Windows.treeForm;
+ Tree.Node.TreeView = Windows.treeForm.tvConnections;
+
+ Windows.errorsForm = new UI.Window.ErrorsAndInfos(Windows.errorsPanel);
+ Windows.errorsPanel = Windows.errorsForm;
+
+ Windows.sessionsForm = new UI.Window.Sessions(Windows.sessionsPanel);
+ Windows.sessionsPanel = Windows.sessionsForm;
+
+ Windows.screenshotForm = new UI.Window.ScreenshotManager(Windows.screenshotPanel);
+ Windows.screenshotPanel = Windows.screenshotForm;
+
+ Windows.updateForm = new UI.Window.Update(Windows.updatePanel);
+ Windows.updatePanel = Windows.updateForm;
+
+ Windows.AnnouncementForm = new UI.Window.Announcement(Windows.AnnouncementPanel);
+ Windows.AnnouncementPanel = Windows.AnnouncementForm;
+ }
+
+ public static void SetDefaultLayout()
+ {
+ frmMain.Default.pnlDock.Visible = false;
+
+ frmMain.Default.pnlDock.DockLeftPortion = frmMain.Default.pnlDock.Width * 0.2;
+ frmMain.Default.pnlDock.DockRightPortion = frmMain.Default.pnlDock.Width * 0.2;
+ frmMain.Default.pnlDock.DockTopPortion = frmMain.Default.pnlDock.Height * 0.25;
+ frmMain.Default.pnlDock.DockBottomPortion = frmMain.Default.pnlDock.Height * 0.25;
+
+ Windows.treePanel.Show(frmMain.Default.pnlDock, DockState.DockLeft);
+ Windows.configPanel.Show(frmMain.Default.pnlDock);
+ Windows.configPanel.DockTo(Windows.treePanel.Pane, DockStyle.Bottom, -1);
+
+ Windows.screenshotForm.Hide();
+
+ frmMain.Default.pnlDock.Visible = true;
+ }
+
+ public static void GetConnectionIcons()
+ {
+ string iPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\Icons\\";
+
+ if (Directory.Exists(iPath) == false)
+ {
+ return;
+ }
+
+ foreach (string f in Directory.GetFiles(iPath, "*.ico", SearchOption.AllDirectories))
+ {
+ FileInfo fInfo = new FileInfo(f);
+
+ Array.Resize(ref Connection.Icon.Icons, Connection.Icon.Icons.Length + 1);
+ Connection.Icon.Icons.SetValue(fInfo.Name.Replace(".ico", ""), Connection.Icon.Icons.Length - 1);
+ }
+ }
+
+ public static void CreateLogger()
+ {
+ log4net.Config.XmlConfigurator.Configure();
+
+ string logFilePath = "";
+ #if !PORTABLE
+ logFilePath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), System.Windows.Forms.Application.ProductName);
+ #else
+ logFilePath = System.Windows.Forms.Application.StartupPath;
+ #endif
+ string logFileName = Path.ChangeExtension(System.Windows.Forms.Application.ProductName, ".log");
+ string logFile = Path.Combine(logFilePath, logFileName);
+
+ log4net.Repository.ILoggerRepository repository = LogManager.GetRepository();
+ log4net.Appender.IAppender[] appenders = repository.GetAppenders();
+ log4net.Appender.FileAppender fileAppender = default(log4net.Appender.FileAppender);
+ foreach (log4net.Appender.IAppender appender in appenders)
+ {
+ fileAppender = appender as log4net.Appender.FileAppender;
+ if (!(fileAppender == null || !(fileAppender.Name == "LogFileAppender")))
+ {
+ fileAppender.File = logFile;
+ fileAppender.ActivateOptions();
+ }
+ }
+
+ Log = LogManager.GetLogger("Logger");
+
+ if (My.Settings.Default.WriteLogFile)
+ {
+ #if !PORTABLE
+ Log.InfoFormat("{0} {1} starting.", System.Windows.Forms.Application.ProductName, System.Windows.Forms.Application.ProductVersion);
+ #else
+ Log.InfoFormat("{0} {1} {2} starting.", System.Windows.Forms.Application.ProductName, System.Windows.Forms.Application.ProductVersion, My.Language.strLabelPortableEdition);
+ #endif
+ Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs());
+
+ string osVersion = string.Empty;
+ string servicePack = string.Empty;
+ try
+ {
+ foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary=True").Get())
+ {
+ osVersion = System.Convert.ToString(managementObject.GetPropertyValue("Caption").Trim());
+ int servicePackNumber = System.Convert.ToInt32(managementObject.GetPropertyValue("ServicePackMajorVersion"));
+ if (!(servicePackNumber == 0))
+ {
+ servicePack = string.Format("Service Pack {0}", servicePackNumber);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message);
+ }
+
+ string architecture = string.Empty;
+ try
+ {
+ foreach (ManagementObject managementObject in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID=\'CPU0\'").Get())
+ {
+ int addressWidth = System.Convert.ToInt32(managementObject.GetPropertyValue("AddressWidth"));
+ architecture = string.Format("{0}-bit", addressWidth);
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.WarnFormat("Error retrieving operating system address width from WMI. {0}", ex.Message);
+ }
+
+ Log.InfoFormat(string.Join(" ", Array.FindAll(new string[] {osVersion, servicePack, architecture}, s => !string.IsNullOrEmpty(System.Convert.ToString(s)))));
+
+ Log.InfoFormat("Microsoft .NET CLR {0}", System.Environment.Version.ToString());
+ Log.InfoFormat("System Culture: {0}/{1}", Thread.CurrentThread.CurrentUICulture.Name, Thread.CurrentThread.CurrentUICulture.NativeName);
+ }
+ }
+
+ private static Update _appUpdate;
+ public static void CheckForUpdate()
+ {
+ if (_appUpdate == null)
+ {
+ _appUpdate = new Update();
+ }
+ else if (_appUpdate.IsGetUpdateInfoRunning)
+ {
+ return ;
+ }
+
+ DateTime nextUpdateCheck = System.Convert.ToDateTime(My.Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(System.Convert.ToDouble(My.Settings.Default.CheckForUpdatesFrequencyDays))));
+ if (!My.Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
+ {
+ return ;
+ }
+
+ _appUpdate.GetUpdateInfoCompletedEvent += GetUpdateInfoCompleted;
+ _appUpdate.GetUpdateInfoAsync();
+ }
+
+ private static void GetUpdateInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (MainForm.InvokeRequired)
+ {
+ MainForm.Invoke(new AsyncCompletedEventHandler(GetUpdateInfoCompleted), new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetUpdateInfoCompletedEvent -= GetUpdateInfoCompleted;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ if (_appUpdate.IsUpdateAvailable())
+ {
+ Windows.Show(UI.Window.Type.Update);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("GetUpdateInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public static void CheckForAnnouncement()
+ {
+ if (_appUpdate == null)
+ {
+ _appUpdate = new Update();
+ }
+ else if (_appUpdate.IsGetAnnouncementInfoRunning)
+ {
+ return ;
+ }
+
+ _appUpdate.GetAnnouncementInfoCompletedEvent += GetAnnouncementInfoCompleted;
+ _appUpdate.GetAnnouncementInfoAsync();
+ }
+
+ private static void GetAnnouncementInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (MainForm.InvokeRequired)
+ {
+ MainForm.Invoke(new AsyncCompletedEventHandler(GetAnnouncementInfoCompleted), new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetAnnouncementInfoCompletedEvent -= GetAnnouncementInfoCompleted;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ if (_appUpdate.IsAnnouncementAvailable())
+ {
+ Windows.Show(UI.Window.Type.Announcement);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("GetAnnouncementInfoCompleted() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public static void ParseCommandLineArgs()
+ {
+ try
+ {
+ Tools.Misc.CMDArguments cmd = new Tools.Misc.CMDArguments(Environment.GetCommandLineArgs());
+
+ string ConsParam = "";
+ if (cmd["cons"] != null)
+ {
+ ConsParam = "cons";
+ }
+ if (cmd["c"] != null)
+ {
+ ConsParam = "c";
+ }
+
+ string ResetPosParam = "";
+ if (cmd["resetpos"] != null)
+ {
+ ResetPosParam = "resetpos";
+ }
+ if (cmd["rp"] != null)
+ {
+ ResetPosParam = "rp";
+ }
+
+ string ResetPanelsParam = "";
+ if (cmd["resetpanels"] != null)
+ {
+ ResetPanelsParam = "resetpanels";
+ }
+ if (cmd["rpnl"] != null)
+ {
+ ResetPanelsParam = "rpnl";
+ }
+
+ string ResetToolbarsParam = "";
+ if (cmd["resettoolbar"] != null)
+ {
+ ResetToolbarsParam = "resettoolbar";
+ }
+ if (cmd["rtbr"] != null)
+ {
+ ResetToolbarsParam = "rtbr";
+ }
+
+ if (cmd["reset"] != null)
+ {
+ ResetPosParam = "rp";
+ ResetPanelsParam = "rpnl";
+ ResetToolbarsParam = "rtbr";
+ }
+
+ string NoReconnectParam = "";
+ if (cmd["noreconnect"] != null)
+ {
+ NoReconnectParam = "noreconnect";
+ }
+ if (cmd["norc"] != null)
+ {
+ NoReconnectParam = "norc";
+ }
+
+ if (!string.IsNullOrEmpty(ConsParam))
+ {
+ if (File.Exists(cmd[ConsParam]) == false)
+ {
+ if (File.Exists((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\" + cmd[ConsParam]))
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\" + cmd[ConsParam];
+ return;
+ }
+ else if (File.Exists(App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam]))
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = App.Info.Connections.DefaultConnectionsPath + "\\" + cmd[ConsParam];
+ return;
+ }
+ }
+ else
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = cmd[ConsParam];
+ return;
+ }
+ }
+
+ if (!string.IsNullOrEmpty(ResetPosParam))
+ {
+ My.Settings.Default.MainFormKiosk = false;
+ My.Settings.Default.MainFormLocation = new Point(999, 999);
+ My.Settings.Default.MainFormSize = new Size(900, 600);
+ My.Settings.Default.MainFormState = FormWindowState.Normal;
+ }
+
+ if (!string.IsNullOrEmpty(ResetPanelsParam))
+ {
+ My.Settings.Default.ResetPanels = true;
+ }
+
+ if (!string.IsNullOrEmpty(NoReconnectParam))
+ {
+ My.Settings.Default.NoReconnect = true;
+ }
+
+ if (!string.IsNullOrEmpty(ResetToolbarsParam))
+ {
+ My.Settings.Default.ResetToolbars = true;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strCommandLineArgsCouldNotBeParsed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void CreateSQLUpdateHandlerAndStartTimer()
+ {
+ if (My.Settings.Default.UseSQLServer == true)
+ {
+ Tools.Misc.SQLUpdateCheckFinished += SQLUpdateCheckFinished;
+ TimerSqlWatcher = new System.Timers.Timer(3000);
+ TimerSqlWatcher.Start();
+ }
+ }
+
+ public static void DestroySQLUpdateHandlerAndStopTimer()
+ {
+ try
+ {
+ LastSqlUpdate = null;
+ Tools.Misc.SQLUpdateCheckFinished -= SQLUpdateCheckFinished;
+ if (TimerSqlWatcher != null)
+ {
+ TimerSqlWatcher.Stop();
+ TimerSqlWatcher.Close();
+ }
+ }
+ catch (Exception)
+ {
+ }
+ }
+ }
+
+ public class Shutdown
+ {
+ public static void Quit(string updateFilePath = null)
+ {
+ _updateFilePath = updateFilePath;
+ frmMain.Default.Close();
+ }
+
+ public static void Cleanup()
+ {
+ try
+ {
+ Config.Putty.Sessions.StopWatcher();
+
+ if (NotificationAreaIcon != null)
+ {
+ if (NotificationAreaIcon.Disposed == false)
+ {
+ NotificationAreaIcon.Dispose();
+ }
+ }
+
+ if (My.Settings.Default.SaveConsOnExit)
+ {
+ SaveConnections();
+ }
+
+ Config.Settings.Save.Save_Renamed();
+
+ IeBrowserEmulation.Unregister();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strSettingsCouldNotBeSavedOrTrayDispose + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void StartUpdate()
+ {
+ if (!UpdatePending)
+ {
+ return ;
+ }
+ try
+ {
+ Process.Start(_updateFilePath);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, "The update could not be started." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private static string _updateFilePath = null;
+
+ public static bool UpdatePending
+ {
+ get
+ {
+ return !string.IsNullOrEmpty(_updateFilePath);
+ }
+ }
+ }
+ #endregion
+
+ #region Default Connection
+ public static mRemoteNG.Connection.Info DefaultConnectionFromSettings()
+ {
+ DefaultConnection = new mRemoteNG.Connection.Info();
+ DefaultConnection.IsDefault = true;
+
+ return DefaultConnection;
+ }
+
+ public static void DefaultConnectionToSettings()
+ {
+ My.Settings.Default.ConDefaultDescription = DefaultConnection.Description;
+ My.Settings.Default.ConDefaultIcon = DefaultConnection.Icon;
+ My.Settings.Default.ConDefaultUsername = DefaultConnection.Username;
+ My.Settings.Default.ConDefaultPassword = DefaultConnection.Password;
+ My.Settings.Default.ConDefaultDomain = DefaultConnection.Domain;
+ My.Settings.Default.ConDefaultProtocol = DefaultConnection.Protocol.ToString();
+ My.Settings.Default.ConDefaultPuttySession = DefaultConnection.PuttySession;
+ My.Settings.Default.ConDefaultICAEncryptionStrength = DefaultConnection.ICAEncryption.ToString();
+ My.Settings.Default.ConDefaultRDPAuthenticationLevel = DefaultConnection.RDPAuthenticationLevel.ToString();
+ My.Settings.Default.ConDefaultLoadBalanceInfo = DefaultConnection.LoadBalanceInfo;
+ My.Settings.Default.ConDefaultUseConsoleSession = DefaultConnection.UseConsoleSession;
+ My.Settings.Default.ConDefaultUseCredSsp = DefaultConnection.UseCredSsp;
+ My.Settings.Default.ConDefaultRenderingEngine = DefaultConnection.RenderingEngine.ToString();
+ My.Settings.Default.ConDefaultResolution = DefaultConnection.Resolution.ToString();
+ My.Settings.Default.ConDefaultAutomaticResize = DefaultConnection.AutomaticResize;
+ My.Settings.Default.ConDefaultColors = DefaultConnection.Colors.ToString();
+ My.Settings.Default.ConDefaultCacheBitmaps = DefaultConnection.CacheBitmaps;
+ My.Settings.Default.ConDefaultDisplayWallpaper = DefaultConnection.DisplayWallpaper;
+ My.Settings.Default.ConDefaultDisplayThemes = DefaultConnection.DisplayThemes;
+ My.Settings.Default.ConDefaultEnableFontSmoothing = DefaultConnection.EnableFontSmoothing;
+ My.Settings.Default.ConDefaultEnableDesktopComposition = DefaultConnection.EnableDesktopComposition;
+ My.Settings.Default.ConDefaultRedirectKeys = DefaultConnection.RedirectKeys;
+ My.Settings.Default.ConDefaultRedirectDiskDrives = DefaultConnection.RedirectDiskDrives;
+ My.Settings.Default.ConDefaultRedirectPrinters = DefaultConnection.RedirectPrinters;
+ My.Settings.Default.ConDefaultRedirectPorts = DefaultConnection.RedirectPorts;
+ My.Settings.Default.ConDefaultRedirectSmartCards = DefaultConnection.RedirectSmartCards;
+ My.Settings.Default.ConDefaultRedirectSound = DefaultConnection.RedirectSound.ToString();
+ My.Settings.Default.ConDefaultPreExtApp = DefaultConnection.PreExtApp;
+ My.Settings.Default.ConDefaultPostExtApp = DefaultConnection.PostExtApp;
+ My.Settings.Default.ConDefaultMacAddress = DefaultConnection.MacAddress;
+ My.Settings.Default.ConDefaultUserField = DefaultConnection.UserField;
+ My.Settings.Default.ConDefaultVNCAuthMode = DefaultConnection.VNCAuthMode.ToString();
+ My.Settings.Default.ConDefaultVNCColors = DefaultConnection.VNCColors.ToString();
+ My.Settings.Default.ConDefaultVNCCompression = DefaultConnection.VNCCompression.ToString();
+ My.Settings.Default.ConDefaultVNCEncoding = DefaultConnection.VNCEncoding.ToString();
+ My.Settings.Default.ConDefaultVNCProxyIP = DefaultConnection.VNCProxyIP;
+ My.Settings.Default.ConDefaultVNCProxyPassword = DefaultConnection.VNCProxyPassword;
+ My.Settings.Default.ConDefaultVNCProxyPort = DefaultConnection.VNCProxyPort;
+ My.Settings.Default.ConDefaultVNCProxyType = DefaultConnection.VNCProxyType.ToString();
+ My.Settings.Default.ConDefaultVNCProxyUsername = DefaultConnection.VNCProxyUsername;
+ My.Settings.Default.ConDefaultVNCSmartSizeMode = DefaultConnection.VNCSmartSizeMode.ToString();
+ My.Settings.Default.ConDefaultVNCViewOnly = DefaultConnection.VNCViewOnly;
+ My.Settings.Default.ConDefaultExtApp = DefaultConnection.ExtApp;
+ My.Settings.Default.ConDefaultRDGatewayUsageMethod = DefaultConnection.RDGatewayUsageMethod.ToString();
+ My.Settings.Default.ConDefaultRDGatewayHostname = DefaultConnection.RDGatewayHostname;
+ My.Settings.Default.ConDefaultRDGatewayUsername = DefaultConnection.RDGatewayUsername;
+ My.Settings.Default.ConDefaultRDGatewayPassword = DefaultConnection.RDGatewayPassword;
+ My.Settings.Default.ConDefaultRDGatewayDomain = DefaultConnection.RDGatewayDomain;
+ My.Settings.Default.ConDefaultRDGatewayUseConnectionCredentials = DefaultConnection.RDGatewayUseConnectionCredentials.ToString();
+ }
+ #endregion
+
+ #region Default Inheritance
+ public static mRemoteNG.Connection.Info.Inheritance DefaultInheritanceFromSettings()
+ {
+ DefaultInheritance = new mRemoteNG.Connection.Info.Inheritance(null);
+ DefaultInheritance.IsDefault = true;
+
+ return DefaultInheritance;
+ }
+
+ public static void DefaultInheritanceToSettings()
+ {
+ My.Settings.Default.InhDefaultDescription = DefaultInheritance.Description;
+ My.Settings.Default.InhDefaultIcon = DefaultInheritance.Icon;
+ My.Settings.Default.InhDefaultPanel = DefaultInheritance.Panel;
+ My.Settings.Default.InhDefaultUsername = DefaultInheritance.Username;
+ My.Settings.Default.InhDefaultPassword = DefaultInheritance.Password;
+ My.Settings.Default.InhDefaultDomain = DefaultInheritance.Domain;
+ My.Settings.Default.InhDefaultProtocol = DefaultInheritance.Protocol;
+ My.Settings.Default.InhDefaultPort = DefaultInheritance.Port;
+ My.Settings.Default.InhDefaultPuttySession = DefaultInheritance.PuttySession;
+ My.Settings.Default.InhDefaultUseConsoleSession = DefaultInheritance.UseConsoleSession;
+ My.Settings.Default.InhDefaultUseCredSsp = DefaultInheritance.UseCredSsp;
+ My.Settings.Default.InhDefaultRenderingEngine = DefaultInheritance.RenderingEngine;
+ My.Settings.Default.InhDefaultICAEncryptionStrength = DefaultInheritance.ICAEncryption;
+ My.Settings.Default.InhDefaultRDPAuthenticationLevel = DefaultInheritance.RDPAuthenticationLevel;
+ My.Settings.Default.InhDefaultLoadBalanceInfo = DefaultInheritance.LoadBalanceInfo;
+ My.Settings.Default.InhDefaultResolution = DefaultInheritance.Resolution;
+ My.Settings.Default.InhDefaultAutomaticResize = DefaultInheritance.AutomaticResize;
+ My.Settings.Default.InhDefaultColors = DefaultInheritance.Colors;
+ My.Settings.Default.InhDefaultCacheBitmaps = DefaultInheritance.CacheBitmaps;
+ My.Settings.Default.InhDefaultDisplayWallpaper = DefaultInheritance.DisplayWallpaper;
+ My.Settings.Default.InhDefaultDisplayThemes = DefaultInheritance.DisplayThemes;
+ My.Settings.Default.InhDefaultEnableFontSmoothing = DefaultInheritance.EnableFontSmoothing;
+ My.Settings.Default.InhDefaultEnableDesktopComposition = DefaultInheritance.EnableDesktopComposition;
+ My.Settings.Default.InhDefaultRedirectKeys = DefaultInheritance.RedirectKeys;
+ My.Settings.Default.InhDefaultRedirectDiskDrives = DefaultInheritance.RedirectDiskDrives;
+ My.Settings.Default.InhDefaultRedirectPrinters = DefaultInheritance.RedirectPrinters;
+ My.Settings.Default.InhDefaultRedirectPorts = DefaultInheritance.RedirectPorts;
+ My.Settings.Default.InhDefaultRedirectSmartCards = DefaultInheritance.RedirectSmartCards;
+ My.Settings.Default.InhDefaultRedirectSound = DefaultInheritance.RedirectSound;
+ My.Settings.Default.InhDefaultPreExtApp = DefaultInheritance.PreExtApp;
+ My.Settings.Default.InhDefaultPostExtApp = DefaultInheritance.PostExtApp;
+ My.Settings.Default.InhDefaultMacAddress = DefaultInheritance.MacAddress;
+ My.Settings.Default.InhDefaultUserField = DefaultInheritance.UserField;
+ // VNC inheritance
+ My.Settings.Default.InhDefaultVNCAuthMode = DefaultInheritance.VNCAuthMode;
+ My.Settings.Default.InhDefaultVNCColors = DefaultInheritance.VNCColors;
+ My.Settings.Default.InhDefaultVNCCompression = DefaultInheritance.VNCCompression;
+ My.Settings.Default.InhDefaultVNCEncoding = DefaultInheritance.VNCEncoding;
+ My.Settings.Default.InhDefaultVNCProxyIP = DefaultInheritance.VNCProxyIP;
+ My.Settings.Default.InhDefaultVNCProxyPassword = DefaultInheritance.VNCProxyPassword;
+ My.Settings.Default.InhDefaultVNCProxyPort = DefaultInheritance.VNCProxyPort;
+ My.Settings.Default.InhDefaultVNCProxyType = DefaultInheritance.VNCProxyType;
+ My.Settings.Default.InhDefaultVNCProxyUsername = DefaultInheritance.VNCProxyUsername;
+ My.Settings.Default.InhDefaultVNCSmartSizeMode = DefaultInheritance.VNCSmartSizeMode;
+ My.Settings.Default.InhDefaultVNCViewOnly = DefaultInheritance.VNCViewOnly;
+ // Ext. App inheritance
+ My.Settings.Default.InhDefaultExtApp = DefaultInheritance.ExtApp;
+ // RDP gateway inheritance
+ My.Settings.Default.InhDefaultRDGatewayUsageMethod = DefaultInheritance.RDGatewayUsageMethod;
+ My.Settings.Default.InhDefaultRDGatewayHostname = DefaultInheritance.RDGatewayHostname;
+ My.Settings.Default.InhDefaultRDGatewayUsername = DefaultInheritance.RDGatewayUsername;
+ My.Settings.Default.InhDefaultRDGatewayPassword = DefaultInheritance.RDGatewayPassword;
+ My.Settings.Default.InhDefaultRDGatewayDomain = DefaultInheritance.RDGatewayDomain;
+ My.Settings.Default.InhDefaultRDGatewayUseConnectionCredentials = DefaultInheritance.RDGatewayUseConnectionCredentials;
+ }
+ #endregion
+
+ #region Panels
+ public static System.Windows.Forms.Form AddPanel(string title = "", bool noTabber = false)
+ {
+ try
+ {
+ if (title == "")
+ {
+ title = My.Language.strNewPanel;
+ }
+
+ DockContent pnlcForm = new DockContent();
+ UI.Window.Connection cForm = new UI.Window.Connection(pnlcForm);
+ pnlcForm = cForm;
+
+ //create context menu
+ ContextMenuStrip cMen = new ContextMenuStrip();
+
+ //create rename item
+ ToolStripMenuItem cMenRen = new ToolStripMenuItem();
+ cMenRen.Text = My.Language.strRename;
+ cMenRen.Image = global::My.Resources.Rename;
+ cMenRen.Tag = pnlcForm;
+ cMenRen.Click += cMenConnectionPanelRename_Click;
+
+ ToolStripMenuItem cMenScreens = new ToolStripMenuItem();
+ cMenScreens.Text = My.Language.strSendTo;
+ cMenScreens.Image = global::My.Resources.Monitor;
+ cMenScreens.Tag = pnlcForm;
+ cMenScreens.DropDownItems.Add("Dummy");
+ cMenScreens.DropDownOpening += cMenConnectionPanelScreens_DropDownOpening;
+
+ cMen.Items.AddRange(new ToolStripMenuItem[] {cMenRen, cMenScreens});
+
+ pnlcForm.TabPageContextMenuStrip = cMen;
+
+ (cForm as UI.Window.Connection).SetFormText(title.Replace("&", "&&"));
+
+ pnlcForm.Show(frmMain.Default.pnlDock, DockState.Document);
+
+ if (noTabber)
+ {
+ (cForm as UI.Window.Connection).TabController.Dispose();
+ }
+ else
+ {
+ WindowList.Add(cForm);
+ }
+
+ return cForm;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t add panel" + Constants.vbNewLine + ex.Message);
+ return null;
+ }
+ }
+
+ private static void cMenConnectionPanelRename_Click(System.Object sender, System.EventArgs e)
+ {
+ try
+ {
+ UI.Window.Connection conW = default(UI.Window.Connection);
+ conW = sender.Tag;
+
+ string nTitle = Interaction.InputBox(Prompt: My.Language.strNewTitle + ":", DefaultResponse: System.Convert.ToString(sender.Tag.Text.Replace("&&", "&")));
+
+ if (!string.IsNullOrEmpty(nTitle))
+ {
+ conW.SetFormText(nTitle.Replace("&", "&&"));
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t rename panel" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void cMenConnectionPanelScreens_DropDownOpening(System.Object sender, System.EventArgs e)
+ {
+ try
+ {
+ ToolStripMenuItem cMenScreens = sender;
+ cMenScreens.DropDownItems.Clear();
+
+ for (int i = 0; i <= Screen.AllScreens.Length - 1; i++)
+ {
+ ToolStripMenuItem cMenScreen = new ToolStripMenuItem(My.Language.strScreen + " " + System.Convert.ToString(i + 1));
+ cMenScreen.Tag = new ArrayList();
+ cMenScreen.Image = global::My.Resources.Monitor_GoTo;
+ (cMenScreen.Tag as ArrayList).Add(Screen.AllScreens[i]);
+ (cMenScreen.Tag as ArrayList).Add(cMenScreens.Tag);
+ cMenScreen.Click += cMenConnectionPanelScreen_Click;
+
+ cMenScreens.DropDownItems.Add(cMenScreen);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t enumerate screens" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void cMenConnectionPanelScreen_Click(object sender, System.EventArgs e)
+ {
+ try
+ {
+ Screen screen = (sender as ToolStripMenuItem).Tag(0);
+ DockContent panel = (sender as ToolStripMenuItem).Tag(1);
+ Screens.SendPanelToScreen(panel, screen);
+ }
+ catch (Exception)
+ {
+ }
+ }
+ #endregion
+
+ #region Credential Loading/Saving
+ public static void LoadCredentials()
+ {
+
+ }
+ #endregion
+
+ #region Connections Loading/Saving
+ public static void NewConnections(string filename)
+ {
+ try
+ {
+ ConnectionList = new Connection.List();
+ ContainerList = new Container.List();
+
+ Config.Connections.Load connectionsLoad = new Config.Connections.Load();
+
+ if (filename == GetDefaultStartupConnectionFileName())
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = false;
+ }
+ else
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = filename;
+ }
+
+ Directory.CreateDirectory(Path.GetDirectoryName(filename));
+
+ // Use File.Open with FileMode.CreateNew so that we don't overwrite an existing file
+ using (FileStream fileStream = File.Open(filename, FileMode.CreateNew, FileAccess.Write, FileShare.None))
+ {
+ using (XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, System.Text.Encoding.UTF8))
+ {
+ xmlTextWriter.Formatting = Formatting.Indented;
+ xmlTextWriter.Indentation = 4;
+
+ xmlTextWriter.WriteStartDocument();
+
+ xmlTextWriter.WriteStartElement("Connections"); // Do not localize
+ xmlTextWriter.WriteAttributeString("Name", My.Language.strConnections);
+ xmlTextWriter.WriteAttributeString("Export", "", "False");
+ xmlTextWriter.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY");
+ xmlTextWriter.WriteAttributeString("ConfVersion", "", "2.5");
+
+ xmlTextWriter.WriteEndElement();
+ xmlTextWriter.WriteEndDocument();
+
+ xmlTextWriter.Close();
+ }
+
+ }
+
+
+ connectionsLoad.ConnectionList = ConnectionList;
+ connectionsLoad.ContainerList = ContainerList;
+
+ Tree.Node.ResetTree();
+
+ connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ // Load config
+ connectionsLoad.ConnectionFileName = filename;
+ connectionsLoad.Load(false);
+
+ Windows.treeForm.tvConnections.SelectedNode = connectionsLoad.RootTreeNode;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strCouldNotCreateNewConnectionsFile, ex, MessageClass.ErrorMsg);
+ }
+ }
+
+ private static void LoadConnectionsBG(bool WithDialog = false, bool Update = false)
+ {
+ _withDialog = false;
+ _loadUpdate = true;
+
+ Thread t = new Thread(new System.Threading.ThreadStart(LoadConnectionsBGd));
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.Start();
+ }
+
+ private static bool _withDialog = false;
+ private static bool _loadUpdate = false;
+ private static void LoadConnectionsBGd()
+ {
+ LoadConnections(_withDialog, _loadUpdate);
+ }
+
+ public static void LoadConnections(bool withDialog = false, bool update = false)
+ {
+ Connections.Load connectionsLoad = new Connections.Load();
+
+ try
+ {
+ bool tmrWasEnabled = false;
+ if (TimerSqlWatcher != null)
+ {
+ tmrWasEnabled = TimerSqlWatcher.Enabled;
+
+ if (TimerSqlWatcher.Enabled == true)
+ {
+ TimerSqlWatcher.Stop();
+ }
+ }
+
+ if (ConnectionList != null && ContainerList != null)
+ {
+ PreviousConnectionList = ConnectionList.Copy();
+ PreviousContainerList = ContainerList.Copy();
+ }
+
+ ConnectionList = new Connection.List();
+ ContainerList = new Container.List();
+
+ if (!My.Settings.Default.UseSQLServer)
+ {
+ if (withDialog)
+ {
+ OpenFileDialog loadDialog = Tools.Controls.ConnectionsLoadDialog();
+
+ if (loadDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ connectionsLoad.ConnectionFileName = loadDialog.FileName;
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ connectionsLoad.ConnectionFileName = GetStartupConnectionFileName();
+ }
+
+ CreateBackupFile(System.Convert.ToString(connectionsLoad.ConnectionFileName));
+ }
+
+ connectionsLoad.ConnectionList = ConnectionList;
+ connectionsLoad.ContainerList = ContainerList;
+
+ if (PreviousConnectionList != null && PreviousContainerList != null)
+ {
+ connectionsLoad.PreviousConnectionList = PreviousConnectionList;
+ connectionsLoad.PreviousContainerList = PreviousContainerList;
+ }
+
+ if (update == true)
+ {
+ connectionsLoad.PreviousSelected = LastSelected;
+ }
+
+ Tree.Node.ResetTree();
+
+ connectionsLoad.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ connectionsLoad.UseSQL = My.Settings.Default.UseSQLServer;
+ connectionsLoad.SQLHost = My.Settings.Default.SQLHost;
+ connectionsLoad.SQLDatabaseName = My.Settings.Default.SQLDatabaseName;
+ connectionsLoad.SQLUsername = My.Settings.Default.SQLUser;
+ connectionsLoad.SQLPassword = Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.SQLPass), Info.General.EncryptionKey);
+ connectionsLoad.SQLUpdate = update;
+
+ connectionsLoad.Load(false);
+
+ if (My.Settings.Default.UseSQLServer == true)
+ {
+ LastSqlUpdate = DateTime.Now;
+ }
+ else
+ {
+ if (connectionsLoad.ConnectionFileName == GetDefaultStartupConnectionFileName())
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = false;
+ }
+ else
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = connectionsLoad.ConnectionFileName;
+ }
+ }
+
+ if (tmrWasEnabled && TimerSqlWatcher != null)
+ {
+ TimerSqlWatcher.Start();
+ }
+ }
+ catch (Exception ex)
+ {
+ if (My.Settings.Default.UseSQLServer)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strLoadFromSqlFailed, ex);
+ string commandButtons = string.Join("|", new[] {My.Language.strCommandTryAgain, My.Language.strCommandOpenConnectionFile, string.Format(My.Language.strCommandExitProgram, System.Windows.Forms.Application.ProductName)});
+ cTaskDialog.ShowCommandBox(System.Windows.Forms.Application.ProductName, My.Language.strLoadFromSqlFailed, My.Language.strLoadFromSqlFailedContent, Misc.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, eSysIcons.Error, null);
+ switch (cTaskDialog.CommandButtonResult)
+ {
+ case 0:
+ LoadConnections(withDialog, update);
+ return ;
+ case 1:
+ My.Settings.Default.UseSQLServer = false;
+ LoadConnections(true, update);
+ return ;
+ default:
+ Application.Exit();
+ return ;
+ }
+ }
+ else
+ {
+ if (ex is FileNotFoundException&& !withDialog)
+ {
+ MessageCollector.AddExceptionMessage(string.Format(My.Language.strConnectionsFileCouldNotBeLoadedNew, connectionsLoad.ConnectionFileName), ex, MessageClass.InformationMsg);
+ NewConnections(System.Convert.ToString(connectionsLoad.ConnectionFileName));
+ return ;
+ }
+
+ MessageCollector.AddExceptionMessage(string.Format(My.Language.strConnectionsFileCouldNotBeLoaded, connectionsLoad.ConnectionFileName), ex);
+ if (!(connectionsLoad.ConnectionFileName == GetStartupConnectionFileName()))
+ {
+ LoadConnections(withDialog, update);
+ return ;
+ }
+ else
+ {
+ Interaction.MsgBox(string.Format(My.Language.strErrorStartupConnectionFileLoad, Constants.vbNewLine, System.Windows.Forms.Application.ProductName, GetStartupConnectionFileName(), Misc.GetExceptionMessageRecursive(ex)), (int) MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, null);
+ Application.Exit();
+ return ;
+ }
+ }
+ }
+ }
+
+ protected static void CreateBackupFile(string fileName)
+ {
+ // This intentionally doesn't prune any existing backup files. We just assume the user doesn't want any new ones created.
+ if (My.Settings.Default.BackupFileKeepCount == 0)
+ {
+ return ;
+ }
+
+ try
+ {
+ string backupFileName = string.Format(My.Settings.Default.BackupFileNameFormat, fileName, DateTime.UtcNow);
+ File.Copy(fileName, backupFileName);
+ PruneBackupFiles(fileName);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strConnectionsFileBackupFailed, ex, MessageClass.WarningMsg);
+ throw;
+ }
+ }
+
+ protected static void PruneBackupFiles(string baseName)
+ {
+ string fileName = Path.GetFileName(baseName);
+ string directoryName = Path.GetDirectoryName(baseName);
+
+ if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(directoryName))
+ {
+ return ;
+ }
+
+ string searchPattern = string.Format(My.Settings.Default.BackupFileNameFormat, fileName, "*");
+ string[] files = Directory.GetFiles(directoryName, searchPattern);
+
+ if (files.Length <= My.Settings.Default.BackupFileKeepCount)
+ {
+ return ;
+ }
+
+ Array.Sort(files);
+ Array.Resize(ref files, files.Length - My.Settings.Default.BackupFileKeepCount);
+
+ foreach (string file in files)
+ {
+ System.IO.File.Delete(file);
+ }
+ }
+
+ public static string GetDefaultStartupConnectionFileName()
+ {
+ string newPath = App.Info.Connections.DefaultConnectionsPath + "\\" + Info.Connections.DefaultConnectionsFile;
+ #if !PORTABLE
+ string oldPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "\\" + (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName + "\\" + Info.Connections.DefaultConnectionsFile;
+ if (File.Exists(oldPath))
+ {
+ return oldPath;
+ }
+ #endif
+ return newPath;
+ }
+
+ public static string GetStartupConnectionFileName()
+ {
+ if (My.Settings.Default.LoadConsFromCustomLocation == false)
+ {
+ return GetDefaultStartupConnectionFileName();
+ }
+ else
+ {
+ return My.Settings.Default.CustomConsPath;
+ }
+ }
+
+ public static void SaveConnectionsBG()
+ {
+ _saveUpdate = true;
+
+ Thread t = new Thread(new System.Threading.ThreadStart(SaveConnectionsBGd));
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.Start();
+ }
+
+ private static bool _saveUpdate = false;
+ private static object _saveLock = new object();
+ private static void SaveConnectionsBGd()
+ {
+ Monitor.Enter(_saveLock);
+ SaveConnections(_saveUpdate);
+ Monitor.Exit(_saveLock);
+ }
+
+ public static void SaveConnections(bool Update = false)
+ {
+ if (!IsConnectionsFileLoaded)
+ {
+ return;
+ }
+
+ bool previousTimerState = false;
+
+ try
+ {
+ if (Update == true && My.Settings.Default.UseSQLServer == false)
+ {
+ return;
+ }
+
+ if (TimerSqlWatcher != null)
+ {
+ previousTimerState = TimerSqlWatcher.Enabled;
+ TimerSqlWatcher.Enabled = false;
+ }
+
+ Config.Connections.Save conS = new Config.Connections.Save();
+
+ if (!My.Settings.Default.UseSQLServer)
+ {
+ conS.ConnectionFileName = GetStartupConnectionFileName();
+ }
+
+ conS.ConnectionList = ConnectionList;
+ conS.ContainerList = ContainerList;
+ conS.Export = false;
+ conS.SaveSecurity = new Security.Save(false);
+ conS.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ if (My.Settings.Default.UseSQLServer == true)
+ {
+ conS.SaveFormat = Config.Connections.Save.Format.SQL;
+ conS.SQLHost = System.Convert.ToString(My.Settings.Default.SQLHost);
+ conS.SQLDatabaseName = System.Convert.ToString(My.Settings.Default.SQLDatabaseName);
+ conS.SQLUsername = System.Convert.ToString(My.Settings.Default.SQLUser);
+ conS.SQLPassword = Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.SQLPass), App.Info.General.EncryptionKey);
+ }
+
+ conS.Save_Renamed();
+
+ if (My.Settings.Default.UseSQLServer == true)
+ {
+ LastSqlUpdate = DateTime.Now;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionsFileCouldNotBeSaved + Constants.vbNewLine + ex.Message);
+ }
+ finally
+ {
+ if (TimerSqlWatcher != null)
+ {
+ TimerSqlWatcher.Enabled = previousTimerState;
+ }
+ }
+ }
+
+ public static void SaveConnectionsAs()
+ {
+ bool previousTimerState = false;
+ Connections.Save connectionsSave = new Connections.Save();
+
+ try
+ {
+ if (TimerSqlWatcher != null)
+ {
+ previousTimerState = TimerSqlWatcher.Enabled;
+ TimerSqlWatcher.Enabled = false;
+ }
+
+ using (SaveFileDialog saveFileDialog = new SaveFileDialog())
+ {
+ saveFileDialog.CheckPathExists = true;
+ saveFileDialog.InitialDirectory = Info.Connections.DefaultConnectionsPath;
+ saveFileDialog.FileName = Info.Connections.DefaultConnectionsFile;
+ saveFileDialog.OverwritePrompt = true;
+
+ List fileTypes = new List();
+ fileTypes.AddRange(new[] {My.Language.strFiltermRemoteXML, "*.xml"});
+ fileTypes.AddRange(new[] {My.Language.strFilterAll, "*.*"});
+
+ saveFileDialog.Filter = string.Join("|", fileTypes.ToArray());
+
+ if (!(saveFileDialog.ShowDialog(frmMain) == DialogResult.OK))
+ {
+ return ;
+ }
+
+ connectionsSave.SaveFormat = Connections.Save.Format.mRXML;
+ connectionsSave.ConnectionFileName = saveFileDialog.FileName;
+ connectionsSave.Export = false;
+ connectionsSave.SaveSecurity = new Security.Save();
+ connectionsSave.ConnectionList = ConnectionList;
+ connectionsSave.ContainerList = ContainerList;
+ connectionsSave.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0];
+
+ connectionsSave.Save();
+
+ if (saveFileDialog.FileName == GetDefaultStartupConnectionFileName())
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = false;
+ }
+ else
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = true;
+ My.Settings.Default.CustomConsPath = saveFileDialog.FileName;
+ }
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(string.Format(My.Language.strConnectionsFileCouldNotSaveAs, connectionsSave.ConnectionFileName), ex);
+ }
+ finally
+ {
+ if (TimerSqlWatcher != null)
+ {
+ TimerSqlWatcher.Enabled = previousTimerState;
+ }
+ }
+ }
+ #endregion
+
+ #region Opening Connection
+ public static Connection.Info CreateQuickConnect(string connectionString, Protocol.Protocols protocol)
+ {
+ try
+ {
+ Uri uri = new Uri("dummyscheme" + System.Uri.SchemeDelimiter + connectionString);
+
+ if (string.IsNullOrEmpty(uri.Host))
+ {
+ return null;
+ }
+
+ Connection.Info newConnectionInfo = new Connection.Info();
+
+ if (My.Settings.Default.IdentifyQuickConnectTabs)
+ {
+ newConnectionInfo.Name = string.Format(My.Language.strQuick, uri.Host);
+ }
+ else
+ {
+ newConnectionInfo.Name = uri.Host;
+ }
+
+ newConnectionInfo.Protocol = protocol;
+ newConnectionInfo.Hostname = uri.Host;
+ if (uri.Port == -1)
+ {
+ newConnectionInfo.SetDefaultPort();
+ }
+ else
+ {
+ newConnectionInfo.Port = uri.Port;
+ }
+ newConnectionInfo.IsQuickConnect = true;
+
+ return newConnectionInfo;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strQuickConnectFailed, ex, MessageClass.ErrorMsg);
+ return null;
+ }
+ }
+
+ public static void OpenConnection()
+ {
+ try
+ {
+ OpenConnection(Connection.Info.Force.None);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info.Force Force)
+ {
+ try
+ {
+ if (Windows.treeForm.tvConnections.SelectedNode.Tag == null)
+ {
+ return;
+ }
+
+ if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.PuttySession)
+ {
+ OpenConnection(Windows.treeForm.tvConnections.SelectedNode.Tag, Force);
+ }
+ else if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Container)
+ {
+ foreach (TreeNode tNode in Tree.Node.SelectedNode.Nodes)
+ {
+ if (Tree.Node.GetNodeType(tNode) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.PuttySession)
+ {
+ if (tNode.Tag != null)
+ {
+ OpenConnection(tNode.Tag, Force);
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo)
+ {
+ try
+ {
+ OpenConnection(ConnectionInfo, Connection.Info.Force.None);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm)
+ {
+ try
+ {
+ OpenConnectionFinal(ConnectionInfo, Connection.Info.Force.None, ConnectionForm);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, System.Windows.Forms.Form ConnectionForm, Connection.Info.Force Force)
+ {
+ try
+ {
+ OpenConnectionFinal(ConnectionInfo, Force, ConnectionForm);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static void OpenConnection(mRemoteNG.Connection.Info ConnectionInfo, mRemoteNG.Connection.Info.Force Force)
+ {
+ try
+ {
+ OpenConnectionFinal(ConnectionInfo, Force, null);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ private static void OpenConnectionFinal(mRemoteNG.Connection.Info newConnectionInfo, mRemoteNG.Connection.Info.Force Force, System.Windows.Forms.Form ConForm)
+ {
+ try
+ {
+ if (newConnectionInfo.Hostname == "" && newConnectionInfo.Protocol != Connection.Protocol.Protocols.IntApp)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strConnectionOpenFailedNoHostname);
+ return;
+ }
+
+ if (newConnectionInfo.PreExtApp != "")
+ {
+ Tools.ExternalTool extA = App.Runtime.GetExtAppByName(newConnectionInfo.PreExtApp);
+ if (extA != null)
+ {
+ extA.Start(newConnectionInfo);
+ }
+ }
+
+ if ((Force & Connection.Info.Force.DoNotJump) != Connection.Info.Force.DoNotJump)
+ {
+ if (SwitchToOpenConnection(newConnectionInfo))
+ {
+ return;
+ }
+ }
+
+ Protocol.Base newProtocol = default(Protocol.Base);
+ // Create connection based on protocol type
+ switch (newConnectionInfo.Protocol)
+ {
+ case Protocol.Protocols.RDP:
+ newProtocol = new Protocol.RDP();
+ ((RDP) newProtocol).tmrReconnect.Elapsed += ((RDP) newProtocol).tmrReconnect_Elapsed;
+ ((RDP) newProtocol).tmrReconnect.Elapsed += ((RDP) newProtocol).tmrReconnect_Elapsed;
+ break;
+ case Protocol.Protocols.VNC:
+ newProtocol = new Protocol.VNC();
+ break;
+ case Protocol.Protocols.SSH1:
+ newProtocol = new Protocol.SSH1();
+ break;
+ case Protocol.Protocols.SSH2:
+ newProtocol = new Protocol.SSH2();
+ break;
+ case Protocol.Protocols.Telnet:
+ newProtocol = new Protocol.Telnet();
+ break;
+ case Protocol.Protocols.Rlogin:
+ newProtocol = new Protocol.Rlogin();
+ break;
+ case Protocol.Protocols.RAW:
+ newProtocol = new Protocol.RAW();
+ break;
+ case Protocol.Protocols.HTTP:
+ newProtocol = new Protocol.HTTP(newConnectionInfo.RenderingEngine);
+ break;
+ case Protocol.Protocols.HTTPS:
+ newProtocol = new Protocol.HTTPS(newConnectionInfo.RenderingEngine);
+ break;
+ case Protocol.Protocols.ICA:
+ newProtocol = new Protocol.ICA();
+ ((ICA) newProtocol).tmrReconnect.Elapsed += ((ICA) newProtocol).tmrReconnect_Elapsed;
+ ((ICA) newProtocol).tmrReconnect.Elapsed += ((ICA) newProtocol).tmrReconnect_Elapsed;
+ break;
+ case Protocol.Protocols.IntApp:
+ newProtocol = new Protocol.IntegratedProgram();
+
+ if (newConnectionInfo.ExtApp == "")
+ {
+ throw (new Exception(My.Language.strNoExtAppDefined));
+ }
+ break;
+ default:
+ return;
+ }
+
+ Control cContainer = default(Control);
+ System.Windows.Forms.Form cForm = default(System.Windows.Forms.Form);
+
+ string cPnl = "";
+ if (newConnectionInfo.Panel == "" || (Force & Connection.Info.Force.OverridePanel) == Connection.Info.Force.OverridePanel | My.Settings.Default.AlwaysShowPanelSelectionDlg)
+ {
+ frmChoosePanel frmPnl = new frmChoosePanel();
+ if (frmPnl.ShowDialog() == DialogResult.OK)
+ {
+ cPnl = frmPnl.Panel;
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ cPnl = newConnectionInfo.Panel;
+ }
+
+ if (ConForm == null)
+ {
+ cForm = WindowList.FromString(cPnl);
+ }
+ else
+ {
+ cForm = ConForm;
+ }
+
+ if (cForm == null)
+ {
+ cForm = AddPanel(cPnl);
+ cForm.Focus();
+ }
+ else
+ {
+ (cForm as UI.Window.Connection).Show(frmMain.Default.pnlDock);
+ (cForm as UI.Window.Connection).Focus();
+ }
+
+ cContainer = ((UI.Window.Connection)cForm).AddConnectionTab(newConnectionInfo);
+
+ if (newConnectionInfo.Protocol == Connection.Protocol.Protocols.IntApp)
+ {
+ if (App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon != null)
+ {
+ (cContainer as Crownwood.Magic.Controls.TabPage).Icon = App.Runtime.GetExtAppByName(newConnectionInfo.ExtApp).Icon;
+ }
+ }
+
+ newProtocol.Closed += ((UI.Window.Connection)cForm).Prot_Event_Closed;
+
+ newProtocol.Disconnected += Prot_Event_Disconnected;
+ newProtocol.Connected += Prot_Event_Connected;
+ newProtocol.Closed += Prot_Event_Closed;
+ newProtocol.ErrorOccured += Prot_Event_ErrorOccured;
+
+ newProtocol.InterfaceControl = new Connection.InterfaceControl(cContainer, newProtocol, newConnectionInfo);
+
+ newProtocol.Force = Force;
+
+ if (newProtocol.SetProps() == false)
+ {
+ newProtocol.Close();
+ return;
+ }
+
+ if (newProtocol.Connect() == false)
+ {
+ newProtocol.Close();
+ return;
+ }
+
+ newConnectionInfo.OpenConnections.Add(newProtocol);
+
+ if (newConnectionInfo.IsQuickConnect == false)
+ {
+ if (newConnectionInfo.Protocol != Connection.Protocol.Protocols.IntApp)
+ {
+ Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, Images.Enums.TreeImage.ConnectionOpen);
+ }
+ else
+ {
+ Tools.ExternalTool extApp = GetExtAppByName(newConnectionInfo.ExtApp);
+ if (extApp != null)
+ {
+ if (extApp.TryIntegrate)
+ {
+ if (newConnectionInfo.TreeNode != null)
+ {
+ Tree.Node.SetNodeImage(newConnectionInfo.TreeNode, Images.Enums.TreeImage.ConnectionOpen);
+ }
+ }
+ }
+ }
+ }
+
+ frmMain.Default.SelectedConnection = newConnectionInfo;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public static bool SwitchToOpenConnection(Connection.Info nCi)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = FindConnectionContainer(nCi);
+
+ if (IC != null)
+ {
+ (IC.FindForm() as UI.Window.Connection).Focus();
+ (IC.FindForm() as UI.Window.Connection).Show(frmMain.Default.pnlDock);
+ Crownwood.Magic.Controls.TabPage t = (Crownwood.Magic.Controls.TabPage) IC.Parent;
+ t.Selected = true;
+ return true;
+ }
+
+ return false;
+ }
+ #endregion
+
+ #region Event Handlers
+ public static void Prot_Event_Disconnected(object sender, string DisconnectedMessage)
+ {
+ try
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(My.Language.strProtocolEventDisconnected, DisconnectedMessage), true);
+
+ Connection.Protocol.Base Prot = sender;
+ if (Prot.InterfaceControl.Info.Protocol == Connection.Protocol.Protocols.RDP)
+ {
+ string[] Reason = DisconnectedMessage.Split("\r\n");
+ string ReasonCode = Reason[0];
+ string ReasonDescription = Reason[1];
+ if (ReasonCode > 3)
+ {
+ if (!string.IsNullOrEmpty(ReasonDescription))
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strRdpDisconnected + Constants.vbNewLine + ReasonDescription + Constants.vbNewLine + string.Format(My.Language.strErrorCode, ReasonCode));
+ }
+ else
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strRdpDisconnected + Constants.vbNewLine + string.Format(My.Language.strErrorCode, ReasonCode));
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strProtocolEventDisconnectFailed, ex.Message), true);
+ }
+ }
+
+ public static void Prot_Event_Closed(object sender)
+ {
+ try
+ {
+ Connection.Protocol.Base Prot = sender;
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strConnenctionCloseEvent, true);
+
+ MessageCollector.AddMessage(Messages.MessageClass.ReportMsg, string.Format(My.Language.strConnenctionClosedByUser, Prot.InterfaceControl.Info.Hostname, Prot.InterfaceControl.Info.Protocol.ToString(), (new Microsoft.VisualBasic.ApplicationServices.User()).Name));
+
+ Prot.InterfaceControl.Info.OpenConnections.Remove(Prot);
+
+ if (Prot.InterfaceControl.Info.OpenConnections.Count < 1 && Prot.InterfaceControl.Info.IsQuickConnect == false)
+ {
+ Tree.Node.SetNodeImage(Prot.InterfaceControl.Info.TreeNode, Images.Enums.TreeImage.ConnectionClosed);
+ }
+
+ if (Prot.InterfaceControl.Info.PostExtApp != "")
+ {
+ Tools.ExternalTool extA = App.Runtime.GetExtAppByName(Prot.InterfaceControl.Info.PostExtApp);
+ if (extA != null)
+ {
+ extA.Start(Prot.InterfaceControl.Info);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnenctionCloseEventFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void Prot_Event_Connected(object sender)
+ {
+ mRemoteNG.Connection.Protocol.Base prot = sender;
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strConnectionEventConnected, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ReportMsg, string.Format(My.Language.strConnectionEventConnectedDetail, prot.InterfaceControl.Info.Hostname, prot.InterfaceControl.Info.Protocol.ToString(), (new Microsoft.VisualBasic.ApplicationServices.User()).Name, prot.InterfaceControl.Info.Description, prot.InterfaceControl.Info.UserField));
+ }
+
+ public static void Prot_Event_ErrorOccured(object sender, string ErrorMessage)
+ {
+ try
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strConnectionEventErrorOccured, true);
+
+ Connection.Protocol.Base Prot = sender;
+
+ if (Prot.InterfaceControl.Info.Protocol == Connection.Protocol.Protocols.RDP)
+ {
+ if (ErrorMessage > -1)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, string.Format(My.Language.strConnectionRdpErrorDetail, ErrorMessage, Connection.Protocol.RDP.FatalErrors.GetError(ErrorMessage)));
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionEventConnectionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ #endregion
+
+ #region External Apps
+ public static Tools.ExternalTool GetExtAppByName(string Name)
+ {
+ foreach (Tools.ExternalTool extA in ExternalTools)
+ {
+ if (extA.DisplayName == Name)
+ {
+ return extA;
+ }
+ }
+
+ return null;
+ }
+ #endregion
+
+ #region Misc
+ public static void GoToURL(string URL)
+ {
+ mRemoteNG.Connection.Info cI = new mRemoteNG.Connection.Info();
+
+ cI.Name = "";
+ cI.Hostname = URL;
+ if (URL.StartsWith("https:"))
+ {
+ cI.Protocol = Connection.Protocol.Protocols.HTTPS;
+ }
+ else
+ {
+ cI.Protocol = Connection.Protocol.Protocols.HTTP;
+ }
+ cI.SetDefaultPort();
+ cI.IsQuickConnect = true;
+
+ App.Runtime.OpenConnection(cI, mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ public static void GoToWebsite()
+ {
+ GoToURL(App.Info.General.URLHome);
+ }
+
+ public static void GoToDonate()
+ {
+ GoToURL(App.Info.General.URLDonate);
+ }
+
+ public static void GoToForum()
+ {
+ GoToURL(App.Info.General.URLForum);
+ }
+
+ public static void GoToBugs()
+ {
+ GoToURL(App.Info.General.URLBugs);
+ }
+
+ public static void Report(string Text)
+ {
+ try
+ {
+ StreamWriter sWr = new StreamWriter((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\Report.log", true);
+ sWr.WriteLine(Text);
+ sWr.Close();
+ }
+ catch (Exception)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLogWriteToFileFailed);
+ }
+ }
+
+ public static bool SaveReport()
+ {
+ StreamReader streamReader = null;
+ StreamWriter streamWriter = null;
+ try
+ {
+ streamReader = new StreamReader((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\Report.log");
+ string text = streamReader.ReadToEnd();
+ streamReader.Close();
+
+ streamWriter = new StreamWriter(App.Info.General.ReportingFilePath, true);
+ streamWriter.Write(text);
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLogWriteToFileFinalLocationFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ finally
+ {
+ if (streamReader != null)
+ {
+ streamReader.Close();
+ streamReader.Dispose();
+ }
+ if (streamWriter != null)
+ {
+ streamWriter.Close();
+ streamWriter.Dispose();
+ }
+ }
+ }
+
+ public static Connection.InterfaceControl FindConnectionContainer(Connection.Info ConI)
+ {
+ if (ConI.OpenConnections.Count > 0)
+ {
+ for (int i = 0; i <= WindowList.Count - 1; i++)
+ {
+ if (WindowList[i] is UI.Window.Connection)
+ {
+ UI.Window.Connection conW = WindowList[i];
+
+ if (conW.TabController != null)
+ {
+ foreach (Crownwood.Magic.Controls.TabPage t in conW.TabController.TabPages)
+ {
+ if (t.Controls[0] != null)
+ {
+ if (t.Controls[0] is Connection.InterfaceControl)
+ {
+ Connection.InterfaceControl IC = t.Controls[0];
+ if (IC.Info == ConI)
+ {
+ return IC;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ // Override the font of all controls in a container with the default font based on the OS version
+ public static void FontOverride(Control ctlParent)
+ {
+ Control ctlChild = default(Control);
+ foreach (Control tempLoopVar_ctlChild in ctlParent.Controls)
+ {
+ ctlChild = tempLoopVar_ctlChild;
+ ctlChild.Font = new System.Drawing.Font(SystemFonts.MessageBoxFont.Name, ctlChild.Font.Size, ctlChild.Font.Style, ctlChild.Font.Unit, ctlChild.Font.GdiCharSet);
+ if (ctlChild.Controls.Count > 0)
+ {
+ FontOverride(ctlChild);
+ }
+ }
+ }
+ #endregion
+
+ #region SQL Watcher
+ private static void tmrSqlWatcher_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
+ {
+ Tools.Misc.IsSQLUpdateAvailableBG();
+ }
+
+ private static void SQLUpdateCheckFinished(bool UpdateAvailable)
+ {
+ if (UpdateAvailable == true)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strSqlUpdateCheckUpdateAvailable, true);
+ LoadConnectionsBG();
+ }
+ }
+ #endregion
+ }
+}
diff --git a/mRemoteV1/CS/App/App.SupportedCultures.cs b/mRemoteV1/CS/App/App.SupportedCultures.cs
new file mode 100644
index 000000000..4304381c3
--- /dev/null
+++ b/mRemoteV1/CS/App/App.SupportedCultures.cs
@@ -0,0 +1,93 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.App
+{
+ public class SupportedCultures : System.Collections.Generic.Dictionary
+ {
+
+ private SupportedCultures()
+ {
+ System.Globalization.CultureInfo CultureInfo = default(System.Globalization.CultureInfo);
+ foreach (string CultureName in My.Settings.Default.SupportedUICultures.Split(","))
+ {
+ try
+ {
+ CultureInfo = new System.Globalization.CultureInfo(CultureName.Trim());
+ Add(CultureInfo.Name, CultureInfo.TextInfo.ToTitleCase(CultureInfo.NativeName));
+ }
+ catch (Exception ex)
+ {
+ Debug.Print(string.Format("An exception occurred while adding the culture \'{0}\' to the list of supported cultures. {1}", CultureName, ex.ToString()));
+ }
+ }
+ }
+
+ private static SupportedCultures _Instance = null;
+ public static void InstantiateSingleton()
+ {
+ if (_Instance == null)
+ {
+ _Instance = new SupportedCultures();
+ }
+ }
+
+ public static bool IsNameSupported(string CultureName)
+ {
+ return _Instance.ContainsKey(CultureName);
+ }
+
+ public static bool IsNativeNameSupported(string CultureNativeName)
+ {
+ return _Instance.ContainsValue(CultureNativeName);
+ }
+
+ public static string get_CultureName(string CultureNativeName)
+ {
+ string[] Names = new string[_Instance.Count + 1];
+ string[] NativeNames = new string[_Instance.Count + 1];
+
+ _Instance.Keys.CopyTo(Names, 0);
+ _Instance.Values.CopyTo(NativeNames, 0);
+
+ for (int Index = 0; Index <= _Instance.Count; Index++)
+ {
+ if (NativeNames[Index] == CultureNativeName)
+ {
+ return Names[Index];
+ }
+ }
+
+ throw (new System.Collections.Generic.KeyNotFoundException());
+ }
+
+ public static string get_CultureNativeName(string CultureName)
+ {
+ return _Instance[CultureName];
+ }
+
+public static List CultureNativeNames
+ {
+ get
+ {
+ List ValueList = new List();
+ foreach (string Value in _Instance.Values)
+ {
+ ValueList.Add(Value);
+ }
+ return ValueList;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/App/App.Update.cs b/mRemoteV1/CS/App/App.Update.cs
new file mode 100644
index 000000000..c3d07630a
--- /dev/null
+++ b/mRemoteV1/CS/App/App.Update.cs
@@ -0,0 +1,635 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using System.Net;
+using System.ComponentModel;
+using System.Threading;
+using mRemoteNG.Tools;
+using System.Reflection;
+
+
+namespace mRemoteNG.App
+{
+ public class Update
+ {
+#region Events
+ private AsyncCompletedEventHandler GetUpdateInfoCompletedEventEvent;
+ public event AsyncCompletedEventHandler GetUpdateInfoCompletedEvent
+ {
+ add
+ {
+ GetUpdateInfoCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Combine(GetUpdateInfoCompletedEventEvent, value);
+ }
+ remove
+ {
+ GetUpdateInfoCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Remove(GetUpdateInfoCompletedEventEvent, value);
+ }
+ }
+
+ private AsyncCompletedEventHandler GetChangeLogCompletedEventEvent;
+ public event AsyncCompletedEventHandler GetChangeLogCompletedEvent
+ {
+ add
+ {
+ GetChangeLogCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Combine(GetChangeLogCompletedEventEvent, value);
+ }
+ remove
+ {
+ GetChangeLogCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Remove(GetChangeLogCompletedEventEvent, value);
+ }
+ }
+
+ private AsyncCompletedEventHandler GetAnnouncementInfoCompletedEventEvent;
+ public event AsyncCompletedEventHandler GetAnnouncementInfoCompletedEvent
+ {
+ add
+ {
+ GetAnnouncementInfoCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Combine(GetAnnouncementInfoCompletedEventEvent, value);
+ }
+ remove
+ {
+ GetAnnouncementInfoCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Remove(GetAnnouncementInfoCompletedEventEvent, value);
+ }
+ }
+
+ private DownloadProgressChangedEventHandler DownloadUpdateProgressChangedEventEvent;
+ public event DownloadProgressChangedEventHandler DownloadUpdateProgressChangedEvent
+ {
+ add
+ {
+ DownloadUpdateProgressChangedEventEvent = (DownloadProgressChangedEventHandler) System.Delegate.Combine(DownloadUpdateProgressChangedEventEvent, value);
+ }
+ remove
+ {
+ DownloadUpdateProgressChangedEventEvent = (DownloadProgressChangedEventHandler) System.Delegate.Remove(DownloadUpdateProgressChangedEventEvent, value);
+ }
+ }
+
+ private AsyncCompletedEventHandler DownloadUpdateCompletedEventEvent;
+ public event AsyncCompletedEventHandler DownloadUpdateCompletedEvent
+ {
+ add
+ {
+ DownloadUpdateCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Combine(DownloadUpdateCompletedEventEvent, value);
+ }
+ remove
+ {
+ DownloadUpdateCompletedEventEvent = (AsyncCompletedEventHandler) System.Delegate.Remove(DownloadUpdateCompletedEventEvent, value);
+ }
+ }
+
+#endregion
+
+#region Public Properties
+ private UpdateInfo _currentUpdateInfo;
+public UpdateInfo CurrentUpdateInfo
+ {
+ get
+ {
+ return _currentUpdateInfo;
+ }
+ }
+
+ private string _changeLog;
+public string ChangeLog
+ {
+ get
+ {
+ return _changeLog;
+ }
+ }
+
+ private AnnouncementInfo _currentAnnouncementInfo;
+public AnnouncementInfo CurrentAnnouncementInfo
+ {
+ get
+ {
+ return _currentAnnouncementInfo;
+ }
+ }
+
+public bool IsGetUpdateInfoRunning
+ {
+ get
+ {
+ if (_getUpdateInfoThread != null)
+ {
+ if (_getUpdateInfoThread.IsAlive)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+public bool IsGetChangeLogRunning
+ {
+ get
+ {
+ if (_getChangeLogThread != null)
+ {
+ if (_getChangeLogThread.IsAlive)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+public bool IsGetAnnouncementInfoRunning
+ {
+ get
+ {
+ if (_getAnnouncementInfoThread != null)
+ {
+ if (_getAnnouncementInfoThread.IsAlive)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+public bool IsDownloadUpdateRunning
+ {
+ get
+ {
+ return (_downloadUpdateWebClient != null);
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Update()
+ {
+ SetProxySettings();
+ }
+
+ public void SetProxySettings()
+ {
+ SetProxySettings(System.Convert.ToBoolean(My.Settings.Default.UpdateUseProxy), System.Convert.ToString(My.Settings.Default.UpdateProxyAddress), System.Convert.ToInt32(My.Settings.Default.UpdateProxyPort), System.Convert.ToBoolean(My.Settings.Default.UpdateProxyUseAuthentication), System.Convert.ToString(My.Settings.Default.UpdateProxyAuthUser), Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.UpdateProxyAuthPass), Info.General.EncryptionKey));
+ }
+
+ public void SetProxySettings(bool useProxy, string address, int port, bool useAuthentication, string username, string password)
+ {
+ if (useProxy && !string.IsNullOrEmpty(address))
+ {
+ if (!(port == 0))
+ {
+ _webProxy = new WebProxy(address, port);
+ }
+ else
+ {
+ _webProxy = new WebProxy(address);
+ }
+
+ if (useAuthentication)
+ {
+ _webProxy.Credentials = new NetworkCredential(username, password);
+ }
+ else
+ {
+ _webProxy.Credentials = null;
+ }
+ }
+ else
+ {
+ _webProxy = null;
+ }
+ }
+
+ public bool IsUpdateAvailable()
+ {
+ if (_currentUpdateInfo == null || !_currentUpdateInfo.IsValid)
+ {
+ return false;
+ }
+
+ return _currentUpdateInfo.Version > (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.Version;
+ }
+
+ public bool IsAnnouncementAvailable()
+ {
+ if (_currentAnnouncementInfo == null || (!_currentAnnouncementInfo.IsValid || string.IsNullOrEmpty(_currentAnnouncementInfo.Name)))
+ {
+ return false;
+ }
+
+ return !(_currentAnnouncementInfo.Name == My.Settings.Default.LastAnnouncement);
+ }
+
+ public void GetUpdateInfoAsync()
+ {
+ if (IsGetUpdateInfoRunning)
+ {
+ _getUpdateInfoThread.Abort();
+ }
+
+ _getUpdateInfoThread = new Thread(new System.Threading.ThreadStart(GetUpdateInfo));
+ _getUpdateInfoThread.SetApartmentState(ApartmentState.STA);
+ _getUpdateInfoThread.IsBackground = true;
+ _getUpdateInfoThread.Start();
+ }
+
+ public void GetChangeLogAsync()
+ {
+ if (_currentUpdateInfo == null || !_currentUpdateInfo.IsValid)
+ {
+ throw (new InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling GetChangeLogAsync()."));
+ }
+
+ if (IsGetChangeLogRunning)
+ {
+ _getChangeLogThread.Abort();
+ }
+
+ _getChangeLogThread = new Thread(new System.Threading.ThreadStart(GetChangeLog));
+ _getChangeLogThread.SetApartmentState(ApartmentState.STA);
+ _getChangeLogThread.IsBackground = true;
+ _getChangeLogThread.Start();
+ }
+
+ public void GetAnnouncementInfoAsync()
+ {
+ if (IsGetAnnouncementInfoRunning)
+ {
+ _getAnnouncementInfoThread.Abort();
+ }
+
+ _getAnnouncementInfoThread = new Thread(new System.Threading.ThreadStart(GetAnnouncementInfo));
+ _getAnnouncementInfoThread.SetApartmentState(ApartmentState.STA);
+ _getAnnouncementInfoThread.IsBackground = true;
+ _getAnnouncementInfoThread.Start();
+ }
+
+ public void DownloadUpdateAsync()
+ {
+ if (_downloadUpdateWebClient != null)
+ {
+ throw (new InvalidOperationException("A previous call to DownloadUpdateAsync() is still in progress."));
+ }
+
+ if (_currentUpdateInfo == null || !_currentUpdateInfo.IsValid)
+ {
+ throw (new InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling DownloadUpdateAsync()."));
+ }
+
+ _currentUpdateInfo.UpdateFilePath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetRandomFileName(), "exe"));
+ DownloadUpdateWebClient.DownloadFileAsync(CurrentUpdateInfo.DownloadAddress, _currentUpdateInfo.UpdateFilePath);
+ }
+#endregion
+
+#region Private Properties
+ private WebClient _downloadUpdateWebClient;
+private WebClient DownloadUpdateWebClient
+ {
+ get
+ {
+ if (_downloadUpdateWebClient != null)
+ {
+ return _downloadUpdateWebClient;
+ }
+
+ _downloadUpdateWebClient = CreateWebClient();
+
+ _downloadUpdateWebClient.DownloadProgressChanged += DownloadUpdateProgressChanged;
+ _downloadUpdateWebClient.DownloadFileCompleted += DownloadUpdateCompleted;
+
+ return _downloadUpdateWebClient;
+ }
+ }
+#endregion
+
+#region Private Fields
+ private WebProxy _webProxy;
+ private Thread _getUpdateInfoThread;
+ private Thread _getChangeLogThread;
+ private Thread _getAnnouncementInfoThread;
+#endregion
+
+#region Private Methods
+ private WebClient CreateWebClient()
+ {
+ WebClient webClient = new WebClient();
+ webClient.Headers.Add("user-agent", Info.General.UserAgent);
+ webClient.Proxy = _webProxy;
+ return webClient;
+ }
+
+ private static DownloadStringCompletedEventArgs NewDownloadStringCompletedEventArgs(string result, Exception exception, bool cancelled, object userToken)
+ {
+ Type type = typeof(DownloadStringCompletedEventArgs);
+ const BindingFlags bindingFlags = bindingFlags.NonPublic | bindingFlags.Instance;
+ Type[] argumentTypes = new Type[] {typeof(string), typeof(Exception), typeof(bool), typeof(object)};
+ ConstructorInfo constructor = type.GetConstructor(bindingFlags, null, argumentTypes, null);
+ object[] arguments = new object[] {result, exception, cancelled, userToken};
+
+ return constructor.Invoke(arguments);
+ }
+
+ private DownloadStringCompletedEventArgs DownloadString(Uri address)
+ {
+ WebClient webClient = CreateWebClient();
+ string result = string.Empty;
+ Exception exception = null;
+ bool cancelled = false;
+
+ try
+ {
+ result = webClient.DownloadString(address);
+ }
+ catch (ThreadAbortException)
+ {
+ cancelled = true;
+ }
+ catch (Exception ex)
+ {
+ exception = ex;
+ }
+
+ return NewDownloadStringCompletedEventArgs(result, exception, cancelled, null);
+ }
+
+ private void GetUpdateInfo()
+ {
+ Uri updateFileUri = new Uri(new Uri(System.Convert.ToString(My.Settings.Default.UpdateAddress)), new Uri(Info.Update.FileName, UriKind.Relative));
+ DownloadStringCompletedEventArgs e = DownloadString(updateFileUri);
+
+ if (!e.Cancelled && e.Error == null)
+ {
+ _currentUpdateInfo = UpdateInfo.FromString(e.Result);
+
+ My.Settings.Default.CheckForUpdatesLastCheck = DateTime.UtcNow;
+ if (!My.Settings.Default.UpdatePending)
+ {
+ My.Settings.Default.UpdatePending = IsUpdateAvailable();
+ }
+ }
+
+ if (GetUpdateInfoCompletedEventEvent != null)
+ GetUpdateInfoCompletedEventEvent(this, e);
+ }
+
+ private void GetChangeLog()
+ {
+ DownloadStringCompletedEventArgs e = DownloadString(_currentUpdateInfo.ChangeLogAddress);
+
+ if (!e.Cancelled && e.Error == null)
+ {
+ _changeLog = e.Result;
+ }
+
+ if (GetChangeLogCompletedEventEvent != null)
+ GetChangeLogCompletedEventEvent(this, e);
+ }
+
+ private void GetAnnouncementInfo()
+ {
+ Uri announcementFileUri = new Uri(System.Convert.ToString(My.Settings.Default.AnnouncementAddress));
+ DownloadStringCompletedEventArgs e = DownloadString(announcementFileUri);
+
+ if (!e.Cancelled && e.Error == null)
+ {
+ _currentAnnouncementInfo = AnnouncementInfo.FromString(e.Result);
+
+ if (!string.IsNullOrEmpty(_currentAnnouncementInfo.Name))
+ {
+ My.Settings.Default.LastAnnouncement = _currentAnnouncementInfo.Name;
+ }
+ }
+
+ if (GetAnnouncementInfoCompletedEventEvent != null)
+ GetAnnouncementInfoCompletedEventEvent(this, e);
+ }
+
+ private void DownloadUpdateProgressChanged(object sender, DownloadProgressChangedEventArgs e)
+ {
+ if (DownloadUpdateProgressChangedEventEvent != null)
+ DownloadUpdateProgressChangedEventEvent(sender, e);
+ }
+
+ private void DownloadUpdateCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
+ {
+ AsyncCompletedEventArgs raiseEventArgs = e;
+
+ if (!e.Cancelled && e.Error == null)
+ {
+ try
+ {
+ Authenticode updateAuthenticode = new Authenticode(_currentUpdateInfo.UpdateFilePath);
+ updateAuthenticode.RequireThumbprintMatch = true;
+ updateAuthenticode.ThumbprintToMatch = _currentUpdateInfo.CertificateThumbprint;
+
+ if (!(updateAuthenticode.Verify() == (int) Authenticode.StatusValue.Verified))
+ {
+ if (updateAuthenticode.Status == Authenticode.StatusValue.UnhandledException)
+ {
+ throw (updateAuthenticode.Exception);
+ }
+ else
+ {
+ throw (new Exception(updateAuthenticode.StatusMessage));
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ raiseEventArgs = new AsyncCompletedEventArgs(ex, false, null);
+ }
+ }
+
+ if (raiseEventArgs.Cancelled || raiseEventArgs.Error != null)
+ {
+ File.Delete(_currentUpdateInfo.UpdateFilePath);
+ }
+
+ if (DownloadUpdateCompletedEventEvent != null)
+ DownloadUpdateCompletedEventEvent(this, raiseEventArgs);
+
+ _downloadUpdateWebClient.Dispose();
+ _downloadUpdateWebClient = null;
+ }
+#endregion
+
+#region Public Classes
+ public class UpdateInfo
+ {
+#region Public Properties
+ public bool IsValid {get; set;}
+ public Version Version {get; set;}
+ public Uri DownloadAddress {get; set;}
+ public string UpdateFilePath {get; set;}
+ public Uri ChangeLogAddress {get; set;}
+ public Uri ImageAddress {get; set;}
+ public Uri ImageLinkAddress {get; set;}
+ public string CertificateThumbprint {get; set;}
+#endregion
+
+#region Public Methods
+ public static UpdateInfo FromString(string input)
+ {
+ UpdateInfo newInfo = new UpdateInfo();
+ if (string.IsNullOrEmpty(input))
+ {
+ newInfo.IsValid = false;
+ }
+ else
+ {
+ UpdateFile updateFile = new UpdateFile(input);
+ newInfo.Version = updateFile.GetVersion("Version");
+ newInfo.DownloadAddress = updateFile.GetUri("dURL");
+ newInfo.ChangeLogAddress = updateFile.GetUri("clURL");
+ newInfo.ImageAddress = updateFile.GetUri("imgURL");
+ newInfo.ImageLinkAddress = updateFile.GetUri("imgURLLink");
+ newInfo.CertificateThumbprint = updateFile.GetThumbprint("CertificateThumbprint");
+ newInfo.IsValid = true;
+ }
+ return newInfo;
+ }
+#endregion
+ }
+
+ public class AnnouncementInfo
+ {
+#region Public Properties
+ public bool IsValid {get; set;}
+ public string Name {get; set;}
+ public Uri Address {get; set;}
+#endregion
+
+#region Public Methods
+ public static AnnouncementInfo FromString(string input)
+ {
+ AnnouncementInfo newInfo = new AnnouncementInfo();
+ if (string.IsNullOrEmpty(input))
+ {
+ newInfo.IsValid = false;
+ }
+ else
+ {
+ UpdateFile updateFile = new UpdateFile(input);
+ newInfo.Name = updateFile.GetString("Name");
+ newInfo.Address = updateFile.GetUri("URL");
+ newInfo.IsValid = true;
+ }
+ return newInfo;
+ }
+#endregion
+ }
+#endregion
+
+#region Private Classes
+ private class UpdateFile
+ {
+#region Public Properties
+ private Dictionary _items = new Dictionary(StringComparer.InvariantCultureIgnoreCase);
+ // ReSharper disable MemberCanBePrivate.Local
+public Dictionary Items
+ {
+ // ReSharper restore MemberCanBePrivate.Local
+ get
+ {
+ return _items;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public UpdateFile(string content)
+ {
+ FromString(content);
+ }
+
+ // ReSharper disable MemberCanBePrivate.Local
+ public void FromString(string content)
+ {
+ // ReSharper restore MemberCanBePrivate.Local
+ if (string.IsNullOrEmpty(content))
+ {
+ }
+ else
+ {
+ char[] lineSeparators = new char[] {'\n', '\r'};
+ char[] keyValueSeparators = new char[] {':', '='};
+ char[] commentCharacters = new char[] {'#', ';', '\''};
+
+ string[] lines = content.Split(lineSeparators.ToString().ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+ foreach (string line in lines)
+ {
+ line = line.Trim();
+ if (line.Length == 0)
+ {
+ continue;
+ }
+ if (!(line.Substring(0, 1).IndexOfAny(commentCharacters.ToString().ToCharArray()) == -1))
+ {
+ continue;
+ }
+
+ string[] parts = line.Split(keyValueSeparators.ToString().ToCharArray(), 2);
+ if (!(parts.Length == 2))
+ {
+ continue;
+ }
+ string key = System.Convert.ToString(parts[0].Trim());
+ string value = System.Convert.ToString(parts[1].Trim());
+
+ _items.Add(key, value);
+ }
+ }
+ }
+
+ // ReSharper disable MemberCanBePrivate.Local
+ public string GetString(string key)
+ {
+ // ReSharper restore MemberCanBePrivate.Local
+ if (!Items.ContainsKey(key))
+ {
+ return string.Empty;
+ }
+ return this[key];
+ }
+
+ public Version GetVersion(string key)
+ {
+ string value = GetString(key);
+ if (string.IsNullOrEmpty(value))
+ {
+ return null;
+ }
+ return new Version(value);
+ }
+
+ public Uri GetUri(string key)
+ {
+ string value = GetString(key);
+ if (string.IsNullOrEmpty(value))
+ {
+ return null;
+ }
+ return new Uri(value);
+ }
+
+ public string GetThumbprint(string key)
+ {
+ return GetString(key).Replace(" ", "").ToUpperInvariant();
+ }
+#endregion
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/App/Export.cs b/mRemoteV1/CS/App/Export.cs
new file mode 100644
index 000000000..499d5901b
--- /dev/null
+++ b/mRemoteV1/CS/App/Export.cs
@@ -0,0 +1,115 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.Forms;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.App
+{
+ public class Export
+ {
+ public static void ExportToFile(TreeNode rootTreeNode, TreeNode selectedTreeNode)
+ {
+ try
+ {
+ TreeNode exportTreeNode = default(TreeNode);
+ Security.Save saveSecurity = new Security.Save();
+
+ using (ExportForm exportForm = new ExportForm())
+ {
+ if (Tree.Node.GetNodeType(selectedTreeNode) == Tree.Node.Type.Container)
+ {
+ exportForm.SelectedFolder = selectedTreeNode;
+ }
+ else if (Tree.Node.GetNodeType(selectedTreeNode) == Tree.Node.Type.Connection)
+ {
+ if (Tree.Node.GetNodeType(selectedTreeNode.Parent) == Tree.Node.Type.Container)
+ {
+ exportForm.SelectedFolder = selectedTreeNode.Parent;
+ }
+ exportForm.SelectedConnection = selectedTreeNode;
+ }
+
+ if (!(exportForm.ShowDialog(frmMain) == DialogResult.OK))
+ {
+ return ;
+ }
+
+ switch (exportForm.Scope)
+ {
+ case exportForm.ExportScope.SelectedFolder:
+ exportTreeNode = exportForm.SelectedFolder;
+ break;
+ case exportForm.ExportScope.SelectedConnection:
+ exportTreeNode = exportForm.SelectedConnection;
+ break;
+ default:
+ exportTreeNode = rootTreeNode;
+ break;
+ }
+
+ saveSecurity.Username = exportForm.IncludeUsername;
+ saveSecurity.Password = exportForm.IncludePassword;
+ saveSecurity.Domain = exportForm.IncludeDomain;
+ saveSecurity.Inheritance = exportForm.IncludeInheritance;
+
+ SaveExportFile(exportForm.FileName, exportForm.SaveFormat, exportTreeNode, saveSecurity);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "App.Export.ExportToFile() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ private static void SaveExportFile(string fileName, mRemoteNG.Config.Connections.Save.Format saveFormat, TreeNode rootNode, Security.Save saveSecurity)
+ {
+ bool previousTimerEnabled = false;
+
+ try
+ {
+ if (TimerSqlWatcher != null)
+ {
+ previousTimerEnabled = TimerSqlWatcher.Enabled;
+ TimerSqlWatcher.Enabled = false;
+ }
+
+ Config.Connections.Save connectionsSave = new Config.Connections.Save();
+ connectionsSave.Export = true;
+ connectionsSave.ConnectionFileName = fileName;
+ connectionsSave.SaveFormat = saveFormat;
+
+ connectionsSave.ConnectionList = ConnectionList;
+ connectionsSave.ContainerList = ContainerList;
+ connectionsSave.RootTreeNode = rootNode;
+
+ connectionsSave.SaveSecurity = saveSecurity;
+
+ connectionsSave.Save_Renamed();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(string.Format("Export.SaveExportFile(\"{0}\") failed.", fileName), ex);
+ }
+ finally
+ {
+ if (TimerSqlWatcher != null)
+ {
+ TimerSqlWatcher.Enabled = previousTimerEnabled;
+ }
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/App/Import.cs b/mRemoteV1/CS/App/Import.cs
new file mode 100644
index 000000000..7c76bfa9b
--- /dev/null
+++ b/mRemoteV1/CS/App/Import.cs
@@ -0,0 +1,248 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using mRemoteNG.My;
+//using mRemoteNG.App.Runtime;
+using PSTaskDialog;
+
+
+namespace mRemoteNG.App
+{
+ public class Import
+ {
+#region Public Methods
+ public static void ImportFromFile(TreeNode rootTreeNode, TreeNode selectedTreeNode, bool alwaysUseSelectedTreeNode = false)
+ {
+ try
+ {
+ using (OpenFileDialog openFileDialog = new OpenFileDialog())
+ {
+ openFileDialog.CheckFileExists = true;
+ openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+ openFileDialog.Multiselect = true;
+
+ List fileTypes = new List();
+ fileTypes.AddRange(new[] {Language.strFilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat"});
+ fileTypes.AddRange(new[] {Language.strFiltermRemoteXML, "*.xml"});
+ fileTypes.AddRange(new[] {Language.strFilterRDP, "*.rdp"});
+ fileTypes.AddRange(new[] {Language.strFilterRdgFiles, "*.rdg"});
+ fileTypes.AddRange(new[] {Language.strFilterPuttyConnectionManager, "*.dat"});
+ fileTypes.AddRange(new[] {Language.strFilterAll, "*.*"});
+
+ openFileDialog.Filter = string.Join("|", fileTypes.ToArray());
+
+ if (!(openFileDialog.ShowDialog() == DialogResult.OK))
+ {
+ return ;
+ }
+
+ TreeNode parentTreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode, alwaysUseSelectedTreeNode);
+ if (parentTreeNode == null)
+ {
+ return ;
+ }
+
+ foreach (string fileName in openFileDialog.FileNames)
+ {
+ try
+ {
+ switch (DetermineFileType(fileName))
+ {
+ case FileType.mRemoteXml:
+ Config.import.mRemoteNG.Import(fileName, parentTreeNode);
+ break;
+ case FileType.RemoteDesktopConnection:
+ Config.import.RemoteDesktopConnection.Import(fileName, parentTreeNode);
+ break;
+ case FileType.RemoteDesktopConnectionManager:
+ Config.import.RemoteDesktopConnectionManager.Import(fileName, parentTreeNode);
+ break;
+ case FileType.PuttyConnectionManager:
+ Config.import.PuttyConnectionManager.Import(fileName, parentTreeNode);
+ break;
+ default:
+ throw (new FileFormatException("Unrecognized file format."));
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ cTaskDialog.ShowTaskDialogBox(System.Windows.Forms.Application.ProductName, Language.strImportFileFailedMainInstruction, string.Format(Language.strImportFileFailedContent, fileName), Tools.Misc.GetExceptionMessageRecursive(ex), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, null);
+ }
+ }
+
+ parentTreeNode.Expand();
+ Container.Info parentContainer = parentTreeNode.Tag as Container.Info;
+ if (parentContainer != null)
+ {
+ parentContainer.IsExpanded = true;
+ }
+
+ SaveConnectionsBG();
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "App.Import.ImportFromFile() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public static void ImportFromActiveDirectory(string ldapPath)
+ {
+ try
+ {
+ TreeNode rootTreeNode = Tree.Node.TreeView.Nodes[0];
+ TreeNode selectedTreeNode = Tree.Node.TreeView.SelectedNode;
+
+ TreeNode parentTreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode);
+ if (parentTreeNode == null)
+ {
+ return ;
+ }
+
+ Config.import.ActiveDirectory.Import(ldapPath, parentTreeNode);
+
+ parentTreeNode.Expand();
+ Container.Info parentContainer = parentTreeNode.Tag as Container.Info;
+ if (parentContainer != null)
+ {
+ parentContainer.IsExpanded = true;
+ }
+
+ SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "App.Import.ImportFromActiveDirectory() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public static void ImportFromPortScan(IEnumerable hosts, Protocol.Protocol.Protocols protocol)
+ {
+ try
+ {
+ TreeNode rootTreeNode = Tree.Node.TreeView.Nodes[0];
+ TreeNode selectedTreeNode = Tree.Node.TreeView.SelectedNode;
+
+ TreeNode parentTreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode);
+ if (parentTreeNode == null)
+ {
+ return ;
+ }
+
+ Config.import.PortScan.Import(hosts, protocol, parentTreeNode);
+
+ parentTreeNode.Expand();
+ Container.Info parentContainer = parentTreeNode.Tag as Container.Info;
+ if (parentContainer != null)
+ {
+ parentContainer.IsExpanded = true;
+ }
+
+ SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "App.Import.ImportFromPortScan() failed.", ex: ex, logOnly: true);
+ }
+ }
+#endregion
+
+#region Private Methods
+ private static TreeNode GetParentTreeNode(TreeNode rootTreeNode, TreeNode selectedTreeNode, bool alwaysUseSelectedTreeNode = false)
+ {
+ TreeNode parentTreeNode = default(TreeNode);
+
+ selectedTreeNode = GetContainerTreeNode(selectedTreeNode);
+ if (selectedTreeNode == null || selectedTreeNode == rootTreeNode)
+ {
+ parentTreeNode = rootTreeNode;
+ }
+ else
+ {
+ if (alwaysUseSelectedTreeNode)
+ {
+ parentTreeNode = GetContainerTreeNode(selectedTreeNode);
+ }
+ else
+ {
+ cTaskDialog.ShowCommandBox(System.Windows.Forms.Application.ProductName, Language.strImportLocationMainInstruction, Language.strImportLocationContent, "", "", "", string.Format(Language.strImportLocationCommandButtons, Constants.vbLf, rootTreeNode.Text, selectedTreeNode.Text), true, eSysIcons.Question, (PSTaskDialog.eSysIcons) 0);
+ switch (cTaskDialog.CommandButtonResult)
+ {
+ case 0: // Root
+ parentTreeNode = rootTreeNode;
+ break;
+ case 1: // Selected Folder
+ parentTreeNode = GetContainerTreeNode(selectedTreeNode);
+ break;
+ default: // Cancel
+ parentTreeNode = null;
+ break;
+ }
+ }
+ }
+
+ return parentTreeNode;
+ }
+
+ private static TreeNode GetContainerTreeNode(TreeNode treeNode)
+ {
+ if ((Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.Root) || (Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.Container))
+ {
+ return treeNode;
+ }
+ else if (Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.Connection)
+ {
+ return treeNode.Parent;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ private static FileType DetermineFileType(string fileName)
+ {
+ // TODO: Use the file contents to determine the file type instead of trusting the extension
+ string fileExtension = System.Convert.ToString(Path.GetExtension(fileName).ToLowerInvariant());
+ switch (fileExtension)
+ {
+ case ".xml":
+ return FileType.mRemoteXml;
+ case ".rdp":
+ return FileType.RemoteDesktopConnection;
+ case ".rdg":
+ return FileType.RemoteDesktopConnectionManager;
+ case ".dat":
+ return FileType.PuttyConnectionManager;
+ default:
+ return FileType.Unknown;
+ }
+ }
+#endregion
+
+#region Private Enumerations
+ private enum FileType
+ {
+ Unknown = 0,
+ // ReSharper disable once InconsistentNaming
+ mRemoteXml,
+ RemoteDesktopConnection,
+ RemoteDesktopConnectionManager,
+ PuttyConnectionManager
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/ApplicationEvents.cs b/mRemoteV1/CS/ApplicationEvents.cs
new file mode 100644
index 000000000..da37319e9
--- /dev/null
+++ b/mRemoteV1/CS/ApplicationEvents.cs
@@ -0,0 +1,97 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using Microsoft.VisualBasic.CompilerServices;
+
+namespace mRemoteNG.My
+{
+ // The following events are available for MyApplication:
+ //
+ // Startup: Raised when the application starts, before the startup form is created.
+ // Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
+ // UnhandledException: Raised if the application encounters an unhandled exception.
+ // StartupNextInstance: Raised when launching a single-instance application and the application is already active.
+ // NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
+ partial class MyApplication : global::Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
+ {
+ public System.Threading.Mutex mutex;
+
+ private void MyApplication_Startup(object sender, Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
+ {
+ if (My.Settings.Default.SingleInstance)
+ {
+ string mutexID = "mRemoteNG_SingleInstanceMutex";
+
+ mutex = new System.Threading.Mutex(false, mutexID);
+
+ if (!mutex.WaitOne(0, false))
+ {
+ try
+ {
+ SwitchToCurrentInstance();
+ }
+ catch (Exception)
+ {
+ }
+
+ ProjectData.EndApp();
+ }
+
+ GC.KeepAlive(mutex);
+ }
+ }
+
+ private IntPtr GetCurrentInstanceWindowHandle()
+ {
+ IntPtr hWnd = IntPtr.Zero;
+ Process curProc = Process.GetCurrentProcess();
+
+ foreach (Process proc in Process.GetProcessesByName(curProc.ProcessName))
+ {
+ if (proc.Id != curProc.Id && proc.MainModule.FileName == curProc.MainModule.FileName && proc.MainWindowHandle != IntPtr.Zero)
+ {
+ hWnd = proc.MainWindowHandle;
+ break;
+ }
+ }
+
+ return hWnd;
+ }
+
+ private void SwitchToCurrentInstance()
+ {
+ IntPtr hWnd = GetCurrentInstanceWindowHandle();
+
+ if (hWnd != IntPtr.Zero)
+ {
+ //Restore window if minimized. Do not restore if already in
+ //normal or maximised window state, since we don't want to
+ //change the current state of the window.
+ if (App.Native.IsIconic(hWnd) != 0)
+ {
+ App.Native.ShowWindow(hWnd, App.Native.SW_RESTORE);
+ }
+
+ App.Native.SetForegroundWindow(hWnd);
+ }
+ }
+
+ private void MyApplication_Shutdown(object sender, System.EventArgs e)
+ {
+ if (mutex != null)
+ {
+ mutex.Close();
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Config.Connections.Load.cs b/mRemoteV1/CS/Config/Config.Connections.Load.cs
new file mode 100644
index 000000000..3d873f966
--- /dev/null
+++ b/mRemoteV1/CS/Config/Config.Connections.Load.cs
@@ -0,0 +1,1279 @@
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using System.Xml;
+using System.Globalization;
+using mRemoteNG.App;
+using System.Data.SqlClient;
+using System.IO;
+using mRemoteNG.My;
+using PSTaskDialog;
+
+
+namespace mRemoteNG.Config.Connections
+{
+ public class Load
+ {
+ #region Private Properties
+ private XmlDocument xDom;
+ private double confVersion;
+ private string pW = "mR3m";
+ private SqlConnection sqlCon;
+ private SqlCommand sqlQuery;
+ private SqlDataReader sqlRd;
+ private TreeNode _selectedTreeNode;
+ #endregion
+
+ #region Public Properties
+ private bool _UseSQL;
+ public bool UseSQL
+ {
+ get { return _UseSQL; }
+ set { _UseSQL = value; }
+ }
+
+ private string _SQLHost;
+ public string SQLHost
+ {
+ get { return _SQLHost; }
+ set { _SQLHost = value; }
+ }
+
+ private string _SQLDatabaseName;
+ public string SQLDatabaseName
+ {
+ get { return _SQLDatabaseName; }
+ set { _SQLDatabaseName = value; }
+ }
+
+ private string _SQLUsername;
+ public string SQLUsername
+ {
+ get { return _SQLUsername; }
+ set { _SQLUsername = value; }
+ }
+
+ private string _SQLPassword;
+ public string SQLPassword
+ {
+ get { return _SQLPassword; }
+ set { _SQLPassword = value; }
+ }
+
+ private bool _SQLUpdate;
+ public bool SQLUpdate
+ {
+ get { return _SQLUpdate; }
+ set { _SQLUpdate = value; }
+ }
+
+ private string _PreviousSelected;
+ public string PreviousSelected
+ {
+ get { return _PreviousSelected; }
+ set { _PreviousSelected = value; }
+ }
+
+ private string _ConnectionFileName;
+ public string ConnectionFileName
+ {
+ get { return this._ConnectionFileName; }
+ set { this._ConnectionFileName = value; }
+ }
+
+ public TreeNode RootTreeNode {get; set;}
+
+ public Connection.List ConnectionList {get; set;}
+
+ private Container.List _ContainerList;
+ public Container.List ContainerList
+ {
+ get { return this._ContainerList; }
+ set { this._ContainerList = value; }
+ }
+
+ private Connection.List _PreviousConnectionList;
+ public Connection.List PreviousConnectionList
+ {
+ get { return _PreviousConnectionList; }
+ set { _PreviousConnectionList = value; }
+ }
+
+ private Container.List _PreviousContainerList;
+ public Container.List PreviousContainerList
+ {
+ get { return _PreviousContainerList; }
+ set { _PreviousContainerList = value; }
+ }
+ #endregion
+
+ #region Public Methods
+ public void Load_Renamed(bool import)
+ {
+ if (UseSQL)
+ {
+ LoadFromSQL();
+ }
+ else
+ {
+ string connections = DecryptCompleteFile();
+ LoadFromXML(connections, import);
+ }
+
+ frmMain.Default.UsingSqlServer = UseSQL;
+ frmMain.Default.ConnectionsFileName = ConnectionFileName;
+
+ if (!import)
+ {
+ Putty.Sessions.AddSessionsToTree();
+ }
+ }
+ #endregion
+
+ #region SQL
+ private delegate void LoadFromSqlDelegate();
+ private void LoadFromSQL()
+ {
+ if (Runtime.Windows.treeForm == null || Runtime.Windows.treeForm.tvConnections == null)
+ {
+ return ;
+ }
+ if (Runtime.Windows.treeForm.tvConnections.InvokeRequired)
+ {
+ Runtime.Windows.treeForm.tvConnections.Invoke(new LoadFromSqlDelegate(LoadFromSQL));
+ return ;
+ }
+
+ try
+ {
+ Runtime.IsConnectionsFileLoaded = false;
+
+ if (!string.IsNullOrEmpty(_SQLUsername))
+ {
+ sqlCon = new SqlConnection("Data Source=" + _SQLHost + ";Initial Catalog=" + _SQLDatabaseName + ";User Id=" + _SQLUsername + ";Password=" + _SQLPassword);
+ }
+ else
+ {
+ sqlCon = new SqlConnection("Data Source=" + _SQLHost + ";Initial Catalog=" + _SQLDatabaseName + ";Integrated Security=True");
+ }
+
+ sqlCon.Open();
+
+ sqlQuery = new SqlCommand("SELECT * FROM tblRoot", sqlCon);
+ sqlRd = sqlQuery.ExecuteReader(CommandBehavior.CloseConnection);
+
+ sqlRd.Read();
+
+ if (sqlRd.HasRows == false)
+ {
+ Runtime.SaveConnections();
+
+ sqlQuery = new SqlCommand("SELECT * FROM tblRoot", sqlCon);
+ sqlRd = sqlQuery.ExecuteReader(CommandBehavior.CloseConnection);
+
+ sqlRd.Read();
+ }
+
+ confVersion = Convert.ToDouble(sqlRd["confVersion"], CultureInfo.InvariantCulture);
+ const double maxSupportedSchemaVersion = 2.5;
+ if (confVersion > maxSupportedSchemaVersion)
+ {
+ cTaskDialog.ShowTaskDialogBox(frmMain, System.Windows.Forms.Application.ProductName, "Incompatible database schema", string.Format("The database schema on the server is not supported. Please upgrade to a newer version of {0}.", System.Windows.Forms.Application.ProductName), string.Format("Schema Version: {1}{0}Highest Supported Version: {2}", Constants.vbNewLine, confVersion.ToString(), maxSupportedSchemaVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, null);
+ throw (new Exception(string.Format("Incompatible database schema (schema version {0}).", confVersion)));
+ }
+
+ RootTreeNode.Name = System.Convert.ToString(sqlRd["Name"]);
+
+ Root.Info rootInfo = new Root.Info(Root.Info.RootType.Connection);
+ rootInfo.Name = RootTreeNode.Name;
+ rootInfo.TreeNode = RootTreeNode;
+
+ RootTreeNode.Tag = rootInfo;
+ RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root;
+ RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root;
+
+ if (Security.Crypt.Decrypt(System.Convert.ToString(sqlRd["Protected"]), pW) != "ThisIsNotProtected")
+ {
+ if (Authenticate(System.Convert.ToString(sqlRd["Protected"]), false, rootInfo) == false)
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = false;
+ My.Settings.Default.CustomConsPath = "";
+ RootTreeNode.Remove();
+ return;
+ }
+ }
+
+ sqlRd.Close();
+
+ Runtime.Windows.treeForm.tvConnections.BeginUpdate();
+
+ // SECTION 3. Populate the TreeView with the DOM nodes.
+ AddNodesFromSQL(RootTreeNode);
+
+ RootTreeNode.Expand();
+
+ //expand containers
+ foreach (Container.Info contI in this._ContainerList)
+ {
+ if (contI.IsExpanded == true)
+ {
+ contI.TreeNode.Expand();
+ }
+ }
+
+ Runtime.Windows.treeForm.tvConnections.EndUpdate();
+
+ //open connections from last mremote session
+ if (My.Settings.Default.OpenConsFromLastSession == true && My.Settings.Default.NoReconnect == false)
+ {
+ foreach (Connection.Info conI in ConnectionList)
+ {
+ if (conI.PleaseConnect == true)
+ {
+ Runtime.OpenConnection(conI);
+ }
+ }
+ }
+
+ Runtime.IsConnectionsFileLoaded = true;
+ Runtime.Windows.treeForm.InitialRefresh();
+ SetSelectedNode(_selectedTreeNode);
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ finally
+ {
+ if (sqlCon != null)
+ {
+ sqlCon.Close();
+ }
+ }
+ }
+
+ private delegate void SetSelectedNodeDelegate(TreeNode treeNode);
+ private static void SetSelectedNode(TreeNode treeNode)
+ {
+ if (Tree.Node.TreeView != null && Tree.Node.TreeView.InvokeRequired)
+ {
+ Runtime.Windows.treeForm.Invoke(new SetSelectedNodeDelegate(SetSelectedNode), new object[] { treeNode });
+ return ;
+ }
+ Runtime.Windows.treeForm.tvConnections.SelectedNode = treeNode;
+ }
+
+ private void AddNodesFromSQL(TreeNode baseNode)
+ {
+ try
+ {
+ sqlCon.Open();
+ sqlQuery = new SqlCommand("SELECT * FROM tblCons ORDER BY PositionID ASC", sqlCon);
+ sqlRd = sqlQuery.ExecuteReader(CommandBehavior.CloseConnection);
+
+ if (sqlRd.HasRows == false)
+ {
+ return;
+ }
+
+ TreeNode tNode = default(TreeNode);
+
+ while (sqlRd.Read())
+ {
+ tNode = new TreeNode(System.Convert.ToString(sqlRd["Name"]));
+ //baseNode.Nodes.Add(tNode)
+
+ if (Tree.Node.GetNodeTypeFromString(System.Convert.ToString(sqlRd["Type"])) == Tree.Node.Type.Connection)
+ {
+ Connection.Info conI = GetConnectionInfoFromSQL();
+ conI.TreeNode = tNode;
+ //conI.Parent = _previousContainer 'NEW
+
+ this._ConnectionList.Add(conI);
+
+ tNode.Tag = conI;
+
+ if (SQLUpdate == true)
+ {
+ Connection.Info prevCon = PreviousConnectionList.FindByConstantID(conI.ConstantID);
+
+ if (prevCon != null)
+ {
+ foreach (Connection.Protocol.Base prot in prevCon.OpenConnections)
+ {
+ prot.InterfaceControl.Info = conI;
+ conI.OpenConnections.Add(prot);
+ }
+
+ if (conI.OpenConnections.Count > 0)
+ {
+ tNode.ImageIndex = Images.Enums.TreeImage.ConnectionOpen;
+ tNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionOpen;
+ }
+ else
+ {
+ tNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ tNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ }
+ }
+ else
+ {
+ tNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ tNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ }
+
+ if (conI.ConstantID == _PreviousSelected)
+ {
+ _selectedTreeNode = tNode;
+ }
+ }
+ else
+ {
+ tNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ tNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ }
+ }
+ else if (Tree.Node.GetNodeTypeFromString(System.Convert.ToString(sqlRd["Type"])) == Tree.Node.Type.Container)
+ {
+ Container.Info contI = new Container.Info();
+ //If tNode.Parent IsNot Nothing Then
+ // If Tree.Node.GetNodeType(tNode.Parent) = Tree.Node.Type.Container Then
+ // contI.Parent = tNode.Parent.Tag
+ // End If
+ //End If
+ //_previousContainer = contI 'NEW
+ contI.TreeNode = tNode;
+
+ contI.Name = System.Convert.ToString(sqlRd["Name"]);
+
+ Connection.Info conI = default(Connection.Info);
+
+ conI = GetConnectionInfoFromSQL();
+
+ conI.Parent = contI;
+ conI.IsContainer = true;
+ contI.ConnectionInfo = conI;
+
+ if (SQLUpdate == true)
+ {
+ Container.Info prevCont = PreviousContainerList.FindByConstantID(conI.ConstantID);
+ if (prevCont != null)
+ {
+ contI.IsExpanded = prevCont.IsExpanded;
+ }
+
+ if (conI.ConstantID == _PreviousSelected)
+ {
+ _selectedTreeNode = tNode;
+ }
+ }
+ else
+ {
+ if (sqlRd["Expanded"] == true)
+ {
+ contI.IsExpanded = true;
+ }
+ else
+ {
+ contI.IsExpanded = false;
+ }
+ }
+
+ this._ContainerList.Add(contI);
+ this._ConnectionList.Add(conI);
+
+ tNode.Tag = contI;
+ tNode.ImageIndex = Images.Enums.TreeImage.Container;
+ tNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+ }
+
+ string parentId = System.Convert.ToString(sqlRd["ParentID"].ToString().Trim());
+ if (string.IsNullOrEmpty(parentId) || parentId == "0")
+ {
+ baseNode.Nodes.Add(tNode);
+ }
+ else
+ {
+ TreeNode pNode = Tree.Node.GetNodeFromConstantID(System.Convert.ToString(sqlRd["ParentID"]));
+
+ if (pNode != null)
+ {
+ pNode.Nodes.Add(tNode);
+
+ if (Tree.Node.GetNodeType(tNode) == Tree.Node.Type.Connection)
+ {
+ (tNode.Tag as Connection.Info).Parent = pNode.Tag;
+ }
+ else if (Tree.Node.GetNodeType(tNode) == Tree.Node.Type.Container)
+ {
+ (tNode.Tag as Container.Info).Parent = pNode.Tag;
+ }
+ }
+ else
+ {
+ baseNode.Nodes.Add(tNode);
+ }
+ }
+
+ //AddNodesFromSQL(tNode)
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strAddNodesFromSqlFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private Connection.Info GetConnectionInfoFromSQL()
+ {
+ try
+ {
+ Connection.Info conI = new Connection.Info();
+
+ conI.PositionID = System.Convert.ToInt32(sqlRd["PositionID"]);
+ conI.ConstantID = System.Convert.ToString(sqlRd["ConstantID"]);
+ conI.Name = System.Convert.ToString(sqlRd["Name"]);
+ conI.Description = System.Convert.ToString(sqlRd["Description"]);
+ conI.Hostname = System.Convert.ToString(sqlRd["Hostname"]);
+ conI.Username = System.Convert.ToString(sqlRd["Username"]);
+ conI.Password = Security.Crypt.Decrypt(System.Convert.ToString(sqlRd["Password"]), pW);
+ conI.Domain = System.Convert.ToString(sqlRd["DomainName"]);
+ conI.DisplayWallpaper = System.Convert.ToBoolean(sqlRd["DisplayWallpaper"]);
+ conI.DisplayThemes = System.Convert.ToBoolean(sqlRd["DisplayThemes"]);
+ conI.CacheBitmaps = System.Convert.ToBoolean(sqlRd["CacheBitmaps"]);
+ conI.UseConsoleSession = System.Convert.ToBoolean(sqlRd["ConnectToConsole"]);
+
+ conI.RedirectDiskDrives = System.Convert.ToBoolean(sqlRd["RedirectDiskDrives"]);
+ conI.RedirectPrinters = System.Convert.ToBoolean(sqlRd["RedirectPrinters"]);
+ conI.RedirectPorts = System.Convert.ToBoolean(sqlRd["RedirectPorts"]);
+ conI.RedirectSmartCards = System.Convert.ToBoolean(sqlRd["RedirectSmartCards"]);
+ conI.RedirectKeys = System.Convert.ToBoolean(sqlRd["RedirectKeys"]);
+ conI.RedirectSound = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPSounds), System.Convert.ToString(sqlRd["RedirectSound"]));
+
+ conI.Protocol = Tools.Misc.StringToEnum(typeof(Connection.Protocol.Protocols), System.Convert.ToString(sqlRd["Protocol"]));
+ conI.Port = System.Convert.ToInt32(sqlRd["Port"]);
+ conI.PuttySession = System.Convert.ToString(sqlRd["PuttySession"]);
+
+ conI.Colors = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPColors), System.Convert.ToString(sqlRd["Colors"]));
+ conI.Resolution = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPResolutions), System.Convert.ToString(sqlRd["Resolution"]));
+
+ conI.Inherit = new Connection.Info.Inheritance(conI);
+ conI.Inherit.CacheBitmaps = System.Convert.ToBoolean(sqlRd["InheritCacheBitmaps"]);
+ conI.Inherit.Colors = System.Convert.ToBoolean(sqlRd["InheritColors"]);
+ conI.Inherit.Description = System.Convert.ToBoolean(sqlRd["InheritDescription"]);
+ conI.Inherit.DisplayThemes = System.Convert.ToBoolean(sqlRd["InheritDisplayThemes"]);
+ conI.Inherit.DisplayWallpaper = System.Convert.ToBoolean(sqlRd["InheritDisplayWallpaper"]);
+ conI.Inherit.Domain = System.Convert.ToBoolean(sqlRd["InheritDomain"]);
+ conI.Inherit.Icon = System.Convert.ToBoolean(sqlRd["InheritIcon"]);
+ conI.Inherit.Panel = System.Convert.ToBoolean(sqlRd["InheritPanel"]);
+ conI.Inherit.Password = System.Convert.ToBoolean(sqlRd["InheritPassword"]);
+ conI.Inherit.Port = System.Convert.ToBoolean(sqlRd["InheritPort"]);
+ conI.Inherit.Protocol = System.Convert.ToBoolean(sqlRd["InheritProtocol"]);
+ conI.Inherit.PuttySession = System.Convert.ToBoolean(sqlRd["InheritPuttySession"]);
+ conI.Inherit.RedirectDiskDrives = System.Convert.ToBoolean(sqlRd["InheritRedirectDiskDrives"]);
+ conI.Inherit.RedirectKeys = System.Convert.ToBoolean(sqlRd["InheritRedirectKeys"]);
+ conI.Inherit.RedirectPorts = System.Convert.ToBoolean(sqlRd["InheritRedirectPorts"]);
+ conI.Inherit.RedirectPrinters = System.Convert.ToBoolean(sqlRd["InheritRedirectPrinters"]);
+ conI.Inherit.RedirectSmartCards = System.Convert.ToBoolean(sqlRd["InheritRedirectSmartCards"]);
+ conI.Inherit.RedirectSound = System.Convert.ToBoolean(sqlRd["InheritRedirectSound"]);
+ conI.Inherit.Resolution = System.Convert.ToBoolean(sqlRd["InheritResolution"]);
+ conI.Inherit.UseConsoleSession = System.Convert.ToBoolean(sqlRd["InheritUseConsoleSession"]);
+ conI.Inherit.Username = System.Convert.ToBoolean(sqlRd["InheritUsername"]);
+
+ conI.Icon = System.Convert.ToString(sqlRd["Icon"]);
+ conI.Panel = System.Convert.ToString(sqlRd["Panel"]);
+
+ if (this.confVersion > 1.5) //1.6
+ {
+ conI.ICAEncryption = Tools.Misc.StringToEnum(typeof(Connection.Protocol.ICA.EncryptionStrength), System.Convert.ToString(sqlRd["ICAEncryptionStrength"]));
+ conI.Inherit.ICAEncryption = System.Convert.ToBoolean(sqlRd["InheritICAEncryptionStrength"]);
+
+ conI.PreExtApp = System.Convert.ToString(sqlRd["PreExtApp"]);
+ conI.PostExtApp = System.Convert.ToString(sqlRd["PostExtApp"]);
+ conI.Inherit.PreExtApp = System.Convert.ToBoolean(sqlRd["InheritPreExtApp"]);
+ conI.Inherit.PostExtApp = System.Convert.ToBoolean(sqlRd["InheritPostExtApp"]);
+ }
+
+ if (this.confVersion > 1.6) //1.7
+ {
+ conI.VNCCompression = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.Compression), System.Convert.ToString(sqlRd["VNCCompression"]));
+ conI.VNCEncoding = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.Encoding), System.Convert.ToString(sqlRd["VNCEncoding"]));
+ conI.VNCAuthMode = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.AuthMode), System.Convert.ToString(sqlRd["VNCAuthMode"]));
+ conI.VNCProxyType = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.ProxyType), System.Convert.ToString(sqlRd["VNCProxyType"]));
+ conI.VNCProxyIP = System.Convert.ToString(sqlRd["VNCProxyIP"]);
+ conI.VNCProxyPort = System.Convert.ToInt32(sqlRd["VNCProxyPort"]);
+ conI.VNCProxyUsername = System.Convert.ToString(sqlRd["VNCProxyUsername"]);
+ conI.VNCProxyPassword = Security.Crypt.Decrypt(System.Convert.ToString(sqlRd["VNCProxyPassword"]), pW);
+ conI.VNCColors = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.Colors), System.Convert.ToString(sqlRd["VNCColors"]));
+ conI.VNCSmartSizeMode = Tools.Misc.StringToEnum(typeof(Connection.Protocol.VNC.SmartSizeMode), System.Convert.ToString(sqlRd["VNCSmartSizeMode"]));
+ conI.VNCViewOnly = System.Convert.ToBoolean(sqlRd["VNCViewOnly"]);
+
+ conI.Inherit.VNCCompression = System.Convert.ToBoolean(sqlRd["InheritVNCCompression"]);
+ conI.Inherit.VNCEncoding = System.Convert.ToBoolean(sqlRd["InheritVNCEncoding"]);
+ conI.Inherit.VNCAuthMode = System.Convert.ToBoolean(sqlRd["InheritVNCAuthMode"]);
+ conI.Inherit.VNCProxyType = System.Convert.ToBoolean(sqlRd["InheritVNCProxyType"]);
+ conI.Inherit.VNCProxyIP = System.Convert.ToBoolean(sqlRd["InheritVNCProxyIP"]);
+ conI.Inherit.VNCProxyPort = System.Convert.ToBoolean(sqlRd["InheritVNCProxyPort"]);
+ conI.Inherit.VNCProxyUsername = System.Convert.ToBoolean(sqlRd["InheritVNCProxyUsername"]);
+ conI.Inherit.VNCProxyPassword = System.Convert.ToBoolean(sqlRd["InheritVNCProxyPassword"]);
+ conI.Inherit.VNCColors = System.Convert.ToBoolean(sqlRd["InheritVNCColors"]);
+ conI.Inherit.VNCSmartSizeMode = System.Convert.ToBoolean(sqlRd["InheritVNCSmartSizeMode"]);
+ conI.Inherit.VNCViewOnly = System.Convert.ToBoolean(sqlRd["InheritVNCViewOnly"]);
+ }
+
+ if (this.confVersion > 1.7) //1.8
+ {
+ conI.RDPAuthenticationLevel = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.AuthenticationLevel), System.Convert.ToString(sqlRd["RDPAuthenticationLevel"]));
+
+ conI.Inherit.RDPAuthenticationLevel = System.Convert.ToBoolean(sqlRd["InheritRDPAuthenticationLevel"]);
+ }
+
+ if (this.confVersion > 1.8) //1.9
+ {
+ conI.RenderingEngine = Tools.Misc.StringToEnum(typeof(Connection.Protocol.HTTPBase.RenderingEngine), System.Convert.ToString(sqlRd["RenderingEngine"]));
+ conI.MacAddress = System.Convert.ToString(sqlRd["MacAddress"]);
+
+ conI.Inherit.RenderingEngine = System.Convert.ToBoolean(sqlRd["InheritRenderingEngine"]);
+ conI.Inherit.MacAddress = System.Convert.ToBoolean(sqlRd["InheritMacAddress"]);
+ }
+
+ if (this.confVersion > 1.9) //2.0
+ {
+ conI.UserField = System.Convert.ToString(sqlRd["UserField"]);
+
+ conI.Inherit.UserField = System.Convert.ToBoolean(sqlRd["InheritUserField"]);
+ }
+
+ if (this.confVersion > 2.0) //2.1
+ {
+ conI.ExtApp = System.Convert.ToString(sqlRd["ExtApp"]);
+
+ conI.Inherit.ExtApp = System.Convert.ToBoolean(sqlRd["InheritExtApp"]);
+ }
+
+ if (this.confVersion >= 2.2)
+ {
+ conI.RDGatewayUsageMethod = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.RDP.RDGatewayUsageMethod), System.Convert.ToString(sqlRd["RDGatewayUsageMethod"]));
+ conI.RDGatewayHostname = System.Convert.ToString(sqlRd["RDGatewayHostname"]);
+ conI.RDGatewayUseConnectionCredentials = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.RDP.RDGatewayUseConnectionCredentials), System.Convert.ToString(sqlRd["RDGatewayUseConnectionCredentials"]));
+ conI.RDGatewayUsername = System.Convert.ToString(sqlRd["RDGatewayUsername"]);
+ conI.RDGatewayPassword = Security.Crypt.Decrypt(System.Convert.ToString(sqlRd["RDGatewayPassword"]), pW);
+ conI.RDGatewayDomain = System.Convert.ToString(sqlRd["RDGatewayDomain"]);
+ conI.Inherit.RDGatewayUsageMethod = System.Convert.ToBoolean(sqlRd["InheritRDGatewayUsageMethod"]);
+ conI.Inherit.RDGatewayHostname = System.Convert.ToBoolean(sqlRd["InheritRDGatewayHostname"]);
+ conI.Inherit.RDGatewayUsername = System.Convert.ToBoolean(sqlRd["InheritRDGatewayUsername"]);
+ conI.Inherit.RDGatewayPassword = System.Convert.ToBoolean(sqlRd["InheritRDGatewayPassword"]);
+ conI.Inherit.RDGatewayDomain = System.Convert.ToBoolean(sqlRd["InheritRDGatewayDomain"]);
+ }
+
+ if (this.confVersion >= 2.3)
+ {
+ conI.EnableFontSmoothing = System.Convert.ToBoolean(sqlRd["EnableFontSmoothing"]);
+ conI.EnableDesktopComposition = System.Convert.ToBoolean(sqlRd["EnableDesktopComposition"]);
+ conI.Inherit.EnableFontSmoothing = System.Convert.ToBoolean(sqlRd["InheritEnableFontSmoothing"]);
+ conI.Inherit.EnableDesktopComposition = System.Convert.ToBoolean(sqlRd["InheritEnableDesktopComposition"]);
+ }
+
+ if (confVersion >= 2.4)
+ {
+ conI.UseCredSsp = System.Convert.ToBoolean(sqlRd["UseCredSsp"]);
+ conI.Inherit.UseCredSsp = System.Convert.ToBoolean(sqlRd["InheritUseCredSsp"]);
+ }
+
+ if (confVersion >= 2.5)
+ {
+ conI.LoadBalanceInfo = System.Convert.ToString(sqlRd["LoadBalanceInfo"]);
+ conI.AutomaticResize = System.Convert.ToBoolean(sqlRd["AutomaticResize"]);
+ conI.Inherit.LoadBalanceInfo = System.Convert.ToBoolean(sqlRd["InheritLoadBalanceInfo"]);
+ conI.Inherit.AutomaticResize = System.Convert.ToBoolean(sqlRd["InheritAutomaticResize"]);
+ }
+
+ if (SQLUpdate == true)
+ {
+ conI.PleaseConnect = System.Convert.ToBoolean(sqlRd["Connected"]);
+ }
+
+ return conI;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strGetConnectionInfoFromSqlFailed + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+ #endregion
+
+ #region XML
+ private string DecryptCompleteFile()
+ {
+ StreamReader sRd = new StreamReader(this._ConnectionFileName);
+
+ string strCons = "";
+ strCons = sRd.ReadToEnd();
+ sRd.Close();
+
+ if (!string.IsNullOrEmpty(strCons))
+ {
+ string strDecr = "";
+ bool notDecr = true;
+
+ if (strCons.Contains(""))
+ {
+ strDecr = strCons;
+ return strDecr;
+ }
+
+ try
+ {
+ strDecr = Security.Crypt.Decrypt(strCons, pW);
+
+ if (strDecr != strCons)
+ {
+ notDecr = false;
+ }
+ else
+ {
+ notDecr = true;
+ }
+ }
+ catch (Exception)
+ {
+ notDecr = true;
+ }
+
+ if (notDecr)
+ {
+ if (Authenticate(strCons, true) == true)
+ {
+ strDecr = Security.Crypt.Decrypt(strCons, pW);
+ notDecr = false;
+ }
+ else
+ {
+ notDecr = true;
+ }
+
+ if (notDecr == false)
+ {
+ return strDecr;
+ }
+ }
+ else
+ {
+ return strDecr;
+ }
+ }
+
+ return "";
+ }
+
+ private void LoadFromXML(string cons, bool import)
+ {
+ try
+ {
+ if (!import)
+ {
+ IsConnectionsFileLoaded = false;
+ }
+
+ // SECTION 1. Create a DOM Document and load the XML data into it.
+ this.xDom = new XmlDocument();
+ if (cons != "")
+ {
+ xDom.LoadXml(cons);
+ }
+ else
+ {
+ xDom.Load(this._ConnectionFileName);
+ }
+
+ if (xDom.DocumentElement.HasAttribute("ConfVersion"))
+ {
+ this.confVersion = Convert.ToDouble(xDom.DocumentElement.Attributes["ConfVersion"].Value.Replace(",", "."), CultureInfo.InvariantCulture);
+ }
+ else
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strOldConffile);
+ }
+
+ const double maxSupportedConfVersion = 2.5;
+ if (confVersion > maxSupportedConfVersion)
+ {
+ cTaskDialog.ShowTaskDialogBox(frmMain, System.Windows.Forms.Application.ProductName, "Incompatible connection file format", string.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", System.Windows.Forms.Application.ProductName), string.Format("{1}{0}File Format Version: {2}{0}Highest Supported Version: {3}", Constants.vbNewLine, ConnectionFileName, confVersion.ToString(), maxSupportedConfVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, null);
+ throw (new Exception(string.Format("Incompatible connection file format (file format version {0}).", confVersion)));
+ }
+
+ // SECTION 2. Initialize the treeview control.
+ Root.Info rootInfo = default(Root.Info);
+ if (import)
+ {
+ rootInfo = null;
+ }
+ else
+ {
+ string rootNodeName = "";
+ if (xDom.DocumentElement.HasAttribute("Name"))
+ {
+ rootNodeName = System.Convert.ToString(xDom.DocumentElement.Attributes["Name"].Value.Trim());
+ }
+ if (!string.IsNullOrEmpty(rootNodeName))
+ {
+ RootTreeNode.Name = rootNodeName;
+ }
+ else
+ {
+ RootTreeNode.Name = xDom.DocumentElement.Name;
+ }
+ RootTreeNode.Text = RootTreeNode.Name;
+
+ rootInfo = new Root.Info(Root.Info.RootType.Connection);
+ rootInfo.Name = RootTreeNode.Name;
+ rootInfo.TreeNode = RootTreeNode;
+
+ RootTreeNode.Tag = rootInfo;
+ }
+
+ if (this.confVersion > 1.3) //1.4
+ {
+ if (Security.Crypt.Decrypt(System.Convert.ToString(xDom.DocumentElement.Attributes["Protected"].Value), pW) != "ThisIsNotProtected")
+ {
+ if (Authenticate(System.Convert.ToString(xDom.DocumentElement.Attributes["Protected"].Value), false, rootInfo) == false)
+ {
+ My.Settings.Default.LoadConsFromCustomLocation = false;
+ My.Settings.Default.CustomConsPath = "";
+ RootTreeNode.Remove();
+ return;
+ }
+ }
+ }
+
+ bool isExportFile = false;
+ if (confVersion >= 1.0)
+ {
+ if (xDom.DocumentElement.Attributes["Export"].Value == true)
+ {
+ isExportFile = true;
+ }
+ }
+
+ if (import && !isExportFile)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strCannotImportNormalSessionFile);
+ return ;
+ }
+
+ if (!isExportFile)
+ {
+ RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root;
+ RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root;
+ }
+
+ Windows.treeForm.tvConnections.BeginUpdate();
+
+ // SECTION 3. Populate the TreeView with the DOM nodes.
+ AddNodeFromXml(xDom.DocumentElement, RootTreeNode);
+
+ RootTreeNode.Expand();
+
+ //expand containers
+ foreach (Container.Info contI in this._ContainerList)
+ {
+ if (contI.IsExpanded == true)
+ {
+ contI.TreeNode.Expand();
+ }
+ }
+
+ Windows.treeForm.tvConnections.EndUpdate();
+
+ //open connections from last mremote session
+ if (My.Settings.Default.OpenConsFromLastSession == true && My.Settings.Default.NoReconnect == false)
+ {
+ foreach (Connection.Info conI in ConnectionList)
+ {
+ if (conI.PleaseConnect == true)
+ {
+ OpenConnection(conI);
+ }
+ }
+ }
+
+ RootTreeNode.EnsureVisible();
+
+ if (!import)
+ {
+ IsConnectionsFileLoaded = true;
+ }
+ Windows.treeForm.InitialRefresh();
+ SetSelectedNode(RootTreeNode);
+ }
+ catch (Exception ex)
+ {
+ App.Runtime.IsConnectionsFileLoaded = false;
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromXmlFailed + Constants.vbNewLine + ex.Message + Constants.vbNewLine + ex.StackTrace, true);
+ throw;
+ }
+ }
+
+ private Container.Info _previousContainer;
+ private void AddNodeFromXml(XmlNode parentXmlNode, TreeNode parentTreeNode)
+ {
+ try
+ {
+ // Loop through the XML nodes until the leaf is reached.
+ // Add the nodes to the TreeView during the looping process.
+ if (parentXmlNode.HasChildNodes)
+ {
+ foreach (XmlNode xmlNode in parentXmlNode.ChildNodes)
+ {
+ TreeNode treeNode = new TreeNode(xmlNode.Attributes["Name"].Value);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ if (Tree.Node.GetNodeTypeFromString(xmlNode.Attributes["Type"].Value) == Tree.Node.Type.Connection) //connection info
+ {
+ Connection.Info connectionInfo = GetConnectionInfoFromXml(xmlNode);
+ connectionInfo.TreeNode = treeNode;
+ connectionInfo.Parent = _previousContainer; //NEW
+
+ ConnectionList.Add(connectionInfo);
+
+ treeNode.Tag = connectionInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ }
+ else if (Tree.Node.GetNodeTypeFromString(xmlNode.Attributes["Type"].Value) == Tree.Node.Type.Container) //container info
+ {
+ Container.Info containerInfo = new Container.Info();
+ if (treeNode.Parent != null)
+ {
+ if (Tree.Node.GetNodeType(treeNode.Parent) == Tree.Node.Type.Container)
+ {
+ containerInfo.Parent = treeNode.Parent.Tag;
+ }
+ }
+ _previousContainer = containerInfo; //NEW
+ containerInfo.TreeNode = treeNode;
+
+ containerInfo.Name = xmlNode.Attributes["Name"].Value;
+
+ if (confVersion >= 0.8)
+ {
+ if (xmlNode.Attributes["Expanded"].Value == "True")
+ {
+ containerInfo.IsExpanded = true;
+ }
+ else
+ {
+ containerInfo.IsExpanded = false;
+ }
+ }
+
+ Connection.Info connectionInfo = default(Connection.Info);
+ if (confVersion >= 0.9)
+ {
+ connectionInfo = GetConnectionInfoFromXml(xmlNode);
+ }
+ else
+ {
+ connectionInfo = new Connection.Info();
+ }
+
+ connectionInfo.Parent = containerInfo;
+ connectionInfo.IsContainer = true;
+ containerInfo.ConnectionInfo = connectionInfo;
+
+ ContainerList.Add(containerInfo);
+
+ treeNode.Tag = containerInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+ }
+
+ AddNodeFromXml(xmlNode, treeNode);
+ }
+ }
+ else
+ {
+ string nodeName = "";
+ XmlAttribute nameAttribute = parentXmlNode.Attributes["Name"];
+ if (!(nameAttribute == null))
+ {
+ nodeName = nameAttribute.Value.Trim();
+ }
+ if (!string.IsNullOrEmpty(nodeName))
+ {
+ parentTreeNode.Text = nodeName;
+ }
+ else
+ {
+ parentTreeNode.Text = parentXmlNode.Name;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strAddNodeFromXmlFailed + Constants.vbNewLine + ex.Message + ex.StackTrace, true);
+ throw;
+ }
+ }
+
+ private Connection.Info GetConnectionInfoFromXml(XmlNode xxNode)
+ {
+ Connection.Info conI = new Connection.Info();
+
+ try
+ {
+ XmlNode with_1 = xxNode;
+ if (this.confVersion > 0.1) //0.2
+ {
+ conI.Name = with_1.Attributes["Name"].Value;
+ conI.Description = with_1.Attributes["Descr"].Value;
+ conI.Hostname = with_1.Attributes["Hostname"].Value;
+ conI.Username = with_1.Attributes["Username"].Value;
+ conI.Password = Security.Crypt.Decrypt(with_1.Attributes["Password"].Value, pW);
+ conI.Domain = with_1.Attributes["Domain"].Value;
+ conI.DisplayWallpaper = bool.Parse(with_1.Attributes["DisplayWallpaper"].Value);
+ conI.DisplayThemes = bool.Parse(with_1.Attributes["DisplayThemes"].Value);
+ conI.CacheBitmaps = bool.Parse(with_1.Attributes["CacheBitmaps"].Value);
+
+ if (this.confVersion < 1.1) //1.0 - 0.1
+ {
+ if (with_1.Attributes["Fullscreen"].Value == true)
+ {
+ conI.Resolution = Connection.Protocol.RDP.RDPResolutions.Fullscreen;
+ }
+ else
+ {
+ conI.Resolution = Connection.Protocol.RDP.RDPResolutions.FitToWindow;
+ }
+ }
+ }
+
+ if (this.confVersion > 0.2) //0.3
+ {
+ if (this.confVersion < 0.7)
+ {
+ if (System.Convert.ToBoolean(with_1.Attributes["UseVNC"].Value) == true)
+ {
+ conI.Protocol = Connection.Protocol.Protocols.VNC;
+ conI.Port = (int) (with_1.Attributes["VNCPort"].Value);
+ }
+ else
+ {
+ conI.Protocol = Connection.Protocol.Protocols.RDP;
+ }
+ }
+ }
+ else
+ {
+ conI.Port = Connection.Protocol.RDP.Defaults.Port;
+ conI.Protocol = Connection.Protocol.Protocols.RDP;
+ }
+
+ if (this.confVersion > 0.3) //0.4
+ {
+ if (this.confVersion < 0.7)
+ {
+ if (System.Convert.ToBoolean(with_1.Attributes["UseVNC"].Value) == true)
+ {
+ conI.Port = (int) (with_1.Attributes["VNCPort"].Value);
+ }
+ else
+ {
+ conI.Port = (int) (with_1.Attributes["RDPPort"].Value);
+ }
+ }
+
+ conI.UseConsoleSession = bool.Parse(with_1.Attributes["ConnectToConsole"].Value);
+ }
+ else
+ {
+ if (this.confVersion < 0.7)
+ {
+ if (System.Convert.ToBoolean(with_1.Attributes["UseVNC"].Value) == true)
+ {
+ conI.Port = Connection.Protocol.VNC.Defaults.Port;
+ }
+ else
+ {
+ conI.Port = Connection.Protocol.RDP.Defaults.Port;
+ }
+ }
+ conI.UseConsoleSession = false;
+ }
+
+ if (this.confVersion > 0.4) //0.5 and 0.6
+ {
+ conI.RedirectDiskDrives = bool.Parse(with_1.Attributes["RedirectDiskDrives"].Value);
+ conI.RedirectPrinters = bool.Parse(with_1.Attributes["RedirectPrinters"].Value);
+ conI.RedirectPorts = bool.Parse(with_1.Attributes["RedirectPorts"].Value);
+ conI.RedirectSmartCards = bool.Parse(with_1.Attributes["RedirectSmartCards"].Value);
+ }
+ else
+ {
+ conI.RedirectDiskDrives = false;
+ conI.RedirectPrinters = false;
+ conI.RedirectPorts = false;
+ conI.RedirectSmartCards = false;
+ }
+
+ if (this.confVersion > 0.6) //0.7
+ {
+ conI.Protocol = Tools.Misc.StringToEnum(typeof(Connection.Protocol.Protocols), with_1.Attributes["Protocol"].Value);
+ conI.Port = (int) (with_1.Attributes["Port"].Value);
+ }
+
+ if (this.confVersion > 0.9) //1.0
+ {
+ conI.RedirectKeys = bool.Parse(with_1.Attributes["RedirectKeys"].Value);
+ }
+
+ if (this.confVersion > 1.1) //1.2
+ {
+ conI.PuttySession = with_1.Attributes["PuttySession"].Value;
+ }
+
+ if (this.confVersion > 1.2) //1.3
+ {
+ conI.Colors = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPColors), with_1.Attributes["Colors"].Value);
+ conI.Resolution = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPResolutions), System.Convert.ToString(with_1.Attributes["Resolution"].Value));
+ conI.RedirectSound = Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPSounds), System.Convert.ToString(with_1.Attributes["RedirectSound"].Value));
+ }
+ else
+ {
+ switch (with_1.Attributes["Colors"].Value)
+ {
+ case 0:
+ conI.Colors = Connection.Protocol.RDP.RDPColors.Colors256;
+ break;
+ case 1:
+ conI.Colors = Connection.Protocol.RDP.RDPColors.Colors16Bit;
+ break;
+ case 2:
+ conI.Colors = Connection.Protocol.RDP.RDPColors.Colors24Bit;
+ break;
+ case 3:
+ conI.Colors = Connection.Protocol.RDP.RDPColors.Colors32Bit;
+ break;
+ case 4:
+ conI.Colors = Connection.Protocol.RDP.RDPColors.Colors15Bit;
+ break;
+ }
+
+ conI.RedirectSound = with_1.Attributes["RedirectSound"].Value;
+ }
+
+ if (this.confVersion > 1.2) //1.3
+ {
+ conI.Inherit = new Connection.Info.Inheritance(conI);
+ conI.Inherit.CacheBitmaps = bool.Parse(with_1.Attributes["InheritCacheBitmaps"].Value);
+ conI.Inherit.Colors = bool.Parse(with_1.Attributes["InheritColors"].Value);
+ conI.Inherit.Description = bool.Parse(with_1.Attributes["InheritDescription"].Value);
+ conI.Inherit.DisplayThemes = bool.Parse(with_1.Attributes["InheritDisplayThemes"].Value);
+ conI.Inherit.DisplayWallpaper = bool.Parse(with_1.Attributes["InheritDisplayWallpaper"].Value);
+ conI.Inherit.Domain = bool.Parse(with_1.Attributes["InheritDomain"].Value);
+ conI.Inherit.Icon = bool.Parse(with_1.Attributes["InheritIcon"].Value);
+ conI.Inherit.Panel = bool.Parse(with_1.Attributes["InheritPanel"].Value);
+ conI.Inherit.Password = bool.Parse(with_1.Attributes["InheritPassword"].Value);
+ conI.Inherit.Port = bool.Parse(with_1.Attributes["InheritPort"].Value);
+ conI.Inherit.Protocol = bool.Parse(with_1.Attributes["InheritProtocol"].Value);
+ conI.Inherit.PuttySession = bool.Parse(with_1.Attributes["InheritPuttySession"].Value);
+ conI.Inherit.RedirectDiskDrives = bool.Parse(with_1.Attributes["InheritRedirectDiskDrives"].Value);
+ conI.Inherit.RedirectKeys = bool.Parse(with_1.Attributes["InheritRedirectKeys"].Value);
+ conI.Inherit.RedirectPorts = bool.Parse(with_1.Attributes["InheritRedirectPorts"].Value);
+ conI.Inherit.RedirectPrinters = bool.Parse(with_1.Attributes["InheritRedirectPrinters"].Value);
+ conI.Inherit.RedirectSmartCards = bool.Parse(with_1.Attributes["InheritRedirectSmartCards"].Value);
+ conI.Inherit.RedirectSound = bool.Parse(with_1.Attributes["InheritRedirectSound"].Value);
+ conI.Inherit.Resolution = bool.Parse(with_1.Attributes["InheritResolution"].Value);
+ conI.Inherit.UseConsoleSession = bool.Parse(with_1.Attributes["InheritUseConsoleSession"].Value);
+ conI.Inherit.Username = bool.Parse(with_1.Attributes["InheritUsername"].Value);
+
+ conI.Icon = with_1.Attributes["Icon"].Value;
+ conI.Panel = with_1.Attributes["Panel"].Value;
+ }
+ else
+ {
+ conI.Inherit = new Connection.Info.Inheritance(conI, with_1.Attributes["Inherit"].Value);
+
+ conI.Icon = System.Convert.ToString(with_1.Attributes["Icon"].Value.Replace(".ico", ""));
+ conI.Panel = My.Language.strGeneral;
+ }
+
+ if (this.confVersion > 1.4) //1.5
+ {
+ conI.PleaseConnect = bool.Parse(with_1.Attributes["Connected"].Value);
+ }
+
+ if (this.confVersion > 1.5) //1.6
+ {
+ conI.ICAEncryption = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.ICA.EncryptionStrength), with_1.Attributes["ICAEncryptionStrength"].Value);
+ conI.Inherit.ICAEncryption = bool.Parse(with_1.Attributes["InheritICAEncryptionStrength"].Value);
+
+ conI.PreExtApp = with_1.Attributes["PreExtApp"].Value;
+ conI.PostExtApp = with_1.Attributes["PostExtApp"].Value;
+ conI.Inherit.PreExtApp = bool.Parse(with_1.Attributes["InheritPreExtApp"].Value);
+ conI.Inherit.PostExtApp = bool.Parse(with_1.Attributes["InheritPostExtApp"].Value);
+ }
+
+ if (this.confVersion > 1.6) //1.7
+ {
+ conI.VNCCompression = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.Compression), with_1.Attributes["VNCCompression"].Value);
+ conI.VNCEncoding = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.Encoding), System.Convert.ToString(with_1.Attributes["VNCEncoding"].Value));
+ conI.VNCAuthMode = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.AuthMode), with_1.Attributes["VNCAuthMode"].Value);
+ conI.VNCProxyType = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.ProxyType), with_1.Attributes["VNCProxyType"].Value);
+ conI.VNCProxyIP = with_1.Attributes["VNCProxyIP"].Value;
+ conI.VNCProxyPort = (int) (with_1.Attributes["VNCProxyPort"].Value);
+ conI.VNCProxyUsername = with_1.Attributes["VNCProxyUsername"].Value;
+ conI.VNCProxyPassword = Security.Crypt.Decrypt(with_1.Attributes["VNCProxyPassword"].Value, pW);
+ conI.VNCColors = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.Colors), with_1.Attributes["VNCColors"].Value);
+ conI.VNCSmartSizeMode = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.VNC.SmartSizeMode), with_1.Attributes["VNCSmartSizeMode"].Value);
+ conI.VNCViewOnly = bool.Parse(with_1.Attributes["VNCViewOnly"].Value);
+
+ conI.Inherit.VNCCompression = bool.Parse(with_1.Attributes["InheritVNCCompression"].Value);
+ conI.Inherit.VNCEncoding = bool.Parse(with_1.Attributes["InheritVNCEncoding"].Value);
+ conI.Inherit.VNCAuthMode = bool.Parse(with_1.Attributes["InheritVNCAuthMode"].Value);
+ conI.Inherit.VNCProxyType = bool.Parse(with_1.Attributes["InheritVNCProxyType"].Value);
+ conI.Inherit.VNCProxyIP = bool.Parse(with_1.Attributes["InheritVNCProxyIP"].Value);
+ conI.Inherit.VNCProxyPort = bool.Parse(with_1.Attributes["InheritVNCProxyPort"].Value);
+ conI.Inherit.VNCProxyUsername = bool.Parse(with_1.Attributes["InheritVNCProxyUsername"].Value);
+ conI.Inherit.VNCProxyPassword = bool.Parse(with_1.Attributes["InheritVNCProxyPassword"].Value);
+ conI.Inherit.VNCColors = bool.Parse(with_1.Attributes["InheritVNCColors"].Value);
+ conI.Inherit.VNCSmartSizeMode = bool.Parse(with_1.Attributes["InheritVNCSmartSizeMode"].Value);
+ conI.Inherit.VNCViewOnly = bool.Parse(with_1.Attributes["InheritVNCViewOnly"].Value);
+ }
+
+ if (this.confVersion > 1.7) //1.8
+ {
+ conI.RDPAuthenticationLevel = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.RDP.AuthenticationLevel), with_1.Attributes["RDPAuthenticationLevel"].Value);
+
+ conI.Inherit.RDPAuthenticationLevel = bool.Parse(with_1.Attributes["InheritRDPAuthenticationLevel"].Value);
+ }
+
+ if (this.confVersion > 1.8) //1.9
+ {
+ conI.RenderingEngine = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.HTTPBase.RenderingEngine), with_1.Attributes["RenderingEngine"].Value);
+ conI.MacAddress = with_1.Attributes["MacAddress"].Value;
+
+ conI.Inherit.RenderingEngine = bool.Parse(with_1.Attributes["InheritRenderingEngine"].Value);
+ conI.Inherit.MacAddress = bool.Parse(with_1.Attributes["InheritMacAddress"].Value);
+ }
+
+ if (this.confVersion > 1.9) //2.0
+ {
+ conI.UserField = with_1.Attributes["UserField"].Value;
+ conI.Inherit.UserField = bool.Parse(with_1.Attributes["InheritUserField"].Value);
+ }
+
+ if (this.confVersion > 2.0) //2.1
+ {
+ conI.ExtApp = with_1.Attributes["ExtApp"].Value;
+ conI.Inherit.ExtApp = bool.Parse(with_1.Attributes["InheritExtApp"].Value);
+ }
+
+ if (this.confVersion > 2.1) //2.2
+ {
+ // Get settings
+ conI.RDGatewayUsageMethod = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.RDP.RDGatewayUsageMethod), System.Convert.ToString(with_1.Attributes["RDGatewayUsageMethod"].Value));
+ conI.RDGatewayHostname = with_1.Attributes["RDGatewayHostname"].Value;
+ conI.RDGatewayUseConnectionCredentials = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.RDP.RDGatewayUseConnectionCredentials), System.Convert.ToString(with_1.Attributes["RDGatewayUseConnectionCredentials"].Value));
+ conI.RDGatewayUsername = with_1.Attributes["RDGatewayUsername"].Value;
+ conI.RDGatewayPassword = Security.Crypt.Decrypt(System.Convert.ToString(with_1.Attributes["RDGatewayPassword"].Value), pW);
+ conI.RDGatewayDomain = with_1.Attributes["RDGatewayDomain"].Value;
+
+ // Get inheritance settings
+ conI.Inherit.RDGatewayUsageMethod = bool.Parse(with_1.Attributes["InheritRDGatewayUsageMethod"].Value);
+ conI.Inherit.RDGatewayHostname = bool.Parse(with_1.Attributes["InheritRDGatewayHostname"].Value);
+ conI.Inherit.RDGatewayUseConnectionCredentials = bool.Parse(with_1.Attributes["InheritRDGatewayUseConnectionCredentials"].Value);
+ conI.Inherit.RDGatewayUsername = bool.Parse(with_1.Attributes["InheritRDGatewayUsername"].Value);
+ conI.Inherit.RDGatewayPassword = bool.Parse(with_1.Attributes["InheritRDGatewayPassword"].Value);
+ conI.Inherit.RDGatewayDomain = bool.Parse(with_1.Attributes["InheritRDGatewayDomain"].Value);
+ }
+
+ if (this.confVersion > 2.2) //2.3
+ {
+ // Get settings
+ conI.EnableFontSmoothing = bool.Parse(with_1.Attributes["EnableFontSmoothing"].Value);
+ conI.EnableDesktopComposition = bool.Parse(with_1.Attributes["EnableDesktopComposition"].Value);
+
+ // Get inheritance settings
+ conI.Inherit.EnableFontSmoothing = bool.Parse(with_1.Attributes["InheritEnableFontSmoothing"].Value);
+ conI.Inherit.EnableDesktopComposition = bool.Parse(with_1.Attributes["InheritEnableDesktopComposition"].Value);
+ }
+
+ if (confVersion >= 2.4)
+ {
+ conI.UseCredSsp = bool.Parse(with_1.Attributes["UseCredSsp"].Value);
+ conI.Inherit.UseCredSsp = bool.Parse(with_1.Attributes["InheritUseCredSsp"].Value);
+ }
+
+ if (confVersion >= 2.5)
+ {
+ conI.LoadBalanceInfo = with_1.Attributes["LoadBalanceInfo"].Value;
+ conI.AutomaticResize = bool.Parse(with_1.Attributes["AutomaticResize"].Value);
+ conI.Inherit.LoadBalanceInfo = bool.Parse(with_1.Attributes["InheritLoadBalanceInfo"].Value);
+ conI.Inherit.AutomaticResize = bool.Parse(with_1.Attributes["InheritAutomaticResize"].Value);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strGetConnectionInfoFromXmlFailed, conI.Name, this.ConnectionFileName, ex.Message), false);
+ }
+ return conI;
+ }
+
+ private bool Authenticate(string Value, bool CompareToOriginalValue, Root.Info rootInfo = null)
+ {
+ string passwordName = "";
+ if (UseSQL)
+ {
+ passwordName = Language.strSQLServer.TrimEnd(':');
+ }
+ else
+ {
+ passwordName = Path.GetFileName(ConnectionFileName);
+ }
+
+ if (CompareToOriginalValue)
+ {
+ while (!(Security.Crypt.Decrypt(Value, pW) != Value))
+ {
+ pW = Tools.Misc.PasswordDialog(passwordName, false);
+
+ if (string.IsNullOrEmpty(pW))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ while (!(Security.Crypt.Decrypt(Value, pW) == "ThisIsProtected"))
+ {
+ pW = Tools.Misc.PasswordDialog(passwordName, false);
+
+ if (string.IsNullOrEmpty(pW))
+ {
+ return false;
+ }
+ }
+
+ if (rootInfo != null)
+ {
+ rootInfo.Password = true;
+ rootInfo.PasswordString = pW;
+ }
+ }
+
+ return true;
+ }
+ #endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Config.Connections.Save.cs b/mRemoteV1/CS/Config/Config.Connections.Save.cs
new file mode 100644
index 000000000..66211535c
--- /dev/null
+++ b/mRemoteV1/CS/Config/Config.Connections.Save.cs
@@ -0,0 +1,1292 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Xml;
+using System.IO;
+using System.Globalization;
+//using mRemoteNG.App.Runtime;
+using System.Data.SqlClient;
+//using mRemoteNG.Tools.Misc;
+
+
+namespace mRemoteNG.Config.Connections
+{
+ public class Save
+ {
+#region Public Enums
+ public enum Format
+ {
+ None,
+ mRXML,
+ mRCSV,
+ vRDvRE,
+ vRDCSV,
+ SQL
+ }
+#endregion
+
+#region Private Properties
+ private XmlTextWriter _xmlTextWriter;
+ private string _password = "mR3m";
+
+ private SqlConnection _sqlConnection;
+ private SqlCommand _sqlQuery;
+
+ private int _currentNodeIndex = 0;
+ private string _parentConstantId = System.Convert.ToString(0);
+#endregion
+
+#region Public Properties
+ public string SQLHost {get; set;}
+ public string SQLDatabaseName {get; set;}
+ public string SQLUsername {get; set;}
+ public string SQLPassword {get; set;}
+
+ public string ConnectionFileName {get; set;}
+ public TreeNode RootTreeNode {get; set;}
+ public bool Export {get; set;}
+ public Format SaveFormat {get; set;}
+ public Security.Save SaveSecurity {get; set;}
+ public Connection.List ConnectionList {get; set;}
+ public Container.List ContainerList {get; set;}
+#endregion
+
+#region Public Methods
+ public void Save_Renamed()
+ {
+ switch (SaveFormat)
+ {
+ case Format.SQL:
+ SaveToSQL();
+ break;
+ case Format.mRCSV:
+ SaveTomRCSV();
+ break;
+ case Format.vRDvRE:
+ SaveToVRE();
+ break;
+ case Format.vRDCSV:
+ SaveTovRDCSV();
+ break;
+ default:
+ SaveToXml();
+ if (My.Settings.Default.EncryptCompleteConnectionsFile)
+ {
+ EncryptCompleteFile();
+ }
+ if (!Export)
+ {
+ frmMain.Default.ConnectionsFileName = ConnectionFileName;
+ }
+ break;
+ }
+ frmMain.Default.UsingSqlServer = SaveFormat == Format.SQL;
+ }
+#endregion
+
+#region SQL
+ private bool VerifyDatabaseVersion(SqlConnection sqlConnection)
+ {
+ bool isVerified = false;
+ SqlDataReader sqlDataReader = null;
+ System.Version databaseVersion = null;
+ try
+ {
+ SqlCommand sqlCommand = new SqlCommand("SELECT * FROM tblRoot", sqlConnection);
+ sqlDataReader = sqlCommand.ExecuteReader();
+ if (!sqlDataReader.HasRows)
+ {
+ return true; // assume new empty database
+ }
+ sqlDataReader.Read();
+
+ databaseVersion = new Version(Convert.ToString(sqlDataReader["confVersion"], CultureInfo.InvariantCulture));
+
+ sqlDataReader.Close();
+
+ if (databaseVersion.CompareTo(new System.Version(2, 2)) == 0) // 2.2
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format("Upgrading database from version {0} to version {1}.", databaseVersion.ToString(), "2.3"));
+ sqlCommand = new SqlCommand("ALTER TABLE tblCons ADD EnableFontSmoothing bit NOT NULL DEFAULT 0, EnableDesktopComposition bit NOT NULL DEFAULT 0, InheritEnableFontSmoothing bit NOT NULL DEFAULT 0, InheritEnableDesktopComposition bit NOT NULL DEFAULT 0;", sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ databaseVersion = new System.Version(2, 3);
+ }
+
+ if (databaseVersion.CompareTo(new System.Version(2, 3)) == 0) // 2.3
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format("Upgrading database from version {0} to version {1}.", databaseVersion.ToString(), "2.4"));
+ sqlCommand = new SqlCommand("ALTER TABLE tblCons ADD UseCredSsp bit NOT NULL DEFAULT 1, InheritUseCredSsp bit NOT NULL DEFAULT 0;", sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ databaseVersion = new Version(2, 4);
+ }
+
+ if (databaseVersion.CompareTo(new Version(2, 4)) == 0) // 2.4
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format("Upgrading database from version {0} to version {1}.", databaseVersion.ToString(), "2.5"));
+ sqlCommand = new SqlCommand("ALTER TABLE tblCons ADD LoadBalanceInfo varchar (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AutomaticResize bit NOT NULL DEFAULT 1, InheritLoadBalanceInfo bit NOT NULL DEFAULT 0, InheritAutomaticResize bit NOT NULL DEFAULT 0;", sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ databaseVersion = new Version(2, 5);
+ }
+
+ if (databaseVersion.CompareTo(new Version(2, 5)) == 0) // 2.5
+ {
+ isVerified = true;
+ }
+
+ if (isVerified == false)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, string.Format(My.Language.strErrorBadDatabaseVersion, databaseVersion.ToString(), (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName));
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strErrorVerifyDatabaseVersionFailed, ex.Message));
+ }
+ finally
+ {
+ if (sqlDataReader != null)
+ {
+ if (!sqlDataReader.IsClosed)
+ {
+ sqlDataReader.Close();
+ }
+ }
+ }
+ return isVerified;
+ }
+
+ private void SaveToSQL()
+ {
+ if (SQLUsername != "")
+ {
+ _sqlConnection = new SqlConnection("Data Source=" + SQLHost + ";Initial Catalog=" + SQLDatabaseName + ";User Id=" + SQLUsername + ";Password=" + SQLPassword);
+ }
+ else
+ {
+ _sqlConnection = new SqlConnection("Data Source=" + SQLHost + ";Initial Catalog=" + SQLDatabaseName + ";Integrated Security=True");
+ }
+
+ _sqlConnection.Open();
+
+ if (!VerifyDatabaseVersion(_sqlConnection))
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strErrorConnectionListSaveFailed);
+ return ;
+ }
+
+ TreeNode tN = default(TreeNode);
+ tN = RootTreeNode.Clone();
+
+ string strProtected = "";
+ if (tN.Tag != null)
+ {
+ if ((tN.Tag as mRemoteNG.Root.Info).Password == true)
+ {
+ _password = System.Convert.ToString((tN.Tag as mRemoteNG.Root.Info).PasswordString);
+ strProtected = Security.Crypt.Encrypt("ThisIsProtected", _password);
+ }
+ else
+ {
+ strProtected = Security.Crypt.Encrypt("ThisIsNotProtected", _password);
+ }
+ }
+ else
+ {
+ strProtected = Security.Crypt.Encrypt("ThisIsNotProtected", _password);
+ }
+
+ _sqlQuery = new SqlCommand("DELETE FROM tblRoot", _sqlConnection);
+ _sqlQuery.ExecuteNonQuery();
+
+ _sqlQuery = new SqlCommand("INSERT INTO tblRoot (Name, Export, Protected, ConfVersion) VALUES(\'" + PrepareValueForDB(tN.Text) + "\', 0, \'" + strProtected + "\'," + App.Info.Connections.ConnectionFileVersion.ToString(CultureInfo.InvariantCulture) + ")", _sqlConnection);
+ _sqlQuery.ExecuteNonQuery();
+
+ _sqlQuery = new SqlCommand("DELETE FROM tblCons", _sqlConnection);
+ _sqlQuery.ExecuteNonQuery();
+
+ TreeNodeCollection tNC = default(TreeNodeCollection);
+ tNC = tN.Nodes;
+
+ SaveNodesSQL(tNC);
+
+ _sqlQuery = new SqlCommand("DELETE FROM tblUpdate", _sqlConnection);
+ _sqlQuery.ExecuteNonQuery();
+ _sqlQuery = new SqlCommand("INSERT INTO tblUpdate (LastUpdate) VALUES(\'" + Tools.Misc.DBDate(DateTime.Now) + "\')", _sqlConnection);
+ _sqlQuery.ExecuteNonQuery();
+
+ _sqlConnection.Close();
+ }
+
+ private void SaveNodesSQL(TreeNodeCollection tnc)
+ {
+ foreach (TreeNode node in tnc)
+ {
+ _currentNodeIndex++;
+
+ Connection.Info curConI = default(Connection.Info);
+ _sqlQuery = new SqlCommand("INSERT INTO tblCons (Name, Type, Expanded, Description, Icon, Panel, Username, " + "DomainName, Password, Hostname, Protocol, PuttySession, " + "Port, ConnectToConsole, RenderingEngine, ICAEncryptionStrength, RDPAuthenticationLevel, LoadBalanceInfo, Colors, Resolution, AutomaticResize, DisplayWallpaper, " + "DisplayThemes, EnableFontSmoothing, EnableDesktopComposition, CacheBitmaps, RedirectDiskDrives, RedirectPorts, " + "RedirectPrinters, RedirectSmartCards, RedirectSound, RedirectKeys, " + "Connected, PreExtApp, PostExtApp, MacAddress, UserField, ExtApp, VNCCompression, VNCEncoding, VNCAuthMode, " + "VNCProxyType, VNCProxyIP, VNCProxyPort, VNCProxyUsername, VNCProxyPassword, " + "VNCColors, VNCSmartSizeMode, VNCViewOnly, " + "RDGatewayUsageMethod, RDGatewayHostname, RDGatewayUseConnectionCredentials, RDGatewayUsername, RDGatewayPassword, RDGatewayDomain, " + "UseCredSsp, " + "InheritCacheBitmaps, InheritColors, " + "InheritDescription, InheritDisplayThemes, InheritDisplayWallpaper, InheritEnableFontSmoothing, InheritEnableDesktopComposition, InheritDomain, " + "InheritIcon, InheritPanel, InheritPassword, InheritPort, " + "InheritProtocol, InheritPuttySession, InheritRedirectDiskDrives, " + "InheritRedirectKeys, InheritRedirectPorts, InheritRedirectPrinters, " + "InheritRedirectSmartCards, InheritRedirectSound, InheritResolution, InheritAutomaticResize, " + "InheritUseConsoleSession, InheritRenderingEngine, InheritUsername, InheritICAEncryptionStrength, InheritRDPAuthenticationLevel, InheritLoadBalanceInfo, " + "InheritPreExtApp, InheritPostExtApp, InheritMacAddress, InheritUserField, InheritExtApp, InheritVNCCompression, InheritVNCEncoding, " + "InheritVNCAuthMode, InheritVNCProxyType, InheritVNCProxyIP, InheritVNCProxyPort, " + "InheritVNCProxyUsername, InheritVNCProxyPassword, InheritVNCColors, " + "InheritVNCSmartSizeMode, InheritVNCViewOnly, " + "InheritRDGatewayUsageMethod, InheritRDGatewayHostname, InheritRDGatewayUseConnectionCredentials, InheritRDGatewayUsername, InheritRDGatewayPassword, InheritRDGatewayDomain, "
+ + "InheritUseCredSsp, " + "PositionID, ParentID, ConstantID, LastChange)" + "VALUES (", _sqlConnection
+ );
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(node) == Tree.Node.Type.Container)
+ {
+ //_xmlTextWriter.WriteStartElement("Node")
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(node.Text) + "\',"; //Name
+ _sqlQuery.CommandText += "\'" + Tree.Node.GetNodeType(node).ToString() + "\',"; //Type
+ }
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Container) //container
+ {
+ _sqlQuery.CommandText += "\'" + this._ContainerList[node.Tag].IsExpanded + "\',"; //Expanded
+ curConI = this._ContainerList[node.Tag].ConnectionInfo;
+ SaveConnectionFieldsSQL(curConI);
+
+ _sqlQuery.CommandText = Tools.Misc.PrepareForDB(_sqlQuery.CommandText);
+ _sqlQuery.ExecuteNonQuery();
+ //_parentConstantId = _currentNodeIndex
+ SaveNodesSQL(node.Nodes);
+ //_xmlTextWriter.WriteEndElement()
+ }
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection)
+ {
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ curConI = this._ConnectionList[node.Tag];
+ SaveConnectionFieldsSQL(curConI);
+ //_xmlTextWriter.WriteEndElement()
+ _sqlQuery.CommandText = Tools.Misc.PrepareForDB(_sqlQuery.CommandText);
+ _sqlQuery.ExecuteNonQuery();
+ }
+
+ //_parentConstantId = 0
+ }
+ }
+
+ private void SaveConnectionFieldsSQL(Connection.Info curConI)
+ {
+ Connection.Info with_1 = curConI;
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Description) + "\',";
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Icon) + "\',";
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Panel) + "\',";
+
+ if (this._SaveSecurity.Username == true)
+ {
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Username) + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ if (this._SaveSecurity.Domain == true)
+ {
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Domain) + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ if (this._SaveSecurity.Password == true)
+ {
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(Security.Crypt.Encrypt(with_1.Password, _password)) + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.Hostname) + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.Protocol.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + PrepareValueForDB(with_1.PuttySession) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Port) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.UseConsoleSession) + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.RenderingEngine.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.ICAEncryption.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.RDPAuthenticationLevel.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.LoadBalanceInfo + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.Colors.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.Resolution.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.AutomaticResize) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.DisplayWallpaper) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.DisplayThemes) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.EnableFontSmoothing) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.EnableDesktopComposition) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.CacheBitmaps) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.RedirectDiskDrives) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.RedirectPorts) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.RedirectPrinters) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.RedirectSmartCards) + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.RedirectSound.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.RedirectKeys) + "\',";
+
+ if (curConI.OpenConnections.Count > 0)
+ {
+ _sqlQuery.CommandText += 1 + ",";
+ }
+ else
+ {
+ _sqlQuery.CommandText += 0 + ",";
+ }
+
+ _sqlQuery.CommandText += "\'" + with_1.PreExtApp + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.PostExtApp + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.MacAddress + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.UserField + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.ExtApp + "\',";
+
+ _sqlQuery.CommandText += "\'" + with_1.VNCCompression.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCEncoding.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCAuthMode.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCProxyType.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCProxyIP + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.VNCProxyPort) + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCProxyUsername + "\',";
+ _sqlQuery.CommandText += "\'" + Security.Crypt.Encrypt(with_1.VNCProxyPassword, _password) + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCColors.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.VNCSmartSizeMode.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.VNCViewOnly) + "\',";
+
+ _sqlQuery.CommandText += "\'" + with_1.RDGatewayUsageMethod.ToString() + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.RDGatewayHostname + "\',";
+ _sqlQuery.CommandText += "\'" + with_1.RDGatewayUseConnectionCredentials.ToString() + "\',";
+
+ if (this._SaveSecurity.Username == true)
+ {
+ _sqlQuery.CommandText += "\'" + with_1.RDGatewayUsername + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ if (this._SaveSecurity.Password == true)
+ {
+ _sqlQuery.CommandText += "\'" + Security.Crypt.Encrypt(with_1.RDGatewayPassword, _password) + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ if (this._SaveSecurity.Domain == true)
+ {
+ _sqlQuery.CommandText += "\'" + with_1.RDGatewayDomain + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + "" + "\',";
+ }
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.UseCredSsp) + "\',";
+
+ if (this._SaveSecurity.Inheritance == true)
+ {
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.CacheBitmaps) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Colors) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Description) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.DisplayThemes) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.DisplayWallpaper) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.EnableFontSmoothing) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.EnableDesktopComposition) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Domain) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Icon) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Panel) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Password) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Port) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Protocol) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.PuttySession) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectDiskDrives) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectKeys) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectPorts) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectPrinters) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectSmartCards) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RedirectSound) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Resolution) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.AutomaticResize) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.UseConsoleSession) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RenderingEngine) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.Username) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.ICAEncryption) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDPAuthenticationLevel) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.LoadBalanceInfo) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.PreExtApp) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.PostExtApp) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.MacAddress) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.UserField) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.ExtApp) + "\',";
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCCompression) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCEncoding) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCAuthMode) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCProxyType) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCProxyIP) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCProxyPort) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCProxyUsername) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCProxyPassword) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCColors) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCSmartSizeMode) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.VNCViewOnly) + "\',";
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayUsageMethod) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayHostname) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayUseConnectionCredentials) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayUsername) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayPassword) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.RDGatewayDomain) + "\',";
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(with_1.Inherit.UseCredSsp) + "\',";
+ }
+ else
+ {
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .AutomaticResize
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .LoadBalanceInfo
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',";
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayUsageMethod
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayHostname
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayUseConnectionCredentials
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayUsername
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayPassword
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .RDGatewayDomain
+
+ _sqlQuery.CommandText += "\'" + System.Convert.ToString(false) + "\',"; // .UseCredSsp
+ }
+
+ with_1.PositionID = _currentNodeIndex;
+
+ if (with_1.IsContainer == false)
+ {
+ if (with_1.Parent != null)
+ {
+ _parentConstantId = System.Convert.ToString((with_1.Parent as Container.Info).ConnectionInfo.ConstantID);
+ }
+ else
+ {
+ _parentConstantId = System.Convert.ToString(0);
+ }
+ }
+ else
+ {
+ if ((with_1.Parent as Container.Info).Parent != null)
+ {
+ _parentConstantId = System.Convert.ToString(((with_1.Parent as Container.Info).Parent as Container.Info).ConnectionInfo.ConstantID);
+ }
+ else
+ {
+ _parentConstantId = System.Convert.ToString(0);
+ }
+ }
+
+ _sqlQuery.CommandText += _currentNodeIndex + ",\'" + _parentConstantId + "\',\'" + with_1.ConstantID + "\',\'" + Tools.Misc.DBDate(DateTime.Now) + "\')";
+ }
+#endregion
+
+#region XML
+ private void EncryptCompleteFile()
+ {
+ StreamReader streamReader = new StreamReader(ConnectionFileName);
+
+ string fileContents = "";
+ fileContents = streamReader.ReadToEnd();
+ streamReader.Close();
+
+ if (!string.IsNullOrEmpty(fileContents))
+ {
+ StreamWriter streamWriter = new StreamWriter(ConnectionFileName);
+ streamWriter.Write(Security.Crypt.Encrypt(fileContents, _password));
+ streamWriter.Close();
+ }
+ }
+
+ private void SaveToXml()
+ {
+ try
+ {
+ if (!IsConnectionsFileLoaded)
+ {
+ return;
+ }
+
+ TreeNode treeNode = default(TreeNode);
+
+ if (Tree.Node.GetNodeType(RootTreeNode) == Tree.Node.Type.Root)
+ {
+ treeNode = RootTreeNode.Clone();
+ }
+ else
+ {
+ treeNode = new TreeNode("mR|Export (" + Tools.Misc.DBDate(DateTime.Now) + ")");
+ treeNode.Nodes.Add(System.Convert.ToString(RootTreeNode.Clone()));
+ }
+
+ string tempFileName = Path.GetTempFileName();
+ _xmlTextWriter = new XmlTextWriter(tempFileName, System.Text.Encoding.UTF8);
+
+ _xmlTextWriter.Formatting = Formatting.Indented;
+ _xmlTextWriter.Indentation = 4;
+
+ _xmlTextWriter.WriteStartDocument();
+
+ _xmlTextWriter.WriteStartElement("Connections"); // Do not localize
+ _xmlTextWriter.WriteAttributeString("Name", "", treeNode.Text);
+ _xmlTextWriter.WriteAttributeString("Export", "", System.Convert.ToString(Export));
+
+ if (Export)
+ {
+ _xmlTextWriter.WriteAttributeString("Protected", "", Security.Crypt.Encrypt("ThisIsNotProtected", _password));
+ }
+ else
+ {
+ if ((treeNode.Tag as Root.Info).Password == true)
+ {
+ _password = System.Convert.ToString((treeNode.Tag as Root.Info).PasswordString);
+ _xmlTextWriter.WriteAttributeString("Protected", "", Security.Crypt.Encrypt("ThisIsProtected", _password));
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("Protected", "", Security.Crypt.Encrypt("ThisIsNotProtected", _password));
+ }
+ }
+
+ _xmlTextWriter.WriteAttributeString("ConfVersion", "", App.Info.Connections.ConnectionFileVersion.ToString(CultureInfo.InvariantCulture));
+
+ TreeNodeCollection treeNodeCollection = default(TreeNodeCollection);
+ treeNodeCollection = treeNode.Nodes;
+
+ SaveNode(treeNodeCollection);
+
+ _xmlTextWriter.WriteEndElement();
+ _xmlTextWriter.Close();
+
+ if (File.Exists(ConnectionFileName))
+ {
+ if (Export)
+ {
+ File.Delete(ConnectionFileName);
+ }
+ else
+ {
+ string backupFileName = ConnectionFileName +".backup";
+ File.Delete(backupFileName);
+ File.Move(ConnectionFileName, backupFileName);
+ }
+ }
+ File.Move(tempFileName, ConnectionFileName);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveToXml failed" + Constants.vbNewLine + ex.Message, false);
+ }
+ }
+
+ private void SaveNode(TreeNodeCollection tNC)
+ {
+ try
+ {
+ foreach (TreeNode node in tNC)
+ {
+ Connection.Info curConI = default(Connection.Info);
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(node) == Tree.Node.Type.Container)
+ {
+ _xmlTextWriter.WriteStartElement("Node");
+ _xmlTextWriter.WriteAttributeString("Name", "", node.Text);
+ _xmlTextWriter.WriteAttributeString("Type", "", Tree.Node.GetNodeType(node).ToString());
+ }
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Container) //container
+ {
+ _xmlTextWriter.WriteAttributeString("Expanded", "", System.Convert.ToString(this._ContainerList[node.Tag].TreeNode.IsExpanded));
+ curConI = this._ContainerList[node.Tag].ConnectionInfo;
+ SaveConnectionFields(curConI);
+ SaveNode(node.Nodes);
+ _xmlTextWriter.WriteEndElement();
+ }
+
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection)
+ {
+ curConI = this._ConnectionList[node.Tag];
+ SaveConnectionFields(curConI);
+ _xmlTextWriter.WriteEndElement();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveNode failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SaveConnectionFields(Connection.Info curConI)
+ {
+ try
+ {
+ _xmlTextWriter.WriteAttributeString("Descr", "", curConI.Description);
+
+ _xmlTextWriter.WriteAttributeString("Icon", "", curConI.Icon);
+
+ _xmlTextWriter.WriteAttributeString("Panel", "", curConI.Panel);
+
+ if (this._SaveSecurity.Username == true)
+ {
+ _xmlTextWriter.WriteAttributeString("Username", "", curConI.Username);
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("Username", "", "");
+ }
+
+ if (this._SaveSecurity.Domain == true)
+ {
+ _xmlTextWriter.WriteAttributeString("Domain", "", curConI.Domain);
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("Domain", "", "");
+ }
+
+ if (this._SaveSecurity.Password == true)
+ {
+ _xmlTextWriter.WriteAttributeString("Password", "", Security.Crypt.Encrypt(curConI.Password, _password));
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("Password", "", "");
+ }
+
+ _xmlTextWriter.WriteAttributeString("Hostname", "", curConI.Hostname);
+
+ _xmlTextWriter.WriteAttributeString("Protocol", "", curConI.Protocol.ToString());
+
+ _xmlTextWriter.WriteAttributeString("PuttySession", "", curConI.PuttySession);
+
+ _xmlTextWriter.WriteAttributeString("Port", "", System.Convert.ToString(curConI.Port));
+
+ _xmlTextWriter.WriteAttributeString("ConnectToConsole", "", System.Convert.ToString(curConI.UseConsoleSession));
+
+ _xmlTextWriter.WriteAttributeString("UseCredSsp", "", System.Convert.ToString(curConI.UseCredSsp));
+
+ _xmlTextWriter.WriteAttributeString("RenderingEngine", "", curConI.RenderingEngine.ToString());
+
+ _xmlTextWriter.WriteAttributeString("ICAEncryptionStrength", "", curConI.ICAEncryption.ToString());
+
+ _xmlTextWriter.WriteAttributeString("RDPAuthenticationLevel", "", curConI.RDPAuthenticationLevel.ToString());
+
+ _xmlTextWriter.WriteAttributeString("LoadBalanceInfo", "", curConI.LoadBalanceInfo);
+
+ _xmlTextWriter.WriteAttributeString("Colors", "", curConI.Colors.ToString());
+
+ _xmlTextWriter.WriteAttributeString("Resolution", "", curConI.Resolution.ToString());
+
+ _xmlTextWriter.WriteAttributeString("AutomaticResize", "", System.Convert.ToString(curConI.AutomaticResize));
+
+ _xmlTextWriter.WriteAttributeString("DisplayWallpaper", "", System.Convert.ToString(curConI.DisplayWallpaper));
+
+ _xmlTextWriter.WriteAttributeString("DisplayThemes", "", System.Convert.ToString(curConI.DisplayThemes));
+
+ _xmlTextWriter.WriteAttributeString("EnableFontSmoothing", "", System.Convert.ToString(curConI.EnableFontSmoothing));
+
+ _xmlTextWriter.WriteAttributeString("EnableDesktopComposition", "", System.Convert.ToString(curConI.EnableDesktopComposition));
+
+ _xmlTextWriter.WriteAttributeString("CacheBitmaps", "", System.Convert.ToString(curConI.CacheBitmaps));
+
+ _xmlTextWriter.WriteAttributeString("RedirectDiskDrives", "", System.Convert.ToString(curConI.RedirectDiskDrives));
+
+ _xmlTextWriter.WriteAttributeString("RedirectPorts", "", System.Convert.ToString(curConI.RedirectPorts));
+
+ _xmlTextWriter.WriteAttributeString("RedirectPrinters", "", System.Convert.ToString(curConI.RedirectPrinters));
+
+ _xmlTextWriter.WriteAttributeString("RedirectSmartCards", "", System.Convert.ToString(curConI.RedirectSmartCards));
+
+ _xmlTextWriter.WriteAttributeString("RedirectSound", "", curConI.RedirectSound.ToString());
+
+ _xmlTextWriter.WriteAttributeString("RedirectKeys", "", System.Convert.ToString(curConI.RedirectKeys));
+
+ if (curConI.OpenConnections.Count > 0)
+ {
+ _xmlTextWriter.WriteAttributeString("Connected", "", System.Convert.ToString(true));
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("Connected", "", System.Convert.ToString(false));
+ }
+
+ _xmlTextWriter.WriteAttributeString("PreExtApp", "", curConI.PreExtApp);
+ _xmlTextWriter.WriteAttributeString("PostExtApp", "", curConI.PostExtApp);
+ _xmlTextWriter.WriteAttributeString("MacAddress", "", curConI.MacAddress);
+ _xmlTextWriter.WriteAttributeString("UserField", "", curConI.UserField);
+ _xmlTextWriter.WriteAttributeString("ExtApp", "", curConI.ExtApp);
+
+ _xmlTextWriter.WriteAttributeString("VNCCompression", "", curConI.VNCCompression.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCEncoding", "", curConI.VNCEncoding.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCAuthMode", "", curConI.VNCAuthMode.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCProxyType", "", curConI.VNCProxyType.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCProxyIP", "", curConI.VNCProxyIP);
+ _xmlTextWriter.WriteAttributeString("VNCProxyPort", "", System.Convert.ToString(curConI.VNCProxyPort));
+ _xmlTextWriter.WriteAttributeString("VNCProxyUsername", "", curConI.VNCProxyUsername);
+ _xmlTextWriter.WriteAttributeString("VNCProxyPassword", "", Security.Crypt.Encrypt(curConI.VNCProxyPassword, _password));
+ _xmlTextWriter.WriteAttributeString("VNCColors", "", curConI.VNCColors.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCSmartSizeMode", "", curConI.VNCSmartSizeMode.ToString());
+ _xmlTextWriter.WriteAttributeString("VNCViewOnly", "", System.Convert.ToString(curConI.VNCViewOnly));
+
+ _xmlTextWriter.WriteAttributeString("RDGatewayUsageMethod", "", curConI.RDGatewayUsageMethod.ToString());
+ _xmlTextWriter.WriteAttributeString("RDGatewayHostname", "", curConI.RDGatewayHostname);
+
+ _xmlTextWriter.WriteAttributeString("RDGatewayUseConnectionCredentials", "", curConI.RDGatewayUseConnectionCredentials.ToString());
+
+ if (this._SaveSecurity.Username == true)
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayUsername", "", curConI.RDGatewayUsername);
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayUsername", "", "");
+ }
+
+ if (this._SaveSecurity.Password == true)
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayPassword", "", Security.Crypt.Encrypt(curConI.RDGatewayPassword, _password));
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayPassword", "", "");
+ }
+
+ if (this._SaveSecurity.Domain == true)
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayDomain", "", curConI.RDGatewayDomain);
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("RDGatewayDomain", "", "");
+ }
+
+ if (this._SaveSecurity.Inheritance == true)
+ {
+ _xmlTextWriter.WriteAttributeString("InheritCacheBitmaps", "", System.Convert.ToString(curConI.Inherit.CacheBitmaps));
+ _xmlTextWriter.WriteAttributeString("InheritColors", "", System.Convert.ToString(curConI.Inherit.Colors));
+ _xmlTextWriter.WriteAttributeString("InheritDescription", "", System.Convert.ToString(curConI.Inherit.Description));
+ _xmlTextWriter.WriteAttributeString("InheritDisplayThemes", "", System.Convert.ToString(curConI.Inherit.DisplayThemes));
+ _xmlTextWriter.WriteAttributeString("InheritDisplayWallpaper", "", System.Convert.ToString(curConI.Inherit.DisplayWallpaper));
+ _xmlTextWriter.WriteAttributeString("InheritEnableFontSmoothing", "", System.Convert.ToString(curConI.Inherit.EnableFontSmoothing));
+ _xmlTextWriter.WriteAttributeString("InheritEnableDesktopComposition", "", System.Convert.ToString(curConI.Inherit.EnableDesktopComposition));
+ _xmlTextWriter.WriteAttributeString("InheritDomain", "", System.Convert.ToString(curConI.Inherit.Domain));
+ _xmlTextWriter.WriteAttributeString("InheritIcon", "", System.Convert.ToString(curConI.Inherit.Icon));
+ _xmlTextWriter.WriteAttributeString("InheritPanel", "", System.Convert.ToString(curConI.Inherit.Panel));
+ _xmlTextWriter.WriteAttributeString("InheritPassword", "", System.Convert.ToString(curConI.Inherit.Password));
+ _xmlTextWriter.WriteAttributeString("InheritPort", "", System.Convert.ToString(curConI.Inherit.Port));
+ _xmlTextWriter.WriteAttributeString("InheritProtocol", "", System.Convert.ToString(curConI.Inherit.Protocol));
+ _xmlTextWriter.WriteAttributeString("InheritPuttySession", "", System.Convert.ToString(curConI.Inherit.PuttySession));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectDiskDrives", "", System.Convert.ToString(curConI.Inherit.RedirectDiskDrives));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectKeys", "", System.Convert.ToString(curConI.Inherit.RedirectKeys));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectPorts", "", System.Convert.ToString(curConI.Inherit.RedirectPorts));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectPrinters", "", System.Convert.ToString(curConI.Inherit.RedirectPrinters));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", System.Convert.ToString(curConI.Inherit.RedirectSmartCards));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", System.Convert.ToString(curConI.Inherit.RedirectSound));
+ _xmlTextWriter.WriteAttributeString("InheritResolution", "", System.Convert.ToString(curConI.Inherit.Resolution));
+ _xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", System.Convert.ToString(curConI.Inherit.AutomaticResize));
+ _xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", System.Convert.ToString(curConI.Inherit.UseConsoleSession));
+ _xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", System.Convert.ToString(curConI.Inherit.UseCredSsp));
+ _xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", System.Convert.ToString(curConI.Inherit.RenderingEngine));
+ _xmlTextWriter.WriteAttributeString("InheritUsername", "", System.Convert.ToString(curConI.Inherit.Username));
+ _xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", System.Convert.ToString(curConI.Inherit.ICAEncryption));
+ _xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", System.Convert.ToString(curConI.Inherit.RDPAuthenticationLevel));
+ _xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", System.Convert.ToString(curConI.Inherit.LoadBalanceInfo));
+ _xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", System.Convert.ToString(curConI.Inherit.PreExtApp));
+ _xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", System.Convert.ToString(curConI.Inherit.PostExtApp));
+ _xmlTextWriter.WriteAttributeString("InheritMacAddress", "", System.Convert.ToString(curConI.Inherit.MacAddress));
+ _xmlTextWriter.WriteAttributeString("InheritUserField", "", System.Convert.ToString(curConI.Inherit.UserField));
+ _xmlTextWriter.WriteAttributeString("InheritExtApp", "", System.Convert.ToString(curConI.Inherit.ExtApp));
+ _xmlTextWriter.WriteAttributeString("InheritVNCCompression", "", System.Convert.ToString(curConI.Inherit.VNCCompression));
+ _xmlTextWriter.WriteAttributeString("InheritVNCEncoding", "", System.Convert.ToString(curConI.Inherit.VNCEncoding));
+ _xmlTextWriter.WriteAttributeString("InheritVNCAuthMode", "", System.Convert.ToString(curConI.Inherit.VNCAuthMode));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyType", "", System.Convert.ToString(curConI.Inherit.VNCProxyType));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyIP", "", System.Convert.ToString(curConI.Inherit.VNCProxyIP));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyPort", "", System.Convert.ToString(curConI.Inherit.VNCProxyPort));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyUsername", "", System.Convert.ToString(curConI.Inherit.VNCProxyUsername));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyPassword", "", System.Convert.ToString(curConI.Inherit.VNCProxyPassword));
+ _xmlTextWriter.WriteAttributeString("InheritVNCColors", "", System.Convert.ToString(curConI.Inherit.VNCColors));
+ _xmlTextWriter.WriteAttributeString("InheritVNCSmartSizeMode", "", System.Convert.ToString(curConI.Inherit.VNCSmartSizeMode));
+ _xmlTextWriter.WriteAttributeString("InheritVNCViewOnly", "", System.Convert.ToString(curConI.Inherit.VNCViewOnly));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayUsageMethod", "", System.Convert.ToString(curConI.Inherit.RDGatewayUsageMethod));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayHostname", "", System.Convert.ToString(curConI.Inherit.RDGatewayHostname));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayUseConnectionCredentials", "", System.Convert.ToString(curConI.Inherit.RDGatewayUseConnectionCredentials));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayUsername", "", System.Convert.ToString(curConI.Inherit.RDGatewayUsername));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayPassword", "", System.Convert.ToString(curConI.Inherit.RDGatewayPassword));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayDomain", "", System.Convert.ToString(curConI.Inherit.RDGatewayDomain));
+ }
+ else
+ {
+ _xmlTextWriter.WriteAttributeString("InheritCacheBitmaps", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritColors", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritDescription", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritDisplayThemes", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritDisplayWallpaper", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritEnableFontSmoothing", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritEnableDesktopComposition", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritDomain", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritIcon", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPanel", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPassword", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPort", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritProtocol", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPuttySession", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectDiskDrives", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectKeys", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectPorts", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectPrinters", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritResolution", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritUsername", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritMacAddress", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritUserField", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritExtApp", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCCompression", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCEncoding", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCAuthMode", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyType", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyIP", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyPort", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyUsername", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCProxyPassword", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCColors", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCSmartSizeMode", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritVNCViewOnly", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayHostname", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayUseConnectionCredentials", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayUsername", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayPassword", "", System.Convert.ToString(false));
+ _xmlTextWriter.WriteAttributeString("InheritRDGatewayDomain", "", System.Convert.ToString(false));
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveConnectionFields failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region CSV
+ private StreamWriter csvWr;
+
+ private void SaveTomRCSV()
+ {
+ if (App.Runtime.IsConnectionsFileLoaded == false)
+ {
+ return;
+ }
+
+ TreeNode tN = default(TreeNode);
+ tN = RootTreeNode.Clone();
+
+ TreeNodeCollection tNC = default(TreeNodeCollection);
+ tNC = tN.Nodes;
+
+ csvWr = new StreamWriter(ConnectionFileName);
+
+
+ string csvLn = string.Empty;
+
+ csvLn += "Name;Folder;Description;Icon;Panel;";
+
+ if (SaveSecurity.Username)
+ {
+ csvLn += "Username;";
+ }
+
+ if (SaveSecurity.Password)
+ {
+ csvLn += "Password;";
+ }
+
+ if (SaveSecurity.Domain)
+ {
+ csvLn += "Domain;";
+ }
+
+ csvLn += "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;";
+
+ if (SaveSecurity.Inheritance)
+ {
+ csvLn += "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain";
+ }
+
+ csvWr.WriteLine(csvLn);
+
+ SaveNodemRCSV(tNC);
+
+ csvWr.Close();
+ }
+
+ private void SaveNodemRCSV(TreeNodeCollection tNC)
+ {
+ foreach (TreeNode node in tNC)
+ {
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection)
+ {
+ Connection.Info curConI = node.Tag;
+
+ WritemRCSVLine(curConI);
+ }
+ else if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Container)
+ {
+ SaveNodemRCSV(node.Nodes);
+ }
+ }
+ }
+
+ private void WritemRCSVLine(Connection.Info con)
+ {
+ string nodePath = con.TreeNode.FullPath;
+
+ int firstSlash = nodePath.IndexOf("\\");
+ nodePath = nodePath.Remove(0, firstSlash + 1);
+ int lastSlash = nodePath.LastIndexOf("\\");
+
+ if (lastSlash > 0)
+ {
+ nodePath = nodePath.Remove(lastSlash);
+ }
+ else
+ {
+ nodePath = "";
+ }
+
+ string csvLn = string.Empty;
+
+ csvLn += con.Name + ";" + nodePath + ";" + con.Description + ";" + con.Icon + ";" + con.Panel + ";";
+
+ if (SaveSecurity.Username)
+ {
+ csvLn += con.Username + ";";
+ }
+
+ if (SaveSecurity.Password)
+ {
+ csvLn += con.Password + ";";
+ }
+
+ if (SaveSecurity.Domain)
+ {
+ csvLn += con.Domain + ";";
+ }
+
+ csvLn += con.Hostname + ";" + con.Protocol.ToString() + ";" + con.PuttySession + ";" + System.Convert.ToString(con.Port) + ";" + System.Convert.ToString(con.UseConsoleSession) + ";" + System.Convert.ToString(con.UseCredSsp) + ";" + con.RenderingEngine.ToString() + ";" + con.ICAEncryption.ToString() + ";" + con.RDPAuthenticationLevel.ToString() + ";" + con.LoadBalanceInfo + ";" + con.Colors.ToString() + ";" + con.Resolution.ToString() + ";" + System.Convert.ToString(con.AutomaticResize) + ";" + System.Convert.ToString(con.DisplayWallpaper) + ";" + System.Convert.ToString(con.DisplayThemes) + ";" + System.Convert.ToString(con.EnableFontSmoothing) + ";" + System.Convert.ToString(con.EnableDesktopComposition) + ";" + System.Convert.ToString(con.CacheBitmaps) + ";" + System.Convert.ToString(con.RedirectDiskDrives) + ";" + System.Convert.ToString(con.RedirectPorts) + ";" + System.Convert.ToString(con.RedirectPrinters) + ";" + System.Convert.ToString(con.RedirectSmartCards) + ";" + con.RedirectSound.ToString() + ";" + System.Convert.ToString(con.RedirectKeys) + ";" + con.PreExtApp + ";" + con.PostExtApp + ";" + con.MacAddress + ";" + con.UserField + ";" + con.ExtApp + ";" + con.VNCCompression.ToString() + ";" + con.VNCEncoding.ToString() + ";" + con.VNCAuthMode.ToString() + ";" + con.VNCProxyType.ToString() + ";" + con.VNCProxyIP + ";" + System.Convert.ToString(con.VNCProxyPort) + ";" + con.VNCProxyUsername + ";" + con.VNCProxyPassword + ";" + con.VNCColors.ToString() + ";" + con.VNCSmartSizeMode.ToString() + ";" + System.Convert.ToString(con.VNCViewOnly) + ";";
+
+ if (SaveSecurity.Inheritance)
+ {
+ csvLn += con.Inherit.CacheBitmaps + ";" + System.Convert.ToString(con.Inherit.Colors) + ";" + System.Convert.ToString(con.Inherit.Description) + ";" + System.Convert.ToString(con.Inherit.DisplayThemes) + ";" + System.Convert.ToString(con.Inherit.DisplayWallpaper) + ";" + System.Convert.ToString(con.Inherit.EnableFontSmoothing) + ";" + System.Convert.ToString(con.Inherit.EnableDesktopComposition) + ";" + System.Convert.ToString(con.Inherit.Domain) + ";" + System.Convert.ToString(con.Inherit.Icon) + ";" + System.Convert.ToString(con.Inherit.Panel) + ";" + System.Convert.ToString(con.Inherit.Password) + ";" + System.Convert.ToString(con.Inherit.Port) + ";" + System.Convert.ToString(con.Inherit.Protocol) + ";" + System.Convert.ToString(con.Inherit.PuttySession) + ";" + System.Convert.ToString(con.Inherit.RedirectDiskDrives) + ";" + System.Convert.ToString(con.Inherit.RedirectKeys) + ";" + System.Convert.ToString(con.Inherit.RedirectPorts) + ";" + System.Convert.ToString(con.Inherit.RedirectPrinters) + ";" + System.Convert.ToString(con.Inherit.RedirectSmartCards) + ";" + System.Convert.ToString(con.Inherit.RedirectSound) + ";" + System.Convert.ToString(con.Inherit.Resolution) + ";" + System.Convert.ToString(con.Inherit.AutomaticResize) + ";" + System.Convert.ToString(con.Inherit.UseConsoleSession) + ";" + System.Convert.ToString(con.Inherit.UseCredSsp) + ";" + System.Convert.ToString(con.Inherit.RenderingEngine) + ";" + System.Convert.ToString(con.Inherit.Username) + ";" + System.Convert.ToString(con.Inherit.ICAEncryption) + ";" + System.Convert.ToString(con.Inherit.RDPAuthenticationLevel) + ";" + System.Convert.ToString(con.Inherit.LoadBalanceInfo) + ";" + System.Convert.ToString(con.Inherit.PreExtApp) + ";" + System.Convert.ToString(con.Inherit.PostExtApp) + ";" + System.Convert.ToString(con.Inherit.MacAddress) + ";" + System.Convert.ToString(con.Inherit.UserField) + ";" + System.Convert.ToString(con.Inherit.ExtApp) + ";" + System.Convert.ToString(con.Inherit.VNCCompression) + ";"
+ + System.Convert.ToString(con.Inherit.VNCEncoding) + ";" + System.Convert.ToString(con.Inherit.VNCAuthMode) + ";" + System.Convert.ToString(con.Inherit.VNCProxyType) + ";" + System.Convert.ToString(con.Inherit.VNCProxyIP) + ";" + System.Convert.ToString(con.Inherit.VNCProxyPort) + ";" + System.Convert.ToString(con.Inherit.VNCProxyUsername) + ";" + System.Convert.ToString(con.Inherit.VNCProxyPassword) + ";" + System.Convert.ToString(con.Inherit.VNCColors) + ";" + System.Convert.ToString(con.Inherit.VNCSmartSizeMode) + ";" + System.Convert.ToString(con.Inherit.VNCViewOnly);
+ }
+
+ csvWr.WriteLine(csvLn);
+ }
+#endregion
+
+#region vRD CSV
+ private void SaveTovRDCSV()
+ {
+ if (App.Runtime.IsConnectionsFileLoaded == false)
+ {
+ return;
+ }
+
+ TreeNode tN = default(TreeNode);
+ tN = RootTreeNode.Clone();
+
+ TreeNodeCollection tNC = default(TreeNodeCollection);
+ tNC = tN.Nodes;
+
+ csvWr = new StreamWriter(ConnectionFileName);
+
+ SaveNodevRDCSV(tNC);
+
+ csvWr.Close();
+ }
+
+ private void SaveNodevRDCSV(TreeNodeCollection tNC)
+ {
+ foreach (TreeNode node in tNC)
+ {
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection)
+ {
+ Connection.Info curConI = node.Tag;
+
+ if (curConI.Protocol == Connection.Protocol.Protocols.RDP)
+ {
+ WritevRDCSVLine(curConI);
+ }
+ }
+ else if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Container)
+ {
+ SaveNodevRDCSV(node.Nodes);
+ }
+ }
+ }
+
+ private void WritevRDCSVLine(Connection.Info con)
+ {
+ string nodePath = con.TreeNode.FullPath;
+
+ int firstSlash = nodePath.IndexOf("\\");
+ nodePath = nodePath.Remove(0, firstSlash + 1);
+ int lastSlash = nodePath.LastIndexOf("\\");
+
+ if (lastSlash > 0)
+ {
+ nodePath = nodePath.Remove(lastSlash);
+ }
+ else
+ {
+ nodePath = "";
+ }
+
+ csvWr.WriteLine(con.Name + ";" + con.Hostname + ";" + con.MacAddress + ";;" + System.Convert.ToString(con.Port) + ";" + System.Convert.ToString(con.UseConsoleSession) + ";" + nodePath);
+ }
+#endregion
+
+#region vRD VRE
+ private void SaveToVRE()
+ {
+ if (App.Runtime.IsConnectionsFileLoaded == false)
+ {
+ return;
+ }
+
+ TreeNode tN = default(TreeNode);
+ tN = RootTreeNode.Clone();
+
+ TreeNodeCollection tNC = default(TreeNodeCollection);
+ tNC = tN.Nodes;
+
+ _xmlTextWriter = new XmlTextWriter(ConnectionFileName, System.Text.Encoding.UTF8);
+ _xmlTextWriter.Formatting = Formatting.Indented;
+ _xmlTextWriter.Indentation = 4;
+
+ _xmlTextWriter.WriteStartDocument();
+
+ _xmlTextWriter.WriteStartElement("vRDConfig");
+ _xmlTextWriter.WriteAttributeString("Version", "", "2.0");
+
+ _xmlTextWriter.WriteStartElement("Connections");
+ SaveNodeVRE(tNC);
+ _xmlTextWriter.WriteEndElement();
+
+ _xmlTextWriter.WriteEndElement();
+ _xmlTextWriter.WriteEndDocument();
+ _xmlTextWriter.Close();
+ }
+
+ private void SaveNodeVRE(TreeNodeCollection tNC)
+ {
+ foreach (TreeNode node in tNC)
+ {
+ if (Tree.Node.GetNodeType(node) == Tree.Node.Type.Connection)
+ {
+ Connection.Info curConI = node.Tag;
+
+ if (curConI.Protocol == Connection.Protocol.Protocols.RDP)
+ {
+ _xmlTextWriter.WriteStartElement("Connection");
+ _xmlTextWriter.WriteAttributeString("Id", "", "");
+
+ WriteVREitem(curConI);
+
+ _xmlTextWriter.WriteEndElement();
+ }
+ }
+ else
+ {
+ SaveNodeVRE(node.Nodes);
+ }
+ }
+ }
+
+ private void WriteVREitem(Connection.Info con)
+ {
+ //Name
+ _xmlTextWriter.WriteStartElement("ConnectionName");
+ _xmlTextWriter.WriteValue(con.Name);
+ _xmlTextWriter.WriteEndElement();
+
+ //Hostname
+ _xmlTextWriter.WriteStartElement("ServerName");
+ _xmlTextWriter.WriteValue(con.Hostname);
+ _xmlTextWriter.WriteEndElement();
+
+ //Mac Adress
+ _xmlTextWriter.WriteStartElement("MACAddress");
+ _xmlTextWriter.WriteValue(con.MacAddress);
+ _xmlTextWriter.WriteEndElement();
+
+ //Management Board URL
+ _xmlTextWriter.WriteStartElement("MgmtBoardUrl");
+ _xmlTextWriter.WriteValue("");
+ _xmlTextWriter.WriteEndElement();
+
+ //Description
+ _xmlTextWriter.WriteStartElement("Description");
+ _xmlTextWriter.WriteValue(con.Description);
+ _xmlTextWriter.WriteEndElement();
+
+ //Port
+ _xmlTextWriter.WriteStartElement("Port");
+ _xmlTextWriter.WriteValue(con.Port);
+ _xmlTextWriter.WriteEndElement();
+
+ //Console Session
+ _xmlTextWriter.WriteStartElement("Console");
+ _xmlTextWriter.WriteValue(con.UseConsoleSession);
+ _xmlTextWriter.WriteEndElement();
+
+ //Redirect Clipboard
+ _xmlTextWriter.WriteStartElement("ClipBoard");
+ _xmlTextWriter.WriteValue(true);
+ _xmlTextWriter.WriteEndElement();
+
+ //Redirect Printers
+ _xmlTextWriter.WriteStartElement("Printer");
+ _xmlTextWriter.WriteValue(con.RedirectPrinters);
+ _xmlTextWriter.WriteEndElement();
+
+ //Redirect Ports
+ _xmlTextWriter.WriteStartElement("Serial");
+ _xmlTextWriter.WriteValue(con.RedirectPorts);
+ _xmlTextWriter.WriteEndElement();
+
+ //Redirect Disks
+ _xmlTextWriter.WriteStartElement("LocalDrives");
+ _xmlTextWriter.WriteValue(con.RedirectDiskDrives);
+ _xmlTextWriter.WriteEndElement();
+
+ //Redirect Smartcards
+ _xmlTextWriter.WriteStartElement("SmartCard");
+ _xmlTextWriter.WriteValue(con.RedirectSmartCards);
+ _xmlTextWriter.WriteEndElement();
+
+ //Connection Place
+ _xmlTextWriter.WriteStartElement("ConnectionPlace");
+ _xmlTextWriter.WriteValue("2"); //----------------------------------------------------------
+ _xmlTextWriter.WriteEndElement();
+
+ //Smart Size
+ _xmlTextWriter.WriteStartElement("AutoSize");
+ _xmlTextWriter.WriteValue(con.Resolution == Connection.Protocol.RDP.RDPResolutions.SmartSize);
+ _xmlTextWriter.WriteEndElement();
+
+ //SeparateResolutionX
+ _xmlTextWriter.WriteStartElement("SeparateResolutionX");
+ _xmlTextWriter.WriteValue("1024");
+ _xmlTextWriter.WriteEndElement();
+
+ //SeparateResolutionY
+ _xmlTextWriter.WriteStartElement("SeparateResolutionY");
+ _xmlTextWriter.WriteValue("768");
+ _xmlTextWriter.WriteEndElement();
+
+ Rectangle resolution = Connection.Protocol.RDP.GetResolutionRectangle(con.Resolution);
+ if (resolution.Width == 0)
+ {
+ resolution.Width = 1024;
+ }
+ if (resolution.Height == 0)
+ {
+ resolution.Height = 768;
+ }
+
+ //TabResolutionX
+ _xmlTextWriter.WriteStartElement("TabResolutionX");
+ _xmlTextWriter.WriteValue(resolution.Width);
+ _xmlTextWriter.WriteEndElement();
+
+ //TabResolutionY
+ _xmlTextWriter.WriteStartElement("TabResolutionY");
+ _xmlTextWriter.WriteValue(resolution.Height);
+ _xmlTextWriter.WriteEndElement();
+
+ //RDPColorDepth
+ _xmlTextWriter.WriteStartElement("RDPColorDepth");
+ _xmlTextWriter.WriteValue(con.Colors.ToString().Replace("Colors", "").Replace("Bit", ""));
+ _xmlTextWriter.WriteEndElement();
+
+ //Bitmap Caching
+ _xmlTextWriter.WriteStartElement("BitmapCaching");
+ _xmlTextWriter.WriteValue(con.CacheBitmaps);
+ _xmlTextWriter.WriteEndElement();
+
+ //Themes
+ _xmlTextWriter.WriteStartElement("Themes");
+ _xmlTextWriter.WriteValue(con.DisplayThemes);
+ _xmlTextWriter.WriteEndElement();
+
+ //Wallpaper
+ _xmlTextWriter.WriteStartElement("Wallpaper");
+ _xmlTextWriter.WriteValue(con.DisplayWallpaper);
+ _xmlTextWriter.WriteEndElement();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Config.Settings.Load.cs b/mRemoteV1/CS/Config/Config.Settings.Load.cs
new file mode 100644
index 000000000..4df4a4a2f
--- /dev/null
+++ b/mRemoteV1/CS/Config/Config.Settings.Load.cs
@@ -0,0 +1,365 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+using System.Xml;
+//using System.Environment;
+
+
+namespace mRemoteNG.Config.Settings
+{
+ public class Load
+ {
+#region Public Properties
+ private frmMain _MainForm;
+public frmMain MainForm
+ {
+ get
+ {
+ return this._MainForm;
+ }
+ set
+ {
+ this._MainForm = value;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Load(frmMain MainForm)
+ {
+ this._MainForm = MainForm;
+ }
+
+ public void Load_Renamed()
+ {
+ try
+ {
+ // Migrate settings from previous version
+ if (My.Settings.Default.DoUpgrade)
+ {
+ try
+ {
+ My.Settings.Default.Upgrade();
+ }
+ catch (Exception ex)
+ {
+ Log.Error("My.Settings.Upgrade() failed" + Constants.vbNewLine + ex.Message);
+ }
+ My.Settings.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.
+ My.Settings.Default.UpdatePending = false;
+ }
+
+ App.SupportedCultures.InstantiateSingleton();
+ if (!(My.Settings.Default.OverrideUICulture == "") && App.SupportedCultures.IsNameSupported(System.Convert.ToString(My.Settings.Default.OverrideUICulture)))
+ {
+ System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(System.Convert.ToString(My.Settings.Default.OverrideUICulture));
+ Log.InfoFormat("Override Culture: {0}/{1}", System.Threading.Thread.CurrentThread.CurrentUICulture.Name, System.Threading.Thread.CurrentThread.CurrentUICulture.NativeName);
+ }
+
+ Themes.ThemeManager.LoadTheme(System.Convert.ToString(My.Settings.Default.ThemeName));
+
+ this._MainForm.WindowState = FormWindowState.Normal;
+ if (My.Settings.Default.MainFormState == FormWindowState.Normal)
+ {
+ if (!My.Settings.Default.MainFormLocation.IsEmpty)
+ {
+ this._MainForm.Location = My.Settings.Default.MainFormLocation;
+ }
+ if (!My.Settings.Default.MainFormSize.IsEmpty)
+ {
+ this._MainForm.Size = My.Settings.Default.MainFormSize;
+ }
+ }
+ else
+ {
+ if (!My.Settings.Default.MainFormRestoreLocation.IsEmpty)
+ {
+ this._MainForm.Location = My.Settings.Default.MainFormRestoreLocation;
+ }
+ if (!My.Settings.Default.MainFormRestoreSize.IsEmpty)
+ {
+ this._MainForm.Size = My.Settings.Default.MainFormRestoreSize;
+ }
+ }
+ if (My.Settings.Default.MainFormState == FormWindowState.Maximized)
+ {
+ this._MainForm.WindowState = FormWindowState.Maximized;
+ }
+
+ // Make sure the form is visible on the screen
+ const int minHorizontal = 300;
+ const int minVertical = 150;
+ System.Drawing.Rectangle screenBounds = Screen.FromHandle(this._MainForm.Handle).Bounds;
+ System.Drawing.Rectangle newBounds = this._MainForm.Bounds;
+
+ if (newBounds.Right < screenBounds.Left + minHorizontal)
+ {
+ newBounds.X = screenBounds.Left + minHorizontal - newBounds.Width;
+ }
+ if (newBounds.Left > screenBounds.Right - minHorizontal)
+ {
+ newBounds.X = screenBounds.Right - minHorizontal;
+ }
+ if (newBounds.Bottom < screenBounds.Top + minVertical)
+ {
+ newBounds.Y = screenBounds.Top + minVertical - newBounds.Height;
+ }
+ if (newBounds.Top > screenBounds.Bottom - minVertical)
+ {
+ newBounds.Y = screenBounds.Bottom - minVertical;
+ }
+
+ this._MainForm.Location = newBounds.Location;
+
+ if (My.Settings.Default.MainFormKiosk == true)
+ {
+ this._MainForm.Fullscreen.Value = true;
+ this._MainForm.mMenViewFullscreen.Checked = true;
+ }
+
+ if (My.Settings.Default.UseCustomPuttyPath)
+ {
+ Connection.Protocol.PuttyBase.PuttyPath = System.Convert.ToString(My.Settings.Default.CustomPuttyPath);
+ }
+ else
+ {
+ Connection.Protocol.PuttyBase.PuttyPath = App.Info.General.PuttyPath;
+ }
+
+ if (My.Settings.Default.ShowSystemTrayIcon)
+ {
+ App.Runtime.NotificationAreaIcon = new Tools.Controls.NotificationAreaIcon();
+ }
+
+ if (My.Settings.Default.AutoSaveEveryMinutes > 0)
+ {
+ this._MainForm.tmrAutoSave.Interval = System.Convert.ToInt32(My.Settings.Default.AutoSaveEveryMinutes * 60000);
+ this._MainForm.tmrAutoSave.Enabled = true;
+ }
+
+ My.Settings.Default.ConDefaultPassword = Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.ConDefaultPassword), App.Info.General.EncryptionKey);
+
+ this.LoadPanelsFromXML();
+ this.LoadExternalAppsFromXML();
+
+ if (My.Settings.Default.AlwaysShowPanelTabs)
+ {
+ frmMain.Default.pnlDock.DocumentStyle = DocumentStyle.DockingWindow;
+ }
+
+ if (My.Settings.Default.ResetToolbars == false)
+ {
+ LoadToolbarsFromSettings();
+ }
+ else
+ {
+ SetToolbarsDefault();
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error("Loading settings failed" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public void SetToolbarsDefault()
+ {
+ ToolStripPanelFromString("top").Join(MainForm.tsQuickConnect, new Point(300, 0));
+ MainForm.tsQuickConnect.Visible = true;
+ ToolStripPanelFromString("bottom").Join(MainForm.tsExternalTools, new Point(3, 0));
+ MainForm.tsExternalTools.Visible = false;
+ }
+
+ public void LoadToolbarsFromSettings()
+ {
+ if (My.Settings.Default.QuickyTBLocation.X > My.Settings.Default.ExtAppsTBLocation.X)
+ {
+ AddDynamicPanels();
+ AddStaticPanels();
+ }
+ else
+ {
+ AddStaticPanels();
+ AddDynamicPanels();
+ }
+ }
+
+ private void AddStaticPanels()
+ {
+ ToolStripPanelFromString(System.Convert.ToString(My.Settings.Default.QuickyTBParentDock)).Join(MainForm.tsQuickConnect, My.Settings.Default.QuickyTBLocation);
+ MainForm.tsQuickConnect.Visible = System.Convert.ToBoolean(My.Settings.Default.QuickyTBVisible);
+ }
+
+ private void AddDynamicPanels()
+ {
+ ToolStripPanelFromString(System.Convert.ToString(My.Settings.Default.ExtAppsTBParentDock)).Join(MainForm.tsExternalTools, My.Settings.Default.ExtAppsTBLocation);
+ MainForm.tsExternalTools.Visible = System.Convert.ToBoolean(My.Settings.Default.ExtAppsTBVisible);
+ }
+
+ private ToolStripPanel ToolStripPanelFromString(string Panel)
+ {
+ switch (Panel.ToLower())
+ {
+ case "top":
+ return MainForm.tsContainer.TopToolStripPanel;
+ case "bottom":
+ return MainForm.tsContainer.BottomToolStripPanel;
+ case "left":
+ return MainForm.tsContainer.LeftToolStripPanel;
+ case "right":
+ return MainForm.tsContainer.RightToolStripPanel;
+ default:
+ return MainForm.tsContainer.TopToolStripPanel;
+ }
+ }
+
+ public void LoadPanelsFromXML()
+ {
+ try
+ {
+ Windows.treePanel = null;
+ Windows.configPanel = null;
+ Windows.errorsPanel = null;
+
+ while (MainForm.pnlDock.Contents.Count > 0)
+ {
+ WeifenLuo.WinFormsUI.Docking.DockContent dc = MainForm.pnlDock.Contents[0];
+ dc.Close();
+ }
+
+ Startup.CreatePanels();
+
+ string oldPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "\\" + (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName + "\\" + App.Info.Settings.LayoutFileName;
+ string newPath = App.Info.Settings.SettingsPath + "\\" + App.Info.Settings.LayoutFileName;
+ if (File.Exists(newPath))
+ {
+ MainForm.pnlDock.LoadFromXml(newPath, GetContentFromPersistString);
+#if !PORTABLE
+ }
+ else if (File.Exists(oldPath))
+ {
+ MainForm.pnlDock.LoadFromXml(oldPath, GetContentFromPersistString);
+#endif
+ }
+ else
+ {
+ Startup.SetDefaultLayout();
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error("LoadPanelsFromXML failed" + Constants.vbNewLine + ex.Message);
+ }
+ }
+
+ public void LoadExternalAppsFromXML()
+ {
+ string oldPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "\\" + (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName + "\\" + App.Info.Settings.ExtAppsFilesName;
+ string newPath = App.Info.Settings.SettingsPath + "\\" + App.Info.Settings.ExtAppsFilesName;
+ XmlDocument xDom = new XmlDocument();
+ if (File.Exists(newPath))
+ {
+ xDom.Load(newPath);
+#if !PORTABLE
+ }
+ else if (File.Exists(oldPath))
+ {
+ xDom.Load(oldPath);
+#endif
+ }
+ else
+ {
+ return;
+ }
+
+ foreach (XmlElement xEl in xDom.DocumentElement.ChildNodes)
+ {
+ Tools.ExternalTool extA = new Tools.ExternalTool();
+ extA.DisplayName = xEl.Attributes["DisplayName"].Value;
+ extA.FileName = xEl.Attributes["FileName"].Value;
+ extA.Arguments = xEl.Attributes["Arguments"].Value;
+
+ if (xEl.HasAttribute("WaitForExit"))
+ {
+ extA.WaitForExit = bool.Parse(xEl.Attributes["WaitForExit"].Value);
+ }
+
+ if (xEl.HasAttribute("TryToIntegrate"))
+ {
+ extA.TryIntegrate = bool.Parse(xEl.Attributes["TryToIntegrate"].Value);
+ }
+
+ ExternalTools.Add(extA);
+ }
+
+ MainForm.SwitchToolBarText(System.Convert.ToBoolean(My.Settings.Default.ExtAppsTBShowText));
+
+ xDom = null;
+
+ frmMain.Default.AddExternalToolsToToolBar();
+ }
+#endregion
+
+#region Private Methods
+ private IDockContent GetContentFromPersistString(string persistString)
+ {
+ // pnlLayout.xml persistence XML fix for refactoring to mRemoteNG
+ if (persistString.StartsWith("mRemote."))
+ {
+ persistString = persistString.Replace("mRemote.", "mRemoteNG.");
+ }
+
+ try
+ {
+ if (persistString == typeof(UI.Window.Config).ToString())
+ {
+ return Windows.configPanel;
+ }
+
+ if (persistString == typeof(UI.Window.Tree).ToString())
+ {
+ return Windows.treePanel;
+ }
+
+ if (persistString == typeof(UI.Window.ErrorsAndInfos).ToString())
+ {
+ return Windows.errorsPanel;
+ }
+
+ if (persistString == typeof(UI.Window.Sessions).ToString())
+ {
+ return Windows.sessionsPanel;
+ }
+
+ if (persistString == typeof(UI.Window.ScreenshotManager).ToString())
+ {
+ return Windows.screenshotPanel;
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error("GetContentFromPersistString failed" + Constants.vbNewLine + ex.Message);
+ }
+
+ return null;
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Config.Settings.Providers.cs b/mRemoteV1/CS/Config/Config.Settings.Providers.cs
new file mode 100644
index 000000000..51e6726ae
--- /dev/null
+++ b/mRemoteV1/CS/Config/Config.Settings.Providers.cs
@@ -0,0 +1,262 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Configuration;
+using System.Collections.Specialized;
+using System.Xml;
+
+
+namespace mRemoteNG.Config.Settings.Providers
+{
+ public class ChooseProvider : PortableSettingsProvider
+ {
+#if !PORTABLE
+#else
+#endif
+ }
+
+ public class PortableSettingsProvider : SettingsProvider
+ {
+
+ const string SETTINGSROOT = "Settings"; //XML Root Node
+
+ public override void Initialize(string name, NameValueCollection col)
+ {
+ base.Initialize(this.ApplicationName, col);
+ }
+
+public override string ApplicationName
+ {
+ get
+ {
+ if (System.Windows.Forms.Application.ProductName.Trim().Length > 0)
+ {
+ return System.Windows.Forms.Application.ProductName;
+ }
+ else
+ {
+ System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.ExecutablePath);
+ return fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length);
+ }
+ }
+ set
+ {
+ //Do nothing
+ }
+ }
+
+ virtual public string GetAppSettingsPath()
+ {
+ //Used to determine where to store the settings
+ System.IO.FileInfo fi = new System.IO.FileInfo(Application.ExecutablePath);
+ return fi.DirectoryName;
+ }
+
+ virtual public string GetAppSettingsFilename()
+ {
+ //Used to determine the filename to store the settings
+ return "portable.config"; //ApplicationName & ".settings"
+ }
+
+ public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection propvals)
+ {
+ //Iterate through the settings to be stored
+ //Only dirty settings are included in propvals, and only ones relevant to this provider
+ foreach (SettingsPropertyValue propval in propvals)
+ {
+ SetValue(propval);
+ }
+
+ try
+ {
+ SettingsXML.Save(System.IO.Path.Combine(GetAppSettingsPath(), GetAppSettingsFilename()));
+ }
+ catch (Exception)
+ {
+ //Ignore if cant save, device been ejected
+ }
+ }
+
+ public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection props)
+ {
+ //Create new collection of values
+ SettingsPropertyValueCollection values = new SettingsPropertyValueCollection();
+
+ //Iterate through the settings to be retrieved
+ foreach (SettingsProperty setting in props)
+ {
+
+ SettingsPropertyValue value = new SettingsPropertyValue(setting);
+ value.IsDirty = false;
+ value.SerializedValue = GetValue(setting);
+ values.Add(value);
+ }
+ return values;
+ }
+
+ private System.Xml.XmlDocument m_SettingsXML = null;
+
+private System.Xml.XmlDocument SettingsXML
+ {
+ get
+ {
+ //If we dont hold an xml document, try opening one.
+ //If it doesnt exist then create a new one ready.
+ if (m_SettingsXML == null)
+ {
+ m_SettingsXML = new System.Xml.XmlDocument();
+
+ try
+ {
+ m_SettingsXML.Load(System.IO.Path.Combine(GetAppSettingsPath(), GetAppSettingsFilename()));
+ }
+ catch (Exception)
+ {
+ //Create new document
+ XmlDeclaration dec = m_SettingsXML.CreateXmlDeclaration("1.0", "utf-8", string.Empty);
+ m_SettingsXML.AppendChild(dec);
+
+ XmlNode nodeRoot = default(XmlNode);
+
+ nodeRoot = m_SettingsXML.CreateNode(XmlNodeType.Element, SETTINGSROOT, "");
+ m_SettingsXML.AppendChild(nodeRoot);
+ }
+ }
+
+ return m_SettingsXML;
+ }
+ }
+
+ private string GetValue(SettingsProperty setting)
+ {
+ string ret = "";
+
+ try
+ {
+ if (IsRoaming(setting))
+ {
+ ret = SettingsXML.SelectSingleNode(SETTINGSROOT + "/" + setting.Name).InnerText;
+ }
+ else
+ {
+ ret = SettingsXML.SelectSingleNode(SETTINGSROOT + "/" + (new Microsoft.VisualBasic.Devices.Computer()).Name + "/" + setting.Name).InnerText;
+ }
+
+ }
+ catch (Exception)
+ {
+ if (!(setting.DefaultValue == null))
+ {
+ ret = setting.DefaultValue.ToString();
+ }
+ else
+ {
+ ret = "";
+ }
+ }
+
+ return ret;
+ }
+
+ private void SetValue(SettingsPropertyValue propVal)
+ {
+
+ System.Xml.XmlElement MachineNode = default(System.Xml.XmlElement);
+ System.Xml.XmlElement SettingNode = default(System.Xml.XmlElement);
+
+ //Determine if the setting is roaming.
+ //If roaming then the value is stored as an element under the root
+ //Otherwise it is stored under a machine name node
+ try
+ {
+ if (IsRoaming(propVal.Property))
+ {
+ SettingNode = (XmlElement) (SettingsXML.SelectSingleNode(SETTINGSROOT + "/" + propVal.Name));
+ }
+ else
+ {
+ SettingNode = (XmlElement) (SettingsXML.SelectSingleNode(SETTINGSROOT + "/" + (new Microsoft.VisualBasic.Devices.Computer()).Name + "/" + propVal.Name));
+ }
+ }
+ catch (Exception)
+ {
+ SettingNode = null;
+ }
+
+ //Check to see if the node exists, if so then set its new value
+ if (SettingNode != null)
+ {
+ if (propVal.SerializedValue != null)
+ {
+ SettingNode.InnerText = propVal.SerializedValue.ToString();
+ }
+ }
+ else
+ {
+ if (IsRoaming(propVal.Property))
+ {
+ //Store the value as an element of the Settings Root Node
+ SettingNode = SettingsXML.CreateElement(propVal.Name);
+ if (propVal.SerializedValue != null)
+ {
+ SettingNode.InnerText = propVal.SerializedValue.ToString();
+ }
+ SettingsXML.SelectSingleNode(SETTINGSROOT).AppendChild(SettingNode);
+ }
+ else
+ {
+ //Its machine specific, store as an element of the machine name node,
+ //creating a new machine name node if one doesnt exist.
+ try
+ {
+ MachineNode = (XmlElement) (SettingsXML.SelectSingleNode(SETTINGSROOT + "/" + (new Microsoft.VisualBasic.Devices.Computer()).Name));
+ }
+ catch (Exception)
+ {
+ MachineNode = SettingsXML.CreateElement((new Microsoft.VisualBasic.Devices.Computer()).Name);
+ SettingsXML.SelectSingleNode(SETTINGSROOT).AppendChild(MachineNode);
+ }
+
+ if (MachineNode == null)
+ {
+ MachineNode = SettingsXML.CreateElement((new Microsoft.VisualBasic.Devices.Computer()).Name);
+ SettingsXML.SelectSingleNode(SETTINGSROOT).AppendChild(MachineNode);
+ }
+
+ SettingNode = SettingsXML.CreateElement(propVal.Name);
+ if (propVal.SerializedValue != null)
+ {
+ SettingNode.InnerText = propVal.SerializedValue.ToString();
+ }
+ MachineNode.AppendChild(SettingNode);
+ }
+ }
+
+
+ }
+
+ private bool IsRoaming(SettingsProperty prop)
+ {
+ //Determine if the setting is marked as Roaming
+ //For Each d As DictionaryEntry In prop.Attributes
+ // Dim a As Attribute = DirectCast(d.Value, Attribute)
+ // If TypeOf a Is System.Configuration.SettingsManageabilityAttribute Then
+ // Return True
+ // End If
+ //Next
+ //Return False
+
+ return true;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Config.Settings.Save.cs b/mRemoteV1/CS/Config/Config.Settings.Save.cs
new file mode 100644
index 000000000..e9cede46b
--- /dev/null
+++ b/mRemoteV1/CS/Config/Config.Settings.Save.cs
@@ -0,0 +1,138 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+using System.Xml;
+using System.IO;
+
+
+namespace mRemoteNG.Config.Settings
+{
+ public class Save
+ {
+#region Public Methods
+ public static void Save_Renamed()
+ {
+ try
+ {
+ frmMain with_1 = frmMain;
+ Tools.WindowPlacement windowPlacement = new Tools.WindowPlacement(frmMain);
+ if (with_1.WindowState == FormWindowState.Minimized & windowPlacement.RestoreToMaximized)
+ {
+ with_1.Opacity = 0;
+ with_1.WindowState = FormWindowState.Maximized;
+ }
+
+ My.Settings.Default.MainFormLocation = with_1.Location;
+ My.Settings.Default.MainFormSize = with_1.Size;
+
+ if (!(with_1.WindowState == FormWindowState.Normal))
+ {
+ My.Settings.Default.MainFormRestoreLocation = with_1.RestoreBounds.Location;
+ My.Settings.Default.MainFormRestoreSize = with_1.RestoreBounds.Size;
+ }
+
+ My.Settings.Default.MainFormState = with_1.WindowState;
+
+ My.Settings.Default.MainFormKiosk = with_1.Fullscreen.Value;
+
+ My.Settings.Default.FirstStart = false;
+ My.Settings.Default.ResetPanels = false;
+ My.Settings.Default.ResetToolbars = false;
+ My.Settings.Default.NoReconnect = false;
+
+ My.Settings.Default.ExtAppsTBLocation = with_1.tsExternalTools.Location;
+ if (with_1.tsExternalTools.Parent != null)
+ {
+ My.Settings.Default.ExtAppsTBParentDock = with_1.tsExternalTools.Parent.Dock.ToString();
+ }
+ My.Settings.Default.ExtAppsTBVisible = with_1.tsExternalTools.Visible;
+ My.Settings.Default.ExtAppsTBShowText = with_1.cMenToolbarShowText.Checked;
+
+ My.Settings.Default.QuickyTBLocation = with_1.tsQuickConnect.Location;
+ if (with_1.tsQuickConnect.Parent != null)
+ {
+ My.Settings.Default.QuickyTBParentDock = with_1.tsQuickConnect.Parent.Dock.ToString();
+ }
+ My.Settings.Default.QuickyTBVisible = with_1.tsQuickConnect.Visible;
+
+ My.Settings.Default.ConDefaultPassword = Security.Crypt.Encrypt(System.Convert.ToString(My.Settings.Default.ConDefaultPassword), App.Info.General.EncryptionKey);
+
+ My.Settings.Default.Save();
+
+ SavePanelsToXML();
+ SaveExternalAppsToXML();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Saving settings failed" + Constants.vbNewLine + Constants.vbNewLine + ex.Message, false);
+ }
+ }
+
+ public static void SavePanelsToXML()
+ {
+ try
+ {
+ if (Directory.Exists(App.Info.Settings.SettingsPath) == false)
+ {
+ Directory.CreateDirectory(App.Info.Settings.SettingsPath);
+ }
+
+ frmMain.Default.pnlDock.SaveAsXml(App.Info.Settings.SettingsPath + "\\" + App.Info.Settings.LayoutFileName);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SavePanelsToXML failed" + Constants.vbNewLine + Constants.vbNewLine + ex.Message, false);
+ }
+ }
+
+ public static void SaveExternalAppsToXML()
+ {
+ try
+ {
+ if (Directory.Exists(App.Info.Settings.SettingsPath) == false)
+ {
+ Directory.CreateDirectory(App.Info.Settings.SettingsPath);
+ }
+
+ XmlTextWriter xmlTextWriter = new XmlTextWriter(App.Info.Settings.SettingsPath + "\\" + App.Info.Settings.ExtAppsFilesName, System.Text.Encoding.UTF8);
+ xmlTextWriter.Formatting = Formatting.Indented;
+ xmlTextWriter.Indentation = 4;
+
+ xmlTextWriter.WriteStartDocument();
+ xmlTextWriter.WriteStartElement("Apps");
+
+ foreach (Tools.ExternalTool extA in ExternalTools)
+ {
+ xmlTextWriter.WriteStartElement("App");
+ xmlTextWriter.WriteAttributeString("DisplayName", "", extA.DisplayName);
+ xmlTextWriter.WriteAttributeString("FileName", "", extA.FileName);
+ xmlTextWriter.WriteAttributeString("Arguments", "", extA.Arguments);
+ xmlTextWriter.WriteAttributeString("WaitForExit", "", System.Convert.ToString(extA.WaitForExit));
+ xmlTextWriter.WriteAttributeString("TryToIntegrate", "", System.Convert.ToString(extA.TryIntegrate));
+ xmlTextWriter.WriteEndElement();
+ }
+
+ xmlTextWriter.WriteEndElement();
+ xmlTextWriter.WriteEndDocument();
+
+ xmlTextWriter.Close();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveExternalAppsToXML failed" + Constants.vbNewLine + Constants.vbNewLine + ex.Message, false);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/ConfirmClose.cs b/mRemoteV1/CS/Config/ConfirmClose.cs
new file mode 100644
index 000000000..6329665b2
--- /dev/null
+++ b/mRemoteV1/CS/Config/ConfirmClose.cs
@@ -0,0 +1,25 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Config
+{
+ public enum ConfirmClose
+ {
+ Unspecified = 0,
+ Never = 1,
+ @Exit = 2,
+ Multiple = 3,
+ All = 4
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/ActiveDirectory.cs b/mRemoteV1/CS/Config/Import/ActiveDirectory.cs
new file mode 100644
index 000000000..e6e7e6b23
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/ActiveDirectory.cs
@@ -0,0 +1,129 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.DirectoryServices;
+//using mRemoteNG.App.Runtime;
+using System.Text.RegularExpressions;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Config.Import
+{
+ public class ActiveDirectory
+ {
+ public static void Import(string ldapPath, TreeNode parentTreeNode)
+ {
+ try
+ {
+ TreeNode treeNode = Tree.Node.AddNode(Tree.Node.Type.Container);
+
+ Container.Info containerInfo = new Container.Info();
+ containerInfo.TreeNode = treeNode;
+ containerInfo.ConnectionInfo = new Connection.Info(containerInfo);
+
+ string name = "";
+ Match match = Regex.Match(ldapPath, "ou=([^,]*)", RegexOptions.IgnoreCase);
+ if (match.Success)
+ {
+ name = match.Groups[1].Captures[0].Value;
+ }
+ else
+ {
+ name = My.Language.strActiveDirectory;
+ }
+
+ containerInfo.Name = name;
+
+ // We can only inherit from a container node, not the root node or connection nodes
+ if (Tree.Node.GetNodeType(parentTreeNode) == Tree.Node.Type.Container)
+ {
+ containerInfo.Parent = parentTreeNode.Tag;
+ }
+ else
+ {
+ containerInfo.ConnectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+
+ treeNode.Text = name;
+ treeNode.Name = name;
+ treeNode.Tag = containerInfo;
+ ContainerList.Add(containerInfo);
+
+ ImportComputers(ldapPath, treeNode);
+
+ parentTreeNode.Nodes.Add(treeNode);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "Config.Import.ActiveDirectory.Import() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ private static void ImportComputers(string ldapPath, TreeNode parentTreeNode)
+ {
+ try
+ {
+ string strDisplayName = "";
+ string strDescription = "";
+ string strHostName = "";
+
+ const string ldapFilter = "(objectClass=computer)";
+
+ DirectorySearcher ldapSearcher = new DirectorySearcher();
+ SearchResultCollection ldapResults = default(SearchResultCollection);
+ SearchResult ldapResult = default(SearchResult);
+
+ ldapSearcher.SearchRoot = new DirectoryEntry(ldapPath);
+ ldapSearcher.PropertiesToLoad.AddRange(new[] {"securityEquals", "cn"});
+ ldapSearcher.Filter = ldapFilter;
+ ldapSearcher.SearchScope = SearchScope.OneLevel;
+
+ ldapResults = ldapSearcher.FindAll();
+
+ foreach (SearchResult tempLoopVar_ldapResult in ldapResults)
+ {
+ ldapResult = tempLoopVar_ldapResult;
+ System.DirectoryServices.DirectoryEntry with_2 = ldapResult.GetDirectoryEntry();
+ strDisplayName = System.Convert.ToString(with_2.Properties["cn"].Value);
+ strDescription = System.Convert.ToString(with_2.Properties["Description"].Value);
+ strHostName = System.Convert.ToString(with_2.Properties["dNSHostName"].Value);
+
+ TreeNode treeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, strDisplayName);
+
+ Connection.Info connectionInfo = new Connection.Info();
+ Connection.Info.Inheritance inheritanceInfo = new Connection.Info.Inheritance(connectionInfo, true);
+ inheritanceInfo.Description = false;
+ if (parentTreeNode.Tag is Container.Info)
+ {
+ connectionInfo.Parent = parentTreeNode.Tag;
+ }
+ connectionInfo.Inherit = inheritanceInfo;
+ connectionInfo.Name = strDisplayName;
+ connectionInfo.Hostname = strHostName;
+ connectionInfo.Description = strDescription;
+ connectionInfo.TreeNode = treeNode;
+ treeNode.Name = strDisplayName;
+ treeNode.Tag = connectionInfo; //set the nodes tag to the conI
+ //add connection to connections
+ ConnectionList.Add(connectionInfo);
+
+ parentTreeNode.Nodes.Add(treeNode);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "Config.Import.ActiveDirectory.ImportComputers() failed.", ex: ex, logOnly: true);
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/PortScan.cs b/mRemoteV1/CS/Config/Import/PortScan.cs
new file mode 100644
index 000000000..febb106fe
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/PortScan.cs
@@ -0,0 +1,107 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Config.Import
+{
+ public class PortScan
+ {
+ public static void Import(IEnumerable hosts, Connection.Protocol.Protocols protocol, TreeNode parentTreeNode)
+ {
+ foreach (Tools.PortScan.ScanHost host in hosts)
+ {
+ Connection.Protocol.Protocols finalProtocol = default(Connection.Protocol.Protocols);
+ bool protocolValid = false;
+
+ TreeNode treeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, host.HostNameWithoutDomain);
+
+ Connection.Info connectionInfo = new Connection.Info();
+ connectionInfo.Inherit = new Connection.Info.Inheritance(connectionInfo);
+
+ connectionInfo.Name = host.HostNameWithoutDomain;
+ connectionInfo.Hostname = host.HostName;
+
+ switch (protocol)
+ {
+ case Connection.Protocol.Protocols.SSH2:
+ if (host.SSH)
+ {
+ finalProtocol = Connection.Protocol.Protocols.SSH2;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.Telnet:
+ if (host.Telnet)
+ {
+ finalProtocol = Connection.Protocol.Protocols.Telnet;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.HTTP:
+ if (host.HTTP)
+ {
+ finalProtocol = Connection.Protocol.Protocols.HTTP;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.HTTPS:
+ if (host.HTTPS)
+ {
+ finalProtocol = Connection.Protocol.Protocols.HTTPS;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.Rlogin:
+ if (host.Rlogin)
+ {
+ finalProtocol = Connection.Protocol.Protocols.Rlogin;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.RDP:
+ if (host.RDP)
+ {
+ finalProtocol = Connection.Protocol.Protocols.RDP;
+ protocolValid = true;
+ }
+ break;
+ case Connection.Protocol.Protocols.VNC:
+ if (host.VNC)
+ {
+ finalProtocol = Connection.Protocol.Protocols.VNC;
+ protocolValid = true;
+ }
+ break;
+ }
+
+ if (protocolValid)
+ {
+ connectionInfo.Protocol = finalProtocol;
+ connectionInfo.SetDefaultPort();
+
+ treeNode.Tag = connectionInfo;
+ parentTreeNode.Nodes.Add(treeNode);
+
+ if (parentTreeNode.Tag is Container.Info)
+ {
+ connectionInfo.Parent = parentTreeNode.Tag;
+ }
+
+ ConnectionList.Add(connectionInfo);
+ }
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/PuttyConnectionManager.cs b/mRemoteV1/CS/Config/Import/PuttyConnectionManager.cs
new file mode 100644
index 000000000..b25d3d90e
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/PuttyConnectionManager.cs
@@ -0,0 +1,205 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Xml;
+using System.IO;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.Connection.Protocol;
+
+
+namespace mRemoteNG.Config.Import
+{
+ public class PuttyConnectionManager
+ {
+ public static void Import(string fileName, TreeNode parentTreeNode)
+ {
+ XmlDocument xmlDocument = new XmlDocument();
+ xmlDocument.Load(fileName);
+
+ XmlNode configurationNode = xmlDocument.SelectSingleNode("/configuration");
+ //Dim version As New Version(configurationNode.Attributes("version").Value)
+ //If Not version = New Version(0, 7, 1, 136) Then
+ // Throw New FileFormatException(String.Format("Unsupported file version ({0}).", version))
+ //End If
+
+ foreach (XmlNode rootNode in configurationNode.SelectNodes("./root"))
+ {
+ ImportRootOrContainer(rootNode, parentTreeNode);
+ }
+ }
+
+ private static void ImportRootOrContainer(XmlNode xmlNode, TreeNode parentTreeNode)
+ {
+ string xmlNodeType = xmlNode.Attributes["type"].Value;
+ switch (xmlNode.Name)
+ {
+ case "root":
+ if (!(string.Compare(strA: ref xmlNodeType, strB: "database", ignoreCase: true) == 0))
+ {
+ throw (new FileFormatException(string.Format("Unrecognized root node type ({0}).", xmlNodeType)));
+ }
+ break;
+ case "container":
+ if (!(string.Compare(strA: ref xmlNodeType, strB: "folder", ignoreCase: true) == 0))
+ {
+ throw (new FileFormatException(string.Format("Unrecognized root node type ({0}).", xmlNodeType)));
+ }
+ break;
+ default:
+ // ReSharper disable once LocalizableElement
+ throw (new ArgumentException("Argument must be either a root or a container node.", "xmlNode"));
+ break;
+ }
+
+ if (parentTreeNode == null)
+ {
+ throw (new InvalidOperationException("parentInfo.TreeNode must not be null."));
+ }
+
+ string name = xmlNode.Attributes["name"].Value;
+
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Container.Info containerInfo = new Container.Info();
+ containerInfo.TreeNode = treeNode;
+ containerInfo.Name = name;
+
+ Connection.Info connectionInfo = CreateConnectionInfo(name);
+ connectionInfo.Parent = containerInfo;
+ connectionInfo.IsContainer = true;
+ containerInfo.ConnectionInfo = connectionInfo;
+
+ // We can only inherit from a container node, not the root node or connection nodes
+ if (Tree.Node.GetNodeType(parentTreeNode) == Tree.Node.Type.Container)
+ {
+ containerInfo.Parent = parentTreeNode.Tag;
+ }
+ else
+ {
+ connectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+
+ treeNode.Name = name;
+ treeNode.Tag = containerInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+
+ foreach (XmlNode childNode in xmlNode.SelectNodes("./*"))
+ {
+ switch (childNode.Name)
+ {
+ case "container":
+ ImportRootOrContainer(childNode, treeNode);
+ break;
+ case "connection":
+ ImportConnection(childNode, treeNode);
+ break;
+ default:
+ throw (new FileFormatException(string.Format("Unrecognized child node ({0}).", childNode.Name)));
+ break;
+ }
+ }
+
+ containerInfo.IsExpanded = bool.Parse(xmlNode.Attributes["expanded"].InnerText);
+ if (containerInfo.IsExpanded)
+ {
+ treeNode.Expand();
+ }
+
+ ContainerList.Add(containerInfo);
+ }
+
+ private static void ImportConnection(XmlNode connectionNode, TreeNode parentTreeNode)
+ {
+ string connectionNodeType = connectionNode.Attributes["type"].Value;
+ if (!(string.Compare(strA: ref connectionNodeType, strB: "PuTTY", ignoreCase: true) == 0))
+ {
+ throw (new FileFormatException(string.Format("Unrecognized connection node type ({0}).", connectionNodeType)));
+ }
+
+ string name = connectionNode.Attributes["name"].Value;
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Connection.Info connectionInfo = ConnectionInfoFromXml(connectionNode);
+ connectionInfo.TreeNode = treeNode;
+ connectionInfo.Parent = parentTreeNode.Tag;
+
+ treeNode.Name = name;
+ treeNode.Tag = connectionInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+
+ ConnectionList.Add(connectionInfo);
+ }
+
+ private static Connection.Info CreateConnectionInfo(string name)
+ {
+ Connection.Info connectionInfo = new Connection.Info();
+ connectionInfo.Inherit = new Connection.Info.Inheritance(connectionInfo);
+ connectionInfo.Name = name;
+ return connectionInfo;
+ }
+
+ private static Connection.Info ConnectionInfoFromXml(XmlNode xmlNode)
+ {
+ XmlNode connectionInfoNode = xmlNode.SelectSingleNode("./connection_info");
+
+ string name = connectionInfoNode.SelectSingleNode("./name").InnerText;
+ Connection.Info connectionInfo = CreateConnectionInfo(name);
+
+ string protocol = connectionInfoNode.SelectSingleNode("./protocol").InnerText;
+ switch (protocol.ToLowerInvariant())
+ {
+ case "telnet":
+ connectionInfo.Protocol = Protocols.Telnet;
+ break;
+ case "ssh":
+ connectionInfo.Protocol = Protocols.SSH2;
+ break;
+ default:
+ throw (new FileFormatException(string.Format("Unrecognized protocol ({0}).", protocol)));
+ break;
+ }
+
+ connectionInfo.Hostname = connectionInfoNode.SelectSingleNode("./host").InnerText;
+ connectionInfo.Port = (int) (connectionInfoNode.SelectSingleNode("./port").InnerText);
+ connectionInfo.PuttySession = connectionInfoNode.SelectSingleNode("./session").InnerText;
+ // ./commandline
+ connectionInfo.Description = connectionInfoNode.SelectSingleNode("./description").InnerText;
+
+ XmlNode loginNode = xmlNode.SelectSingleNode("./login");
+ connectionInfo.Username = loginNode.SelectSingleNode("login").InnerText;
+ connectionInfo.Password = loginNode.SelectSingleNode("password").InnerText;
+ // ./prompt
+
+ // ./timeout/connectiontimeout
+ // ./timeout/logintimeout
+ // ./timeout/passwordtimeout
+ // ./timeout/commandtimeout
+
+ // ./command/command1
+ // ./command/command2
+ // ./command/command3
+ // ./command/command4
+ // ./command/command5
+
+ // ./options/loginmacro
+ // ./options/postcommands
+ // ./options/endlinechar
+
+ return connectionInfo;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/RemoteDesktopConnection.cs b/mRemoteV1/CS/Config/Import/RemoteDesktopConnection.cs
new file mode 100644
index 000000000..a10ca1b2c
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/RemoteDesktopConnection.cs
@@ -0,0 +1,229 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Config.Import
+{
+ public class RemoteDesktopConnection
+ {
+ public static void Import(string fileName, TreeNode parentTreeNode)
+ {
+ string[] lines = File.ReadAllLines(fileName);
+
+ string name = Path.GetFileNameWithoutExtension(fileName);
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Connection.Info connectionInfo = new Connection.Info();
+ connectionInfo.Inherit = new Connection.Info.Inheritance(connectionInfo);
+ connectionInfo.Name = name;
+ connectionInfo.TreeNode = treeNode;
+
+ if (treeNode.Parent.Tag is Container.Info)
+ {
+ connectionInfo.Parent = treeNode.Parent.Tag;
+ }
+
+ treeNode.Name = name;
+ treeNode.Tag = connectionInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+
+ foreach (string line in lines)
+ {
+ string[] parts = line.Split(new char[] {':'}, 3);
+ if (parts.Length < 3)
+ {
+ continue;
+ }
+
+ string key = parts[0];
+ string value = parts[2];
+
+ SetConnectionInfoParameter(connectionInfo, key, value);
+ }
+
+ ConnectionList.Add(connectionInfo);
+ }
+
+ private static void SetConnectionInfoParameter(Protocol.Info connectionInfo, string key, string value)
+ {
+ switch (key.ToLower())
+ {
+ case "full address":
+ Uri uri = new Uri("dummyscheme" + System.Uri.SchemeDelimiter + value);
+ if (!string.IsNullOrEmpty(uri.Host))
+ {
+ connectionInfo.Hostname = uri.Host;
+ }
+ if (!(uri.Port == -1))
+ {
+ connectionInfo.Port = uri.Port;
+ }
+ break;
+ case "server port":
+ connectionInfo.Port = (int) value;
+ break;
+ case "username":
+ connectionInfo.Username = value;
+ break;
+ case "domain":
+ connectionInfo.Domain = value;
+ break;
+ case "session bpp":
+ switch (value)
+ {
+ case 8:
+ connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors256;
+ break;
+ case 15:
+ connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors15Bit;
+ break;
+ case 16:
+ connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors16Bit;
+ break;
+ case 24:
+ connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors24Bit;
+ break;
+ case 32:
+ connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors32Bit;
+ break;
+ }
+ break;
+ case "bitmapcachepersistenable":
+ if (value == 1)
+ {
+ connectionInfo.CacheBitmaps = true;
+ }
+ else
+ {
+ connectionInfo.CacheBitmaps = false;
+ }
+ break;
+ case "screen mode id":
+ if (value == 2)
+ {
+ connectionInfo.Resolution = Connection.Protocol.RDP.RDPResolutions.Fullscreen;
+ }
+ else
+ {
+ connectionInfo.Resolution = Connection.Protocol.RDP.RDPResolutions.FitToWindow;
+ }
+ break;
+ case "connect to console":
+ if (value == 1)
+ {
+ connectionInfo.UseConsoleSession = true;
+ }
+ break;
+ case "disable wallpaper":
+ if (value == 1)
+ {
+ connectionInfo.DisplayWallpaper = true;
+ }
+ else
+ {
+ connectionInfo.DisplayWallpaper = false;
+ }
+ break;
+ case "disable themes":
+ if (value == 1)
+ {
+ connectionInfo.DisplayThemes = true;
+ }
+ else
+ {
+ connectionInfo.DisplayThemes = false;
+ }
+ break;
+ case "allow font smoothing":
+ if (value == 1)
+ {
+ connectionInfo.EnableFontSmoothing = true;
+ }
+ else
+ {
+ connectionInfo.EnableFontSmoothing = false;
+ }
+ break;
+ case "allow desktop composition":
+ if (value == 1)
+ {
+ connectionInfo.EnableDesktopComposition = true;
+ }
+ else
+ {
+ connectionInfo.EnableDesktopComposition = false;
+ }
+ break;
+ case "redirectsmartcards":
+ if (value == 1)
+ {
+ connectionInfo.RedirectSmartCards = true;
+ }
+ else
+ {
+ connectionInfo.RedirectSmartCards = false;
+ }
+ break;
+ case "redirectdrives":
+ if (value == 1)
+ {
+ connectionInfo.RedirectDiskDrives = true;
+ }
+ else
+ {
+ connectionInfo.RedirectDiskDrives = false;
+ }
+ break;
+ case "redirectcomports":
+ if (value == 1)
+ {
+ connectionInfo.RedirectPorts = true;
+ }
+ else
+ {
+ connectionInfo.RedirectPorts = false;
+ }
+ break;
+ case "redirectprinters":
+ if (value == 1)
+ {
+ connectionInfo.RedirectPrinters = true;
+ }
+ else
+ {
+ connectionInfo.RedirectPrinters = false;
+ }
+ break;
+ case "audiomode":
+ switch (value)
+ {
+ case 0:
+ connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.BringToThisComputer;
+ break;
+ case 1:
+ connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.LeaveAtRemoteComputer;
+ break;
+ case 2:
+ connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.DoNotPlay;
+ break;
+ }
+ break;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/RemoteDesktopConnectionManager.cs b/mRemoteV1/CS/Config/Import/RemoteDesktopConnectionManager.cs
new file mode 100644
index 000000000..10759a07b
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/RemoteDesktopConnectionManager.cs
@@ -0,0 +1,395 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Xml;
+using System.IO;
+using System.Runtime.InteropServices;
+using mRemoteNG.Connection.Protocol;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Config.Import
+{
+ public class RemoteDesktopConnectionManager
+ {
+ public static void Import(string fileName, TreeNode parentTreeNode)
+ {
+ XmlDocument xmlDocument = new XmlDocument();
+ xmlDocument.Load(fileName);
+
+ XmlNode rdcManNode = xmlDocument.SelectSingleNode("/RDCMan");
+ int schemaVersion = (int) (rdcManNode.Attributes["schemaVersion"].Value);
+ if (!(schemaVersion == 1))
+ {
+ throw (new FileFormatException(string.Format("Unsupported schema version ({0}).", schemaVersion)));
+ }
+
+ XmlNode versionNode = rdcManNode.SelectSingleNode("./version");
+ Version version = new Version(versionNode.InnerText);
+ if (!(version == new Version(2, 2)))
+ {
+ throw (new FileFormatException(string.Format("Unsupported file version ({0}).", version)));
+ }
+
+ XmlNode fileNode = rdcManNode.SelectSingleNode("./file");
+ ImportFileOrGroup(fileNode, parentTreeNode);
+ }
+
+ private static void ImportFileOrGroup(XmlNode xmlNode, TreeNode parentTreeNode)
+ {
+ XmlNode propertiesNode = xmlNode.SelectSingleNode("./properties");
+ string name = propertiesNode.SelectSingleNode("./name").InnerText;
+
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Container.Info containerInfo = new Container.Info();
+ containerInfo.TreeNode = treeNode;
+ containerInfo.Name = name;
+
+ Connection.Info connectionInfo = ConnectionInfoFromXml(propertiesNode);
+ connectionInfo.Parent = containerInfo;
+ connectionInfo.IsContainer = true;
+ containerInfo.ConnectionInfo = connectionInfo;
+
+ // We can only inherit from a container node, not the root node or connection nodes
+ if (Tree.Node.GetNodeType(parentTreeNode) == Tree.Node.Type.Container)
+ {
+ containerInfo.Parent = parentTreeNode.Tag;
+ }
+ else
+ {
+ connectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+
+ treeNode.Name = name;
+ treeNode.Tag = containerInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+
+ foreach (XmlNode childNode in xmlNode.SelectNodes("./group|./server"))
+ {
+ switch (childNode.Name)
+ {
+ case "group":
+ ImportFileOrGroup(childNode, treeNode);
+ break;
+ case "server":
+ ImportServer(childNode, treeNode);
+ break;
+ }
+ }
+
+ containerInfo.IsExpanded = bool.Parse(propertiesNode.SelectSingleNode("./expanded").InnerText);
+ if (containerInfo.IsExpanded)
+ {
+ treeNode.Expand();
+ }
+
+ ContainerList.Add(containerInfo);
+ }
+
+ private static void ImportServer(XmlNode serverNode, TreeNode parentTreeNode)
+ {
+ string name = serverNode.SelectSingleNode("./displayName").InnerText;
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Connection.Info connectionInfo = ConnectionInfoFromXml(serverNode);
+ connectionInfo.TreeNode = treeNode;
+ connectionInfo.Parent = parentTreeNode.Tag;
+
+ treeNode.Name = name;
+ treeNode.Tag = connectionInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+
+ ConnectionList.Add(connectionInfo);
+ }
+
+ private static Protocol.Info ConnectionInfoFromXml(XmlNode xmlNode)
+ {
+ Connection.Info connectionInfo = new Connection.Info();
+ connectionInfo.Inherit = new Connection.Info.Inheritance(connectionInfo);
+
+ string name = xmlNode.SelectSingleNode("./name").InnerText;
+
+ string displayName = "";
+ XmlNode displayNameNode = xmlNode.SelectSingleNode("./displayName");
+ if (displayNameNode == null)
+ {
+ displayName = name;
+ }
+ else
+ {
+ displayName = displayNameNode.InnerText;
+ }
+
+ connectionInfo.Name = displayName;
+ connectionInfo.Description = xmlNode.SelectSingleNode("./comment").InnerText;
+ connectionInfo.Hostname = name;
+
+ XmlNode logonCredentialsNode = xmlNode.SelectSingleNode("./logonCredentials");
+ if (logonCredentialsNode.Attributes["inherit"].Value == "None")
+ {
+ connectionInfo.Username = logonCredentialsNode.SelectSingleNode("userName").InnerText;
+
+ XmlNode passwordNode = logonCredentialsNode.SelectSingleNode("./password");
+ if (passwordNode.Attributes["storeAsClearText"].Value == "True")
+ {
+ connectionInfo.Password = passwordNode.InnerText;
+ }
+ else
+ {
+ connectionInfo.Password = DecryptPassword(passwordNode.InnerText);
+ }
+
+ connectionInfo.Domain = logonCredentialsNode.SelectSingleNode("./domain").InnerText;
+ }
+ else
+ {
+ connectionInfo.Inherit.Username = true;
+ connectionInfo.Inherit.Password = true;
+ connectionInfo.Inherit.Domain = true;
+ }
+
+ XmlNode connectionSettingsNode = xmlNode.SelectSingleNode("./connectionSettings");
+ if (connectionSettingsNode.Attributes["inherit"].Value == "None")
+ {
+ connectionInfo.UseConsoleSession = bool.Parse(connectionSettingsNode.SelectSingleNode("./connectToConsole").InnerText);
+ // ./startProgram
+ // ./workingDir
+ connectionInfo.Port = (int) (connectionSettingsNode.SelectSingleNode("./port").InnerText);
+ }
+ else
+ {
+ connectionInfo.Inherit.UseConsoleSession = true;
+ connectionInfo.Inherit.Port = true;
+ }
+
+ XmlNode gatewaySettingsNode = xmlNode.SelectSingleNode("./gatewaySettings");
+ if (gatewaySettingsNode.Attributes["inherit"].Value == "None")
+ {
+ if (gatewaySettingsNode.SelectSingleNode("./enabled").InnerText == "True")
+ {
+ connectionInfo.RDGatewayUsageMethod = RDP.RDGatewayUsageMethod.Always;
+ }
+ else
+ {
+ connectionInfo.RDGatewayUsageMethod = RDP.RDGatewayUsageMethod.Never;
+ }
+
+ connectionInfo.RDGatewayHostname = gatewaySettingsNode.SelectSingleNode("./hostName").InnerText;
+ connectionInfo.RDGatewayUsername = gatewaySettingsNode.SelectSingleNode("./userName").InnerText;
+
+ XmlNode passwordNode = logonCredentialsNode.SelectSingleNode("./password");
+ if (passwordNode.Attributes["storeAsClearText"].Value == "True")
+ {
+ connectionInfo.RDGatewayPassword = passwordNode.InnerText;
+ }
+ else
+ {
+ connectionInfo.Password = DecryptPassword(passwordNode.InnerText);
+ }
+
+ connectionInfo.RDGatewayDomain = gatewaySettingsNode.SelectSingleNode("./domain").InnerText;
+ // ./logonMethod
+ // ./localBypass
+ // ./credSharing
+ }
+ else
+ {
+ connectionInfo.Inherit.RDGatewayUsageMethod = true;
+ connectionInfo.Inherit.RDGatewayHostname = true;
+ connectionInfo.Inherit.RDGatewayUsername = true;
+ connectionInfo.Inherit.RDGatewayPassword = true;
+ connectionInfo.Inherit.RDGatewayDomain = true;
+ }
+
+ XmlNode remoteDesktopNode = xmlNode.SelectSingleNode("./remoteDesktop");
+ if (remoteDesktopNode.Attributes["inherit"].Value == "None")
+ {
+ string resolutionString = System.Convert.ToString(remoteDesktopNode.SelectSingleNode("./size").InnerText.Replace(" ", ""));
+ try
+ {
+ connectionInfo.Resolution = "Res" + System.Convert.ToString(Tools.Misc.StringToEnum(typeof(Connection.Protocol.RDP.RDPResolutions), resolutionString));
+ }
+ catch (ArgumentException)
+ {
+ connectionInfo.Resolution = RDP.RDPResolutions.FitToWindow;
+ }
+
+ if (remoteDesktopNode.SelectSingleNode("./sameSizeAsClientArea").InnerText == "True")
+ {
+ connectionInfo.Resolution = RDP.RDPResolutions.FitToWindow;
+ }
+
+ if (remoteDesktopNode.SelectSingleNode("./fullScreen").InnerText == "True")
+ {
+ connectionInfo.Resolution = RDP.RDPResolutions.Fullscreen;
+ }
+
+ connectionInfo.Colors = remoteDesktopNode.SelectSingleNode("./colorDepth").InnerText;
+ }
+ else
+ {
+ connectionInfo.Inherit.Resolution = true;
+ connectionInfo.Inherit.Colors = true;
+ }
+
+ XmlNode localResourcesNode = xmlNode.SelectSingleNode("./localResources");
+ if (localResourcesNode.Attributes["inherit"].Value == "None")
+ {
+ switch (localResourcesNode.SelectSingleNode("./audioRedirection").InnerText)
+ {
+ case 0: // Bring to this computer
+ connectionInfo.RedirectSound = RDP.RDPSounds.BringToThisComputer;
+ break;
+ case 1: // Leave at remote computer
+ connectionInfo.RedirectSound = RDP.RDPSounds.LeaveAtRemoteComputer;
+ break;
+ case 2: // Do not play
+ connectionInfo.RedirectSound = RDP.RDPSounds.DoNotPlay;
+ break;
+ }
+
+ // ./audioRedirectionQuality
+ // ./audioCaptureRedirection
+
+ switch (localResourcesNode.SelectSingleNode("./keyboardHook").InnerText)
+ {
+ case 0: // On the local computer
+ connectionInfo.RedirectKeys = false;
+ break;
+ case 1: // On the remote computer
+ connectionInfo.RedirectKeys = true;
+ break;
+ case 2: // In full screen mode only
+ connectionInfo.RedirectKeys = false;
+ break;
+ }
+
+ // ./redirectClipboard
+ connectionInfo.RedirectDiskDrives = bool.Parse(localResourcesNode.SelectSingleNode("./redirectDrives").InnerText);
+ connectionInfo.RedirectPorts = bool.Parse(localResourcesNode.SelectSingleNode("./redirectPorts").InnerText);
+ connectionInfo.RedirectPrinters = bool.Parse(localResourcesNode.SelectSingleNode("./redirectPrinters").InnerText);
+ connectionInfo.RedirectSmartCards = bool.Parse(localResourcesNode.SelectSingleNode("./redirectSmartCards").InnerText);
+ }
+ else
+ {
+ connectionInfo.Inherit.RedirectSound = true;
+ connectionInfo.Inherit.RedirectKeys = true;
+ connectionInfo.Inherit.RedirectDiskDrives = true;
+ connectionInfo.Inherit.RedirectPorts = true;
+ connectionInfo.Inherit.RedirectPrinters = true;
+ connectionInfo.Inherit.RedirectSmartCards = true;
+ }
+
+ XmlNode securitySettingsNode = xmlNode.SelectSingleNode("./securitySettings");
+ if (securitySettingsNode.Attributes["inherit"].Value == "None")
+ {
+ switch (securitySettingsNode.SelectSingleNode("./authentication").InnerText)
+ {
+ case 0: // No authentication
+ connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.NoAuth;
+ break;
+ case 1: // Do not connect if authentication fails
+ connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.AuthRequired;
+ break;
+ case 2: // Warn if authentication fails
+ connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.WarnOnFailedAuth;
+ break;
+ }
+ }
+ else
+ {
+ connectionInfo.Inherit.RDPAuthenticationLevel = true;
+ }
+
+ // ./displaySettings/thumbnailScale
+ // ./displaySettings/liveThumbnailUpdates
+ // ./displaySettings/showDisconnectedThumbnails
+
+ return connectionInfo;
+ }
+
+ private static string DecryptPassword(string ciphertext)
+ {
+ if (string.IsNullOrEmpty(ciphertext))
+ {
+ return null;
+ }
+
+ GCHandle gcHandle = new GCHandle();
+ Win32.DATA_BLOB plaintextData = new Win32.DATA_BLOB();
+ try
+ {
+ byte[] ciphertextArray = Convert.FromBase64String(ciphertext);
+ gcHandle = System.Runtime.InteropServices.GCHandle.Alloc(ciphertextArray, GCHandleType.Pinned);
+
+ Win32.DATA_BLOB ciphertextData = new Win32.DATA_BLOB();
+ ciphertextData.cbData = ciphertextArray.Length;
+ ciphertextData.pbData = gcHandle.AddrOfPinnedObject();
+
+ Win32.DATA_BLOB temp_optionalEntropy = null;
+ IntPtr temp_promptStruct = null;
+ if (!Win32.CryptUnprotectData(ref ciphertextData, null, ref temp_optionalEntropy, null, ref temp_promptStruct, 0, ref plaintextData))
+ {
+ return null;
+ }
+
+ int plaintextLength = (int) ((double) plaintextData.cbData / 2); // Char = 2 bytes
+ char[] plaintextArray = new char[plaintextLength - 1 + 1];
+ Marshal.Copy(plaintextData.pbData, plaintextArray, 0, plaintextLength);
+
+ return new string(plaintextArray);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "RemoteDesktopConnectionManager.DecryptPassword() failed.", ex: ex, logOnly: true);
+ return null;
+ }
+ finally
+ {
+ if (gcHandle.IsAllocated)
+ {
+ gcHandle.Free();
+ }
+ if (!(plaintextData.pbData == IntPtr.Zero))
+ {
+ Win32.LocalFree(plaintextData.pbData);
+ }
+ }
+ }
+
+ // ReSharper disable once ClassNeverInstantiated.Local
+ private class Win32
+ {
+ // ReSharper disable InconsistentNaming
+ // ReSharper disable IdentifierTypo
+ // ReSharper disable StringLiteralTypo
+ [DllImport("crypt32.dll", CharSet = CharSet.Unicode)]public static extern bool CryptUnprotectData(ref DATA_BLOB dataIn, string description, ref DATA_BLOB optionalEntropy, IntPtr reserved, ref IntPtr promptStruct, int flags, ref DATA_BLOB dataOut);
+
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]public static extern void LocalFree(IntPtr ptr);
+
+ public struct DATA_BLOB
+ {
+ public int cbData;
+ public IntPtr pbData;
+ }
+ // ReSharper restore StringLiteralTypo
+ // ReSharper restore IdentifierTypo
+ // ReSharper restore InconsistentNaming
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/Import/mRemoteNG.cs b/mRemoteV1/CS/Config/Import/mRemoteNG.cs
new file mode 100644
index 000000000..cdecdf49c
--- /dev/null
+++ b/mRemoteV1/CS/Config/Import/mRemoteNG.cs
@@ -0,0 +1,67 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Config.Import
+{
+ // ReSharper disable once InconsistentNaming
+ public class mRemoteNG
+ {
+ public static void Import(string fileName, TreeNode parentTreeNode)
+ {
+ string name = Path.GetFileNameWithoutExtension(fileName);
+ TreeNode treeNode = new TreeNode(name);
+ parentTreeNode.Nodes.Add(treeNode);
+
+ Container.Info containerInfo = new Container.Info();
+ containerInfo.TreeNode = treeNode;
+ containerInfo.Name = name;
+
+ Connection.Info connectionInfo = new Connection.Info();
+ connectionInfo.Inherit = new Connection.Info.Inheritance(connectionInfo);
+ connectionInfo.Name = name;
+ connectionInfo.TreeNode = treeNode;
+ connectionInfo.Parent = containerInfo;
+ connectionInfo.IsContainer = true;
+ containerInfo.ConnectionInfo = connectionInfo;
+
+ // We can only inherit from a container node, not the root node or connection nodes
+ if (Tree.Node.GetNodeType(parentTreeNode) == Tree.Node.Type.Container)
+ {
+ containerInfo.Parent = parentTreeNode.Tag;
+ }
+ else
+ {
+ connectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+
+ treeNode.Name = name;
+ treeNode.Tag = containerInfo;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+
+ Connections.Load connectionsLoad = new Connections.Load();
+ connectionsLoad.ConnectionFileName = fileName;
+ connectionsLoad.RootTreeNode = treeNode;
+ connectionsLoad.ConnectionList = ConnectionList;
+ connectionsLoad.ContainerList = ContainerList;
+
+ connectionsLoad.Load_Renamed(true);
+
+ ContainerList.Add(containerInfo);
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Config/KeyboardShortcuts.cs b/mRemoteV1/CS/Config/KeyboardShortcuts.cs
new file mode 100644
index 000000000..53d9f4fbe
--- /dev/null
+++ b/mRemoteV1/CS/Config/KeyboardShortcuts.cs
@@ -0,0 +1,467 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+//using mRemoteNG.App.Runtime;
+using SharedLibraryNG;
+
+
+namespace mRemoteNG.Config
+{
+ public class KeyboardShortcuts
+ {
+#region Public Properties
+ private static KeyboardShortcutMap _defaultMap = null;
+public static KeyboardShortcutMap DefaultMap
+ {
+ get
+ {
+ LoadDefaultMap();
+ return _defaultMap;
+ }
+ }
+
+ private static KeyboardShortcutMap _map;
+public static KeyboardShortcutMap Map
+ {
+ get
+ {
+ Load();
+ return _map;
+ }
+ set
+ {
+ CancelKeyNotifications();
+ _map = value;
+ Save();
+ RequestKeyNotifications(_handle);
+ }
+ }
+#endregion
+
+#region Public Methods
+ public static void RequestKeyNotifications(IntPtr handle)
+ {
+ // ReSharper disable LocalizableElement
+ if (handle == IntPtr.Zero)
+ {
+ throw (new ArgumentException("The handle cannot be null.", "handle"));
+ }
+ if (!(_handle == IntPtr.Zero) && !(_handle == handle))
+ {
+ throw (new ArgumentException("The handle must match the handle that was specified the first time this function was called.", "handle"));
+ }
+ // ReSharper restore LocalizableElement
+ _handle = handle;
+ foreach (ShortcutMapping shortcutMapping in Map.Mappings)
+ {
+ KeyboardHook.RequestKeyNotification(handle, shortcutMapping.Key.KeyCode, shortcutMapping.Key.ModifierKeys, false);
+ }
+ }
+
+ public static ShortcutCommand CommandFromHookKeyMessage(Message m)
+ {
+ KeyboardHook.HookKeyMsgData msgData = Marshal.PtrToStructure(m.LParam, typeof(KeyboardHook.HookKeyMsgData));
+ return Map.GetCommand(msgData.KeyCode, msgData.ModifierKeys);
+ }
+#endregion
+
+#region Private Fields
+ // ReSharper disable once UnusedMember.Local
+ private static KeyboardHook _keyboardHook = new KeyboardHook();
+ private static bool _mapLoaded = false;
+ private static IntPtr _handle = IntPtr.Zero;
+#endregion
+
+#region Private Methods
+ private static void LoadDefaultMap()
+ {
+ if (_defaultMap != null)
+ {
+ return ;
+ }
+ _defaultMap = new KeyboardShortcutMap();
+ _defaultMap.AddFromConfigString(ShortcutCommand.PreviousTab, System.Convert.ToString(My.Settings.Default.Properties["KeysPreviousTab"].DefaultValue));
+ _defaultMap.AddFromConfigString(ShortcutCommand.NextTab, System.Convert.ToString(My.Settings.Default.Properties["KeysNextTab"].DefaultValue));
+ }
+
+ private static void Load()
+ {
+ if (_mapLoaded)
+ {
+ return ;
+ }
+ _map = new KeyboardShortcutMap();
+ _map.AddFromConfigString(ShortcutCommand.PreviousTab, System.Convert.ToString(My.Settings.Default.KeysPreviousTab));
+ _map.AddFromConfigString(ShortcutCommand.NextTab, System.Convert.ToString(My.Settings.Default.KeysNextTab));
+ _mapLoaded = true;
+ }
+
+ private static void Save()
+ {
+ if (_map == null)
+ {
+ return ;
+ }
+ My.Settings.Default.KeysPreviousTab = _map.GetConfigString(ShortcutCommand.PreviousTab);
+ My.Settings.Default.KeysNextTab = _map.GetConfigString(ShortcutCommand.NextTab);
+ }
+
+ private static void CancelKeyNotifications()
+ {
+ if (_handle == IntPtr.Zero)
+ {
+ return ;
+ }
+ foreach (ShortcutMapping shortcutMapping in Map.Mappings)
+ {
+ KeyboardHook.CancelKeyNotification(_handle, shortcutMapping.Key.KeyCode, shortcutMapping.Key.ModifierKeys, false);
+ }
+ }
+#endregion
+ }
+
+ public class KeyboardShortcutMap : ICloneable
+ {
+
+#region Public Properties
+ private List _mappings;
+public List Mappings
+ {
+ get
+ {
+ return _mappings;
+ }
+ }
+#endregion
+
+#region Constructors
+ public KeyboardShortcutMap()
+ {
+ _mappings = new List();
+ }
+
+ public KeyboardShortcutMap(List mappings)
+ {
+ _mappings = mappings;
+ }
+#endregion
+
+#region Public Methods
+ public void Add(ShortcutCommand command, ShortcutKey shortcutKey)
+ {
+ if (Mappings.Contains(new ShortcutMapping(command, shortcutKey)))
+ {
+ return ;
+ }
+ Mappings.Add(new ShortcutMapping(command, shortcutKey));
+ }
+
+ public void AddRange(ShortcutCommand command, IEnumerable shortcutKeys)
+ {
+ foreach (ShortcutKey shortcutKey in shortcutKeys)
+ {
+ Add(command, shortcutKey);
+ }
+ }
+
+ public void Remove(ShortcutCommand command, ShortcutKey shortcutKey)
+ {
+ Mappings.Remove(new ShortcutMapping(command, shortcutKey));
+ }
+
+ public void AddFromConfigString(ShortcutCommand command, string configString)
+ {
+ foreach (ShortcutKey shortcutKey in ParseConfigString(configString))
+ {
+ Add(command, shortcutKey);
+ }
+ }
+
+ public string GetConfigString(ShortcutCommand command)
+ {
+ List parts = new List();
+ foreach (ShortcutKey shortcutKey in GetShortcutKeys(command))
+ {
+ parts.Add(shortcutKey.ToConfigString());
+ }
+ return string.Join(", ", parts.ToArray());
+ }
+
+ public ShortcutKey[] GetShortcutKeys(ShortcutCommand command)
+ {
+ List shortcutKeys = new List();
+ foreach (ShortcutMapping shortcutMapping in Mappings)
+ {
+ if (shortcutMapping.Command == command)
+ {
+ shortcutKeys.Add(shortcutMapping.Key);
+ }
+ }
+ return shortcutKeys.ToArray();
+ }
+
+ public void SetShortcutKeys(ShortcutCommand command, IEnumerable shortcutKeys)
+ {
+ ClearShortcutKeys(command);
+ AddRange(command, shortcutKeys);
+ }
+
+ public ShortcutCommand GetCommand(int keyCode, KeyboardHook.ModifierKeys modifierKeys)
+ {
+ return GetCommand(new ShortcutKey(keyCode, modifierKeys));
+ }
+
+ public object Clone()
+ {
+ List newMappings = new List();
+ newMappings.AddRange(Mappings);
+ return new KeyboardShortcutMap(newMappings);
+ }
+#endregion
+
+#region Private Methods
+ private static ShortcutKey[] ParseConfigString(string shortcutKeysString)
+ {
+ List shortcutKeys = new List();
+ foreach (string shortcutKeyString in shortcutKeysString.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries))
+ {
+ try
+ {
+ shortcutKeys.Add(ShortcutKey.FromConfigString(shortcutKeyString.Trim()));
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: string.Format("KeyboardShortcuts.ParseShortcutKeysString({0}) failed at {1}.", shortcutKeysString, shortcutKeyString), ex: ex, logOnly: true);
+ continue;
+ }
+ }
+ return shortcutKeys.ToArray();
+ }
+
+ private ShortcutCommand GetCommand(ShortcutKey shortcutKey)
+ {
+ foreach (ShortcutMapping shortcutMapping in Mappings)
+ {
+ if (ShortcutKeysMatch(shortcutMapping.Key, shortcutKey))
+ {
+ return shortcutMapping.Command;
+ }
+ }
+ return ShortcutCommand.None;
+ }
+
+ private static bool
+ ShortcutKeysMatch(ShortcutKey wanted, ShortcutKey pressed)
+ {
+ if (!(wanted.KeyCode == pressed.KeyCode))
+ {
+ return false;
+ }
+ return KeyboardHook.ModifierKeysMatch(wanted.ModifierKeys, pressed.ModifierKeys);
+ }
+
+ private void ClearShortcutKeys(ShortcutCommand command)
+ {
+ List mappingsToRemove = new List();
+ foreach (ShortcutMapping mapping in Mappings)
+ {
+ if (mapping.Command == command)
+ {
+ mappingsToRemove.Add(mapping);
+ }
+ }
+
+ foreach (ShortcutMapping mapping in mappingsToRemove)
+ {
+ Mappings.Remove(mapping);
+ }
+ }
+#endregion
+ }
+
+ [ImmutableObject(true)]public class ShortcutMapping : IEquatable
+ {
+
+#region Public Properties
+ private ShortcutCommand _command;
+public ShortcutCommand Command
+ {
+ get
+ {
+ return _command;
+ }
+ }
+
+ private ShortcutKey _key;
+public ShortcutKey Key
+ {
+ get
+ {
+ return _key;
+ }
+ }
+#endregion
+
+#region Constructors
+ public ShortcutMapping(ShortcutCommand command, ShortcutKey key)
+ {
+ _command = command;
+ _key = key;
+ }
+#endregion
+
+#region Public Methods
+ public bool Equals(ShortcutMapping other)
+ {
+ if (!(Command == other.Command))
+ {
+ return false;
+ }
+ if (!(Key == other.Key))
+ {
+ return false;
+ }
+ return true;
+ }
+#endregion
+ }
+
+ [ImmutableObject(true)]public class ShortcutKey : IEquatable
+ {
+
+#region Public Properties
+ private int _keyCode;
+public int KeyCode
+ {
+ get
+ {
+ return _keyCode;
+ }
+ }
+
+ private KeyboardHook.ModifierKeys _modifierKeys;
+public KeyboardHook.ModifierKeys ModifierKeys
+ {
+ get
+ {
+ return _modifierKeys;
+ }
+ }
+#endregion
+
+#region Constructors
+ public ShortcutKey(int keyCode, KeyboardHook.ModifierKeys modifierKeys)
+ {
+ _keyCode = keyCode;
+ _modifierKeys = modifierKeys;
+ }
+
+ public ShortcutKey(Keys keysValue)
+ {
+ _keyCode = (int) (keysValue & Keys.KeyCode);
+ if (!((keysValue & Keys.Shift) == 0))
+ {
+ _modifierKeys = _modifierKeys | KeyboardHook.ModifierKeys.Shift;
+ }
+ if (!((keysValue & Keys.Control) == 0))
+ {
+ _modifierKeys = _modifierKeys | KeyboardHook.ModifierKeys.Control;
+ }
+ if (!((keysValue & Keys.Alt) == 0))
+ {
+ _modifierKeys = _modifierKeys | KeyboardHook.ModifierKeys.Alt;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public string ToConfigString()
+ {
+ return string.Join("/", new string[] {KeyCode, Convert.ToInt32(ModifierKeys)});
+ }
+
+ public static ShortcutKey FromConfigString(string shortcutKeyString)
+ {
+ string[] parts = shortcutKeyString.Split(new char[] {'/'}, 2);
+ if (!(parts.Length == 2))
+ {
+ throw (new ArgumentException(string.Format("ShortcutKey.FromString({0}) failed. parts.Length != 2", shortcutKeyString), shortcutKeyString));
+ }
+ return new ShortcutKey(Convert.ToInt32(parts[0]), Convert.ToInt32(parts[1]));
+ }
+
+ public override string ToString()
+ {
+ return HotkeyControl.KeysToString(this);
+ }
+
+ public bool Equals(ShortcutKey other)
+ {
+ if (!(KeyCode == other.KeyCode))
+ {
+ return false;
+ }
+ if (!(ModifierKeys == other.ModifierKeys))
+ {
+ return false;
+ }
+ return true;
+ }
+#endregion
+
+#region Operators
+ public static bool operator ==(ShortcutKey shortcutKey1, ShortcutKey shortcutKey2)
+ {
+ return shortcutKey1.Equals(shortcutKey2);
+ }
+
+ public static bool operator !=(ShortcutKey shortcutKey1, ShortcutKey shortcutKey2)
+ {
+ return !shortcutKey1.Equals(shortcutKey2);
+ }
+
+ // This is a narrowing conversion because (Keys Or Keys.Modifiers) cannot hold all possible values of KeyboardHook.ModifierKeys
+ public static explicit operator Keys (ShortcutKey shortcutKey)
+ {
+ Keys keysValue = System.Windows.Forms.Keys.A;
+ if (!((shortcutKey.ModifierKeys & KeyboardHook.ModifierKeys.Shift) == 0))
+ {
+ keysValue = (Keys) (keysValue | Keys.Shift);
+ }
+ if (!((shortcutKey.ModifierKeys & KeyboardHook.ModifierKeys.Control) == 0))
+ {
+ keysValue = (Keys) (keysValue | Keys.Control);
+ }
+ if (!((shortcutKey.ModifierKeys & KeyboardHook.ModifierKeys.Alt) == 0))
+ {
+ keysValue = (Keys) (keysValue | Keys.Alt);
+ }
+ return keysValue;
+ }
+
+ public static implicit operator ShortcutKey (Keys keys)
+ {
+ return new ShortcutKey(keys);
+ }
+#endregion
+ }
+
+ public enum ShortcutCommand
+ {
+ None = 0,
+ PreviousTab,
+ NextTab
+ }
+}
diff --git a/mRemoteV1/CS/Config/Putty/Provider.cs b/mRemoteV1/CS/Config/Putty/Provider.cs
new file mode 100644
index 000000000..66f95f089
--- /dev/null
+++ b/mRemoteV1/CS/Config/Putty/Provider.cs
@@ -0,0 +1,160 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Config.Putty
+{
+ public abstract class Provider
+ {
+#region Public Methods
+ private TreeNode _rootTreeNode;
+public TreeNode RootTreeNode
+ {
+ get
+ {
+ if (_rootTreeNode == null)
+ {
+ _rootTreeNode = CreateRootTreeNode();
+ }
+ return _rootTreeNode;
+ }
+ }
+
+ private Root.PuttySessions.Info _rootInfo;
+public Root.PuttySessions.Info RootInfo
+ {
+ get
+ {
+ if (_rootInfo == null)
+ {
+ _rootInfo = CreateRootInfo();
+ }
+ return _rootInfo;
+ }
+ }
+
+ public abstract string[] GetSessionNames(bool raw = false);
+ public abstract Connection.PuttySession.Info GetSession(string sessionName);
+
+ public virtual Connection.PuttySession.Info[] GetSessions()
+ {
+ List sessionList = new List();
+ Connection.Info sessionInfo = default(Connection.Info);
+ foreach (string sessionName in GetSessionNames(true))
+ {
+ sessionInfo = GetSession(sessionName);
+ if (sessionInfo == null || string.IsNullOrEmpty(sessionInfo.Hostname))
+ {
+ continue;
+ }
+ sessionList.Add(sessionInfo);
+ }
+ return sessionList.ToArray();
+ }
+
+ public virtual void StartWatcher()
+ {
+
+ }
+
+ public virtual void StopWatcher()
+ {
+
+ }
+#endregion
+
+#region Public Events
+ public delegate void SessionChangedEventHandler(object sender, SessionChangedEventArgs e);
+ private SessionChangedEventHandler SessionChangedEvent;
+
+ public event SessionChangedEventHandler SessionChanged
+ {
+ add
+ {
+ SessionChangedEvent = (SessionChangedEventHandler) System.Delegate.Combine(SessionChangedEvent, value);
+ }
+ remove
+ {
+ SessionChangedEvent = (SessionChangedEventHandler) System.Delegate.Remove(SessionChangedEvent, value);
+ }
+ }
+
+#endregion
+
+#region Public Classes
+ public class SessionChangedEventArgs : EventArgs
+ {
+ }
+#endregion
+
+#region Protected Methods
+ private delegate TreeNode CreateRootTreeNodeDelegate();
+ protected virtual TreeNode CreateRootTreeNode()
+ {
+ TreeView treeView = Tree.Node.TreeView;
+ if (treeView == null)
+ {
+ return null;
+ }
+ if (treeView.InvokeRequired)
+ {
+ return treeView.Invoke(new CreateRootTreeNodeDelegate(CreateRootTreeNode));
+ }
+
+ TreeNode newTreeNode = new TreeNode();
+ RootInfo.TreeNode = newTreeNode;
+
+ newTreeNode.Name = _rootInfo.Name;
+ newTreeNode.Text = _rootInfo.Name;
+ newTreeNode.Tag = _rootInfo;
+ newTreeNode.ImageIndex = Images.Enums.TreeImage.PuttySessions;
+ newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.PuttySessions;
+
+ return newTreeNode;
+ }
+
+ protected virtual Root.PuttySessions.Info CreateRootInfo()
+ {
+ Root.PuttySessions.Info newRootInfo = new Root.PuttySessions.Info();
+
+ if (string.IsNullOrEmpty(System.Convert.ToString(My.Settings.Default.PuttySavedSessionsName)))
+ {
+ newRootInfo.Name = Language.strPuttySavedSessionsRootName;
+ }
+ else
+ {
+ newRootInfo.Name = System.Convert.ToString(My.Settings.Default.PuttySavedSessionsName);
+ }
+
+ if (string.IsNullOrEmpty(System.Convert.ToString(My.Settings.Default.PuttySavedSessionsPanel)))
+ {
+ newRootInfo.Panel = Language.strGeneral;
+ }
+ else
+ {
+ newRootInfo.Panel = System.Convert.ToString(My.Settings.Default.PuttySavedSessionsPanel);
+ }
+
+ return newRootInfo;
+ }
+
+ protected virtual void OnSessionChanged(SessionChangedEventArgs e)
+ {
+ if (SessionChangedEvent != null)
+ SessionChangedEvent(this, new SessionChangedEventArgs());
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Putty/RegistryProvider.cs b/mRemoteV1/CS/Config/Putty/RegistryProvider.cs
new file mode 100644
index 000000000..7f4846b4a
--- /dev/null
+++ b/mRemoteV1/CS/Config/Putty/RegistryProvider.cs
@@ -0,0 +1,179 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Management;
+using mRemoteNG.App;
+using mRemoteNG.Messages;
+using Microsoft.Win32;
+using mRemoteNG.Connection.Protocol;
+using System.Security.Principal;
+
+
+namespace mRemoteNG.Config.Putty
+{
+ public class RegistryProvider : Provider
+ {
+
+#region Public Methods
+ public override string[] GetSessionNames(bool raw = false)
+ {
+ RegistryKey sessionsKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey);
+ if (sessionsKey == null)
+ {
+ return new string[] {};
+ }
+
+ List sessionNames = new List();
+ foreach (string sessionName in sessionsKey.GetSubKeyNames())
+ {
+ if (raw)
+ {
+ sessionNames.Add(sessionName);
+ }
+ else
+ {
+ sessionNames.Add(System.Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")));
+ }
+ }
+
+ if (raw)
+ {
+ if (!sessionNames.Contains("Default%20Settings")) // Do not localize
+ {
+ sessionNames.Insert(0, "Default%20Settings");
+ }
+ }
+ else
+ {
+ if (!sessionNames.Contains("Default Settings"))
+ {
+ sessionNames.Insert(0, "Default Settings");
+ }
+ }
+
+ return sessionNames.ToArray();
+ }
+
+ public override Connection.PuttySession.Info GetSession(string sessionName)
+ {
+ RegistryKey sessionsKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey);
+ if (sessionsKey == null)
+ {
+ return null;
+ }
+
+ RegistryKey sessionKey = sessionsKey.OpenSubKey(sessionName);
+ if (sessionKey == null)
+ {
+ return null;
+ }
+
+ sessionName = System.Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"));
+
+ Connection.PuttySession.Info sessionInfo = new Connection.PuttySession.Info();
+ sessionInfo.PuttySession = sessionName;
+ sessionInfo.Name = sessionName;
+ sessionInfo.Hostname = System.Convert.ToString(sessionKey.GetValue("HostName"));
+ sessionInfo.Username = System.Convert.ToString(sessionKey.GetValue("UserName"));
+ string protocol = System.Convert.ToString(sessionKey.GetValue("Protocol"));
+ if (protocol == null)
+ {
+ protocol = "ssh";
+ }
+ switch (protocol.ToLowerInvariant())
+ {
+ case "raw":
+ sessionInfo.Protocol = Protocols.RAW;
+ break;
+ case "rlogin":
+ sessionInfo.Protocol = Protocols.Rlogin;
+ break;
+ case "serial":
+ return null;
+ case "ssh":
+ object sshVersionObject = sessionKey.GetValue("SshProt");
+ if (sshVersionObject != null)
+ {
+ int sshVersion = System.Convert.ToInt32(sshVersionObject);
+ if (sshVersion >= 2)
+ {
+ sessionInfo.Protocol = Protocols.SSH2;
+ }
+ else
+ {
+ sessionInfo.Protocol = Protocols.SSH1;
+ }
+ }
+ else
+ {
+ sessionInfo.Protocol = Protocols.SSH2;
+ }
+ break;
+ case "telnet":
+ sessionInfo.Protocol = Protocols.Telnet;
+ break;
+ default:
+ return null;
+ }
+ sessionInfo.Port = System.Convert.ToInt32(sessionKey.GetValue("PortNumber"));
+
+ return sessionInfo;
+ }
+
+ public override void StartWatcher()
+ {
+ if (_eventWatcher != null)
+ {
+ return ;
+ }
+
+ try
+ {
+ string currentUserSid = WindowsIdentity.GetCurrent().User.Value;
+ string key = System.Convert.ToString(string.Join("\\", new[] {currentUserSid, PuttySessionsKey}).Replace("\\", "\\\\"));
+ WqlEventQuery query = new WqlEventQuery(string.Format("SELECT * FROM RegistryTreeChangeEvent WHERE Hive = \'HKEY_USERS\' AND RootPath = \'{0}\'", key));
+ _eventWatcher = new ManagementEventWatcher(query);
+ _eventWatcher.EventArrived += OnManagementEventArrived;
+ _eventWatcher.Start();
+ }
+ catch (Exception ex)
+ {
+ Runtime.MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, true);
+ }
+ }
+
+ public override void StopWatcher()
+ {
+ if (_eventWatcher == null)
+ {
+ return ;
+ }
+ _eventWatcher.Stop();
+ _eventWatcher.Dispose();
+ _eventWatcher = null;
+ }
+#endregion
+
+#region Private Fields
+ private const string PuttySessionsKey = "Software\\SimonTatham\\PuTTY\\Sessions";
+ private static ManagementEventWatcher _eventWatcher;
+#endregion
+
+#region Private Methods
+ private void OnManagementEventArrived(object sender, EventArrivedEventArgs e)
+ {
+ OnSessionChanged(new SessionChangedEventArgs());
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Putty/Sessions.cs b/mRemoteV1/CS/Config/Putty/Sessions.cs
new file mode 100644
index 000000000..88c525257
--- /dev/null
+++ b/mRemoteV1/CS/Config/Putty/Sessions.cs
@@ -0,0 +1,240 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.Config.Putty
+{
+ public class Sessions
+ {
+#region Public Methods
+ private delegate void AddSessionsToTreeDelegate();
+ public static void AddSessionsToTree()
+ {
+ TreeView treeView = Tree.Node.TreeView;
+ if (treeView == null)
+ {
+ return ;
+ }
+ if (treeView.InvokeRequired)
+ {
+ treeView.Invoke(new AddSessionsToTreeDelegate(AddSessionsToTree));
+ return ;
+ }
+
+ foreach (Provider provider in Providers)
+ {
+ TreeNode rootTreeNode = provider.RootTreeNode;
+ bool inUpdate = false;
+
+ List savedSessions = new List(provider.GetSessions());
+ if (!IsProviderEnabled(provider) || savedSessions == null || savedSessions.Count == 0)
+ {
+ if (rootTreeNode != null && treeView.Nodes.Contains(rootTreeNode))
+ {
+ treeView.BeginUpdate();
+ treeView.Nodes.Remove(rootTreeNode);
+ treeView.EndUpdate();
+ }
+ continue;
+ }
+
+ if (!treeView.Nodes.Contains(rootTreeNode))
+ {
+ if (!inUpdate)
+ {
+ treeView.BeginUpdate();
+ inUpdate = true;
+ }
+ treeView.Nodes.Add(rootTreeNode);
+ }
+
+ List newTreeNodes = new List();
+ foreach (Connection.PuttySession.Info sessionInfo in savedSessions)
+ {
+ TreeNode treeNode = default(TreeNode);
+ bool isNewNode = false;
+ if (rootTreeNode.Nodes.ContainsKey(sessionInfo.Name))
+ {
+ treeNode = rootTreeNode.Nodes[sessionInfo.Name];
+ isNewNode = false;
+ }
+ else
+ {
+ treeNode = Tree.Node.AddNode(Tree.Node.Type.PuttySession, sessionInfo.Name);
+ if (treeNode == null)
+ {
+ continue;
+ }
+ treeNode.Name = treeNode.Text;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ isNewNode = true;
+ }
+
+ sessionInfo.RootPuttySessionsInfo = provider.RootInfo;
+ sessionInfo.TreeNode = treeNode;
+ sessionInfo.Inherit.TurnOffInheritanceCompletely();
+
+ treeNode.Tag = sessionInfo;
+
+ if (isNewNode)
+ {
+ newTreeNodes.Add(treeNode);
+ }
+ }
+
+ foreach (TreeNode treeNode in rootTreeNode.Nodes)
+ {
+ if (!savedSessions.Contains(treeNode.Tag))
+ {
+ if (!inUpdate)
+ {
+ treeView.BeginUpdate();
+ inUpdate = true;
+ }
+ rootTreeNode.Nodes.Remove(treeNode);
+ }
+ }
+
+ if (!(newTreeNodes.Count == 0))
+ {
+ if (!inUpdate)
+ {
+ treeView.BeginUpdate();
+ inUpdate = true;
+ }
+ rootTreeNode.Nodes.AddRange(newTreeNodes.ToArray());
+ }
+
+ if (inUpdate)
+ {
+ Tree.Node.Sort(rootTreeNode, SortOrder.Ascending);
+ rootTreeNode.Expand();
+ treeView.EndUpdate();
+ }
+ }
+ }
+
+ public static void StartWatcher()
+ {
+ foreach (Provider provider in Providers)
+ {
+ provider.StartWatcher();
+ provider.SessionChanged += SessionChanged;
+ }
+ }
+
+ public static void StopWatcher()
+ {
+ foreach (Provider provider in Providers)
+ {
+ provider.StopWatcher();
+ provider.SessionChanged -= SessionChanged;
+ }
+ }
+
+ public static void SessionChanged(object sender, Provider.SessionChangedEventArgs e)
+ {
+ AddSessionsToTree();
+ }
+#endregion
+
+#region Private Methods
+ private static List _providers;
+private static List Providers
+ {
+ get
+ {
+ if (_providers == null || _providers.Count == 0)
+ {
+ AddProviders();
+ }
+ return _providers;
+ }
+ }
+
+ private static void AddProviders()
+ {
+ _providers = new List();
+ _providers.Add(new RegistryProvider());
+ _providers.Add(new XmingProvider());
+ }
+
+ private static string[] GetSessionNames(bool raw = false)
+ {
+ List sessionNames = new List();
+ foreach (Provider provider in Providers)
+ {
+ if (!IsProviderEnabled(provider))
+ {
+ continue;
+ }
+ sessionNames.AddRange(provider.GetSessionNames(raw));
+ }
+ return sessionNames.ToArray();
+ }
+
+ private static bool IsProviderEnabled(Provider provider)
+ {
+ bool enabled = true;
+ if (PuttyTypeDetector.GetPuttyType() == PuttyTypeDetector.PuttyType.Xming)
+ {
+ if ((provider) is RegistryProvider)
+ {
+ enabled = false;
+ }
+ }
+ else
+ {
+ if ((provider) is XmingProvider)
+ {
+ enabled = false;
+ }
+ }
+ return enabled;
+ }
+#endregion
+
+#region Public Classes
+ public class SessionList : StringConverter
+ {
+
+public static string[] Names
+ {
+ get
+ {
+ return GetSessionNames();
+ }
+ }
+
+ public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return new StandardValuesCollection(Names);
+ }
+
+ public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return true;
+ }
+
+ public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+ {
+ return true;
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Config/Putty/XmingProvider.cs b/mRemoteV1/CS/Config/Putty/XmingProvider.cs
new file mode 100644
index 000000000..c84d0a35a
--- /dev/null
+++ b/mRemoteV1/CS/Config/Putty/XmingProvider.cs
@@ -0,0 +1,393 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using mRemoteNG.App;
+using mRemoteNG.Messages;
+using mRemoteNG.Connection.Protocol;
+using System.Text.RegularExpressions;
+
+
+namespace mRemoteNG.Config.Putty
+{
+ public class XmingProvider : Provider
+ {
+
+#region Public Methods
+ public override string[] GetSessionNames(bool raw = false)
+ {
+ string sessionsFolderPath = GetSessionsFolderPath();
+ if (!Directory.Exists(sessionsFolderPath))
+ {
+ return new string[] {};
+ }
+
+ List sessionNames = new List();
+ foreach (string sessionName in Directory.GetFiles(sessionsFolderPath))
+ {
+ sessionName = Path.GetFileName(sessionName);
+ if (raw)
+ {
+ sessionNames.Add(sessionName);
+ }
+ else
+ {
+ sessionNames.Add(System.Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")));
+ }
+ }
+
+ if (raw)
+ {
+ if (!sessionNames.Contains("Default%20Settings")) // Do not localize
+ {
+ sessionNames.Insert(0, "Default%20Settings");
+ }
+ }
+ else
+ {
+ if (!sessionNames.Contains("Default Settings"))
+ {
+ sessionNames.Insert(0, "Default Settings");
+ }
+ }
+
+ List registrySessionNames = new List();
+ foreach (string sessionName in RegistryProvider.GetSessionNames(raw))
+ {
+ registrySessionNames.Add(string.Format(RegistrySessionNameFormat, sessionName));
+ }
+
+ sessionNames.AddRange(registrySessionNames);
+ sessionNames.Sort();
+
+ return sessionNames.ToArray();
+ }
+
+ public override Connection.PuttySession.Info GetSession(string sessionName)
+ {
+ string registrySessionName = GetRegistrySessionName(sessionName);
+ if (!string.IsNullOrEmpty(registrySessionName))
+ {
+ return ModifyRegistrySessionInfo(RegistryProvider.GetSession(registrySessionName));
+ }
+
+ string sessionsFolderPath = GetSessionsFolderPath();
+ if (!Directory.Exists(sessionsFolderPath))
+ {
+ return null;
+ }
+
+ string sessionFile = Path.Combine(sessionsFolderPath, sessionName);
+ if (!File.Exists(sessionFile))
+ {
+ return null;
+ }
+
+ sessionName = System.Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"));
+
+ SessionFileReader sessionFileReader = new SessionFileReader(sessionFile);
+ Connection.PuttySession.Info sessionInfo = new Connection.PuttySession.Info();
+ sessionInfo.PuttySession = sessionName;
+ sessionInfo.Name = sessionName;
+ sessionInfo.Hostname = sessionFileReader.GetValue("HostName");
+ sessionInfo.Username = sessionFileReader.GetValue("UserName");
+ string protocol = sessionFileReader.GetValue("Protocol");
+ if (protocol == null)
+ {
+ protocol = "ssh";
+ }
+ switch (protocol.ToLowerInvariant())
+ {
+ case "raw":
+ sessionInfo.Protocol = Protocols.RAW;
+ break;
+ case "rlogin":
+ sessionInfo.Protocol = Protocols.Rlogin;
+ break;
+ case "serial":
+ return null;
+ case "ssh":
+ object sshVersionObject = sessionFileReader.GetValue("SshProt");
+ if (sshVersionObject != null)
+ {
+ int sshVersion = System.Convert.ToInt32(sshVersionObject);
+ if (sshVersion >= 2)
+ {
+ sessionInfo.Protocol = Protocols.SSH2;
+ }
+ else
+ {
+ sessionInfo.Protocol = Protocols.SSH1;
+ }
+ }
+ else
+ {
+ sessionInfo.Protocol = Protocols.SSH2;
+ }
+ break;
+ case "telnet":
+ sessionInfo.Protocol = Protocols.Telnet;
+ break;
+ default:
+ return null;
+ }
+ sessionInfo.Port = (int) (sessionFileReader.GetValue("PortNumber"));
+
+ return sessionInfo;
+ }
+
+ public override void StartWatcher()
+ {
+ RegistryProvider.StartWatcher();
+ RegistryProvider.SessionChanged += OnRegistrySessionChanged;
+
+ if (_eventWatcher != null)
+ {
+ return ;
+ }
+
+ try
+ {
+ _eventWatcher = new FileSystemWatcher(GetSessionsFolderPath());
+ _eventWatcher.NotifyFilter = (System.IO.NotifyFilters) (NotifyFilters.FileName | NotifyFilters.LastWrite);
+ _eventWatcher.Changed += OnFileSystemEventArrived;
+ _eventWatcher.Created += OnFileSystemEventArrived;
+ _eventWatcher.Deleted += OnFileSystemEventArrived;
+ _eventWatcher.Renamed += OnFileSystemEventArrived;
+ _eventWatcher.EnableRaisingEvents = true;
+ }
+ catch (Exception ex)
+ {
+ Runtime.MessageCollector.AddExceptionMessage("XmingPortablePuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, true);
+ }
+ }
+
+ public override void StopWatcher()
+ {
+ RegistryProvider.StopWatcher();
+ RegistryProvider.SessionChanged -= OnRegistrySessionChanged;
+
+ if (_eventWatcher == null)
+ {
+ return ;
+ }
+ _eventWatcher.EnableRaisingEvents = false;
+ _eventWatcher.Dispose();
+ _eventWatcher = null;
+ }
+#endregion
+
+#region Private Fields
+ private const string RegistrySessionNameFormat = "{0} [registry]";
+ private const string RegistrySessionNamePattern = "(.*)\\ \\[registry\\]";
+
+ private static readonly RegistryProvider RegistryProvider = new RegistryProvider();
+ private static FileSystemWatcher _eventWatcher;
+#endregion
+
+#region Private Methods
+ private static string GetPuttyConfPath()
+ {
+ string puttyPath = "";
+ if (My.Settings.Default.UseCustomPuttyPath)
+ {
+ puttyPath = System.Convert.ToString(My.Settings.Default.CustomPuttyPath);
+ }
+ else
+ {
+ puttyPath = App.Info.General.PuttyPath;
+ }
+ return Path.Combine(Path.GetDirectoryName(puttyPath), "putty.conf");
+ }
+
+ private static string GetSessionsFolderPath()
+ {
+ string puttyConfPath = GetPuttyConfPath();
+ PuttyConfFileReader sessionFileReader = new PuttyConfFileReader(puttyConfPath);
+ string basePath = Environment.ExpandEnvironmentVariables(sessionFileReader.GetValue("sshk&sess"));
+ return Path.Combine(basePath, "sessions");
+ }
+
+ private static string GetRegistrySessionName(string sessionName)
+ {
+ Regex regex = new Regex(RegistrySessionNamePattern);
+
+ MatchCollection matches = regex.Matches(sessionName);
+ if (matches.Count < 1)
+ {
+ return string.Empty;
+ }
+
+ GroupCollection groups = matches[0].Groups;
+ if (groups.Count < 1)
+ {
+ return string.Empty; // This should always include at least one item, but check anyway
+ }
+
+ return groups[1].Value;
+ }
+
+ private static Connection.PuttySession.Info ModifyRegistrySessionInfo(Connection.PuttySession.Info sessionInfo)
+ {
+ sessionInfo.Name = string.Format(RegistrySessionNameFormat, sessionInfo.Name);
+ sessionInfo.PuttySession = string.Format(RegistrySessionNameFormat, sessionInfo.PuttySession);
+ return sessionInfo;
+ }
+
+ private void OnFileSystemEventArrived(object sender, FileSystemEventArgs e)
+ {
+ OnSessionChanged(new SessionChangedEventArgs());
+ }
+
+ private void OnRegistrySessionChanged(object sender, SessionChangedEventArgs e)
+ {
+ OnSessionChanged(new SessionChangedEventArgs());
+ }
+#endregion
+
+#region Private Classes
+ private class PuttyConfFileReader
+ {
+ public PuttyConfFileReader(string puttyConfFile)
+ {
+ _puttyConfFile = puttyConfFile;
+ }
+
+ private string _puttyConfFile;
+ private bool _configurationLoaded = false;
+ private Dictionary _configuration = new Dictionary();
+
+ private void LoadConfiguration()
+ {
+ _configurationLoaded = true;
+ try
+ {
+ if (!File.Exists(_puttyConfFile))
+ {
+ return ;
+ }
+ using (StreamReader streamReader = new StreamReader(_puttyConfFile))
+ {
+ string line = "";
+ do
+ {
+ line = streamReader.ReadLine();
+ if (line == null)
+ {
+ break;
+ }
+ line = line.Trim();
+ if (line == string.Empty)
+ {
+ continue; // Blank line
+ }
+ if (line.Substring(0, 1) == ";")
+ {
+ continue; // Comment
+ }
+ string[] parts = line.Split(new char[] {'='}, 2);
+ if (parts.Length < 2)
+ {
+ continue;
+ }
+ if (_configuration.ContainsKey(parts[0]))
+ {
+ continue; // As per http://www.straightrunning.com/XmingNotes/portableputty.php only first entry is used
+ }
+ _configuration.Add(parts[0], parts[1]);
+ } while (true);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ Runtime.MessageCollector.AddExceptionMessage("PuttyConfFileReader.LoadConfiguration() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public string GetValue(string setting)
+ {
+ if (!_configurationLoaded)
+ {
+ LoadConfiguration();
+ }
+ if (!_configuration.ContainsKey(setting))
+ {
+ return string.Empty;
+ }
+ return _configuration[setting];
+ }
+ }
+
+ private class SessionFileReader
+ {
+ public SessionFileReader(string sessionFile)
+ {
+ _sessionFile = sessionFile;
+ }
+
+ private string _sessionFile;
+ private bool _sessionInfoLoaded = false;
+ private Dictionary _sessionInfo = new Dictionary();
+
+ private void LoadSessionInfo()
+ {
+ _sessionInfoLoaded = true;
+ try
+ {
+ if (!File.Exists(_sessionFile))
+ {
+ return ;
+ }
+ using (StreamReader streamReader = new StreamReader(_sessionFile))
+ {
+ string line = "";
+ do
+ {
+ line = streamReader.ReadLine();
+ if (line == null)
+ {
+ break;
+ }
+ string[] parts = line.Split(new char[] {'\\'});
+ if (parts.Length < 2)
+ {
+ continue;
+ }
+ _sessionInfo.Add(parts[0], parts[1]);
+ } while (true);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ Runtime.MessageCollector.AddExceptionMessage("SessionFileReader.LoadSessionInfo() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public string GetValue(string setting)
+ {
+ if (!_sessionInfoLoaded)
+ {
+ LoadSessionInfo();
+ }
+ if (!_sessionInfo.ContainsKey(setting))
+ {
+ return string.Empty;
+ }
+ return _sessionInfo[setting];
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Icon.cs b/mRemoteV1/CS/Connection/Connection.Icon.cs
new file mode 100644
index 000000000..45a6a3d9d
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Icon.cs
@@ -0,0 +1,61 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Connection
+{
+ public class Icon : StringConverter
+ {
+
+ public static string[] Icons = new string[] {};
+
+ public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return new StandardValuesCollection(Icons);
+ }
+
+ public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return true;
+ }
+
+ public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+ {
+ return true;
+ }
+
+ public static System.Drawing.Icon FromString(string IconName)
+ {
+ try
+ {
+ string IconPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\Icons\\" + IconName +".ico";
+
+ if (System.IO.File.Exists(IconPath))
+ {
+ System.Drawing.Icon nI = new System.Drawing.Icon(IconPath);
+
+ return nI;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t get Icon from String" + Constants.vbNewLine + ex.Message);
+ }
+
+ return null;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Info.Inheritance.cs b/mRemoteV1/CS/Connection/Connection.Info.Inheritance.cs
new file mode 100644
index 000000000..8cc51032e
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Info.Inheritance.cs
@@ -0,0 +1,435 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using mRemoteNG.Tools;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.Tools;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Connection
+{
+ public partial class Info
+ {
+ public class Inheritance
+ {
+#region Public Properties
+#region General
+ [LocalizedAttributes.LocalizedCategory("strCategoryGeneral", 1),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAll"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAll"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool EverythingInherited
+ {
+ get
+ {
+ if (CacheBitmaps && Colors && Description && DisplayThemes && DisplayWallpaper
+ && EnableFontSmoothing && EnableDesktopComposition && Domain && Icon && Password
+ && Port && Protocol && PuttySession && RedirectDiskDrives && RedirectKeys
+ && RedirectPorts && RedirectPrinters && RedirectSmartCards && RedirectSound && Resolution
+ && AutomaticResize && UseConsoleSession && UseCredSsp && RenderingEngine && UserField
+ && ExtApp && Username && Panel && ICAEncryption && RDPAuthenticationLevel
+ && LoadBalanceInfo && PreExtApp && PostExtApp && MacAddress && VNCAuthMode
+ && VNCColors && VNCCompression && VNCEncoding && VNCProxyIP && VNCProxyPassword
+ && VNCProxyPort && VNCProxyType && VNCProxyUsername)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ set
+ {
+ SetAllValues(value);
+ }
+ }
+#endregion
+#region Display
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDescription"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDescription"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Description {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameIcon"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionIcon"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Icon {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePanel"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPanel"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Panel {get; set;}
+#endregion
+#region Connection
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUsername"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUsername"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Username {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePassword"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPassword"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Password {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDomain"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDomain"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Domain {get; set;}
+#endregion
+#region Protocol
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameProtocol"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionProtocol"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Protocol {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalTool"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalTool"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool ExtApp {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePort"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPort"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Port {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePuttySession"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPuttySession"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool PuttySession {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEncryptionStrength"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncryptionStrength"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool ICAEncryption {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationLevel"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationLevel"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RDPAuthenticationLevel {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameLoadBalanceInfo"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionLoadBalanceInfo"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool LoadBalanceInfo {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRenderingEngine"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRenderingEngine"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RenderingEngine {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUseConsoleSession"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseConsoleSession"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool UseConsoleSession {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUseCredSsp"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseCredSsp"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool UseCredSsp {get; set;}
+#endregion
+#region RD Gateway
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsageMethod"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsageMethod"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayUsageMethod {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayHostname"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayHostname"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayHostname {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUseConnectionCredentials"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUseConnectionCredentials"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayUseConnectionCredentials {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsername"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsername"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayUsername {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayPassword"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayPassword"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayPassword {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayDomain"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayDomain"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RDGatewayDomain {get; set;}
+#endregion
+#region Appearance
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameResolution"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionResolution"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Resolution {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAutomaticResize"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAutomaticResize"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool AutomaticResize {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameColors"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool Colors {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameCacheBitmaps"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionCacheBitmaps"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool CacheBitmaps {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayWallpaper"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayWallpaper"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool DisplayWallpaper {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayThemes"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayThemes"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool DisplayThemes {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEnableFontSmoothing"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableFontSmoothing"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool EnableFontSmoothing {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEnableDesktopComposition"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableEnableDesktopComposition"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool EnableDesktopComposition {get; set;}
+#endregion
+#region Redirect
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectKeys"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectKeys"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectKeys {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectDrives"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectDrives"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectDiskDrives {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPrinters"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPrinters"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectPrinters {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPorts"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPorts"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectPorts {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSmartCards"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSmartCards"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectSmartCards {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSounds"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSounds"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool RedirectSound {get; set;}
+#endregion
+#region Misc
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolBefore"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolBefore"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool PreExtApp {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolAfter"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolAfter"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool PostExtApp {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameMACAddress"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionMACAddress"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool MacAddress {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUser1"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUser1"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool UserField {get; set;}
+#endregion
+#region VNC
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameCompression"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionCompression"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCCompression {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEncoding"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncoding"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCEncoding {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationMode"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationMode"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCAuthMode {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyType"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyType"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCProxyType {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyAddress"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyAddress"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCProxyIP {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPort"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPort"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCProxyPort {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyUsername"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyUsername"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCProxyUsername {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPassword"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPassword"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCProxyPassword {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameColors"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCColors {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameSmartSizeMode"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionSmartSizeMode"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCSmartSizeMode {get; set;}
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
+ LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameViewOnly"),
+ LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionViewOnly"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]public bool VNCViewOnly {get; set;}
+#endregion
+
+ [Browsable(false)]public object Parent {get; set;}
+
+ [Browsable(false)]public bool IsDefault {get; set;}
+#endregion
+
+#region Constructors
+ public Inheritance(object parent, bool inheritEverything = false)
+ {
+ this.Parent = parent;
+ if (inheritEverything)
+ {
+ TurnOnInheritanceCompletely();
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Inheritance Copy()
+ {
+ return (Inheritance)MemberwiseClone();
+ }
+
+ public void TurnOnInheritanceCompletely()
+ {
+ SetAllValues(true);
+ }
+
+ public void TurnOffInheritanceCompletely()
+ {
+ SetAllValues(false);
+ }
+#endregion
+
+#region Private Methods
+ private void SetAllValues(bool value)
+ {
+ // Display
+ Description = value;
+ Icon = value;
+ Panel = value;
+
+ // Connection
+ Username = value;
+ Password = value;
+ Domain = value;
+
+ // Protocol
+ Protocol = value;
+ ExtApp = value;
+ Port = value;
+ PuttySession = value;
+ ICAEncryption = value;
+ RDPAuthenticationLevel = value;
+ LoadBalanceInfo = value;
+ RenderingEngine = value;
+ UseConsoleSession = value;
+ UseCredSsp = value;
+
+ // RD Gateway
+ RDGatewayUsageMethod = value;
+ RDGatewayHostname = value;
+ RDGatewayUseConnectionCredentials = value;
+ RDGatewayUsername = value;
+ RDGatewayPassword = value;
+ RDGatewayDomain = value;
+
+ // Appearance
+ Resolution = value;
+ AutomaticResize = value;
+ Colors = value;
+ CacheBitmaps = value;
+ DisplayWallpaper = value;
+ DisplayThemes = value;
+ EnableFontSmoothing = value;
+ EnableDesktopComposition = value;
+
+ // Redirect
+ RedirectKeys = value;
+ RedirectDiskDrives = value;
+ RedirectPrinters = value;
+ RedirectPorts = value;
+ RedirectSmartCards = value;
+ RedirectSound = value;
+
+ // Misc
+ PreExtApp = value;
+ PostExtApp = value;
+ MacAddress = value;
+ UserField = value;
+
+ // VNC
+ VNCCompression = value;
+ VNCEncoding = value;
+ VNCAuthMode = value;
+ VNCProxyType = value;
+ VNCProxyIP = value;
+ VNCProxyPort = value;
+ VNCProxyUsername = value;
+ VNCProxyPassword = value;
+ VNCColors = value;
+ VNCSmartSizeMode = value;
+ VNCViewOnly = value;
+ }
+#endregion
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Info.cs b/mRemoteV1/CS/Connection/Connection.Info.cs
new file mode 100644
index 000000000..a3f21bdb1
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Info.cs
@@ -0,0 +1,1163 @@
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using System.ComponentModel;
+using mRemoteNG.Config;
+using mRemoteNG.Tools;
+using System.Reflection;
+
+
+namespace mRemoteNG.Connection
+{
+ [DefaultProperty("Name")]public partial class Info
+ {
+#region Public Properties
+#region Display
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameName"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionName")]
+ public virtual string Name { get; set; }
+
+ private string _description; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameDescription"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDescription")]
+ public virtual string Description
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Description", _description);
+ }
+ set
+ {
+ _description = value;
+ }
+ }
+
+ private string _icon; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ TypeConverter(typeof(Icon)),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameIcon"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionIcon")]
+ public virtual string Icon
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Icon", _icon);
+ }
+ set
+ {
+ _icon = value;
+ }
+ }
+
+ private string _panel; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNamePanel"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPanel")]
+ public virtual string Panel
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Panel", _panel);
+ }
+ set
+ {
+ _panel = value;
+ }
+ }
+#endregion
+#region Connection
+ private string _hostname = string.Empty;
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameAddress"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAddress")]
+ public virtual string Hostname
+ {
+ get
+ {
+ return _hostname.Trim();
+ }
+ set
+ {
+ if (string.IsNullOrEmpty(value))
+ {
+ _hostname = string.Empty;
+ }
+ else
+ {
+ _hostname = value.Trim();
+ }
+ }
+ }
+
+ private string _username; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameUsername"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUsername")]
+ public virtual string Username
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Username", _username);
+ }
+ set
+ {
+ _username = value.Trim();
+ }
+ }
+
+ private string _password; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNamePassword"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPassword"),
+ PasswordPropertyText(true)]
+ public virtual string Password
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Password", _password);
+ }
+ set
+ {
+ _password = value;
+ }
+ }
+
+ private string _domain; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameDomain"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDomain")]
+ public string Domain
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Domain", _domain).Trim();
+ }
+ set
+ {
+ _domain = value.Trim();
+ }
+ }
+#endregion
+#region Protocol
+ private Protocol.Protocols _protocol; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameProtocol"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionProtocol"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public virtual Protocol.Protocols Protocol
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Protocol", _protocol);
+ }
+ set
+ {
+ _protocol = value;
+ }
+ }
+
+ private string _extApp; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameExternalTool"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionExternalTool"),
+ TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
+ public string ExtApp
+ {
+ get
+ {
+ return GetInheritedPropertyValue("ExtApp", _extApp);
+ }
+ set
+ {
+ _extApp = value;
+ }
+ }
+
+ private int _port;
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNamePort"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPort")]
+ public virtual int Port
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Port", _port);
+ }
+ set
+ {
+ _port = value;
+ }
+ }
+
+ private string _puttySession; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNamePuttySession"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPuttySession"),
+ TypeConverter(typeof(Putty.Sessions.SessionList))]
+ public virtual string PuttySession
+ {
+ get
+ {
+ return GetInheritedPropertyValue("PuttySession", _puttySession);
+ }
+ set
+ {
+ _puttySession = value;
+ }
+ }
+
+ private Protocol.ICA.EncryptionStrength _icaEncryption; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameEncryptionStrength"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEncryptionStrength"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.ICA.EncryptionStrength ICAEncryption
+ {
+ get
+ {
+ return GetInheritedPropertyValue("ICAEncryption", _icaEncryption);
+ }
+ set
+ {
+ _icaEncryption = value;
+ }
+ }
+
+ private bool _useConsoleSession; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameUseConsoleSession"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUseConsoleSession"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool UseConsoleSession
+ {
+ get
+ {
+ return GetInheritedPropertyValue("UseConsoleSession", _useConsoleSession);
+ }
+ set
+ {
+ _useConsoleSession = value;
+ }
+ }
+
+ private Protocol.RDP.AuthenticationLevel _rdpAuthenticationLevel; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameAuthenticationLevel"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAuthenticationLevel"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.AuthenticationLevel RDPAuthenticationLevel
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDPAuthenticationLevel", _rdpAuthenticationLevel);
+ }
+ set
+ {
+ _rdpAuthenticationLevel = value;
+ }
+ }
+
+ private string _loadBalanceInfo; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameLoadBalanceInfo"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionLoadBalanceInfo")]
+ public string LoadBalanceInfo
+ {
+ get
+ {
+ return GetInheritedPropertyValue("LoadBalanceInfo", _loadBalanceInfo).Trim();
+ }
+ set
+ {
+ _loadBalanceInfo = value.Trim();
+ }
+ }
+
+ private Protocol.HTTPBase.RenderingEngine _renderingEngine; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRenderingEngine"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRenderingEngine"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.HTTPBase.RenderingEngine RenderingEngine
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RenderingEngine", _renderingEngine);
+ }
+ set
+ {
+ _renderingEngine = value;
+ }
+ }
+
+ private bool _useCredSsp; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameUseCredSsp"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUseCredSsp"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool UseCredSsp
+ {
+ get
+ {
+ return GetInheritedPropertyValue("UseCredSsp", _useCredSsp);
+ }
+ set
+ {
+ _useCredSsp = value;
+ }
+ }
+#endregion
+#region RD Gateway
+ private Protocol.RDP.RDGatewayUsageMethod _rdGatewayUsageMethod; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayUsageMethod"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUsageMethod"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDGatewayUsageMethod RDGatewayUsageMethod
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayUsageMethod", _rdGatewayUsageMethod);
+ }
+ set
+ {
+ _rdGatewayUsageMethod = value;
+ }
+ }
+
+ private string _rdGatewayHostname; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayHostname"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayHostname")]
+ public string RDGatewayHostname
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayHostname", _rdGatewayHostname).Trim();
+ }
+ set
+ {
+ _rdGatewayHostname = value.Trim();
+ }
+ }
+
+ private Protocol.RDP.RDGatewayUseConnectionCredentials _rdGatewayUseConnectionCredentials; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayUseConnectionCredentials"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUseConnectionCredentials"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayUseConnectionCredentials", _rdGatewayUseConnectionCredentials);
+ }
+ set
+ {
+ _rdGatewayUseConnectionCredentials = value;
+ }
+ }
+
+ private string _rdGatewayUsername; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayUsername"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUsername")]
+ public string RDGatewayUsername
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayUsername", _rdGatewayUsername).Trim();
+ }
+ set
+ {
+ _rdGatewayUsername = value.Trim();
+ }
+ }
+
+ private string _rdGatewayPassword; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayPassword"),
+ LocalizedAttributes.LocalizedDescription("strPropertyNameRDGatewayPassword"),
+ PasswordPropertyText(true)]
+ public string RDGatewayPassword
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayPassword", _rdGatewayPassword);
+ }
+ set
+ {
+ _rdGatewayPassword = value;
+ }
+ }
+
+ private string _rdGatewayDomain; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayDomain"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayDomain")]
+ public string RDGatewayDomain
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RDGatewayDomain", _rdGatewayDomain).Trim();
+ }
+ set
+ {
+ _rdGatewayDomain = value.Trim();
+ }
+ }
+#endregion
+#region Appearance
+ private Protocol.RDP.RDPResolutions _resolution; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameResolution"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionResolution"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPResolutions Resolution
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Resolution", _resolution);
+ }
+ set
+ {
+ _resolution = value;
+ }
+ }
+
+ private bool _automaticResize; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameAutomaticResize"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAutomaticResize"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool AutomaticResize
+ {
+ get
+ {
+ return GetInheritedPropertyValue("AutomaticResize", _automaticResize);
+ }
+ set
+ {
+ _automaticResize = value;
+ }
+ }
+
+ private Protocol.RDP.RDPColors _colors; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameColors"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionColors"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPColors Colors
+ {
+ get
+ {
+ return GetInheritedPropertyValue("Colors", _colors);
+ }
+ set
+ {
+ _colors = value;
+ }
+ }
+
+ private bool _cacheBitmaps; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameCacheBitmaps"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionCacheBitmaps"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool CacheBitmaps
+ {
+ get
+ {
+ return GetInheritedPropertyValue("CacheBitmaps", _cacheBitmaps);
+ }
+ set
+ {
+ _cacheBitmaps = value;
+ }
+ }
+
+ private bool _displayWallpaper; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameDisplayWallpaper"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDisplayWallpaper"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool DisplayWallpaper
+ {
+ get
+ {
+ return GetInheritedPropertyValue("DisplayWallpaper", _displayWallpaper);
+ }
+ set
+ {
+ _displayWallpaper = value;
+ }
+ }
+
+ private bool _displayThemes; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameDisplayThemes"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDisplayThemes"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool DisplayThemes
+ {
+ get
+ {
+ return GetInheritedPropertyValue("DisplayThemes", _displayThemes);
+ }
+ set
+ {
+ _displayThemes = value;
+ }
+ }
+
+ private bool _enableFontSmoothing; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameEnableFontSmoothing"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEnableFontSmoothing"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool EnableFontSmoothing
+ {
+ get
+ {
+ return GetInheritedPropertyValue("EnableFontSmoothing", _enableFontSmoothing);
+ }
+ set
+ {
+ _enableFontSmoothing = value;
+ }
+ }
+
+ private bool _enableDesktopComposition; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameEnableDesktopComposition"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEnableDesktopComposition"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool EnableDesktopComposition
+ {
+ get
+ {
+ return GetInheritedPropertyValue("EnableDesktopComposition", _enableDesktopComposition);
+ }
+ set
+ {
+ _enableDesktopComposition = value;
+ }
+ }
+#endregion
+#region Redirect
+ private bool _redirectKeys; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectKeys"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectKeys"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectKeys
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectKeys", _redirectKeys);
+ }
+ set
+ {
+ _redirectKeys = value;
+ }
+ }
+
+ private bool _redirectDiskDrives; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectDrives"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectDrives"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectDiskDrives
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectDiskDrives", _redirectDiskDrives);
+ }
+ set
+ {
+ _redirectDiskDrives = value;
+ }
+ }
+
+ private bool _redirectPrinters; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPrinters"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPrinters"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectPrinters
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectPrinters", _redirectPrinters);
+ }
+ set
+ {
+ _redirectPrinters = value;
+ }
+ }
+
+ private bool _redirectPorts; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPorts"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPorts"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectPorts
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectPorts", _redirectPorts);
+ }
+ set
+ {
+ _redirectPorts = value;
+ }
+ }
+
+ private bool _redirectSmartCards; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectSmartCards"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectSmartCards"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool RedirectSmartCards
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectSmartCards", _redirectSmartCards);
+ }
+ set
+ {
+ _redirectSmartCards = value;
+ }
+ }
+
+ private Protocol.RDP.RDPSounds _redirectSound; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectSounds"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectSounds"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.RDP.RDPSounds RedirectSound
+ {
+ get
+ {
+ return GetInheritedPropertyValue("RedirectSound", _redirectSound);
+ }
+ set
+ {
+ _redirectSound = value;
+ }
+ }
+#endregion
+#region Misc
+ private string _preExtApp; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+[LocalizedCategory("strCategoryMiscellaneous", 7),
+LocalizedDisplayName("strPropertyNameExternalToolBefore"),
+LocalizedDescription("strPropertyDescriptionExternalToolBefore"),
+TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]public virtual string PreExtApp
+ {
+ get
+ {
+ return GetInheritedPropertyValue("PreExtApp", _preExtApp);
+ }
+ set
+ {
+ _preExtApp = value;
+ }
+ }
+
+ private string _postExtApp; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+[LocalizedCategory("strCategoryMiscellaneous", 7),
+LocalizedDisplayName("strPropertyNameExternalToolAfter"),
+LocalizedDescription("strPropertyDescriptionExternalToolAfter"),
+TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]public virtual string PostExtApp
+ {
+ get
+ {
+ return GetInheritedPropertyValue("PostExtApp", _postExtApp);
+ }
+ set
+ {
+ _postExtApp = value;
+ }
+ }
+
+ private string _macAddress; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+[LocalizedCategory("strCategoryMiscellaneous", 7),
+LocalizedDisplayName("strPropertyNameMACAddress"),
+LocalizedDescription("strPropertyDescriptionMACAddress")]public virtual string MacAddress
+ {
+ get
+ {
+ return GetInheritedPropertyValue("MacAddress", _macAddress);
+ }
+ set
+ {
+ _macAddress = value;
+ }
+ }
+
+ private string _userField; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+[LocalizedCategory("strCategoryMiscellaneous", 7),
+LocalizedDisplayName("strPropertyNameUser1"),
+LocalizedDescription("strPropertyDescriptionUser1")]public virtual string UserField
+ {
+ get
+ {
+ return GetInheritedPropertyValue("UserField", _userField);
+ }
+ set
+ {
+ _userField = value;
+ }
+ }
+#endregion
+#region VNC
+ private Protocol.VNC.Compression _vncCompression; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameCompression"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionCompression"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Compression VNCCompression
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCCompression", _vncCompression);
+ }
+ set
+ {
+ _vncCompression = value;
+ }
+ }
+
+ private Protocol.VNC.Encoding _vncEncoding; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameEncoding"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEncoding"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Encoding VNCEncoding
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCEncoding", _vncEncoding);
+ }
+ set
+ {
+ _vncEncoding = value;
+ }
+ }
+
+
+ private Protocol.VNC.AuthMode _vncAuthMode; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryConnection", 2),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameAuthenticationMode"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAuthenticationMode"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.AuthMode VNCAuthMode
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCAuthMode", _vncAuthMode);
+ }
+ set
+ {
+ _vncAuthMode = value;
+ }
+ }
+
+ private Protocol.VNC.ProxyType _vncProxyType; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyType"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyType"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.ProxyType VNCProxyType
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCProxyType", _vncProxyType);
+ }
+ set
+ {
+ _vncProxyType = value;
+ }
+ }
+
+ private string _vncProxyIP; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyAddress"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyAddress")]
+ public string VNCProxyIP
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCProxyIP", _vncProxyIP);
+ }
+ set
+ {
+ _vncProxyIP = value;
+ }
+ }
+
+ private int _vncProxyPort; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyPort"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyPort")]
+ public int VNCProxyPort
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCProxyPort", _vncProxyPort);
+ }
+ set
+ {
+ _vncProxyPort = value;
+ }
+ }
+
+ private string _vncProxyUsername; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyUsername"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyUsername")]
+ public string VNCProxyUsername
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCProxyUsername", _vncProxyUsername);
+ }
+ set
+ {
+ _vncProxyUsername = value;
+ }
+ }
+
+ private string _vncProxyPassword; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyPassword"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyPassword"),
+ PasswordPropertyText(true)]
+ public string VNCProxyPassword
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCProxyPassword", _vncProxyPassword);
+ }
+ set
+ {
+ _vncProxyPassword = value;
+ }
+ }
+
+ private Protocol.VNC.Colors _vncColors; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameColors"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionColors"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.Colors VNCColors
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCColors", _vncColors);
+ }
+ set
+ {
+ _vncColors = value;
+ }
+ }
+
+ private Protocol.VNC.SmartSizeMode _vncSmartSizeMode; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameSmartSizeMode"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionSmartSizeMode"),
+ TypeConverter(typeof(Tools.Misc.EnumTypeConverter))]
+ public Protocol.VNC.SmartSizeMode VNCSmartSizeMode
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode);
+ }
+ set
+ {
+ _vncSmartSizeMode = value;
+ }
+ }
+
+ private bool _vncViewOnly; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameViewOnly"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionViewOnly"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool VNCViewOnly
+ {
+ get
+ {
+ return GetInheritedPropertyValue("VNCViewOnly", _vncViewOnly);
+ }
+ set
+ {
+ _vncViewOnly = value;
+ }
+ }
+#endregion
+
+ [Browsable(false)]private Inheritance _Inherit =
+@privateprivate ;Inheritance Inherit
+ {
+ get
+ {
+ return _Inherit;
+ }
+ set
+ {
+ _Inherit = value;
+ }
+ }
+
+ [Browsable(false)]private Protocol.List _OpenConnections =
+@privateprivate ;Protocol.List OpenConnections
+ {
+ get
+ {
+ return _OpenConnections;
+ }
+ set
+ {
+ _OpenConnections = value;
+ }
+ }
+
+ [Browsable(false)]private bool _IsContainer = false;
+ private bool IsContainer
+ {
+ get
+ {
+ return _IsContainer;
+ }
+ set
+ {
+ _IsContainer = value;
+ }
+ }
+
+ [Browsable(false)]private bool _IsDefault = false;
+ private bool IsDefault
+ {
+ get
+ {
+ return _IsDefault;
+ }
+ set
+ {
+ _IsDefault = value;
+ }
+ }
+
+ [Browsable(false)]public Container.Info Parent {get; set;}
+
+ [Browsable(false)]private int _PositionID = 0;
+ private int PositionID
+ {
+ get
+ {
+ return _PositionID;
+ }
+ set
+ {
+ _PositionID = value;
+ }
+ }
+
+ [Browsable(false)]public string ConstantID {get; set;}
+
+ [Browsable(false)]public TreeNode TreeNode {get; set;}
+
+ [Browsable(false)]private bool _IsQuickConnect = false;
+ private bool IsQuickConnect
+ {
+ get
+ {
+ return _IsQuickConnect;
+ }
+ set
+ {
+ _IsQuickConnect = value;
+ }
+ }
+
+ [Browsable(false)]private bool _PleaseConnect = false;
+ private bool PleaseConnect
+ {
+ get
+ {
+ return _PleaseConnect;
+ }
+ set
+ {
+ _PleaseConnect = value;
+ }
+ }
+#endregion
+
+#region Constructors
+ public Info()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ ConstantID = Tools.Misc.CreateConstantID();
+ SetDefaults();
+ }
+
+ public Info(Container.Info parent)
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ ConstantID = Tools.Misc.CreateConstantID();
+ SetDefaults();
+ IsContainer = true;
+ this.Parent = parent;
+ }
+#endregion
+
+#region Public Methods
+ public Info Copy()
+ {
+ Info newConnectionInfo = (Info)MemberwiseClone();
+ newConnectionInfo.ConstantID = Tools.Misc.CreateConstantID();
+ newConnectionInfo._OpenConnections = new Protocol.List();
+ return newConnectionInfo;
+ }
+
+ public void SetDefaults()
+ {
+ if (Port == 0)
+ {
+ SetDefaultPort();
+ }
+ }
+
+ public int GetDefaultPort()
+ {
+ return GetDefaultPort(Protocol);
+ }
+
+ public void SetDefaultPort()
+ {
+ Port = GetDefaultPort();
+ }
+#endregion
+
+#region Public Enumerations
+ [Flags()]public enum Force
+ {
+ None = 0,
+ UseConsoleSession = 1,
+ Fullscreen = 2,
+ DoNotJump = 4,
+ OverridePanel = 8,
+ DontUseConsoleSession = 16,
+ NoCredentials = 32
+ }
+#endregion
+
+#region Private Methods
+ private TPropertyType GetInheritedPropertyValue(string propertyName, TPropertyType value)
+ {
+ Type inheritType = Inherit.GetType();
+ PropertyInfo inheritPropertyInfo = inheritType.GetProperty(propertyName);
+ bool inheritPropertyValue = System.Convert.ToBoolean(inheritPropertyInfo.GetValue(Inherit, BindingFlags.GetProperty, null, null, null));
+
+ if (inheritPropertyValue && Parent != null)
+ {
+ Info parentConnectionInfo = default(Info);
+ if (IsContainer)
+ {
+ parentConnectionInfo = Parent.Parent.ConnectionInfo;
+ }
+ else
+ {
+ parentConnectionInfo = Parent.ConnectionInfo;
+ }
+
+ Type connectionInfoType = parentConnectionInfo.GetType();
+ PropertyInfo parentPropertyInfo = connectionInfoType.GetProperty(propertyName);
+ TPropertyType parentPropertyValue = parentPropertyInfo.GetValue(parentConnectionInfo, BindingFlags.GetProperty, null, null, null);
+
+ return parentPropertyValue;
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ private static int GetDefaultPort(Protocol.Protocols protocol)
+ {
+ try
+ {
+ if (protocol == Connection.Protocol.Protocols.RDP)
+ {
+ return (int)Connection.Protocol.RDP.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.VNC)
+ {
+ return (int)Connection.Protocol.VNC.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.SSH1)
+ {
+ return (int)Connection.Protocol.SSH1.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.SSH2)
+ {
+ return (int)Connection.Protocol.SSH2.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.Telnet)
+ {
+ return (int)Connection.Protocol.Telnet.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.Rlogin)
+ {
+ return (int)Connection.Protocol.Rlogin.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.RAW)
+ {
+ return (int)Connection.Protocol.RAW.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.HTTP)
+ {
+ return (int)Connection.Protocol.HTTP.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.HTTPS)
+ {
+ return (int)Connection.Protocol.HTTPS.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.ICA)
+ {
+ return (int)Connection.Protocol.ICA.Defaults.Port;
+ }
+ else if (protocol == Connection.Protocol.Protocols.IntApp)
+ {
+ return (int)Connection.Protocol.IntegratedProgram.Defaults.Port;
+ }
+ }
+ catch (Exception ex)
+ {
+ mRemoteNG.Messages.Collector
+ MessageCollector.AddExceptionMessage(My.Language.strConnectionSetDefaultPortFailed, ex, Messages.MessageClass.ErrorMsg);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.InterfaceControl.Designer.cs b/mRemoteV1/CS/Connection/Connection.InterfaceControl.Designer.cs
new file mode 100644
index 000000000..ae7981291
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.InterfaceControl.Designer.cs
@@ -0,0 +1,54 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Protocol
+ {
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class InterfaceControl : System.Windows.Forms.Panel
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ //Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ }
+ }
+ }
+
+
+}
diff --git a/mRemoteV1/CS/Connection/Connection.InterfaceControl.cs b/mRemoteV1/CS/Connection/Connection.InterfaceControl.cs
new file mode 100644
index 000000000..6d91b346c
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.InterfaceControl.cs
@@ -0,0 +1,75 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG
+{
+ namespace Protocol
+ {
+ public partial class InterfaceControl
+ {
+#region Properties
+ private Connection.Protocol.Base _Protocol;
+public Connection.Protocol.Base Protocol
+ {
+ get
+ {
+ return this._Protocol;
+ }
+ set
+ {
+ this._Protocol = value;
+ }
+ }
+
+ private Info _Info;
+public Info Info
+ {
+ get
+ {
+ return this._Info;
+ }
+ set
+ {
+ this._Info = value;
+ }
+ }
+#endregion
+
+#region Methods
+ public InterfaceControl(Control Parent, Connection.Protocol.Base Protocol, Connection.Info Info)
+ {
+ try
+ {
+ this._Protocol = Protocol;
+ this._Info = Info;
+ this.Parent = Parent;
+ this.Location = new Point(0, 0);
+ this.Size = this.Parent.Size;
+ this.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
+ InitializeComponent();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t create new InterfaceControl" + Constants.vbNewLine + ex.Message);
+ }
+ }
+#endregion
+ }
+ }
+
+
+
+}
diff --git a/mRemoteV1/CS/Connection/Connection.List.cs b/mRemoteV1/CS/Connection/Connection.List.cs
new file mode 100644
index 000000000..32ef5284c
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.List.cs
@@ -0,0 +1,98 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection
+{
+ public class List : CollectionBase
+ {
+
+#region Public Properties
+public Connection.Info this[object Index]
+ {
+ get
+ {
+ if (Index is Connection.Info)
+ {
+ return Index;
+ }
+ else
+ {
+ return ((Connection.Info) (List[System.Convert.ToInt32(Index)]));
+ }
+ }
+ }
+
+public new int Count
+ {
+ get
+ {
+ return List.Count;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Connection.Info Add(Connection.Info cInfo)
+ {
+ this.List.Add(cInfo);
+ return cInfo;
+ }
+
+ public void AddRange(Connection.Info[] cInfo)
+ {
+ foreach (Connection.Info cI in cInfo)
+ {
+ List.Add(cI);
+ }
+ }
+
+ public Connection.Info FindByConstantID(string id)
+ {
+ foreach (Connection.Info conI in List)
+ {
+ if (conI.ConstantID == id)
+ {
+ return conI;
+ }
+ }
+
+ return null;
+ }
+
+ //Public Function Find(ByVal cInfo As Connection.Info)
+ // For Each cI As Connection.Info In List
+
+ // Next
+ //End Function
+
+ public Connection.List Copy()
+ {
+ try
+ {
+ return this.MemberwiseClone();
+ }
+ catch (Exception)
+ {
+ }
+
+ return null;
+ }
+
+ public new void Clear()
+ {
+ this.List.Clear();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.Base.cs b/mRemoteV1/CS/Connection/Connection.Protocol.Base.cs
new file mode 100644
index 000000000..fbe45df4f
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.Base.cs
@@ -0,0 +1,397 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Threading;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class Base
+ {
+#region Properties
+#region Control
+ private string _Name;
+public string Name
+ {
+ get
+ {
+ return this._Name;
+ }
+ set
+ {
+ this._Name = value;
+ }
+ }
+
+ private UI.Window.Connection _connectionWindow;
+public UI.Window.Connection ConnectionWindow
+ {
+ get
+ {
+ return _connectionWindow;
+ }
+ set
+ {
+ _connectionWindow = value;
+ _connectionWindow.ResizeBegin += ResizeBegin;
+ _connectionWindow.Resize += Resize;
+ _connectionWindow.ResizeEnd += ResizeEnd;
+ }
+ }
+
+ private InterfaceControl _interfaceControl;
+public InterfaceControl InterfaceControl
+ {
+ get
+ {
+ return _interfaceControl;
+ }
+ set
+ {
+ _interfaceControl = value;
+ ConnectionWindow = _interfaceControl.GetContainerControl() as UI.Window.Connection;
+ }
+ }
+
+ private Control _Control;
+public Control Control
+ {
+ get
+ {
+ return this._Control;
+ }
+ set
+ {
+ this._Control = value;
+ }
+ }
+#endregion
+
+ private mRemoteNG.Connection.Info.Force _Force;
+public mRemoteNG.Connection.Info.Force Force
+ {
+ get
+ {
+ return this._Force;
+ }
+ set
+ {
+ this._Force = value;
+ }
+ }
+
+ public System.Timers.Timer tmrReconnect = new System.Timers.Timer(2000);
+ public ReconnectGroup ReconnectGroup;
+#endregion
+
+#region Methods
+ public virtual void Focus()
+ {
+ try
+ {
+ this._Control.Focus();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t focus Control (Connection.Protocol.Base)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public virtual void ResizeBegin(System.Object sender, EventArgs e)
+ {
+
+ }
+
+ public virtual void Resize(System.Object sender, EventArgs e)
+ {
+
+ }
+
+ public virtual void ResizeEnd(System.Object sender, EventArgs e)
+ {
+
+ }
+
+ public virtual bool SetProps()
+ {
+ try
+ {
+ this._interfaceControl.Parent.Tag = this._interfaceControl;
+ this._interfaceControl.Show();
+
+ if (this._Control != null)
+ {
+ this._Control.Name = this._Name;
+ this._Control.Parent = this._interfaceControl;
+ this._Control.Location = this._interfaceControl.Location;
+ this._Control.Size = this.InterfaceControl.Size;
+ this._Control.Anchor = this._interfaceControl.Anchor;
+ }
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t SetProps (Connection.Protocol.Base)" + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+
+ public virtual bool Connect()
+ {
+ if (InterfaceControl.Info.Protocol != Protocols.RDP)
+ {
+ if (ConnectedEvent != null)
+ ConnectedEvent(this);
+ }
+ }
+
+ public virtual void Disconnect()
+ {
+ this.Close();
+ }
+
+ public virtual void Close()
+ {
+ Thread t = new Thread(new System.Threading.ThreadStart(CloseBG));
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.IsBackground = true;
+ t.Start();
+ }
+
+ private void CloseBG()
+ {
+ if (ClosedEvent != null)
+ ClosedEvent(this);
+
+ try
+ {
+ tmrReconnect.Enabled = false;
+
+ if (this._Control != null)
+ {
+ try
+ {
+ this.DisposeControl();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Could not dispose control, probably form is already closed (Connection.Protocol.Base)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ if (this._interfaceControl != null)
+ {
+ try
+ {
+ if (this._interfaceControl.Parent != null)
+ {
+ if (this._interfaceControl.Parent.Tag != null)
+ {
+ this.SetTagToNothing();
+ }
+
+ this.DisposeInterface();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Could not set InterfaceControl.Parent.Tag or Dispose Interface, probably form is already closed (Connection.Protocol.Base)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t Close InterfaceControl BG (Connection.Protocol.Base)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private delegate void DisposeInterfaceCB();
+ private void DisposeInterface()
+ {
+ if (this._interfaceControl.InvokeRequired)
+ {
+ DisposeInterfaceCB s = new DisposeInterfaceCB(DisposeInterface);
+ this._interfaceControl.Invoke(s);
+ }
+ else
+ {
+ this._interfaceControl.Dispose();
+ }
+ }
+
+ private delegate void SetTagToNothingCB();
+ private void SetTagToNothing()
+ {
+ if (this._interfaceControl.Parent.InvokeRequired)
+ {
+ SetTagToNothingCB s = new SetTagToNothingCB(SetTagToNothing);
+ this._interfaceControl.Parent.Invoke(s);
+ }
+ else
+ {
+ this._interfaceControl.Parent.Tag = null;
+ }
+ }
+
+ private delegate void DisposeControlCB();
+ private void DisposeControl()
+ {
+ if (this._Control.InvokeRequired)
+ {
+ DisposeControlCB s = new DisposeControlCB(DisposeControl);
+ this._Control.Invoke(s);
+ }
+ else
+ {
+ this._Control.Dispose();
+ }
+ }
+#endregion
+
+#region Events
+ public delegate void ConnectingEventHandler(object sender);
+ private ConnectingEventHandler ConnectingEvent;
+
+ public event ConnectingEventHandler Connecting
+ {
+ add
+ {
+ ConnectingEvent = (ConnectingEventHandler) System.Delegate.Combine(ConnectingEvent, value);
+ }
+ remove
+ {
+ ConnectingEvent = (ConnectingEventHandler) System.Delegate.Remove(ConnectingEvent, value);
+ }
+ }
+
+ public delegate void ConnectedEventHandler(object sender);
+ private ConnectedEventHandler ConnectedEvent;
+
+ public event ConnectedEventHandler Connected
+ {
+ add
+ {
+ ConnectedEvent = (ConnectedEventHandler) System.Delegate.Combine(ConnectedEvent, value);
+ }
+ remove
+ {
+ ConnectedEvent = (ConnectedEventHandler) System.Delegate.Remove(ConnectedEvent, value);
+ }
+ }
+
+ public delegate void DisconnectedEventHandler(object sender, string DisconnectedMessage);
+ private DisconnectedEventHandler DisconnectedEvent;
+
+ public event DisconnectedEventHandler Disconnected
+ {
+ add
+ {
+ DisconnectedEvent = (DisconnectedEventHandler) System.Delegate.Combine(DisconnectedEvent, value);
+ }
+ remove
+ {
+ DisconnectedEvent = (DisconnectedEventHandler) System.Delegate.Remove(DisconnectedEvent, value);
+ }
+ }
+
+ public delegate void ErrorOccuredEventHandler(object sender, string ErrorMessage);
+ private ErrorOccuredEventHandler ErrorOccuredEvent;
+
+ public event ErrorOccuredEventHandler ErrorOccured
+ {
+ add
+ {
+ ErrorOccuredEvent = (ErrorOccuredEventHandler) System.Delegate.Combine(ErrorOccuredEvent, value);
+ }
+ remove
+ {
+ ErrorOccuredEvent = (ErrorOccuredEventHandler) System.Delegate.Remove(ErrorOccuredEvent, value);
+ }
+ }
+
+ public delegate void ClosingEventHandler(object sender);
+ private ClosingEventHandler ClosingEvent;
+
+ public event ClosingEventHandler Closing
+ {
+ add
+ {
+ ClosingEvent = (ClosingEventHandler) System.Delegate.Combine(ClosingEvent, value);
+ }
+ remove
+ {
+ ClosingEvent = (ClosingEventHandler) System.Delegate.Remove(ClosingEvent, value);
+ }
+ }
+
+ public delegate void ClosedEventHandler(object sender);
+ private ClosedEventHandler ClosedEvent;
+
+ public event ClosedEventHandler Closed
+ {
+ add
+ {
+ ClosedEvent = (ClosedEventHandler) System.Delegate.Combine(ClosedEvent, value);
+ }
+ remove
+ {
+ ClosedEvent = (ClosedEventHandler) System.Delegate.Remove(ClosedEvent, value);
+ }
+ }
+
+
+ public void Event_Closing(object sender)
+ {
+ if (ClosingEvent != null)
+ ClosingEvent(sender);
+ }
+
+ public void Event_Closed(object sender)
+ {
+ if (ClosedEvent != null)
+ ClosedEvent(sender);
+ }
+
+ public void Event_Connecting(object sender)
+ {
+ if (ConnectingEvent != null)
+ ConnectingEvent(sender);
+ }
+
+ public void Event_Connected(object sender)
+ {
+ if (ConnectedEvent != null)
+ ConnectedEvent(sender);
+ }
+
+ public void Event_Disconnected(object sender, string DisconnectedMessage)
+ {
+ if (DisconnectedEvent != null)
+ DisconnectedEvent(sender, DisconnectedMessage);
+ }
+
+ public void Event_ErrorOccured(object sender, string ErrorMsg)
+ {
+ if (ErrorOccuredEvent != null)
+ ErrorOccuredEvent(sender, ErrorMsg);
+ }
+
+ public void Event_ReconnectGroupCloseClicked()
+ {
+ Close();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.HTTP.cs b/mRemoteV1/CS/Connection/Connection.Protocol.HTTP.cs
new file mode 100644
index 000000000..4b5975a71
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.HTTP.cs
@@ -0,0 +1,37 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class HTTP : HTTPBase
+ {
+
+ public HTTP(RenderingEngine RenderingEngine) : base(RenderingEngine)
+ {
+ }
+
+ public override void NewExtended()
+ {
+ base.NewExtended();
+
+ httpOrS = "http";
+ defaultPort = Defaults.Port;
+ }
+
+ public enum Defaults
+ {
+ Port = 80
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.HTTPBase.cs b/mRemoteV1/CS/Connection/Connection.Protocol.HTTPBase.cs
new file mode 100644
index 000000000..dc8e7ddf4
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.HTTPBase.cs
@@ -0,0 +1,287 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using mRemoteNG.Tools;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class HTTPBase : Base
+ {
+
+#region Private Properties
+ private Control wBrowser;
+ public string httpOrS;
+ public int defaultPort;
+ private string tabTitle;
+#endregion
+
+#region Public Methods
+ public HTTPBase(RenderingEngine RenderingEngine)
+ {
+ try
+ {
+ if (RenderingEngine == RenderingEngine.Gecko)
+ {
+ this.Control = new MiniGeckoBrowser.MiniGeckoBrowser();
+ (this.Control as MiniGeckoBrowser.MiniGeckoBrowser).XULrunnerPath = System.Convert.ToString(My.Settings.Default.XULRunnerPath);
+ }
+ else
+ {
+ this.Control = new WebBrowser();
+ }
+
+ NewExtended();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strHttpConnectionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public virtual void NewExtended()
+ {
+ }
+
+ public override bool SetProps()
+ {
+ base.SetProps();
+
+ try
+ {
+ Crownwood.Magic.Controls.TabPage objTabPage = this.InterfaceControl.Parent as Crownwood.Magic.Controls.TabPage;
+ this.tabTitle = objTabPage.Title;
+ }
+ catch (Exception)
+ {
+ this.tabTitle = "";
+ }
+
+ try
+ {
+ this.wBrowser = this.Control;
+
+ if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
+ {
+ MiniGeckoBrowser.MiniGeckoBrowser objMiniGeckoBrowser = wBrowser as MiniGeckoBrowser.MiniGeckoBrowser;
+
+ objMiniGeckoBrowser.TitleChanged += wBrowser_DocumentTitleChanged;
+ objMiniGeckoBrowser.LastTabRemoved += wBrowser_LastTabRemoved;
+ }
+ else
+ {
+ WebBrowser objWebBrowser = wBrowser as WebBrowser;
+ SHDocVw.WebBrowser objAxWebBrowser = (SHDocVw.WebBrowser) objWebBrowser.ActiveXInstance;
+
+ objWebBrowser.ScrollBarsEnabled = true;
+
+ objWebBrowser.Navigated += wBrowser_Navigated;
+ objWebBrowser.DocumentTitleChanged += wBrowser_DocumentTitleChanged;
+ objAxWebBrowser.NewWindow3 += wBrowser_NewWindow3;
+ }
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strHttpSetPropsFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+
+ public override bool Connect()
+ {
+ try
+ {
+ string strHost = System.Convert.ToString(this.InterfaceControl.Info.Hostname);
+ string strAuth = "";
+
+ if (!((Force & Info.Force.NoCredentials) == (int) Info.Force.NoCredentials) && !string.IsNullOrEmpty(InterfaceControl.Info.Username) && !string.IsNullOrEmpty(InterfaceControl.Info.Password))
+ {
+ strAuth = "Authorization: Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(this.InterfaceControl.Info.Username + ":" + this.InterfaceControl.Info.Password)) + Constants.vbNewLine;
+ }
+
+ if (this.InterfaceControl.Info.Port != defaultPort)
+ {
+ if (strHost.EndsWith("/"))
+ {
+ strHost = strHost.Substring(0, strHost.Length - 1);
+ }
+
+ if (strHost.Contains(httpOrS + "://") == false)
+ {
+ strHost = httpOrS + "://" + strHost;
+ }
+
+ if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
+ {
+ (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Navigate(strHost + ":" + this.InterfaceControl.Info.Port);
+ }
+ else
+ {
+ object temp_Flags = null;
+ object temp_TargetFrameName = null;
+ object null_object = null;
+ (wBrowser as WebBrowser).Navigate(strHost + ":" + this.InterfaceControl.Info.Port, ref temp_Flags, ref temp_TargetFrameName, ref strAuth, ref null_object);
+ }
+ }
+ else
+ {
+ if (strHost.Contains(httpOrS + "://") == false)
+ {
+ strHost = httpOrS + "://" + strHost;
+ }
+
+ if (InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
+ {
+ (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Navigate(strHost);
+ }
+ else
+ {
+ object temp_Flags2 = null;
+ object temp_TargetFrameName2 = null;
+ object null_object2 = null;
+ (wBrowser as WebBrowser).Navigate(strHost, ref temp_Flags2, ref temp_TargetFrameName2, ref strAuth, ref null_object2);
+ }
+ }
+
+ base.Connect();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strHttpConnectFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+#endregion
+
+#region Private Methods
+#endregion
+
+#region Events
+ private void wBrowser_Navigated(object sender, System.Windows.Forms.WebBrowserNavigatedEventArgs e)
+ {
+ WebBrowser objWebBrowser = wBrowser as WebBrowser;
+ if (objWebBrowser == null)
+ {
+ return ;
+ }
+
+ // This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
+ objWebBrowser.AllowWebBrowserDrop = false;
+
+ objWebBrowser.Navigated -= wBrowser_Navigated;
+ }
+
+ private void wBrowser_NewWindow3(object ppDisp, ref bool Cancel, long dwFlags, string bstrUrlContext, string bstrUrl)
+ {
+ if (dwFlags & NWMF.NWMF_OVERRIDEKEY)
+ {
+ Cancel = false;
+ }
+ else
+ {
+ Cancel = true;
+ }
+ }
+
+ private void wBrowser_LastTabRemoved(object sender)
+ {
+ this.Close();
+ }
+
+ private void wBrowser_DocumentTitleChanged(System.Object sender, System.EventArgs e)
+ {
+ try
+ {
+ Crownwood.Magic.Controls.TabPage tabP = default(Crownwood.Magic.Controls.TabPage);
+ tabP = InterfaceControl.Parent as Crownwood.Magic.Controls.TabPage;
+
+ if (tabP != null)
+ {
+ string shortTitle = "";
+
+ if (this.InterfaceControl.Info.RenderingEngine == RenderingEngine.Gecko)
+ {
+ if ((wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Length >= 30)
+ {
+ shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title.Substring(0, 29) + " ...";
+ }
+ else
+ {
+ shortTitle = (wBrowser as MiniGeckoBrowser.MiniGeckoBrowser).Title;
+ }
+ }
+ else
+ {
+ if ((wBrowser as WebBrowser).DocumentTitle.Length >= 30)
+ {
+ shortTitle = (wBrowser as WebBrowser).DocumentTitle.Substring(0, 29) + " ...";
+ }
+ else
+ {
+ shortTitle = (wBrowser as WebBrowser).DocumentTitle;
+ }
+ }
+
+ if (!string.IsNullOrEmpty(this.tabTitle))
+ {
+ tabP.Title = tabTitle + " - " + shortTitle;
+ }
+ else
+ {
+ tabP.Title = shortTitle;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strHttpDocumentTileChangeFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Enums
+ public enum RenderingEngine
+ {
+ [LocalizedAttributes.LocalizedDescription("strHttpInternetExplorer")]
+ IE = 1,
+ [LocalizedAttributes.LocalizedDescription("strHttpGecko")]
+ Gecko = 2
+ }
+
+ private enum NWMF
+ {
+ // ReSharper disable InconsistentNaming
+ NWMF_UNLOADING = 0x1,
+ NWMF_USERINITED = 0x2,
+ NWMF_FIRST = 0x4,
+ NWMF_OVERRIDEKEY = 0x8,
+ NWMF_SHOWHELP = 0x10,
+ NWMF_HTMLDIALOG = 0x20,
+ NWMF_FROMDIALOGCHILD = 0x40,
+ NWMF_USERREQUESTED = 0x80,
+ NWMF_USERALLOWED = 0x100,
+ NWMF_FORCEWINDOW = 0x10000,
+ NWMF_FORCETAB = 0x20000,
+ NWMF_SUGGESTWINDOW = 0x40000,
+ NWMF_SUGGESTTAB = 0x80000,
+ NWMF_INACTIVETAB = 0x100000
+ // ReSharper restore InconsistentNaming
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.HTTPS.cs b/mRemoteV1/CS/Connection/Connection.Protocol.HTTPS.cs
new file mode 100644
index 000000000..406a5f70e
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.HTTPS.cs
@@ -0,0 +1,37 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class HTTPS : HTTPBase
+ {
+
+ public HTTPS(RenderingEngine RenderingEngine) : base(RenderingEngine)
+ {
+ }
+
+ public override void NewExtended()
+ {
+ base.NewExtended();
+
+ httpOrS = "https";
+ defaultPort = Defaults.Port;
+ }
+
+ public enum Defaults
+ {
+ Port = 443
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.ICA.cs b/mRemoteV1/CS/Connection/Connection.Protocol.ICA.cs
new file mode 100644
index 000000000..76aac20a0
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.ICA.cs
@@ -0,0 +1,393 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+using System.Threading;
+using mRemoteNG.Tools;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class ICA : Base
+ {
+
+#region Default Instance
+
+ private static ICA defaultInstance;
+
+ ///
+ /// Added by the VB.Net to C# Converter to support default instance behavour in C#
+ ///
+ public static ICA Default
+ {
+ get
+ {
+ if (defaultInstance == null)
+ {
+ defaultInstance = new ICA();
+ defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
+ }
+
+ return defaultInstance;
+ }
+ set
+ {
+ defaultInstance = value;
+ }
+ }
+
+ static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ defaultInstance = null;
+ }
+
+#endregion
+
+#region Private Properties
+ private AxICAClient ICA_Renamed;
+ private Connection.Info Info;
+#endregion
+
+#region Public Methods
+ public ICA()
+ {
+ try
+ {
+ this.Control = new AxICAClient();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaControlFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public override bool SetProps()
+ {
+ base.SetProps();
+
+ try
+ {
+ ICA_Renamed = this.Control;
+ Info = this.InterfaceControl.Info;
+
+ ICA_Renamed.Default.CreateControl();
+
+ while (!this.ICA_Renamed.Created)
+ {
+ Thread.Sleep(10);
+ System.Windows.Forms.Application.DoEvents();
+ }
+
+ ICA_Renamed.Address = Info.Hostname;
+
+ this.SetCredentials();
+
+ this.SetResolution();
+ this.SetColors();
+
+ this.SetSecurity();
+
+ //Disable hotkeys for international users
+ ICA_Renamed.Hotkey1Shift = null;
+ ICA_Renamed.Hotkey1Char = null;
+ ICA_Renamed.Hotkey2Shift = null;
+ ICA_Renamed.Hotkey2Char = null;
+ ICA_Renamed.Hotkey3Shift = null;
+ ICA_Renamed.Hotkey3Char = null;
+ ICA_Renamed.Hotkey4Shift = null;
+ ICA_Renamed.Hotkey4Char = null;
+ ICA_Renamed.Hotkey5Shift = null;
+ ICA_Renamed.Hotkey5Char = null;
+ ICA_Renamed.Hotkey6Shift = null;
+ ICA_Renamed.Hotkey6Char = null;
+ ICA_Renamed.Hotkey7Shift = null;
+ ICA_Renamed.Hotkey7Char = null;
+ ICA_Renamed.Hotkey8Shift = null;
+ ICA_Renamed.Hotkey8Char = null;
+ ICA_Renamed.Hotkey9Shift = null;
+ ICA_Renamed.Hotkey9Char = null;
+ ICA_Renamed.Hotkey10Shift = null;
+ ICA_Renamed.Hotkey10Char = null;
+ ICA_Renamed.Hotkey11Shift = null;
+ ICA_Renamed.Hotkey11Char = null;
+
+ ICA_Renamed.PersistentCacheEnabled = Info.CacheBitmaps;
+
+ ICA_Renamed.Title = Info.Name;
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetPropsFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+
+ public override bool Connect()
+ {
+ this.SetEventHandlers();
+
+ try
+ {
+ ICA_Renamed.Default.Connect();
+ base.Connect();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaConnectionFailed + Constants.vbNewLine + ex.Message);
+ return false;
+ }
+ }
+#endregion
+
+#region Private Methods
+ private void SetCredentials()
+ {
+ try
+ {
+ if ((Force & Info.Force.NoCredentials) == (int) Info.Force.NoCredentials)
+ {
+ return ;
+ }
+
+ string _user = this.Info.Username;
+ string _pass = this.Info.Password;
+ string _dom = this.Info.Domain;
+
+ if (string.IsNullOrEmpty(_user))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "windows")
+ {
+ ICA_Renamed.Username = Environment.UserName;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ ICA_Renamed.Username = My.Settings.Default.DefaultUsername;
+ }
+ }
+ else
+ {
+ ICA_Renamed.Username = _user;
+ }
+
+ if (string.IsNullOrEmpty(_pass))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ if (My.Settings.Default.DefaultPassword != "")
+ {
+ ICA_Renamed.SetProp("ClearPassword", Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.DefaultPassword), App.Info.General.EncryptionKey));
+ }
+ }
+ }
+ else
+ {
+ ICA_Renamed.SetProp("ClearPassword", _pass);
+ }
+
+ if (string.IsNullOrEmpty(_dom))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "windows")
+ {
+ ICA_Renamed.Domain = Environment.UserDomainName;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ ICA_Renamed.Domain = My.Settings.Default.DefaultDomain;
+ }
+ }
+ else
+ {
+ ICA_Renamed.Domain = _dom;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetCredentialsFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetResolution()
+ {
+ try
+ {
+ if ((this.Force & Connection.Info.Force.Fullscreen) == Connection.Info.Force.Fullscreen)
+ {
+ ICA_Renamed.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, Screen.FromControl(frmMain).Bounds.Width, Screen.FromControl(frmMain).Bounds.Height, 0);
+ ICA_Renamed.FullScreenWindow();
+
+ return;
+ }
+
+ if (this.InterfaceControl.Info.Resolution == RDP.RDPResolutions.FitToWindow)
+ {
+ ICA_Renamed.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, this.InterfaceControl.Size.Width, this.InterfaceControl.Size.Height, 0);
+ }
+ else if (this.InterfaceControl.Info.Resolution == RDP.RDPResolutions.SmartSize)
+ {
+ ICA_Renamed.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, this.InterfaceControl.Size.Width, this.InterfaceControl.Size.Height, 0);
+ }
+ else if (this.InterfaceControl.Info.Resolution == RDP.RDPResolutions.Fullscreen)
+ {
+ ICA_Renamed.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, Screen.FromControl(frmMain).Bounds.Width, Screen.FromControl(frmMain).Bounds.Height, 0);
+ ICA_Renamed.FullScreenWindow();
+ }
+ else
+ {
+ Rectangle resolution = RDP.GetResolutionRectangle(Info.Resolution);
+ ICA_Renamed.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, resolution.Width, resolution.Height, 0);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetResolutionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetColors()
+ {
+ switch (Info.Colors)
+ {
+ case RDP.RDPColors.Colors256:
+ ICA_Renamed.SetProp("DesiredColor", 2);
+ break;
+ case RDP.RDPColors.Colors15Bit:
+ ICA_Renamed.SetProp("DesiredColor", 4);
+ break;
+ case RDP.RDPColors.Colors16Bit:
+ ICA_Renamed.SetProp("DesiredColor", 4);
+ break;
+ default:
+ ICA_Renamed.SetProp("DesiredColor", 8);
+ break;
+ }
+ }
+
+ private void SetSecurity()
+ {
+ switch (Info.ICAEncryption)
+ {
+ case EncryptionStrength.Encr128BitLogonOnly:
+ ICA_Renamed.Encrypt = true;
+ ICA_Renamed.EncryptionLevelSession = "EncRC5-0";
+ break;
+ case EncryptionStrength.Encr40Bit:
+ ICA_Renamed.Encrypt = true;
+ ICA_Renamed.EncryptionLevelSession = "EncRC5-40";
+ break;
+ case EncryptionStrength.Encr56Bit:
+ ICA_Renamed.Encrypt = true;
+ ICA_Renamed.EncryptionLevelSession = "EncRC5-56";
+ break;
+ case EncryptionStrength.Encr128Bit:
+ ICA_Renamed.Encrypt = true;
+ ICA_Renamed.EncryptionLevelSession = "EncRC5-128";
+ break;
+ }
+ }
+
+ private void SetEventHandlers()
+ {
+ try
+ {
+ ICA_Renamed.OnConnecting += new System.EventHandler(ICAEvent_OnConnecting);
+ ICA_Renamed.OnConnect += new System.EventHandler(ICAEvent_OnConnected);
+ ICA_Renamed.OnConnectFailed += new System.EventHandler(ICAEvent_OnConnectFailed);
+ ICA_Renamed.OnDisconnect += new System.EventHandler(ICAEvent_OnDisconnect);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetEventHandlersFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Events & Handlers
+ private void ICAEvent_OnConnecting(object sender, System.EventArgs e)
+ {
+ base.Event_Connecting(this);
+ }
+
+ private void ICAEvent_OnConnected(object sender, System.EventArgs e)
+ {
+ base.Event_Connected(this);
+ }
+
+ private void ICAEvent_OnConnectFailed(object sender, System.EventArgs e)
+ {
+ base.Event_ErrorOccured(this, e.ToString());
+ }
+
+ private void ICAEvent_OnDisconnect(object sender, System.EventArgs e)
+ {
+ base.Event_Disconnected(this, e.ToString());
+
+ if (My.Settings.Default.ReconnectOnDisconnect)
+ {
+ ReconnectGroup = new ReconnectGroup();
+ this.Load += ReconnectGroup_Load;
+ ReconnectGroup.Left = (int) (((double) Control.Width / 2) - ((double) ReconnectGroup.Width / 2));
+ ReconnectGroup.Top = (int) (((double) Control.Height / 2) - ((double) ReconnectGroup.Height / 2));
+ ReconnectGroup.Parent = Control;
+ ReconnectGroup.Show();
+ tmrReconnect.Enabled = true;
+ }
+ else
+ {
+ base.Close();
+ }
+ }
+#endregion
+
+#region Reconnect Stuff
+ public void tmrReconnect_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
+ {
+ bool srvReady = Tools.PortScan.Scanner.IsPortOpen(Info.Hostname, System.Convert.ToString(Info.Port));
+
+ ReconnectGroup.ServerReady = srvReady;
+
+ if (ReconnectGroup.ReconnectWhenReady && srvReady)
+ {
+ tmrReconnect.Enabled = false;
+ ReconnectGroup.DisposeReconnectGroup();
+ ICA_Renamed.Default.Connect();
+ }
+ }
+#endregion
+
+#region Enums
+ public enum Defaults
+ {
+ Port = 1494,
+ EncryptionStrength = 0
+ }
+
+ public enum EncryptionStrength
+ {
+ [LocalizedAttributes.LocalizedDescription("strEncBasic")]
+ EncrBasic = 1,
+ [LocalizedAttributes.LocalizedDescription("strEnc128BitLogonOnly")]
+ Encr128BitLogonOnly = 127,
+ [LocalizedAttributes.LocalizedDescription("strEnc40Bit")]
+ Encr40Bit = 40,
+ [LocalizedAttributes.LocalizedDescription("strEnc56Bit")]
+ Encr56Bit = 56,
+ [LocalizedAttributes.LocalizedDescription("strEnc128Bit")]
+ Encr128Bit = 128
+ }
+#endregion
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.IntegratedProgram.cs b/mRemoteV1/CS/Connection/Connection.Protocol.IntegratedProgram.cs
new file mode 100644
index 000000000..fe2b56137
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.IntegratedProgram.cs
@@ -0,0 +1,175 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Native;
+using System.Threading;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class IntegratedProgram : Base
+ {
+#region Public Methods
+ public override bool SetProps()
+ {
+ if (InterfaceControl.Info != null)
+ {
+ _externalTool = GetExtAppByName(System.Convert.ToString(InterfaceControl.Info.ExtApp));
+ _externalTool.ConnectionInfo = InterfaceControl.Info;
+ }
+
+ return base.SetProps();
+ }
+
+ public override bool Connect()
+ {
+ try
+ {
+ if (_externalTool.TryIntegrate == false)
+ {
+ _externalTool.Start(InterfaceControl.Info);
+ Close();
+ return null;
+ }
+
+ _process = new Process();
+
+ _process.StartInfo.UseShellExecute = true;
+ _process.StartInfo.FileName = _externalTool.ParseArguments(_externalTool.FileName);
+ _process.StartInfo.Arguments = _externalTool.ParseArguments(_externalTool.Arguments);
+
+ _process.EnableRaisingEvents = true;
+ _process.Exited += ProcessExited;
+
+ _process.Start();
+ _process.WaitForInputIdle(System.Convert.ToInt32(My.Settings.Default.MaxPuttyWaitTime * 1000));
+
+ int startTicks = Environment.TickCount;
+ while (_handle.ToInt32() == 0 & Environment.TickCount < startTicks + (My.Settings.Default.MaxPuttyWaitTime * 1000))
+ {
+ _process.Refresh();
+ if (!(_process.MainWindowTitle == "Default IME"))
+ {
+ _handle = _process.MainWindowHandle;
+ }
+ if (_handle.ToInt32() == 0)
+ {
+ Thread.Sleep(0);
+ }
+ }
+
+ SetParent(_handle, InterfaceControl.Handle);
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strIntAppStuff, true);
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(My.Language.strIntAppHandle, _handle.ToString()), true);
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(My.Language.strIntAppTitle, _process.MainWindowTitle), true);
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(My.Language.strIntAppParentHandle, InterfaceControl.Parent.Handle.ToString()), true);
+
+ Resize(this, new EventArgs());
+
+ base.Connect();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strIntAppConnectionFailed, ex);
+ return false;
+ }
+ }
+
+ public override void Focus()
+ {
+ try
+ {
+ if (ConnectionWindow.InTabDrag)
+ {
+ return ;
+ }
+ SetForegroundWindow(_handle);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: My.Language.strIntAppFocusFailed, ex: ex, logOnly: true);
+ }
+ }
+
+ public override void Resize(object sender, EventArgs e)
+ {
+ try
+ {
+ if (InterfaceControl.Size == Size.Empty)
+ {
+ return ;
+ }
+ MoveWindow(_handle, System.Convert.ToInt32(- SystemInformation.FrameBorderSize.Width), System.Convert.ToInt32(- (SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height)), InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), true);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: My.Language.strIntAppResizeFailed, ex: ex, logOnly: true);
+ }
+ }
+
+ public override void Close()
+ {
+ try
+ {
+ if (!_process.HasExited)
+ {
+ _process.Kill();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: My.Language.strIntAppKillFailed, ex: ex, logOnly: true);
+ }
+
+ try
+ {
+ if (!_process.HasExited)
+ {
+ _process.Dispose();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: My.Language.strIntAppDisposeFailed, ex: ex, logOnly: true);
+ }
+
+ base.Close();
+ }
+#endregion
+
+#region Private Fields
+ private ExternalTool _externalTool;
+ private IntPtr _handle;
+ private Process _process;
+#endregion
+
+#region Private Methods
+ private void ProcessExited(object sender, EventArgs e)
+ {
+ Event_Closed(this);
+ }
+#endregion
+
+#region Enumerations
+ public enum Defaults
+ {
+ Port = 0
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.List.cs b/mRemoteV1/CS/Connection/Connection.Protocol.List.cs
new file mode 100644
index 000000000..47cc454b0
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.List.cs
@@ -0,0 +1,77 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class List : CollectionBase
+ {
+
+#region Public Properties
+public Connection.Protocol.Base this[object Index]
+ {
+ get
+ {
+ if (Index is Connection.Protocol.Base)
+ {
+ return Index;
+ }
+ else
+ {
+ return ((Connection.Protocol.Base.Default) (List[System.Convert.ToInt32(Index)]));
+ }
+ }
+ }
+
+public new int Count
+ {
+ get
+ {
+ return List.Count;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Connection.Protocol.Base Add(Connection.Protocol.Base cProt)
+ {
+ this.List.Add(cProt);
+ return cProt;
+ }
+
+ public void AddRange(Connection.Protocol.Base[] cProt)
+ {
+ foreach (Connection.Protocol.Base cP in cProt)
+ {
+ List.Add(cP);
+ }
+ }
+
+ public void Remove(Connection.Protocol.Base cProt)
+ {
+ try
+ {
+ this.List.Remove(cProt);
+ }
+ catch (Exception)
+ {
+ }
+ }
+
+ public new void Clear()
+ {
+ this.List.Clear();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.Protocols.cs b/mRemoteV1/CS/Connection/Connection.Protocol.Protocols.cs
new file mode 100644
index 000000000..a18d14dc1
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.Protocols.cs
@@ -0,0 +1,65 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using mRemoteNG.Tools;
+// End of VB project level imports
+
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class Converter
+ {
+ public static string ProtocolToString(Protocols protocol)
+ {
+ return protocol.ToString();
+ }
+
+ public static Protocols StringToProtocol(string protocol)
+ {
+ try
+ {
+ return (Protocols)Enum.Parse(typeof(Protocols), protocol, true);
+ }
+ catch (Exception)
+ {
+ return Protocols.RDP;
+ }
+ }
+ }
+
+ public enum Protocols
+ {
+ [LocalizedAttributes.LocalizedDescription("strRDP")]
+ RDP = 0,
+ [LocalizedAttributes.LocalizedDescription("strVnc")]
+ VNC = 1,
+ [LocalizedAttributes.LocalizedDescription("strSsh1")]
+ SSH1 = 2,
+ [LocalizedAttributes.LocalizedDescription("strSsh2")]
+ SSH2 = 3,
+ [LocalizedAttributes.LocalizedDescription("strTelnet")]
+ Telnet = 4,
+ [LocalizedAttributes.LocalizedDescription("strRlogin")]
+ Rlogin = 5,
+ [LocalizedAttributes.LocalizedDescription("strRAW")]
+ RAW = 6,
+ [LocalizedAttributes.LocalizedDescription("strHttp")]
+ HTTP = 7,
+ [LocalizedAttributes.LocalizedDescription("strHttps")]
+ HTTPS = 8,
+ [LocalizedAttributes.LocalizedDescription("strICA")]
+ ICA = 9,
+ [LocalizedAttributes.LocalizedDescription("strExtApp")]
+ IntApp = 20
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.PuttyBase.cs b/mRemoteV1/CS/Connection/Connection.Protocol.PuttyBase.cs
new file mode 100644
index 000000000..fa84c69e4
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.PuttyBase.cs
@@ -0,0 +1,347 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using mRemoteNG.Messages;
+//using mRemoteNG.App.Native;
+using System.Threading;
+using Microsoft.Win32;
+//using mRemoteNG.App.Runtime;
+using System.Text.RegularExpressions;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class PuttyBase : Base
+ {
+
+#region Constants
+ private const int IDM_RECONF = 0x50; // PuTTY Settings Menu ID
+#endregion
+
+#region Private Properties
+ bool _isPuttyNg;
+#endregion
+
+#region Public Properties
+ private Putty_Protocol _PuttyProtocol;
+public Putty_Protocol PuttyProtocol
+ {
+ get
+ {
+ return this._PuttyProtocol;
+ }
+ set
+ {
+ this._PuttyProtocol = value;
+ }
+ }
+
+ private Putty_SSHVersion _PuttySSHVersion;
+public Putty_SSHVersion PuttySSHVersion
+ {
+ get
+ {
+ return this._PuttySSHVersion;
+ }
+ set
+ {
+ this._PuttySSHVersion = value;
+ }
+ }
+
+ private IntPtr _PuttyHandle;
+public IntPtr PuttyHandle
+ {
+ get
+ {
+ return this._PuttyHandle;
+ }
+ set
+ {
+ this._PuttyHandle = value;
+ }
+ }
+
+ private Process _PuttyProcess;
+public Process PuttyProcess
+ {
+ get
+ {
+ return this._PuttyProcess;
+ }
+ set
+ {
+ this._PuttyProcess = value;
+ }
+ }
+
+ private static string _PuttyPath;
+public static string PuttyPath
+ {
+ get
+ {
+ return _PuttyPath;
+ }
+ set
+ {
+ _PuttyPath = value;
+ }
+ }
+
+public bool Focused
+ {
+ get
+ {
+ if (GetForegroundWindow() == PuttyHandle)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+#endregion
+
+#region Private Events & Handlers
+ private void ProcessExited(object sender, System.EventArgs e)
+ {
+ base.EVENT_CLOSED(this);
+ }
+#endregion
+
+#region Public Methods
+ public PuttyBase()
+ {
+
+ }
+
+ public override bool Connect()
+ {
+ try
+ {
+ _isPuttyNg = PuttyTypeDetector.GetPuttyType() == PuttyTypeDetector.PuttyType.PuttyNg;
+
+ PuttyProcess = new Process();
+ PuttyProcess.StartInfo.UseShellExecute = false;
+ PuttyProcess.StartInfo.FileName = _PuttyPath;
+
+ CommandLineArguments arguments = new CommandLineArguments();
+ arguments.EscapeForShell = false;
+
+ arguments.Add("-load", InterfaceControl.Info.PuttySession);
+
+ if (!(InterfaceControl.Info is PuttySession.Info))
+ {
+ arguments.Add("-" + _PuttyProtocol.ToString());
+
+ if (_PuttyProtocol == Putty_Protocol.ssh)
+ {
+ string username = "";
+ string password = "";
+
+ if (!string.IsNullOrEmpty(InterfaceControl.Info.Username))
+ {
+ username = InterfaceControl.Info.Username;
+ }
+ else
+ {
+ if (My.Settings.Default.EmptyCredentials == "windows")
+ {
+ username = Environment.UserName;
+ }
+ else if (My.Settings.Default.EmptyCredentials == "custom")
+ {
+ username = System.Convert.ToString(My.Settings.Default.DefaultUsername);
+ }
+ }
+
+ if (!string.IsNullOrEmpty(InterfaceControl.Info.Password))
+ {
+ password = InterfaceControl.Info.Password;
+ }
+ else
+ {
+ if (My.Settings.Default.EmptyCredentials == "custom")
+ {
+ password = Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.DefaultPassword), App.Info.General.EncryptionKey);
+ }
+ }
+
+ arguments.Add("-" + System.Convert.ToString(_PuttySSHVersion));
+
+ if (!((Force & Info.Force.NoCredentials) == (int) Info.Force.NoCredentials))
+ {
+ if (!string.IsNullOrEmpty(username))
+ {
+ arguments.Add("-l", username);
+ }
+ if (!string.IsNullOrEmpty(password))
+ {
+ arguments.Add("-pw", password);
+ }
+ }
+ }
+
+ arguments.Add("-P", InterfaceControl.Info.Port.ToString());
+ arguments.Add(InterfaceControl.Info.Hostname);
+ }
+
+ if (_isPuttyNg)
+ {
+ arguments.Add("-hwndparent", InterfaceControl.Handle.ToString());
+ }
+
+ PuttyProcess.StartInfo.Arguments = arguments.ToString();
+
+ PuttyProcess.EnableRaisingEvents = true;
+ PuttyProcess.Exited += ProcessExited;
+
+ PuttyProcess.Start();
+ PuttyProcess.WaitForInputIdle(System.Convert.ToInt32(My.Settings.Default.MaxPuttyWaitTime * 1000));
+
+ int startTicks = Environment.TickCount;
+ while (PuttyHandle.ToInt32() == 0 & Environment.TickCount < startTicks + (My.Settings.Default.MaxPuttyWaitTime * 1000))
+ {
+ if (_isPuttyNg)
+ {
+ PuttyHandle = FindWindowEx(InterfaceControl.Handle, 0, Constants.vbNullString, Constants.vbNullString);
+ }
+ else
+ {
+ PuttyProcess.Refresh();
+ PuttyHandle = PuttyProcess.MainWindowHandle;
+ }
+ if (PuttyHandle.ToInt32() == 0)
+ {
+ Thread.Sleep(0);
+ }
+ }
+
+ if (!_isPuttyNg)
+ {
+ SetParent(PuttyHandle, InterfaceControl.Handle);
+ }
+
+ MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strPuttyStuff, true);
+
+ MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(My.Language.strPuttyHandle, PuttyHandle.ToString()), true);
+ MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(My.Language.strPuttyTitle, PuttyProcess.MainWindowTitle), true);
+ MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(My.Language.strPuttyParentHandle, InterfaceControl.Parent.Handle.ToString()), true);
+
+ Resize(this, new EventArgs());
+
+ base.Connect();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strPuttyConnectionFailed + Constants.vbNewLine + ex.Message);
+ return false;
+ }
+ }
+
+ public override void Focus()
+ {
+ try
+ {
+ if (ConnectionWindow.InTabDrag)
+ {
+ return ;
+ }
+ SetForegroundWindow(PuttyHandle);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyFocusFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public override void Resize(object sender, EventArgs e)
+ {
+ try
+ {
+ if (InterfaceControl.Size == Size.Empty)
+ {
+ return ;
+ }
+ MoveWindow(PuttyHandle, System.Convert.ToInt32(- SystemInformation.FrameBorderSize.Width), System.Convert.ToInt32(- (SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height)), InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), true);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyResizeFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public override void Close()
+ {
+ try
+ {
+ if (PuttyProcess.HasExited == false)
+ {
+ PuttyProcess.Kill();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyKillFailed + Constants.vbNewLine + ex.Message, true);
+ }
+
+ try
+ {
+ PuttyProcess.Dispose();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyDisposeFailed + Constants.vbNewLine + ex.Message, true);
+ }
+
+ base.Close();
+ }
+
+ public void ShowSettingsDialog()
+ {
+ try
+ {
+ PostMessage(this.PuttyHandle, WM_SYSCOMMAND, IDM_RECONF, 0);
+ SetForegroundWindow(this.PuttyHandle);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyShowSettingsDialogFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Enums
+ public enum Putty_Protocol
+ {
+ ssh = 0,
+ telnet = 1,
+ rlogin = 2,
+ raw = 3,
+ serial = 4
+ }
+
+ public enum Putty_SSHVersion
+ {
+ ssh1 = 1,
+ ssh2 = 2
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.RAW.cs b/mRemoteV1/CS/Connection/Connection.Protocol.RAW.cs
new file mode 100644
index 000000000..6a9bdb544
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.RAW.cs
@@ -0,0 +1,30 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class RAW : Connection.Protocol.PuttyBase
+ {
+
+ public RAW()
+ {
+ this.PuttyProtocol = Putty_Protocol.raw;
+ }
+
+ public enum Defaults
+ {
+ Port = 23
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.RDP.cs b/mRemoteV1/CS/Connection/Connection.Protocol.RDP.cs
new file mode 100644
index 000000000..40ef4079e
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.RDP.cs
@@ -0,0 +1,1046 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Threading;
+using EOLWTSCOM;
+using System.ComponentModel;
+using mRemoteNG.Messages;
+//using mRemoteNG.App.Runtime;
+//using mRemoteNG.Tools.LocalizedAttributes;
+using MSTSCLib;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class RDP : Base
+ {
+#region Properties
+ public bool SmartSize
+ {
+ get
+ {
+ return _rdpClient.AdvancedSettings2.SmartSizing;
+ }
+ set
+ {
+ _rdpClient.AdvancedSettings2.SmartSizing = value;
+ ReconnectForResize();
+ }
+ }
+
+ public bool Fullscreen
+ {
+ get
+ {
+ return _rdpClient.FullScreen;
+ }
+ set
+ {
+ _rdpClient.FullScreen = value;
+ ReconnectForResize();
+ }
+ }
+
+ private bool _redirectKeys = false;
+ public bool RedirectKeys
+ {
+ get
+ {
+ return _redirectKeys;
+ }
+ set
+ {
+ _redirectKeys = value;
+ try
+ {
+ if (!_redirectKeys)
+ {
+ return ;
+ }
+
+ Debug.Assert(System.Convert.ToBoolean(_rdpClient.SecuredSettingsEnabled));
+ MSTSCLib.IMsRdpClientSecuredSettings msRdpClientSecuredSettings = _rdpClient.SecuredSettings2;
+ msRdpClientSecuredSettings.KeyboardHookMode = 1; // Apply key combinations at the remote server.
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ }
+#endregion
+
+#region Private Declarations
+ private MSTSCLib.MsRdpClient5NotSafeForScripting _rdpClient;
+ private Version _rdpVersion;
+ private Info _connectionInfo;
+ private bool _loginComplete;
+#endregion
+
+#region Public Methods
+ public RDP()
+ {
+ Control = new AxMsRdpClient5NotSafeForScripting();
+ }
+
+ public override bool SetProps()
+ {
+ base.SetProps();
+
+ try
+ {
+ Control.CreateControl();
+ _connectionInfo = InterfaceControl.Info;
+
+ try
+ {
+ while (!Control.Created)
+ {
+ Thread.Sleep(0);
+ System.Windows.Forms.Application.DoEvents();
+ }
+
+ _rdpClient = ((AxMsRdpClient5NotSafeForScripting) Control).GetOcx();
+ }
+ catch (System.Runtime.InteropServices.COMException ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpControlCreationFailed, ex);
+ Control.Dispose();
+ return false;
+ }
+
+ _rdpVersion = new Version(_rdpClient.Version);
+
+ _rdpClient.Server = this._connectionInfo.Hostname;
+
+ this.SetCredentials();
+ this.SetResolution();
+ this._rdpClient.FullScreenTitle = this._connectionInfo.Name;
+
+ //not user changeable
+ _rdpClient.AdvancedSettings2.GrabFocusOnConnect = true;
+ _rdpClient.AdvancedSettings3.EnableAutoReconnect = true;
+ _rdpClient.AdvancedSettings3.MaxReconnectAttempts = System.Convert.ToInt32(My.Settings.Default.RdpReconnectionCount);
+ _rdpClient.AdvancedSettings2.keepAliveInterval = 60000; //in milliseconds (10.000 = 10 seconds)
+ _rdpClient.AdvancedSettings5.AuthenticationLevel = 0;
+ _rdpClient.AdvancedSettings2.EncryptionEnabled = 1;
+
+ _rdpClient.AdvancedSettings2.overallConnectionTimeout = 20;
+
+ _rdpClient.AdvancedSettings2.BitmapPeristence = this._connectionInfo.CacheBitmaps;
+ if (_rdpVersion >= Versions.RDC61)
+ {
+ _rdpClient.AdvancedSettings7.EnableCredSspSupport = _connectionInfo.UseCredSsp;
+ }
+
+ this.SetUseConsoleSession();
+ this.SetPort();
+ RedirectKeys = _connectionInfo.RedirectKeys;
+ this.SetRedirection();
+ this.SetAuthenticationLevel();
+ SetLoadBalanceInfo();
+ this.SetRdGateway();
+
+ _rdpClient.ColorDepth = System.Convert.ToInt32(Conversion.Int(this._connectionInfo.Colors));
+
+ this.SetPerformanceFlags();
+
+ _rdpClient.ConnectingText = My.Language.strConnecting;
+
+ Control.Anchor = AnchorStyles.None;
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPropsFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+
+ public override bool Connect()
+ {
+ _loginComplete = false;
+ SetEventHandlers();
+
+ try
+ {
+ _rdpClient.Connect();
+ base.Connect();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ }
+
+ return false;
+ }
+
+ public override void Disconnect()
+ {
+ try
+ {
+ _rdpClient.Disconnect();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpDisconnectFailed + Constants.vbNewLine + ex.Message, true);
+ base.Close();
+ }
+ }
+
+ public void ToggleFullscreen()
+ {
+ try
+ {
+ this.Fullscreen = !this.Fullscreen;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpToggleFullscreenFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void ToggleSmartSize()
+ {
+ try
+ {
+ this.SmartSize = !this.SmartSize;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpToggleSmartSizeFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public override void Focus()
+ {
+ try
+ {
+ if (Control.ContainsFocus == false)
+ {
+ Control.Focus();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFocusFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private Size _controlBeginningSize = new Size();
+ public override void ResizeBegin(object sender, EventArgs e)
+ {
+ _controlBeginningSize = Control.Size;
+ }
+
+ public override void Resize(object sender, EventArgs e)
+ {
+ if (DoResize() && _controlBeginningSize.IsEmpty)
+ {
+ ReconnectForResize();
+ }
+ base.Resize(sender, e);
+ }
+
+ public override void ResizeEnd(object sender, EventArgs e)
+ {
+ DoResize();
+ if (!(Control.Size == _controlBeginningSize))
+ {
+ ReconnectForResize();
+ }
+ _controlBeginningSize = Size.Empty;
+ }
+#endregion
+
+#region Private Methods
+ private bool DoResize()
+ {
+ Control.Location = InterfaceControl.Location;
+ if (!(Control.Size == InterfaceControl.Size) && !(InterfaceControl.Size == Size.Empty))
+ {
+ Control.Size = InterfaceControl.Size;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ private void ReconnectForResize()
+ {
+ if (_rdpVersion < Versions.RDC80)
+ {
+ return ;
+ }
+
+ if (!_loginComplete)
+ {
+ return ;
+ }
+
+ if (!InterfaceControl.Info.AutomaticResize)
+ {
+ return ;
+ }
+
+ if (!(InterfaceControl.Info.Resolution == RDPResolutions.FitToWindow | InterfaceControl.Info.Resolution == RDPResolutions.Fullscreen))
+ {
+ return ;
+ }
+
+ if (SmartSize)
+ {
+ return ;
+ }
+
+ Size size = new Size();
+ if (!Fullscreen)
+ {
+ size = Control.Size;
+ }
+ else
+ {
+ size = Screen.FromControl(Control).Bounds.Size;
+ }
+
+ IMsRdpClient8 msRdpClient8 = _rdpClient;
+ msRdpClient8.Reconnect(size.Width, size.Height);
+ }
+
+ private void SetRdGateway()
+ {
+ try
+ {
+ if (_rdpClient.TransportSettings.GatewayIsSupported == 0)
+ {
+ MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, true);
+ return ;
+ }
+ else
+ {
+ MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, true);
+ }
+
+ if (!(_connectionInfo.RDGatewayUsageMethod == RDGatewayUsageMethod.Never))
+ {
+ _rdpClient.TransportSettings.GatewayUsageMethod = _connectionInfo.RDGatewayUsageMethod;
+ _rdpClient.TransportSettings.GatewayHostname = _connectionInfo.RDGatewayHostname;
+ _rdpClient.TransportSettings.GatewayProfileUsageMethod = 1; // TSC_PROXY_PROFILE_MODE_EXPLICIT
+ if (_connectionInfo.RDGatewayUseConnectionCredentials == RDGatewayUseConnectionCredentials.SmartCard)
+ {
+ _rdpClient.TransportSettings.GatewayCredsSource = 1; // TSC_PROXY_CREDS_MODE_SMARTCARD
+ }
+ if (_rdpVersion >= Versions.RDC61 && !((Force & Info.Force.NoCredentials) == Info.Force.NoCredentials))
+ {
+ if (_connectionInfo.RDGatewayUseConnectionCredentials == RDGatewayUseConnectionCredentials.Yes)
+ {
+ _rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.Username;
+ _rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.Password;
+ _rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.Domain;
+ }
+ else if (_connectionInfo.RDGatewayUseConnectionCredentials == RDGatewayUseConnectionCredentials.SmartCard)
+ {
+ _rdpClient.TransportSettings2.GatewayCredSharing = 0;
+ }
+ else
+ {
+ _rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.RDGatewayUsername;
+ _rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.RDGatewayPassword;
+ _rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.RDGatewayDomain;
+ _rdpClient.TransportSettings2.GatewayCredSharing = 0;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strRdpSetGatewayFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetUseConsoleSession()
+ {
+ try
+ {
+ bool value = false;
+
+ if ((Force & Info.Force.UseConsoleSession) == Info.Force.UseConsoleSession)
+ {
+ value = true;
+ }
+ else if ((Force & Info.Force.DontUseConsoleSession) == Info.Force.DontUseConsoleSession)
+ {
+ value = false;
+ }
+ else
+ {
+ value = _connectionInfo.UseConsoleSession;
+ }
+
+ if (_rdpVersion >= Versions.RDC61)
+ {
+ MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), true);
+ _rdpClient.AdvancedSettings7.ConnectToAdministerServer = value;
+ }
+ else
+ {
+ MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), true);
+ _rdpClient.AdvancedSettings2.ConnectToServerConsole = value;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpSetConsoleSessionFailed, ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ private void SetCredentials()
+ {
+ try
+ {
+ if ((Force & Info.Force.NoCredentials) == Info.Force.NoCredentials)
+ {
+ return ;
+ }
+
+ string userName = _connectionInfo.Username;
+ string password = _connectionInfo.Password;
+ string domain = _connectionInfo.Domain;
+
+ if (string.IsNullOrEmpty(userName))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "windows")
+ {
+ _rdpClient.UserName = Environment.UserName;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ _rdpClient.UserName = System.Convert.ToString(My.Settings.Default.DefaultUsername);
+ }
+ }
+ else
+ {
+ _rdpClient.UserName = userName;
+ }
+
+ if (string.IsNullOrEmpty(password))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ if (My.Settings.Default.DefaultPassword != "")
+ {
+ _rdpClient.AdvancedSettings2.ClearTextPassword = Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.DefaultPassword), App.Info.General.EncryptionKey);
+ }
+ }
+ }
+ else
+ {
+ _rdpClient.AdvancedSettings2.ClearTextPassword = password;
+ }
+
+ if (string.IsNullOrEmpty(domain))
+ {
+ if ((string) My.Settings.Default.EmptyCredentials == "windows")
+ {
+ _rdpClient.Domain = Environment.UserDomainName;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ _rdpClient.Domain = System.Convert.ToString(My.Settings.Default.DefaultDomain);
+ }
+ }
+ else
+ {
+ _rdpClient.Domain = domain;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetCredentialsFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetResolution()
+ {
+ try
+ {
+ if ((this.Force & Connection.Info.Force.Fullscreen) == Connection.Info.Force.Fullscreen)
+ {
+ _rdpClient.FullScreen = true;
+ _rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width;
+ _rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height;
+
+ return;
+ }
+
+ if ((this.InterfaceControl.Info.Resolution == RDPResolutions.FitToWindow) || (this.InterfaceControl.Info.Resolution == RDPResolutions.SmartSize))
+ {
+ _rdpClient.DesktopWidth = InterfaceControl.Size.Width;
+ _rdpClient.DesktopHeight = InterfaceControl.Size.Height;
+ }
+ else if (this.InterfaceControl.Info.Resolution == RDPResolutions.Fullscreen)
+ {
+ _rdpClient.FullScreen = true;
+ _rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width;
+ _rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height;
+ }
+ else
+ {
+ Rectangle resolution = GetResolutionRectangle(_connectionInfo.Resolution);
+ _rdpClient.DesktopWidth = resolution.Width;
+ _rdpClient.DesktopHeight = resolution.Height;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetResolutionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetPort()
+ {
+ try
+ {
+ if (_connectionInfo.Port != Defaults.Port)
+ {
+ _rdpClient.AdvancedSettings2.RDPPort = _connectionInfo.Port;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPortFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetRedirection()
+ {
+ try
+ {
+ _rdpClient.AdvancedSettings2.RedirectDrives = this._connectionInfo.RedirectDiskDrives;
+ _rdpClient.AdvancedSettings2.RedirectPorts = this._connectionInfo.RedirectPorts;
+ _rdpClient.AdvancedSettings2.RedirectPrinters = this._connectionInfo.RedirectPrinters;
+ _rdpClient.AdvancedSettings2.RedirectSmartCards = this._connectionInfo.RedirectSmartCards;
+ _rdpClient.SecuredSettings2.AudioRedirectionMode = System.Convert.ToInt32(Conversion.Int(this._connectionInfo.RedirectSound));
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectionFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetPerformanceFlags()
+ {
+ try
+ {
+ int pFlags = 0;
+ if (this._connectionInfo.DisplayThemes == false)
+ {
+ pFlags += System.Convert.ToInt32(Conversion.Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableThemes));
+ }
+
+ if (this._connectionInfo.DisplayWallpaper == false)
+ {
+ pFlags += System.Convert.ToInt32(Conversion.Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableWallpaper));
+ }
+
+ if (this._connectionInfo.EnableFontSmoothing)
+ {
+ pFlags += System.Convert.ToInt32(Conversion.Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableFontSmoothing));
+ }
+
+ if (this._connectionInfo.EnableDesktopComposition)
+ {
+ pFlags += System.Convert.ToInt32(Conversion.Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableDesktopComposition));
+ }
+
+ _rdpClient.AdvancedSettings2.PerformanceFlags = pFlags;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPerformanceFlagsFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetAuthenticationLevel()
+ {
+ try
+ {
+ _rdpClient.AdvancedSettings5.AuthenticationLevel = this._connectionInfo.RDPAuthenticationLevel;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetAuthenticationLevelFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SetLoadBalanceInfo()
+ {
+ if (string.IsNullOrEmpty(_connectionInfo.LoadBalanceInfo))
+ {
+ return ;
+ }
+ try
+ {
+ _rdpClient.AdvancedSettings2.LoadBalanceInfo = _connectionInfo.LoadBalanceInfo;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("Unable to set load balance info.", ex);
+ }
+ }
+
+ private void SetEventHandlers()
+ {
+ try
+ {
+ _rdpClient.OnConnecting += RDPEvent_OnConnecting;
+ _rdpClient.OnConnected += RDPEvent_OnConnected;
+ _rdpClient.OnLoginComplete += RDPEvent_OnLoginComplete;
+ _rdpClient.OnFatalError += RDPEvent_OnFatalError;
+ _rdpClient.OnDisconnected += RDPEvent_OnDisconnected;
+ _rdpClient.OnLeaveFullScreenMode += RDPEvent_OnLeaveFullscreenMode;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetEventHandlersFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Events & Handlers
+ private void RDPEvent_OnFatalError(int errorCode)
+ {
+ Event_ErrorOccured(this, System.Convert.ToString(errorCode));
+ }
+
+ private void RDPEvent_OnDisconnected(int discReason)
+ {
+ const int UI_ERR_NORMAL_DISCONNECT = 0xB08;
+ if (!(discReason == UI_ERR_NORMAL_DISCONNECT))
+ {
+ string reason = _rdpClient.GetErrorDescription(discReason, (System.UInt32) _rdpClient.ExtendedDisconnectReason);
+ Event_Disconnected(this, discReason + "\r\n" + reason);
+ }
+
+ if (My.Settings.Default.ReconnectOnDisconnect)
+ {
+ ReconnectGroup = new ReconnectGroup();
+ ReconnectGroup.CloseClicked += Event_ReconnectGroupCloseClicked;
+ ReconnectGroup.Left = (int) (((double) Control.Width / 2) - ((double) ReconnectGroup.Width / 2));
+ ReconnectGroup.Top = (int) (((double) Control.Height / 2) - ((double) ReconnectGroup.Height / 2));
+ ReconnectGroup.Parent = Control;
+ ReconnectGroup.Show();
+ tmrReconnect.Enabled = true;
+ }
+ else
+ {
+ Close();
+ }
+ }
+
+ private void RDPEvent_OnConnecting()
+ {
+ Event_Connecting(this);
+ }
+
+ private void RDPEvent_OnConnected()
+ {
+ Event_Connected(this);
+ }
+
+ private void RDPEvent_OnLoginComplete()
+ {
+ _loginComplete = true;
+ }
+
+ private void RDPEvent_OnLeaveFullscreenMode()
+ {
+ Fullscreen = false;
+ if (LeaveFullscreenEvent != null)
+ LeaveFullscreenEvent(this, new EventArgs());
+ }
+#endregion
+
+#region Public Events & Handlers
+ public delegate void LeaveFullscreenEventHandler(Connection.Protocol.RDP sender, System.EventArgs e);
+ private LeaveFullscreenEventHandler LeaveFullscreenEvent;
+
+ public event LeaveFullscreenEventHandler LeaveFullscreen
+ {
+ add
+ {
+ LeaveFullscreenEvent = (LeaveFullscreenEventHandler) System.Delegate.Combine(LeaveFullscreenEvent, value);
+ }
+ remove
+ {
+ LeaveFullscreenEvent = (LeaveFullscreenEventHandler) System.Delegate.Remove(LeaveFullscreenEvent, value);
+ }
+ }
+
+#endregion
+
+#region Enums
+ public enum Defaults
+ {
+ Colors = RDPColors.Colors16Bit,
+ Sounds = RDPSounds.DoNotPlay,
+ Resolution = RDPResolutions.FitToWindow,
+ Port = 3389
+ }
+
+ public enum RDPColors
+ {
+ [LocalizedAttributes.LocalizedDescription("strRDP256Colors")]
+ Colors256 = 8,
+ [LocalizedAttributes.LocalizedDescription("strRDP32768Colors")]
+ Colors15Bit = 15,
+ [LocalizedAttributes.LocalizedDescription("strRDP65536Colors")]
+ Colors16Bit = 16,
+ [LocalizedAttributes.LocalizedDescription("strRDP16777216Colors")]
+ Colors24Bit = 24,
+ [LocalizedAttributes.LocalizedDescription("strRDP4294967296Colors")]
+ Colors32Bit = 32
+ }
+
+ public enum RDPSounds
+ {
+ [LocalizedAttributes.LocalizedDescription("strRDPSoundBringToThisComputer")]
+ BringToThisComputer = 0,
+ [LocalizedAttributes.LocalizedDescription("strRDPSoundLeaveAtRemoteComputer")]
+ LeaveAtRemoteComputer = 1,
+ [LocalizedAttributes.LocalizedDescription("strRDPSoundDoNotPlay")]
+ DoNotPlay = 2
+ }
+
+ private enum RDPPerformanceFlags
+ {
+ [Description("strRDPDisableWallpaper")]DisableWallpaper = 0x1,
+ [Description("strRDPDisableFullWindowdrag")]DisableFullWindowDrag = 0x2,
+ [Description("strRDPDisableMenuAnimations")]DisableMenuAnimations = 0x4,
+ [Description("strRDPDisableThemes")]DisableThemes = 0x8,
+ [Description("strRDPDisableCursorShadow")]DisableCursorShadow = 0x20,
+ [Description("strRDPDisableCursorblinking")]DisableCursorBlinking = 0x40,
+ [Description("strRDPEnableFontSmoothing")]EnableFontSmoothing = 0x80,
+ [Description("strRDPEnableDesktopComposition")]EnableDesktopComposition = 0x100
+ }
+
+ public enum RDPResolutions
+ {
+ [LocalizedAttributes.LocalizedDescription("strRDPFitToPanel")]
+ FitToWindow,
+ [LocalizedAttributes.LocalizedDescription("strFullscreen")]
+ Fullscreen,
+ [LocalizedAttributes.LocalizedDescription("strRDPSmartSize")]
+ SmartSize,
+ [Description("640x480")]Res640x480,
+ [Description("800x600")]Res800x600,
+ [Description("1024x768")]Res1024x768,
+ [Description("1152x864")]Res1152x864,
+ [Description("1280x800")]Res1280x800,
+ [Description("1280x1024")]Res1280x1024,
+ [Description("1400x1050")]Res1400x1050,
+ [Description("1440x900")]Res1440x900,
+ [Description("1600x1024")]Res1600x1024,
+ [Description("1600x1200")]Res1600x1200,
+ [Description("1600x1280")]Res1600x1280,
+ [Description("1680x1050")]Res1680x1050,
+ [Description("1900x1200")]Res1900x1200,
+ [Description("1920x1200")]Res1920x1200,
+ [Description("2048x1536")]Res2048x1536,
+ [Description("2560x2048")]Res2560x2048,
+ [Description("3200x2400")]Res3200x2400,
+ [Description("3840x2400")]Res3840x2400
+ }
+
+ public enum AuthenticationLevel
+ {
+ [LocalizedAttributes.LocalizedDescription("strAlwaysConnectEvenIfAuthFails")]
+ NoAuth = 0,
+ [LocalizedAttributes.LocalizedDescription("strDontConnectWhenAuthFails")]
+ AuthRequired = 1,
+ [LocalizedAttributes.LocalizedDescription("strWarnIfAuthFails")]
+ WarnOnFailedAuth = 2
+ }
+
+ public enum RDGatewayUsageMethod
+ {
+ [LocalizedAttributes.LocalizedDescription("strNever")]
+ Never = 0, // TSC_PROXY_MODE_NONE_DIRECT
+ [LocalizedAttributes.LocalizedDescription("strAlways")]
+ Always = 1, // TSC_PROXY_MODE_DIRECT
+ [LocalizedAttributes.LocalizedDescription("strDetect")]
+ Detect = 2 // TSC_PROXY_MODE_DETECT
+ }
+
+ public enum RDGatewayUseConnectionCredentials
+ {
+ [LocalizedAttributes.LocalizedDescription("strUseDifferentUsernameAndPassword")]
+ No = 0,
+ [LocalizedAttributes.LocalizedDescription("strUseSameUsernameAndPassword")]
+ Yes = 1,
+ [LocalizedAttributes.LocalizedDescription("strUseSmartCard")]
+ SmartCard = 2
+ }
+#endregion
+
+#region Resolution
+ public static Rectangle GetResolutionRectangle(RDPResolutions resolution)
+ {
+ string[] resolutionParts = null;
+ if (!(resolution == RDPResolutions.FitToWindow) & !(resolution == RDPResolutions.Fullscreen) & !(resolution == RDPResolutions.SmartSize))
+ {
+ resolutionParts = resolution.ToString().Replace("Res", "").Split("x");
+ }
+ if (resolutionParts == null || !(resolutionParts.Length == 2))
+ {
+ return new Rectangle(0, 0, 0, 0);
+ }
+ else
+ {
+ return new Rectangle(0, 0, (int) (resolutionParts[0]), (int) (resolutionParts[1]));
+ }
+ }
+#endregion
+
+ public class Versions
+ {
+ public static Version RDC60 = new Version(6, 0, 6000);
+ public static Version RDC61 = new Version(6, 0, 6001);
+ public static Version RDC70 = new Version(6, 1, 7600);
+ public static Version RDC80 = new Version(6, 2, 9200);
+ }
+
+#region Terminal Sessions
+ public class TerminalSessions
+ {
+ private WTSCOM _wtsCom;
+
+ public TerminalSessions()
+ {
+ try
+ {
+ _wtsCom = new WTSCOM();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("TerminalSessions.New() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public long OpenConnection(string hostname)
+ {
+ if (_wtsCom == null)
+ {
+ return 0;
+ }
+
+ try
+ {
+ return _wtsCom.WTSOpenServer(hostname);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpOpenConnectionFailed, ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public void CloseConnection(long serverHandle)
+ {
+ if (_wtsCom == null)
+ {
+ return ;
+ }
+
+ try
+ {
+ _wtsCom.WTSCloseServer(serverHandle);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpCloseConnectionFailed, ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public SessionsCollection GetSessions(long serverHandle)
+ {
+ if (_wtsCom == null)
+ {
+ return new SessionsCollection();
+ }
+
+ SessionsCollection sessions = new SessionsCollection();
+
+ try
+ {
+ WTSSessions wtsSessions = _wtsCom.WTSEnumerateSessions(serverHandle);
+
+ long sessionId = 0;
+ string sessionUser = "";
+ long sessionState;
+ string sessionName = "";
+
+ foreach (WTSSession wtsSession in wtsSessions)
+ {
+ sessionId = wtsSession.SessionId;
+ sessionUser = _wtsCom.WTSQuerySessionInformation(serverHandle, wtsSession.SessionId, 5); // WFUsername = 5
+ sessionState = long.Parse(wtsSession.State + "\r\n");
+ sessionName = wtsSession.WinStationName + "\r\n";
+
+ if (!string.IsNullOrEmpty(sessionUser))
+ {
+ if (sessionState == 0)
+ {
+ sessions.Add(sessionId, My.Language.strActive, sessionUser, sessionName);
+ }
+ else
+ {
+ sessions.Add(sessionId, My.Language.strInactive, sessionUser, sessionName);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpGetSessionsFailed, ex, MessageClass.ErrorMsg, true);
+ }
+
+ return sessions;
+ }
+
+ public bool KillSession(long serverHandle, long sessionId)
+ {
+ if (_wtsCom == null)
+ {
+ return false;
+ }
+
+ bool result = false;
+
+ try
+ {
+ result = _wtsCom.WTSLogoffSession(serverHandle, sessionId, true);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("TerminalSessions.KillSession() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+
+ return result;
+ }
+ }
+
+ public class SessionsCollection : CollectionBase
+ {
+
+ public Session this[int index]
+ {
+ get
+ {
+ return ((Session) (List[index]));
+ }
+ }
+
+ public int ItemsCount
+ {
+ get
+ {
+ return List.Count();
+ }
+ }
+
+ public Session Add(long sessionId, string sessionState, string sessionUser, string sessionName)
+ {
+ Session newSession = new Session();
+
+ try
+ {
+ newSession.SessionId = sessionId;
+ newSession.SessionState = sessionState;
+ newSession.SessionUser = sessionUser;
+ newSession.SessionName = sessionName;
+
+ List.Add(newSession);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strRdpAddSessionFailed, ex, MessageClass.ErrorMsg, true);
+ }
+
+ return newSession;
+ }
+
+ public void ClearSessions()
+ {
+ List.Clear();
+ }
+ }
+
+ public class Session : CollectionBase
+ {
+
+ public long SessionId {get; set;}
+ public string SessionState {get; set;}
+ public string SessionUser {get; set;}
+ public string SessionName {get; set;}
+ }
+#endregion
+
+#region Fatal Errors
+ public class FatalErrors
+ {
+ public FatalErrors()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ _description = new string[] {System.Convert.ToString(0 == My.Language.strRdpErrorUnknown), System.Convert.ToString(1 == My.Language.strRdpErrorCode1), System.Convert.ToString(2 == My.Language.strRdpErrorOutOfMemory), System.Convert.ToString(3 == My.Language.strRdpErrorWindowCreation), System.Convert.ToString(4 == My.Language.strRdpErrorCode2), System.Convert.ToString(5 == My.Language.strRdpErrorCode3), System.Convert.ToString(6 == My.Language.strRdpErrorCode4), System.Convert.ToString(7 == My.Language.strRdpErrorConnection), System.Convert.ToString(100 == My.Language.strRdpErrorWinsock)};
+
+ }
+ protected static string[] _description; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+
+ public static string GetError(string id)
+ {
+ try
+ {
+ return (_description[int.Parse(id)]);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpErrorGetFailure + Constants.vbNewLine + ex.Message, true);
+ return string.Format(My.Language.strRdpErrorUnknown, id);
+ }
+ }
+ }
+#endregion
+
+#region Reconnect Stuff
+ public void tmrReconnect_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
+ {
+ bool srvReady = Tools.PortScan.Scanner.IsPortOpen(_connectionInfo.Hostname, System.Convert.ToString(_connectionInfo.Port));
+
+ ReconnectGroup.ServerReady = srvReady;
+
+ if (ReconnectGroup.ReconnectWhenReady && srvReady)
+ {
+ tmrReconnect.Enabled = false;
+ ReconnectGroup.DisposeReconnectGroup();
+ //SetProps()
+ _rdpClient.Connect();
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.Rlogin.cs b/mRemoteV1/CS/Connection/Connection.Protocol.Rlogin.cs
new file mode 100644
index 000000000..6feb6f6d7
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.Rlogin.cs
@@ -0,0 +1,30 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class Rlogin : PuttyBase
+ {
+
+ public Rlogin()
+ {
+ this.PuttyProtocol = Putty_Protocol.rlogin;
+ }
+
+ public enum Defaults
+ {
+ Port = 513
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.SSH1.cs b/mRemoteV1/CS/Connection/Connection.Protocol.SSH1.cs
new file mode 100644
index 000000000..b674aeaea
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.SSH1.cs
@@ -0,0 +1,31 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class SSH1 : PuttyBase
+ {
+
+ public SSH1()
+ {
+ this.PuttyProtocol = Putty_Protocol.ssh;
+ this.PuttySSHVersion = Putty_SSHVersion.ssh1;
+ }
+
+ public enum Defaults
+ {
+ Port = 22
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.SSH2.cs b/mRemoteV1/CS/Connection/Connection.Protocol.SSH2.cs
new file mode 100644
index 000000000..66f6b6441
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.SSH2.cs
@@ -0,0 +1,31 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class SSH2 : PuttyBase
+ {
+
+ public SSH2()
+ {
+ this.PuttyProtocol = Putty_Protocol.ssh;
+ this.PuttySSHVersion = Putty_SSHVersion.ssh2;
+ }
+
+ public enum Defaults
+ {
+ Port = 22
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.Serial.cs b/mRemoteV1/CS/Connection/Connection.Protocol.Serial.cs
new file mode 100644
index 000000000..6bd014557
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.Serial.cs
@@ -0,0 +1,30 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class Serial : PuttyBase
+ {
+
+ public Serial()
+ {
+ this.PuttyProtocol = Putty_Protocol.serial;
+ }
+
+ public enum Defaults
+ {
+ Port = 9600
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.Telnet.cs b/mRemoteV1/CS/Connection/Connection.Protocol.Telnet.cs
new file mode 100644
index 000000000..a8a652544
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.Telnet.cs
@@ -0,0 +1,30 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class Telnet : PuttyBase
+ {
+
+ public Telnet()
+ {
+ this.PuttyProtocol = Putty_Protocol.telnet;
+ }
+
+ public enum Defaults
+ {
+ Port = 23
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Connection/Connection.Protocol.VNC.cs b/mRemoteV1/CS/Connection/Connection.Protocol.VNC.cs
new file mode 100644
index 000000000..3f8391e8e
--- /dev/null
+++ b/mRemoteV1/CS/Connection/Connection.Protocol.VNC.cs
@@ -0,0 +1,375 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+using System.ComponentModel;
+using mRemoteNG.Tools;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Connection.Protocol
+{
+ public class VNC : Base
+ {
+
+#region Properties
+ public bool SmartSize
+ {
+ get { return VNC_Renamed.Scaled; }
+ set { VNC_Renamed.Scaled = value; }
+ }
+
+ public bool ViewOnly
+ {
+ get { return VNC_Renamed.ViewOnly; }
+ set { VNC_Renamed.ViewOnly = value; }
+ }
+#endregion
+
+#region Private Declarations
+ private VncSharp.RemoteDesktop VNC_Renamed;
+ private Connection.Info Info;
+#endregion
+
+#region Public Methods
+ public VNC()
+ {
+ this.Control = new VncSharp.RemoteDesktop();
+ }
+
+ public override bool SetProps()
+ {
+ base.SetProps();
+
+ try
+ {
+ VNC_Renamed = this.Control;
+
+ Info = this.InterfaceControl.Info;
+
+ VNC_Renamed.VncPort = this.Info.Port;
+
+ //If Info.VNCCompression <> Compression.CompNone Then
+ // VNC.JPEGCompression = True
+ // VNC.JPEGCompressionLevel = Info.VNCCompression
+ //End If
+
+ //Select Case Info.VNCEncoding
+ // Case Encoding.EncCorre
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_CORRE
+ // Case Encoding.EncHextile
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_HEXTILE
+ // Case Encoding.EncRaw
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_RAW
+ // Case Encoding.EncRRE
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_RRE
+ // Case Encoding.EncTight
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_TIGHT
+ // Case Encoding.EncZlib
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_ZLIB
+ // Case Encoding.EncZLibHex
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_ZLIBHEX
+ // Case Encoding.EncZRLE
+ // VNC.Encoding = ViewerX.VNCEncoding.RFB_ZRLE
+ //End Select
+
+ //If Info.VNCAuthMode = AuthMode.AuthWin Then
+ // VNC.LoginType = ViewerX.ViewerLoginType.VLT_MSWIN
+ // VNC.MsUser = Me.Info.Username
+ // VNC.MsDomain = Me.Info.Domain
+ // VNC.MsPassword = Me.Info.Password
+ //Else
+ // VNC.LoginType = ViewerX.ViewerLoginType.VLT_VNC
+ // VNC.Password = Me.Info.Password
+ //End If
+
+ //Select Case Info.VNCProxyType
+ // Case ProxyType.ProxyNone
+ // VNC.ProxyType = ViewerX.ConnectionProxyType.VPT_NONE
+ // Case ProxyType.ProxyHTTP
+ // VNC.ProxyType = ViewerX.ConnectionProxyType.VPT_HTTP
+ // Case ProxyType.ProxySocks5
+ // VNC.ProxyType = ViewerX.ConnectionProxyType.VPT_SOCKS5
+ // Case ProxyType.ProxyUltra
+ // VNC.ProxyType = ViewerX.ConnectionProxyType.VPT_ULTRA_REPEATER
+ //End Select
+
+ //If Info.VNCProxyType <> ProxyType.ProxyNone Then
+ // VNC.ProxyIP = Info.VNCProxyIP
+ // VNC.ProxyPort = Info.VNCProxyPort
+ // VNC.ProxyUser = Info.VNCProxyUsername
+ // VNC.ProxyPassword = Info.VNCProxyPassword
+ //End If
+
+ //If Info.VNCColors = Colors.Col8Bit Then
+ // VNC.RestrictPixel = True
+ //Else
+ // VNC.RestrictPixel = False
+ //End If
+
+ //VNC.ConnectingText = My.Language.strInheritConnecting & " (SmartCode VNC viewer)"
+ //VNC.DisconnectedText = My.Language.strInheritDisconnected
+ //VNC.MessageBoxes = False
+ //VNC.EndInit()
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncSetPropsFailed + Constants.vbNewLine + ex.Message, true);
+ return false;
+ }
+ }
+
+ public override bool Connect()
+ {
+ this.SetEventHandlers();
+
+ try
+ {
+ VNC_Renamed.Connect(this.Info.Hostname, this.Info.VNCViewOnly, Info.VNCSmartSizeMode != SmartSizeMode.SmartSNo);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncConnectionOpenFailed + Constants.vbNewLine + ex.Message);
+ return false;
+ }
+
+ return true;
+ }
+
+ public override void Disconnect()
+ {
+ try
+ {
+ VNC_Renamed.Disconnect();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncConnectionDisconnectFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void SendSpecialKeys(SpecialKeys Keys)
+ {
+ try
+ {
+ switch (Keys)
+ {
+ case SpecialKeys.CtrlAltDel:
+ VNC_Renamed.SendSpecialKeys(SpecialKeys.CtrlAltDel);
+ break;
+ case SpecialKeys.CtrlEsc:
+ VNC_Renamed.SendSpecialKeys(SpecialKeys.CtrlEsc);
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncSendSpecialKeysFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void ToggleSmartSize()
+ {
+ try
+ {
+ SmartSize = !SmartSize;
+ RefreshScreen();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncToggleSmartSizeFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void ToggleViewOnly()
+ {
+ try
+ {
+ ViewOnly = !ViewOnly;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncToggleViewOnlyFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+
+ public void StartChat()
+ {
+ try
+ {
+ //If VNC.Capabilities.Chat = True Then
+ // VNC.OpenChat()
+ //Else
+ // mC.AddMessage(Messages.MessageClass.InformationMsg, "VNC Server doesn't support chat")
+ //End If
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncStartChatFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void StartFileTransfer()
+ {
+ try
+ {
+ //If VNC.Capabilities.FileTransfer = True Then
+ // VNC.OpenFileTransfer()
+ //Else
+ // mC.AddMessage(Messages.MessageClass.InformationMsg, "VNC Server doesn't support file transfers")
+ //End If
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+
+ public void RefreshScreen()
+ {
+ try
+ {
+ VNC_Renamed.FullScreenUpdate();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncRefreshFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Methods
+ private void SetEventHandlers()
+ {
+ try
+ {
+ VNC_Renamed.ConnectComplete += VNCEvent_Connected;
+ VNC_Renamed.ConnectionLost += VNCEvent_Disconnected;
+ mRemoteNG.frmMain.clipboardchange += VNCEvent_ClipboardChanged;
+ if (!((Force & Info.Force.NoCredentials) == (int) Info.Force.NoCredentials) && !string.IsNullOrEmpty(Info.Password))
+ {
+ VNC_Renamed.GetPassword = new System.EventHandler(VNCEvent_Authenticate);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strVncSetEventHandlersFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Events & Handlers
+ private void VNCEvent_Connected(object sender, EventArgs e)
+ {
+ base.Event_Connected(this);
+ VNC_Renamed.AutoScroll = Info.VNCSmartSizeMode == SmartSizeMode.SmartSNo;
+ }
+
+ private void VNCEvent_Disconnected(object sender, EventArgs e)
+ {
+ base.Event_Disconnected(sender, e.ToString());
+ base.Close();
+ }
+
+ private void VNCEvent_ClipboardChanged()
+ {
+ this.VNC_Renamed.FillServerClipboard();
+ }
+
+ private string VNCEvent_Authenticate()
+ {
+ return Info.Password;
+ }
+#endregion
+
+#region Enums
+ public enum Defaults
+ {
+ Port = 5900
+ }
+
+ public enum SpecialKeys
+ {
+ CtrlAltDel,
+ CtrlEsc
+ }
+
+ public enum Compression
+ {
+ [LocalizedAttributes.LocalizedDescription("strNoCompression")]CompNone = 99,
+ [Description("0")]Comp0 = 0,
+ [Description("1")]Comp1 = 1,
+ [Description("2")]Comp2 = 2,
+ [Description("3")]Comp3 = 3,
+ [Description("4")]Comp4 = 4,
+ [Description("5")]Comp5 = 5,
+ [Description("6")]Comp6 = 6,
+ [Description("7")]Comp7 = 7,
+ [Description("8")]Comp8 = 8,
+ [Description("9")]Comp9 = 9
+ }
+
+ public enum Encoding
+ {
+ [Description("Raw")]EncRaw,
+ [Description("RRE")]EncRRE,
+ [Description("CoRRE")]EncCorre,
+ [Description("Hextile")]EncHextile,
+ [Description("Zlib")]EncZlib,
+ [Description("Tight")]EncTight,
+ [Description("ZlibHex")]EncZLibHex,
+ [Description("ZRLE")]EncZRLE
+ }
+
+ public enum AuthMode
+ {
+ [LocalizedAttributes.LocalizedDescription("VNC")]
+ AuthVNC,
+ [LocalizedAttributes.LocalizedDescription("Windows")]
+ AuthWin
+ }
+
+ public enum ProxyType
+ {
+ [LocalizedAttributes.LocalizedDescription("strNone")]
+ ProxyNone,
+ [LocalizedAttributes.LocalizedDescription("strHttp")]
+ ProxyHTTP,
+ [LocalizedAttributes.LocalizedDescription("strSocks5")]
+ ProxySocks5,
+ [LocalizedAttributes.LocalizedDescription("strUltraVncRepeater")]
+ ProxyUltra
+ }
+
+ public enum Colors
+ {
+ [LocalizedAttributes.LocalizedDescription("strNormal")]
+ ColNormal,
+ [Description("8-bit")]Col8Bit
+ }
+
+ public enum SmartSizeMode
+ {
+ [LocalizedAttributes.LocalizedDescription("strNoSmartSize")]
+ SmartSNo,
+ [LocalizedAttributes.LocalizedDescription("strFree")]
+ SmartSFree,
+ [LocalizedAttributes.LocalizedDescription("strAspect")]
+ SmartSAspect
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Connection/PuttySession.Info.cs b/mRemoteV1/CS/Connection/PuttySession.Info.cs
new file mode 100644
index 000000000..c699d2a7b
--- /dev/null
+++ b/mRemoteV1/CS/Connection/PuttySession.Info.cs
@@ -0,0 +1,135 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.Messages;
+//using mRemoteNG.Tools.LocalizedAttributes;
+using mRemoteNG.My;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.PuttySession
+{
+ public class Info : Connection.Info, IComponent
+ {
+
+#region Commands
+ [Command(),LocalizedAttributes.LocalizedDisplayName("strPuttySessionSettings")]
+ public void SessionSettings()
+ {
+ try
+ {
+ PuttyProcessController puttyProcess = new PuttyProcessController();
+ if (!puttyProcess.Start())
+ {
+ return ;
+ }
+ if (puttyProcess.SelectListBoxItem(PuttySession))
+ {
+ puttyProcess.ClickButton("&Load");
+ }
+ puttyProcess.SetControlText("Button", "&Cancel", "&Close");
+ puttyProcess.SetControlVisible("Button", "&Open", false);
+ puttyProcess.WaitForExit();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.strErrorCouldNotLaunchPutty + Constants.vbNewLine + ex.Message, false);
+ }
+ }
+#endregion
+
+#region Properties
+ [Browsable(false)]public Root.PuttySessions.Info RootPuttySessionsInfo {get; set;}
+
+ [ReadOnly(true)]public override string PuttySession {get; set;}
+
+ [ReadOnly(true)]public override string
+ Name {get; set;}
+
+ [ReadOnly(true),
+ Browsable(false)]public override string Description {get; set;}
+
+[ReadOnly(true), Browsable(false)]public override string Icon
+ {
+ get
+ {
+ return "PuTTY";
+ }
+ set
+ {
+
+ }
+ }
+
+[ReadOnly(true), Browsable(false)]public override string Panel
+ {
+ get
+ {
+ return RootPuttySessionsInfo.Panel;
+ }
+ set
+ {
+
+ }
+ }
+
+ [ReadOnly(true)]public override string Hostname {get; set;}
+
+ [ReadOnly(true)]public override string
+ Username {get; set;}
+
+ [ReadOnly(true),
+ Browsable(false)]public override string Password {get; set;}
+
+ [ReadOnly(true)]public override Protocol.Protocols Protocol {get; set;}
+
+ [ReadOnly(true)]public override int
+ Port {get; set;}
+
+ [ReadOnly(true),
+ Browsable(false)]public override string PreExtApp {get; set;}
+
+ [ReadOnly(true),
+ Browsable(false)]public override string PostExtApp {get; set;}
+
+ [ReadOnly(true),
+ Browsable(false)]public override string MacAddress {get; set;}
+
+ [ReadOnly(true), Browsable(false)]public override string UserField {get; set;}
+#endregion
+
+#region IComponent
+[Browsable(false)]public ISite Site
+ {
+ get
+ {
+ return new PropertyGridCommandSite(this);
+ }
+ set
+ {
+ throw (new NotImplementedException());
+ }
+ }
+
+ public void Dispose()
+ {
+ if (Disposed != null)
+ Disposed(this, EventArgs.Empty);
+ }
+
+ public event EventHandler Disposed;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Container/Container.Info.cs b/mRemoteV1/CS/Container/Container.Info.cs
new file mode 100644
index 000000000..87a19070f
--- /dev/null
+++ b/mRemoteV1/CS/Container/Container.Info.cs
@@ -0,0 +1,147 @@
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using mRemoteNG.Tools;
+using System.ComponentModel;
+
+
+namespace mRemoteNG.Container
+{
+ [DefaultProperty("Name")]
+ public class Info
+ {
+#region Properties
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ Browsable(true),
+ ReadOnly(false),
+ Bindable(false),
+ DefaultValue(""),
+ DesignOnly(false),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameName"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionName"),
+ Attributes.Container()]
+ public string Name
+ {
+ get
+ {
+ return ConnectionInfo.Name;
+ }
+ set
+ {
+ ConnectionInfo.Name = value;
+ }
+ }
+
+ private TreeNode _TreeNode;
+ [Category(""),
+ Browsable(false),
+ ReadOnly(false),
+ Bindable(false),
+ DefaultValue(""),
+ DesignOnly(false)]
+ public TreeNode TreeNode
+ {
+ get
+ {
+ return this._TreeNode;
+ }
+ set
+ {
+ this._TreeNode = value;
+ }
+ }
+
+ private object _Parent;
+ [Category(""),
+ Browsable(false)]public object Parent
+ {
+ get
+ {
+ return this._Parent;
+ }
+ set
+ {
+ this._Parent = value;
+ }
+ }
+
+ //Private _GlobalID As Integer = 0
+ // _
+ //Public Property GlobalID() As Integer
+ // Get
+ // Return _GlobalID
+ // End Get
+ // Set(ByVal value As Integer)
+ // _GlobalID = value
+ // End Set
+ //End Property
+
+ private bool _IsExpanded;
+ [Category(""),
+ Browsable(false),
+ ReadOnly(false),
+ Bindable(false),
+ DefaultValue(""),
+ DesignOnly(false)]
+ public bool IsExpanded
+ {
+ get
+ {
+ return this._IsExpanded;
+ }
+ set
+ {
+ this._IsExpanded = value;
+ }
+ }
+
+ private Connection.Info _ConnectionInfo = new Connection.Info();
+ public Connection.Info ConnectionInfo
+ {
+ get
+ {
+ return this._ConnectionInfo;
+ }
+ set
+ {
+ this._ConnectionInfo = value;
+ }
+ }
+#endregion
+
+#region Methods
+ public Container.Info Copy()
+ {
+ return (Info)this.MemberwiseClone();
+ }
+
+ public Info()
+ {
+ this.SetDefaults();
+ }
+
+ public void SetDefaults()
+ {
+ if (this.IsExpanded == null)
+ {
+ this.IsExpanded = true;
+ }
+ }
+#endregion
+
+ public class Attributes
+ {
+ public class Container : Attribute
+ {
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Container/Container.List.cs b/mRemoteV1/CS/Container/Container.List.cs
new file mode 100644
index 000000000..fccbe53db
--- /dev/null
+++ b/mRemoteV1/CS/Container/Container.List.cs
@@ -0,0 +1,92 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Container
+{
+ public class List : CollectionBase
+ {
+
+#region Public Properties
+public Container.Info this[object Index]
+ {
+ get
+ {
+ if (Index is Container.Info)
+ {
+ return Index;
+ }
+ else
+ {
+ return ((Container.Info) (List[System.Convert.ToInt32(Index)]));
+ }
+ }
+ }
+
+public new int Count
+ {
+ get
+ {
+ return List.Count;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Container.Info Add(Container.Info cInfo)
+ {
+ this.List.Add(cInfo);
+ return cInfo;
+ }
+
+ public void AddRange(Container.Info[] cInfo)
+ {
+ foreach (Container.Info cI in cInfo)
+ {
+ List.Add(cI);
+ }
+ }
+
+ public Container.Info FindByConstantID(string id)
+ {
+ foreach (Container.Info contI in List)
+ {
+ if (contI.ConnectionInfo.ConstantID == id)
+ {
+ return contI;
+ }
+ }
+
+ return null;
+ }
+
+ public Container.List Copy()
+ {
+ try
+ {
+ return this.MemberwiseClone();
+ }
+ catch (Exception)
+ {
+ }
+
+ return null;
+ }
+
+ public new void Clear()
+ {
+ this.List.Clear();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Controls/ListView.cs b/mRemoteV1/CS/Controls/ListView.cs
new file mode 100644
index 000000000..3c9828a5f
--- /dev/null
+++ b/mRemoteV1/CS/Controls/ListView.cs
@@ -0,0 +1,297 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+
+
+namespace mRemoteNG
+{
+ namespace Controls
+ {
+ public class ListView : System.Windows.Forms.ListView
+ {
+
+#region Public Properties
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "HighlightText")]public Color HighlightForeColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "Highlight")]public Color HighlightBackColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "HotTrack")]public Color HighlightBorderColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "ControlText")]public Color InactiveHighlightForeColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "Control")]public Color InactiveHighlightBackColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(typeof(Color), "ControlDark")]public Color InactiveHighlightBorderColor {get; set;}
+
+ [Category("Appearance"),
+ DefaultValue(true)]private bool _ShowFocusCues = true;
+ private bool ShowFocusCues
+ {
+ get
+ {
+ return _ShowFocusCues;
+ }
+ set
+ {
+ _ShowFocusCues = value;
+ }
+ }
+
+ [Category("Appearance")]private Alignment _LabelAlignment = new Alignment(VerticalAlignment.Top, HorizontalAlignment.Left);
+private Alignment LabelAlignment
+ {
+ get
+ {
+ return _LabelAlignment;
+ }
+ set
+ {
+ _LabelAlignment = value;
+ }
+ }
+#endregion
+
+#region Constructors
+ public ListView()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ HighlightForeColor = SystemColors.HighlightText;
+ HighlightBackColor = SystemColors.Highlight;
+ HighlightBorderColor = SystemColors.HotTrack;
+ InactiveHighlightForeColor = SystemColors.ControlText;
+ InactiveHighlightBackColor = SystemColors.Control;
+ InactiveHighlightBorderColor = SystemColors.ControlDark;
+
+ OwnerDraw = true;
+ }
+#endregion
+
+#region Protected Methods
+ protected override void OnDrawItem(DrawListViewItemEventArgs e)
+ {
+ if (!(View == View.Tile))
+ {
+ base.OnDrawItem(e);
+ }
+ if (e.ItemIndex < 0)
+ {
+ base.OnDrawItem(e);
+ }
+
+ Brush foreColorBrush = null;
+ Brush backColorBrush = null;
+ Pen borderPen = null;
+ try
+ {
+ if (Focused)
+ {
+ borderPen = new Pen(HighlightBorderColor);
+ }
+ else
+ {
+ borderPen = new Pen(InactiveHighlightBorderColor);
+ }
+
+ if (e.Item.Selected)
+ {
+ if (Focused)
+ {
+ foreColorBrush = new SolidBrush(HighlightForeColor);
+ backColorBrush = new SolidBrush(HighlightBackColor);
+ }
+ else
+ {
+ foreColorBrush = new SolidBrush(InactiveHighlightForeColor);
+ backColorBrush = new SolidBrush(InactiveHighlightBackColor);
+ }
+ }
+ else
+ {
+ foreColorBrush = new SolidBrush(e.Item.ForeColor);
+ backColorBrush = new SolidBrush(BackColor);
+ }
+
+ e.Graphics.FillRectangle(backColorBrush, e.Bounds);
+
+ if (Focused && ShowFocusCues)
+ {
+ e.DrawFocusRectangle();
+ }
+ else if (e.Item.Selected)
+ {
+ e.Graphics.DrawRectangle(borderPen, e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height - 1);
+ }
+
+ Rectangle imageBounds = new Rectangle(e.Bounds.X + 2, e.Bounds.Y + 6, 16, 16);
+ Rectangle textBounds = e.Bounds;
+
+ if (e.Item.ImageList != null)
+ {
+ Image image = null;
+ if (!string.IsNullOrEmpty(e.Item.ImageKey) && e.Item.ImageList.Images.ContainsKey(e.Item.ImageKey))
+ {
+ image = e.Item.ImageList.Images[e.Item.ImageKey];
+ }
+ else if (!(e.Item.ImageIndex < 0) & e.Item.ImageList.Images.Count > e.Item.ImageIndex)
+ {
+ image = e.Item.ImageList.Images[e.Item.ImageIndex];
+ }
+ if (image != null)
+ {
+ e.Graphics.DrawImageUnscaledAndClipped(image, imageBounds);
+ textBounds.X = textBounds.Left + 20;
+ textBounds.Width = textBounds.Width - 20;
+ }
+ }
+
+ e.Graphics.DrawString(e.Item.Text, e.Item.Font, foreColorBrush, textBounds, GetStringFormat());
+ }
+ finally
+ {
+ if (foreColorBrush != null)
+ {
+ foreColorBrush.Dispose();
+ }
+ if (backColorBrush != null)
+ {
+ backColorBrush.Dispose();
+ }
+ if (borderPen != null)
+ {
+ borderPen.Dispose();
+ }
+ }
+ }
+#endregion
+
+#region Private Methods
+ private StringFormat GetStringFormat()
+ {
+ StringFormat format = StringFormat.GenericDefault;
+
+ switch (LabelAlignment.Vertical)
+ {
+ case VerticalAlignment.Top:
+ format.LineAlignment = StringAlignment.Near;
+ break;
+ case VerticalAlignment.Middle:
+ format.LineAlignment = StringAlignment.Center;
+ break;
+ case VerticalAlignment.Bottom:
+ format.LineAlignment = StringAlignment.Far;
+ break;
+ }
+
+ switch (LabelAlignment.Horizontal)
+ {
+ case HorizontalAlignment.Left:
+ format.Alignment = StringAlignment.Near;
+ break;
+ case HorizontalAlignment.Center:
+ format.Alignment = StringAlignment.Center;
+ break;
+ case HorizontalAlignment.Right:
+ format.Alignment = StringAlignment.Far;
+ break;
+ }
+
+ if (RightToLeft)
+ {
+ format.FormatFlags = (System.Drawing.StringFormatFlags) (format.FormatFlags | StringFormatFlags.DirectionRightToLeft);
+ }
+
+ if (LabelWrap)
+ {
+ format.FormatFlags = (System.Drawing.StringFormatFlags) (format.FormatFlags
+ & ~StringFormatFlags.NoWrap);
+ }
+ else
+ {
+ format.FormatFlags = (System.Drawing.StringFormatFlags) (format.FormatFlags | StringFormatFlags.NoWrap);
+ }
+
+ return format;
+ }
+#endregion
+ }
+
+ [TypeConverter(typeof(ExpandableObjectConverter))]public class Alignment
+ {
+ public Alignment()
+ {
+
+ }
+
+ public Alignment(VerticalAlignment verticalAlignment, HorizontalAlignment horizontalAlignment)
+ {
+ Vertical = verticalAlignment;
+ Horizontal = horizontalAlignment;
+ }
+
+ [NotifyParentProperty(true),
+ DefaultValue(VerticalAlignment.Top)]private VerticalAlignment _Vertical = VerticalAlignment.Top;
+ private VerticalAlignment Vertical
+ {
+ get
+ {
+ return _Vertical;
+ }
+ set
+ {
+ _Vertical = value;
+ }
+ }
+
+ [NotifyParentProperty(true),
+ DefaultValue(HorizontalAlignment.Left)]private HorizontalAlignment _Horizontal = HorizontalAlignment.Left;
+ private HorizontalAlignment Horizontal
+ {
+ get
+ {
+ return _Horizontal;
+ }
+ set
+ {
+ _Horizontal = value;
+ }
+ }
+
+ public override string ToString()
+ {
+ return string.Format("{0}, {1}", Vertical, Horizontal);
+ }
+ }
+
+ public enum VerticalAlignment
+ {
+ Top,
+ Middle,
+ Bottom
+ }
+
+ public enum HorizontalAlignment
+ {
+ Left,
+ Center,
+ Right
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Controls/QuickConnectComboBox.cs b/mRemoteV1/CS/Controls/QuickConnectComboBox.cs
new file mode 100644
index 000000000..5cb5ee713
--- /dev/null
+++ b/mRemoteV1/CS/Controls/QuickConnectComboBox.cs
@@ -0,0 +1,281 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG
+{
+ namespace Controls
+ {
+ public class QuickConnectComboBox : ToolStripComboBox
+ {
+
+ private ComboBox _comboBox;
+ private bool _ignoreEnter = false;
+
+ public QuickConnectComboBox()
+ {
+ _comboBox = ComboBox;
+ _comboBox.PreviewKeyDown += ComboBox_PreviewKeyDown;
+ _comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
+ _comboBox.DrawItem += ComboBox_DrawItem;
+ _comboBox.DrawMode = DrawMode.OwnerDrawFixed;
+
+ // This makes it so that _ignoreEnter works correctly before any items are added to the combo box
+ _comboBox.Items.Clear();
+ }
+
+ private void ComboBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter & _comboBox.DroppedDown)
+ {
+ _ignoreEnter = true;
+ }
+ }
+
+ protected override void OnKeyDown(KeyEventArgs e)
+ {
+ base.OnKeyDown(e);
+ if (e.KeyCode == Keys.Enter)
+ {
+ // Only connect if Enter was not pressed while the combo box was dropped down
+ if (!_ignoreEnter)
+ {
+ OnConnectRequested(new ConnectRequestedEventArgs(_comboBox.Text));
+ }
+ _ignoreEnter = false;
+ e.Handled = true;
+ }
+ else if (e.KeyCode == Keys.Delete & _comboBox.DroppedDown)
+ {
+ if (!(_comboBox.SelectedIndex == -1))
+ {
+ // Items can't be removed from the ComboBox while it is dropped down without possibly causing
+ // an exception so we must close it, delete the item, and then drop it down again. When we
+ // close it programmatically, the SelectedItem may revert to Nothing, so we must save it first.
+ object item = _comboBox.SelectedItem;
+ _comboBox.DroppedDown = false;
+ _comboBox.Items.Remove(item);
+ _comboBox.SelectedIndex = -1;
+ if (!(_comboBox.Items.Count == 0))
+ {
+ _comboBox.DroppedDown = true;
+ }
+ }
+ e.Handled = true;
+ }
+ }
+
+ private void ComboBox_SelectedIndexChanged(System.Object sender, EventArgs e)
+ {
+ if (!(_comboBox.SelectedItem is HistoryItem))
+ {
+ return ;
+ }
+ HistoryItem historyItem = (HistoryItem) _comboBox.SelectedItem;
+ OnProtocolChanged(new ProtocolChangedEventArgs(historyItem.ConnectionInfo.Protocol));
+ }
+
+ private static void ComboBox_DrawItem(object sender, DrawItemEventArgs e)
+ {
+ ComboBox comboBox = sender as ComboBox;
+ if (comboBox == null)
+ {
+ return ;
+ }
+ object drawItem = comboBox.Items[e.Index];
+
+ string drawString = "";
+ if (drawItem is HistoryItem)
+ {
+ HistoryItem historyItem = (HistoryItem) drawItem;
+ drawString = historyItem.ToString[true];
+ }
+ else
+ {
+ drawString = drawItem.ToString();
+ }
+
+ e.DrawBackground();
+ e.Graphics.DrawString(drawString, e.Font, new SolidBrush(e.ForeColor), new RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));
+ e.DrawFocusRectangle();
+ }
+
+ private struct HistoryItem : IEquatable
+ {
+
+ public Protocol.Info ConnectionInfo {get; set;}
+
+ public bool Equals(HistoryItem other)
+ {
+ if (!(ConnectionInfo.Hostname == other.ConnectionInfo.Hostname))
+ {
+ return false;
+ }
+ if (!(ConnectionInfo.Port == other.ConnectionInfo.Port))
+ {
+ return false;
+ }
+ if (!(ConnectionInfo.Protocol == other.ConnectionInfo.Protocol))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public override string ToString()
+ {
+ return ToString(false);
+ }
+
+ public string ToString(bool includeProtocol)
+ {
+ string port = string.Empty;
+ if (!(ConnectionInfo.Port == ConnectionInfo.GetDefaultPort()))
+ {
+ port = string.Format(":{0}", ConnectionInfo.Port);
+ }
+ if (includeProtocol)
+ {
+ return string.Format("{0}{1} ({2})", ConnectionInfo.Hostname, port, ConnectionInfo.Protocol);
+ }
+ else
+ {
+ return string.Format("{0}{1}", ConnectionInfo.Hostname, port);
+ }
+ }
+ }
+
+ private bool Exists(HistoryItem searchItem)
+ {
+ foreach (object item in _comboBox.Items)
+ {
+ if (!(item is HistoryItem))
+ {
+ continue;
+ }
+ HistoryItem historyItem = (HistoryItem) item;
+ if (historyItem.Equals(searchItem))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void Add(Protocol.Info connectionInfo)
+ {
+ try
+ {
+ HistoryItem historyItem = new HistoryItem();
+ historyItem.ConnectionInfo = connectionInfo;
+ if (!Exists(historyItem))
+ {
+ _comboBox.Items.Insert(0, historyItem);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strQuickConnectAddFailed, ex, Messages.MessageClass.ErrorMsg, true);
+ }
+ }
+
+#region Events
+ public class ConnectRequestedEventArgs : EventArgs
+ {
+
+ public ConnectRequestedEventArgs(string connectionString)
+ {
+ _connectionString = connectionString;
+ }
+
+ private string _connectionString;
+
+public string ConnectionString
+ {
+ get
+ {
+ return _connectionString;
+ }
+ }
+ }
+
+ public delegate void ConnectRequestedEventHandler(object sender, ConnectRequestedEventArgs e);
+ private ConnectRequestedEventHandler ConnectRequestedEvent;
+
+ public event ConnectRequestedEventHandler ConnectRequested
+ {
+ add
+ {
+ ConnectRequestedEvent = (ConnectRequestedEventHandler) System.Delegate.Combine(ConnectRequestedEvent, value);
+ }
+ remove
+ {
+ ConnectRequestedEvent = (ConnectRequestedEventHandler) System.Delegate.Remove(ConnectRequestedEvent, value);
+ }
+ }
+
+
+ protected virtual void OnConnectRequested(ConnectRequestedEventArgs e)
+ {
+ if (ConnectRequestedEvent != null)
+ ConnectRequestedEvent(this, new ConnectRequestedEventArgs(e.ConnectionString));
+ }
+
+ public class ProtocolChangedEventArgs : EventArgs
+ {
+
+ public ProtocolChangedEventArgs(Protocol.Protocol.Protocols protocol)
+ {
+ _protocol = protocol;
+ }
+
+ private Protocol.Protocol.Protocols _protocol;
+
+public Protocol.Protocol.Protocols Protocol
+ {
+ get
+ {
+ return _protocol;
+ }
+ }
+ }
+
+ public delegate void ProtocolChangedEventHandler(object sender, ProtocolChangedEventArgs e);
+ private ProtocolChangedEventHandler ProtocolChangedEvent;
+
+ public event ProtocolChangedEventHandler ProtocolChanged
+ {
+ add
+ {
+ ProtocolChangedEvent = (ProtocolChangedEventHandler) System.Delegate.Combine(ProtocolChangedEvent, value);
+ }
+ remove
+ {
+ ProtocolChangedEvent = (ProtocolChangedEventHandler) System.Delegate.Remove(ProtocolChangedEvent, value);
+ }
+ }
+
+
+ protected virtual void OnProtocolChanged(ProtocolChangedEventArgs e)
+ {
+ if (ProtocolChangedEvent != null)
+ ProtocolChangedEvent(this, new ProtocolChangedEventArgs(e.Protocol));
+ }
+#endregion
+ }
+ }
+
+
+}
diff --git a/mRemoteV1/CS/Controls/TextBox.cs b/mRemoteV1/CS/Controls/TextBox.cs
new file mode 100644
index 000000000..09f306469
--- /dev/null
+++ b/mRemoteV1/CS/Controls/TextBox.cs
@@ -0,0 +1,81 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+
+
+// Adapted from http://stackoverflow.com/a/3678888/2101395
+
+namespace mRemoteNG
+{
+ namespace Controls
+ {
+ public class TextBox : System.Windows.Forms.TextBox
+ {
+
+#region Public Properties
+ [Category("Behavior"),
+ DefaultValue(false)]private bool _SelectAllOnFocus = false;
+ private bool SelectAllOnFocus
+ {
+ get
+ {
+ return _SelectAllOnFocus;
+ }
+ set
+ {
+ _SelectAllOnFocus = value;
+ }
+ }
+#endregion
+
+#region Protected Methods
+ protected override void OnEnter(EventArgs e)
+ {
+ base.OnEnter(e);
+
+ if (MouseButtons == MouseButtons.None)
+ {
+ SelectAll();
+ _focusHandled = true;
+ }
+ }
+
+ protected override void OnLeave(EventArgs e)
+ {
+ base.OnLeave(e);
+
+ _focusHandled = false;
+ }
+
+ protected override void OnMouseUp(MouseEventArgs e)
+ {
+ base.OnMouseUp(e);
+
+ if (!_focusHandled)
+ {
+ if (SelectionLength == 0)
+ {
+ SelectAll();
+ }
+ _focusHandled = true;
+ }
+ }
+#endregion
+
+#region Private Fields
+ private bool _focusHandled = false;
+#endregion
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Controls/ToolStripSplitButton.cs b/mRemoteV1/CS/Controls/ToolStripSplitButton.cs
new file mode 100644
index 000000000..52ddd04ed
--- /dev/null
+++ b/mRemoteV1/CS/Controls/ToolStripSplitButton.cs
@@ -0,0 +1,76 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Controls
+ {
+ public class ToolStripSplitButton : System.Windows.Forms.ToolStripSplitButton
+ {
+
+public ToolStripDropDown DropDown
+ {
+ get
+ {
+ return base.DropDown;
+ }
+ set
+ {
+ if (base.DropDown != value)
+ {
+ base.DropDown = value;
+ base.DropDown.Closing += new System.EventHandler(DropDown_Closing);
+ }
+ }
+ }
+
+ private void DropDown_Closing(object sender, ToolStripDropDownClosingEventArgs e)
+ {
+ if (!(e.CloseReason == ToolStripDropDownCloseReason.AppClicked))
+ {
+ return ;
+ }
+
+ Rectangle dropDownButtonBoundsClient = DropDownButtonBounds; // Relative to the ToolStripSplitButton
+ dropDownButtonBoundsClient.Offset(Bounds.Location); // Relative to the parent of the ToolStripSplitButton
+ Rectangle dropDownButtonBoundsScreen = GetCurrentParent().RectangleToScreen(dropDownButtonBoundsClient); // Relative to the screen
+
+ if (dropDownButtonBoundsScreen.Contains(Control.MousePosition))
+ {
+ e.Cancel = true;
+ }
+ }
+
+ protected override void OnMouseDown(MouseEventArgs e)
+ {
+ _dropDownVisibleOnMouseDown = DropDown.Visible;
+ base.OnMouseDown(e);
+ }
+
+ protected override void OnMouseUp(MouseEventArgs e)
+ {
+ if (_dropDownVisibleOnMouseDown)
+ {
+ DropDown.Close();
+ }
+ else
+ {
+ base.OnMouseUp(e);
+ }
+ }
+
+ private bool _dropDownVisibleOnMouseDown = false;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Credential/Credential.Info.cs b/mRemoteV1/CS/Credential/Credential.Info.cs
new file mode 100644
index 000000000..f874df5bd
--- /dev/null
+++ b/mRemoteV1/CS/Credential/Credential.Info.cs
@@ -0,0 +1,111 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using mRemoteNG.Tools;
+// End of VB project level imports
+
+using System.ComponentModel;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Credential
+{
+ public class Info
+ {
+#region 1 Display
+ private string _Name;
+[LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+Browsable(true),
+LocalizedAttributes.LocalizedDisplayName("strPropertyNameName"),
+LocalizedAttributes.LocalizedDescription("strPropertyDescriptionName")]
+ public string Name
+ {
+ get
+ {
+ return _Name;
+ }
+ set
+ {
+ _Name = value;
+ }
+ }
+
+ private string _Description;
+[LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+Browsable(true),
+LocalizedAttributes.LocalizedDisplayName("strPropertyNameDescription"),
+LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDescription")]
+ public string Description
+ {
+ get
+ {
+ return _Description;
+ }
+ set
+ {
+ _Description = value;
+ }
+ }
+#endregion
+#region 2 Credentials
+ private string _Username;
+[LocalizedAttributes.LocalizedCategory("strCategoryCredentials", 2),
+Browsable(true),
+LocalizedAttributes.LocalizedDisplayName("strPropertyNameUsername"),
+LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUsername")]
+ public string Username
+ {
+ get
+ {
+ return _Username;
+ }
+ set
+ {
+ _Username = value;
+ }
+ }
+
+ private string _Password;
+[LocalizedAttributes.LocalizedCategory("strCategoryCredentials", 2),
+Browsable(true),
+LocalizedAttributes.LocalizedDisplayName("strPropertyNamePassword"),
+LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPassword"),
+PasswordPropertyText(true)]public string Password
+ {
+ get
+ {
+ return _Password;
+ }
+ set
+ {
+ _Password = value;
+ }
+ }
+
+ private string _Domain;
+[LocalizedAttributes.LocalizedCategory("strCategoryCredentials", 2),
+Browsable(true),
+LocalizedAttributes.LocalizedDisplayName("strPropertyNameDomain"),
+LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDomain")]
+ public string Domain
+ {
+ get
+ {
+ return _Domain;
+ }
+ set
+ {
+ _Domain = value;
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Credential/Credential.List.cs b/mRemoteV1/CS/Credential/Credential.List.cs
new file mode 100644
index 000000000..611384a13
--- /dev/null
+++ b/mRemoteV1/CS/Credential/Credential.List.cs
@@ -0,0 +1,79 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Credential
+{
+ public class List : CollectionBase
+ {
+
+#region Public Properties
+public Credential.Info this[object Index]
+ {
+ get
+ {
+ if (Index is Credential.Info)
+ {
+ return Index;
+ }
+ else
+ {
+ return ((Credential.Info) (List[System.Convert.ToInt32(Index)]));
+ }
+ }
+ }
+
+public new int Count
+ {
+ get
+ {
+ return List.Count;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Credential.Info Add(Credential.Info cInfo)
+ {
+ List.Add(cInfo);
+ return cInfo;
+ }
+
+ public void AddRange(Credential.Info[] cInfo)
+ {
+ foreach (Credential.Info cI in cInfo)
+ {
+ List.Add(cI);
+ }
+ }
+
+ public Credential.List Copy()
+ {
+ try
+ {
+ return this.MemberwiseClone();
+ }
+ catch (Exception)
+ {
+ }
+
+ return null;
+ }
+
+ public new void Clear()
+ {
+ List.Clear();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/ExportForm.Designer.cs b/mRemoteV1/CS/Forms/ExportForm.Designer.cs
new file mode 100644
index 000000000..3541d0965
--- /dev/null
+++ b/mRemoteV1/CS/Forms/ExportForm.Designer.cs
@@ -0,0 +1,315 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms
+{
+ public partial class ExportForm : Form
+ {
+#region Windows Form Designer generated code
+
+ private void InitializeComponent()
+ {
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.Load += new System.EventHandler(ExportForm_Load);
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ this.btnOK = new System.Windows.Forms.Button();
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ this.lblUncheckProperties = new System.Windows.Forms.Label();
+ this.chkUsername = new System.Windows.Forms.CheckBox();
+ this.chkPassword = new System.Windows.Forms.CheckBox();
+ this.chkDomain = new System.Windows.Forms.CheckBox();
+ this.chkInheritance = new System.Windows.Forms.CheckBox();
+ this.txtFileName = new System.Windows.Forms.TextBox();
+ this.txtFileName.TextChanged += new System.EventHandler(this.txtFileName_TextChanged);
+ this.btnBrowse = new System.Windows.Forms.Button();
+ this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
+ this.grpProperties = new System.Windows.Forms.GroupBox();
+ this.grpFile = new System.Windows.Forms.GroupBox();
+ this.lblFileFormat = new System.Windows.Forms.Label();
+ this.lblFileName = new System.Windows.Forms.Label();
+ this.cboFileFormat = new System.Windows.Forms.ComboBox();
+ this.grpItems = new System.Windows.Forms.GroupBox();
+ this.lblSelectedConnection = new System.Windows.Forms.Label();
+ this.lblSelectedFolder = new System.Windows.Forms.Label();
+ this.rdoExportSelectedConnection = new System.Windows.Forms.RadioButton();
+ this.rdoExportSelectedFolder = new System.Windows.Forms.RadioButton();
+ this.rdoExportEverything = new System.Windows.Forms.RadioButton();
+ this.grpProperties.SuspendLayout();
+ this.grpFile.SuspendLayout();
+ this.grpItems.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //btnCancel
+ //
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.Location = new System.Drawing.Point(447, 473);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(75, 23);
+ this.btnCancel.TabIndex = 3;
+ this.btnCancel.Text = "&Cancel";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ //
+ //btnOK
+ //
+ this.btnOK.Location = new System.Drawing.Point(366, 473);
+ this.btnOK.Name = "btnOK";
+ this.btnOK.Size = new System.Drawing.Size(75, 23);
+ this.btnOK.TabIndex = 2;
+ this.btnOK.Text = "&OK";
+ this.btnOK.UseVisualStyleBackColor = true;
+ //
+ //lblUncheckProperties
+ //
+ this.lblUncheckProperties.AutoSize = true;
+ this.lblUncheckProperties.Location = new System.Drawing.Point(12, 134);
+ this.lblUncheckProperties.Name = "lblUncheckProperties";
+ this.lblUncheckProperties.Size = new System.Drawing.Size(244, 13);
+ this.lblUncheckProperties.TabIndex = 4;
+ this.lblUncheckProperties.Text = "Uncheck the properties you want not to be saved!";
+ //
+ //chkUsername
+ //
+ this.chkUsername.AutoSize = true;
+ this.chkUsername.Checked = true;
+ this.chkUsername.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkUsername.Location = new System.Drawing.Point(15, 32);
+ this.chkUsername.Name = "chkUsername";
+ this.chkUsername.Size = new System.Drawing.Size(74, 17);
+ this.chkUsername.TabIndex = 0;
+ this.chkUsername.Text = "Username";
+ this.chkUsername.UseVisualStyleBackColor = true;
+ //
+ //chkPassword
+ //
+ this.chkPassword.AutoSize = true;
+ this.chkPassword.Checked = true;
+ this.chkPassword.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkPassword.Location = new System.Drawing.Point(15, 55);
+ this.chkPassword.Name = "chkPassword";
+ this.chkPassword.Size = new System.Drawing.Size(72, 17);
+ this.chkPassword.TabIndex = 1;
+ this.chkPassword.Text = "Password";
+ this.chkPassword.UseVisualStyleBackColor = true;
+ //
+ //chkDomain
+ //
+ this.chkDomain.AutoSize = true;
+ this.chkDomain.Checked = true;
+ this.chkDomain.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkDomain.Location = new System.Drawing.Point(15, 78);
+ this.chkDomain.Name = "chkDomain";
+ this.chkDomain.Size = new System.Drawing.Size(62, 17);
+ this.chkDomain.TabIndex = 2;
+ this.chkDomain.Text = "Domain";
+ this.chkDomain.UseVisualStyleBackColor = true;
+ //
+ //chkInheritance
+ //
+ this.chkInheritance.AutoSize = true;
+ this.chkInheritance.Checked = true;
+ this.chkInheritance.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkInheritance.Location = new System.Drawing.Point(15, 101);
+ this.chkInheritance.Name = "chkInheritance";
+ this.chkInheritance.Size = new System.Drawing.Size(79, 17);
+ this.chkInheritance.TabIndex = 3;
+ this.chkInheritance.Text = "Inheritance";
+ this.chkInheritance.UseVisualStyleBackColor = true;
+ //
+ //txtFileName
+ //
+ this.txtFileName.Location = new System.Drawing.Point(15, 48);
+ this.txtFileName.Name = "txtFileName";
+ this.txtFileName.Size = new System.Drawing.Size(396, 20);
+ this.txtFileName.TabIndex = 1;
+ //
+ //btnBrowse
+ //
+ this.btnBrowse.Location = new System.Drawing.Point(417, 46);
+ this.btnBrowse.Name = "btnBrowse";
+ this.btnBrowse.Size = new System.Drawing.Size(75, 23);
+ this.btnBrowse.TabIndex = 2;
+ this.btnBrowse.Text = "&Browse";
+ this.btnBrowse.UseVisualStyleBackColor = true;
+ //
+ //grpProperties
+ //
+ this.grpProperties.Controls.Add(this.lblUncheckProperties);
+ this.grpProperties.Controls.Add(this.chkInheritance);
+ this.grpProperties.Controls.Add(this.chkUsername);
+ this.grpProperties.Controls.Add(this.chkDomain);
+ this.grpProperties.Controls.Add(this.chkPassword);
+ this.grpProperties.Location = new System.Drawing.Point(12, 304);
+ this.grpProperties.Name = "grpProperties";
+ this.grpProperties.Size = new System.Drawing.Size(510, 163);
+ this.grpProperties.TabIndex = 1;
+ this.grpProperties.TabStop = false;
+ this.grpProperties.Text = "Export Properties";
+ //
+ //grpFile
+ //
+ this.grpFile.Controls.Add(this.lblFileFormat);
+ this.grpFile.Controls.Add(this.lblFileName);
+ this.grpFile.Controls.Add(this.cboFileFormat);
+ this.grpFile.Controls.Add(this.txtFileName);
+ this.grpFile.Controls.Add(this.btnBrowse);
+ this.grpFile.Location = new System.Drawing.Point(12, 12);
+ this.grpFile.Name = "grpFile";
+ this.grpFile.Size = new System.Drawing.Size(510, 140);
+ this.grpFile.TabIndex = 0;
+ this.grpFile.TabStop = false;
+ this.grpFile.Text = "Export File";
+ //
+ //lblFileFormat
+ //
+ this.lblFileFormat.AutoSize = true;
+ this.lblFileFormat.Location = new System.Drawing.Point(12, 84);
+ this.lblFileFormat.Name = "lblFileFormat";
+ this.lblFileFormat.Size = new System.Drawing.Size(61, 13);
+ this.lblFileFormat.TabIndex = 3;
+ this.lblFileFormat.Text = "File &Format:";
+ //
+ //lblFileName
+ //
+ this.lblFileName.AutoSize = true;
+ this.lblFileName.Location = new System.Drawing.Point(12, 32);
+ this.lblFileName.Name = "lblFileName";
+ this.lblFileName.Size = new System.Drawing.Size(52, 13);
+ this.lblFileName.TabIndex = 0;
+ this.lblFileName.Text = "Filename:";
+ //
+ //cboFileFormat
+ //
+ this.cboFileFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cboFileFormat.FormattingEnabled = true;
+ this.cboFileFormat.Location = new System.Drawing.Point(15, 100);
+ this.cboFileFormat.Name = "cboFileFormat";
+ this.cboFileFormat.Size = new System.Drawing.Size(294, 21);
+ this.cboFileFormat.TabIndex = 4;
+ //
+ //grpItems
+ //
+ this.grpItems.Controls.Add(this.lblSelectedConnection);
+ this.grpItems.Controls.Add(this.lblSelectedFolder);
+ this.grpItems.Controls.Add(this.rdoExportSelectedConnection);
+ this.grpItems.Controls.Add(this.rdoExportSelectedFolder);
+ this.grpItems.Controls.Add(this.rdoExportEverything);
+ this.grpItems.Location = new System.Drawing.Point(12, 158);
+ this.grpItems.Name = "grpItems";
+ this.grpItems.Size = new System.Drawing.Size(510, 140);
+ this.grpItems.TabIndex = 4;
+ this.grpItems.TabStop = false;
+ this.grpItems.Text = "Export Items";
+ //
+ //lblSelectedConnection
+ //
+ this.lblSelectedConnection.AutoSize = true;
+ this.lblSelectedConnection.Location = new System.Drawing.Point(48, 111);
+ this.lblSelectedConnection.Name = "lblSelectedConnection";
+ this.lblSelectedConnection.Size = new System.Drawing.Size(92, 13);
+ this.lblSelectedConnection.TabIndex = 4;
+ this.lblSelectedConnection.Text = "Connection Name";
+ //
+ //lblSelectedFolder
+ //
+ this.lblSelectedFolder.AutoSize = true;
+ this.lblSelectedFolder.Location = new System.Drawing.Point(48, 75);
+ this.lblSelectedFolder.Name = "lblSelectedFolder";
+ this.lblSelectedFolder.Size = new System.Drawing.Size(67, 13);
+ this.lblSelectedFolder.TabIndex = 3;
+ this.lblSelectedFolder.Text = "Folder Name";
+ //
+ //rdoExportSelectedConnection
+ //
+ this.rdoExportSelectedConnection.AutoSize = true;
+ this.rdoExportSelectedConnection.Location = new System.Drawing.Point(15, 91);
+ this.rdoExportSelectedConnection.Name = "rdoExportSelectedConnection";
+ this.rdoExportSelectedConnection.Size = new System.Drawing.Size(215, 17);
+ this.rdoExportSelectedConnection.TabIndex = 2;
+ this.rdoExportSelectedConnection.TabStop = true;
+ this.rdoExportSelectedConnection.Text = "Export the currently selected connection";
+ this.rdoExportSelectedConnection.UseVisualStyleBackColor = true;
+ //
+ //rdoExportSelectedFolder
+ //
+ this.rdoExportSelectedFolder.AutoSize = true;
+ this.rdoExportSelectedFolder.Location = new System.Drawing.Point(15, 55);
+ this.rdoExportSelectedFolder.Name = "rdoExportSelectedFolder";
+ this.rdoExportSelectedFolder.Size = new System.Drawing.Size(188, 17);
+ this.rdoExportSelectedFolder.TabIndex = 1;
+ this.rdoExportSelectedFolder.TabStop = true;
+ this.rdoExportSelectedFolder.Text = "Export the currently selected folder";
+ this.rdoExportSelectedFolder.UseVisualStyleBackColor = true;
+ //
+ //rdoExportEverything
+ //
+ this.rdoExportEverything.AutoSize = true;
+ this.rdoExportEverything.Checked = true;
+ this.rdoExportEverything.Location = new System.Drawing.Point(15, 32);
+ this.rdoExportEverything.Name = "rdoExportEverything";
+ this.rdoExportEverything.Size = new System.Drawing.Size(107, 17);
+ this.rdoExportEverything.TabIndex = 0;
+ this.rdoExportEverything.TabStop = true;
+ this.rdoExportEverything.Text = "Export everything";
+ this.rdoExportEverything.UseVisualStyleBackColor = true;
+ //
+ //ExportForm
+ //
+ this.AcceptButton = this.btnOK;
+ this.CancelButton = this.btnCancel;
+ this.ClientSize = new System.Drawing.Size(534, 508);
+ this.Controls.Add(this.grpItems);
+ this.Controls.Add(this.grpFile);
+ this.Controls.Add(this.grpProperties);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.btnOK);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = global::My.Resources.Resources.Connections_SaveAs_Icon;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "ExportForm";
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Export Connections";
+ this.grpProperties.ResumeLayout(false);
+ this.grpProperties.PerformLayout();
+ this.grpFile.ResumeLayout(false);
+ this.grpFile.PerformLayout();
+ this.grpItems.ResumeLayout(false);
+ this.grpItems.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+ private System.Windows.Forms.Button btnCancel;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.Label lblUncheckProperties;
+ private System.Windows.Forms.CheckBox chkUsername;
+ private System.Windows.Forms.CheckBox chkPassword;
+ private System.Windows.Forms.CheckBox chkDomain;
+ private System.Windows.Forms.CheckBox chkInheritance;
+ private System.Windows.Forms.TextBox txtFileName;
+ private System.Windows.Forms.Button btnBrowse;
+ private System.Windows.Forms.GroupBox grpProperties;
+ private System.Windows.Forms.GroupBox grpFile;
+ private System.Windows.Forms.Label lblFileFormat;
+ private System.Windows.Forms.Label lblFileName;
+ private System.Windows.Forms.ComboBox cboFileFormat;
+ private System.Windows.Forms.GroupBox grpItems;
+ private System.Windows.Forms.Label lblSelectedConnection;
+ private System.Windows.Forms.Label lblSelectedFolder;
+ private System.Windows.Forms.RadioButton rdoExportSelectedConnection;
+ private System.Windows.Forms.RadioButton rdoExportSelectedFolder;
+ private System.Windows.Forms.RadioButton rdoExportEverything;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/ExportForm.cs b/mRemoteV1/CS/Forms/ExportForm.cs
new file mode 100644
index 000000000..a6bd790d5
--- /dev/null
+++ b/mRemoteV1/CS/Forms/ExportForm.cs
@@ -0,0 +1,341 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+//using mRemoteNG.Config.Connections;
+using mRemoteNG.App;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms
+{
+ public partial class ExportForm : Form
+ {
+
+#region Public Properties
+public string FileName
+ {
+ get
+ {
+ return txtFileName.Text;
+ }
+ set
+ {
+ txtFileName.Text = value;
+ }
+ }
+
+public Config.Connections.Save.Format SaveFormat
+ {
+ get
+ {
+ ExportFormat exportFormat = cboFileFormat.SelectedItem as ExportFormat;
+ if (exportFormat == null)
+ {
+ return Config.Connections.Save_Renamed.Format.mRXML;
+ }
+ else
+ {
+ return exportFormat.Format;
+ }
+ }
+ set
+ {
+ foreach (object item in cboFileFormat.Items)
+ {
+ ExportFormat exportFormat = item as ExportFormat;
+ if (exportFormat == null)
+ {
+ continue;
+ }
+ if (exportFormat.Format == value)
+ {
+ cboFileFormat.SelectedItem = item;
+ break;
+ }
+ }
+ }
+ }
+
+public ExportScope Scope
+ {
+ get
+ {
+ if (rdoExportSelectedFolder.Checked)
+ {
+ return ExportScope.SelectedFolder;
+ }
+ else if (rdoExportSelectedConnection.Checked)
+ {
+ return ExportScope.SelectedConnection;
+ }
+ else
+ {
+ return ExportScope.Everything;
+ }
+ }
+ set
+ {
+ switch (value)
+ {
+ case ExportScope.Everything:
+ rdoExportEverything.Checked = true;
+ break;
+ case ExportScope.SelectedFolder:
+ rdoExportSelectedFolder.Checked = true;
+ break;
+ case ExportScope.SelectedConnection:
+ rdoExportSelectedConnection.Checked = true;
+ break;
+ }
+ }
+ }
+
+ private TreeNode _selectedFolder;
+public TreeNode SelectedFolder
+ {
+ get
+ {
+ return _selectedFolder;
+ }
+ set
+ {
+ _selectedFolder = value;
+ if (value == null)
+ {
+ lblSelectedFolder.Text = string.Empty;
+ }
+ else
+ {
+ lblSelectedFolder.Text = value.Text;
+ }
+ rdoExportSelectedFolder.Enabled = value != null;
+ }
+ }
+
+ private TreeNode _selectedConnection;
+public TreeNode SelectedConnection
+ {
+ get
+ {
+ return _selectedConnection;
+ }
+ set
+ {
+ _selectedConnection = value;
+ if (value == null)
+ {
+ lblSelectedConnection.Text = string.Empty;
+ }
+ else
+ {
+ lblSelectedConnection.Text = value.Text;
+ }
+ rdoExportSelectedConnection.Enabled = value != null;
+ }
+ }
+
+public bool IncludeUsername
+ {
+ get
+ {
+ return chkUsername.Checked;
+ }
+ set
+ {
+ chkUsername.Checked = value;
+ }
+ }
+
+public bool IncludePassword
+ {
+ get
+ {
+ return chkPassword.Checked;
+ }
+ set
+ {
+ chkPassword.Checked = value;
+ }
+ }
+
+public bool IncludeDomain
+ {
+ get
+ {
+ return chkDomain.Checked;
+ }
+ set
+ {
+ chkDomain.Checked = value;
+ }
+ }
+
+public bool IncludeInheritance
+ {
+ get
+ {
+ return chkInheritance.Checked;
+ }
+ set
+ {
+ chkInheritance.Checked = value;
+ }
+ }
+#endregion
+
+#region Constructors
+ public ExportForm()
+ {
+ InitializeComponent();
+
+ Runtime.FontOverride(this);
+
+ SelectedFolder = null;
+ SelectedConnection = null;
+
+ btnOK.Enabled = false;
+ }
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void ExportForm_Load(object sender, EventArgs e)
+ {
+ cboFileFormat.Items.Clear();
+ cboFileFormat.Items.Add(new ExportFormat(Save().Format.mRXML));
+ cboFileFormat.Items.Add(new ExportFormat(Save().Format.mRCSV));
+ cboFileFormat.Items.Add(new ExportFormat(Save().Format.vRDCSV));
+ cboFileFormat.SelectedIndex = 0;
+
+ ApplyLanguage();
+ }
+
+ public void txtFileName_TextChanged(System.Object sender, EventArgs e)
+ {
+ btnOK.Enabled = !string.IsNullOrEmpty(txtFileName.Text);
+ }
+
+ public void btnBrowse_Click(System.Object sender, EventArgs e)
+ {
+ using (SaveFileDialog saveFileDialog = new SaveFileDialog())
+ {
+ saveFileDialog.CheckPathExists = true;
+ saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+ saveFileDialog.OverwritePrompt = true;
+
+ List fileTypes = new List();
+ fileTypes.AddRange(new[] {Language.strFiltermRemoteXML, "*.xml"});
+ fileTypes.AddRange(new[] {Language.strFiltermRemoteCSV, "*.csv"});
+ fileTypes.AddRange(new[] {Language.strFiltervRD2008CSV, "*.csv"});
+ fileTypes.AddRange(new[] {Language.strFilterAll, "*.*"});
+
+ saveFileDialog.Filter = string.Join("|", fileTypes.ToArray());
+
+ if (!(saveFileDialog.ShowDialog(this) == DialogResult.OK))
+ {
+ return ;
+ }
+
+ txtFileName.Text = saveFileDialog.FileName;
+ }
+
+ }
+
+ public void btnOK_Click(System.Object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.OK;
+ }
+
+ public void btnCancel_Click(System.Object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ }
+#endregion
+
+ private void ApplyLanguage()
+ {
+ Text = Language.strExport;
+
+ grpFile.Text = Language.strExportFile;
+ lblFileName.Text = Language.strLabelFilename;
+ btnBrowse.Text = Language.strButtonBrowse;
+ lblFileFormat.Text = Language.strFileFormatLabel;
+
+ grpItems.Text = Language.strExportItems;
+ rdoExportEverything.Text = Language.strExportEverything;
+ rdoExportSelectedFolder.Text = Language.strExportSelectedFolder;
+ rdoExportSelectedConnection.Text = Language.strExportSelectedConnection;
+
+ grpProperties.Text = Language.strExportProperties;
+ chkUsername.Text = Language.strCheckboxUsername;
+ chkPassword.Text = Language.strCheckboxPassword;
+ chkDomain.Text = Language.strCheckboxDomain;
+ chkInheritance.Text = Language.strCheckboxInheritance;
+ lblUncheckProperties.Text = Language.strUncheckProperties;
+
+ btnOK.Text = Language.strButtonOK;
+ btnCancel.Text = Language.strButtonCancel;
+ }
+#endregion
+
+#region Public Enumerations
+ public enum ExportScope
+ {
+ Everything,
+ SelectedFolder,
+ SelectedConnection
+ }
+#endregion
+
+#region Private Classes
+ [ImmutableObject(true)]private class ExportFormat
+ {
+#region Public Properties
+ private Config.Connections.Save.Format _format;
+public Config.Connections.Save.Format Format
+ {
+ get
+ {
+ return _format;
+ }
+ }
+#endregion
+
+#region Constructors
+ public ExportFormat(Config.Connections.Save.Format format)
+ {
+ _format = format;
+ }
+#endregion
+
+#region Public Methods
+ public override string ToString()
+ {
+ switch (Format)
+ {
+ case Config.Connections.Save_Renamed.Format.mRXML:
+ return Language.strMremoteNgXml;
+ case Config.Connections.Save_Renamed.Format.mRCSV:
+ return Language.strMremoteNgCsv;
+ case Config.Connections.Save_Renamed.Format.vRDCSV:
+ return Language.strVisionAppRemoteDesktopCsv;
+ default:
+ return Format.ToString();
+ }
+ }
+#endregion
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/ExportForm.resx b/mRemoteV1/CS/Forms/ExportForm.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/Forms/ExportForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsForm.Designer.cs b/mRemoteV1/CS/Forms/OptionsForm.Designer.cs
new file mode 100644
index 000000000..06713fcf8
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsForm.Designer.cs
@@ -0,0 +1,117 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class OptionsForm : System.Windows.Forms.Form
+ {
+
+ //Form overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionsForm));
+ mRemoteNG.Controls.Alignment Alignment2 = new mRemoteNG.Controls.Alignment();
+ this.PagePanel = new System.Windows.Forms.Panel();
+ base.Load += new System.EventHandler(OptionsForm_Load);
+ base.FormClosing += new System.Windows.Forms.FormClosingEventHandler(OptionsForm_FormClosing);
+ this.OkButton = new System.Windows.Forms.Button();
+ this.OkButton.Click += new System.EventHandler(this.OkButton_Click);
+ this.CancelButtonControl = new System.Windows.Forms.Button();
+ this.CancelButtonControl.Click += new System.EventHandler(this.CancelButtonControl_Click);
+ this.PageListView = new mRemoteNG.Controls.ListView();
+ this.PageListView.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.PageListView_ItemSelectionChanged);
+ this.PageListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.PageListView_MouseUp);
+ this.SuspendLayout();
+ //
+ //PagePanel
+ //
+ resources.ApplyResources(this.PagePanel, "PagePanel");
+ this.PagePanel.Name = "PagePanel";
+ //
+ //OkButton
+ //
+ resources.ApplyResources(this.OkButton, "OkButton");
+ this.OkButton.Name = "OkButton";
+ this.OkButton.UseVisualStyleBackColor = true;
+ //
+ //CancelButtonControl
+ //
+ this.CancelButtonControl.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ resources.ApplyResources(this.CancelButtonControl, "CancelButtonControl");
+ this.CancelButtonControl.Name = "CancelButtonControl";
+ this.CancelButtonControl.UseVisualStyleBackColor = true;
+ //
+ //PageListView
+ //
+ this.PageListView.InactiveHighlightBackColor = System.Drawing.SystemColors.Highlight;
+ this.PageListView.InactiveHighlightBorderColor = System.Drawing.SystemColors.HotTrack;
+ this.PageListView.InactiveHighlightForeColor = System.Drawing.SystemColors.HighlightText;
+ Alignment2.Horizontal = mRemoteNG.Controls.HorizontalAlignment.Left;
+ Alignment2.Vertical = mRemoteNG.Controls.VerticalAlignment.Middle;
+ this.PageListView.LabelAlignment = Alignment2;
+ resources.ApplyResources(this.PageListView, "PageListView");
+ this.PageListView.MultiSelect = false;
+ this.PageListView.Name = "PageListView";
+ this.PageListView.OwnerDraw = true;
+ this.PageListView.ShowFocusCues = false;
+ this.PageListView.TileSize = new System.Drawing.Size(150, 30);
+ this.PageListView.UseCompatibleStateImageBehavior = false;
+ this.PageListView.View = System.Windows.Forms.View.Tile;
+ //
+ //OptionsForm
+ //
+ this.AcceptButton = this.OkButton;
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.CancelButtonControl;
+ this.Controls.Add(this.CancelButtonControl);
+ this.Controls.Add(this.OkButton);
+ this.Controls.Add(this.PagePanel);
+ this.Controls.Add(this.PageListView);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "OptionsForm";
+ this.ShowInTaskbar = false;
+ this.ResumeLayout(false);
+
+ }
+ internal mRemoteNG.Controls.ListView PageListView;
+ internal System.Windows.Forms.Panel PagePanel;
+ internal System.Windows.Forms.Button OkButton;
+ internal System.Windows.Forms.Button CancelButtonControl;
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsForm.cs b/mRemoteV1/CS/Forms/OptionsForm.cs
new file mode 100644
index 000000000..d2db6cf25
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsForm.cs
@@ -0,0 +1,268 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.Forms.OptionsPages;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms
+{
+ public partial class OptionsForm
+ {
+#region Constructors
+ public OptionsForm()
+ {
+ // This call is required by the designer.
+ InitializeComponent();
+ // Add any initialization after the InitializeComponent() call.
+
+ FontOverride(this);
+
+ _pages.Add(new Forms.OptionsPages.StartupExitPage(), new PageInfo());
+ _pages.Add(new AppearancePage(), new PageInfo());
+ _pages.Add(new TabsPanelsPage(), new PageInfo());
+ _pages.Add(new ConnectionsPage(), new PageInfo());
+ _pages.Add(new SqlServerPage(), new PageInfo());
+ _pages.Add(new UpdatesPage(), new PageInfo());
+ _pages.Add(new ThemePage(), new PageInfo());
+ _pages.Add(new KeyboardPage(), new PageInfo());
+ _pages.Add(new AdvancedPage(), new PageInfo());
+
+ _startPage = GetPageFromType(typeof(Forms.OptionsPages.StartupExitPage));
+
+ _pageIconImageList.ColorDepth = ColorDepth.Depth32Bit;
+ PageListView.LargeImageList = _pageIconImageList;
+ }
+#endregion
+
+#region Public Methods
+ public DialogResult ShowDialog(IWin32Window ownerWindow, Type pageType)
+ {
+ _startPage = GetPageFromType(pageType);
+ return ShowDialog(ownerWindow);
+ }
+#endregion
+
+#region Private Fields
+ private Dictionary _pages = new Dictionary();
+ private ImageList _pageIconImageList = new ImageList();
+
+ private OptionsPage _startPage;
+ private OptionsPage _selectedPage = null;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void OptionsForm_Load(System.Object sender, EventArgs e)
+ {
+ foreach (KeyValuePair keyValuePair in _pages)
+ {
+ OptionsPage page = KeyValuePair.Key;
+ PageInfo pageInfo = KeyValuePair.Value;
+ _pageIconImageList.Images.Add(pageInfo.IconKey, page.PageIcon);
+ pageInfo.ListViewItem = PageListView.Items.Add(page.PageName, pageInfo.IconKey);
+ }
+
+ ApplyLanguage();
+ LoadSettings();
+
+ ShowPage(_startPage);
+ }
+
+ public void OptionsForm_FormClosing(System.Object sender, FormClosingEventArgs e)
+ {
+ if (DialogResult == DialogResult.OK)
+ {
+ SaveSettings();
+ }
+ else
+ {
+ RevertSettings();
+ }
+ }
+
+ public void PageListView_ItemSelectionChanged(System.Object sender, ListViewItemSelectionChangedEventArgs e)
+ {
+ if (!e.IsSelected)
+ {
+ return ;
+ }
+ if (_pages.Count < 1)
+ {
+ return ;
+ }
+ OptionsPage page = GetPageFromListViewItem(e.Item);
+ if (_selectedPage != page)
+ {
+ ShowPage(page);
+ }
+ SelectNextControl(PageListView, true, true, true, true);
+ }
+
+ public void PageListView_MouseUp(System.Object sender, MouseEventArgs e)
+ {
+ if (PageListView.SelectedIndices.Count == 0)
+ {
+ PageInfo pageInfo = _pages[_selectedPage];
+ pageInfo.ListViewItem.Selected = true;
+ }
+ SelectNextControl(PageListView, true, true, true, true);
+ }
+
+ public void OkButton_Click(System.Object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+
+ public void CancelButtonControl_Click(System.Object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+#endregion
+
+ private void ApplyLanguage()
+ {
+ Text = Language.strMenuOptions;
+ OkButton.Text = Language.strButtonOK;
+ CancelButtonControl.Text = Language.strButtonCancel;
+
+ foreach (OptionsPage page in _pages.Keys)
+ {
+ try
+ {
+ page.ApplyLanguage();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: string.Format("OptionsPage.ApplyLanguage() failed for page {0}.", page.PageName), ex: ex, logOnly: true);
+ }
+ }
+ }
+
+ private void LoadSettings()
+ {
+ foreach (OptionsPage page in _pages.Keys)
+ {
+ try
+ {
+ page.LoadSettings();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: string.Format("OptionsPage.LoadSettings() failed for page {0}.", page.PageName), ex: ex, logOnly: true);
+ }
+ }
+ }
+
+ private void SaveSettings()
+ {
+ foreach (OptionsPage page in _pages.Keys)
+ {
+ try
+ {
+ page.SaveSettings();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: string.Format("OptionsPage.SaveSettings() failed for page {0}.", page.PageName), ex: ex, logOnly: true);
+ }
+ }
+ }
+
+ private void RevertSettings()
+ {
+ foreach (OptionsPage page in _pages.Keys)
+ {
+ try
+ {
+ page.RevertSettings();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: string.Format("OptionsPage.RevertSettings() failed for page {0}.", page.PageName), ex: ex, logOnly: true);
+ }
+ }
+ }
+
+ private OptionsPage GetPageFromType(Type pageType)
+ {
+ foreach (OptionsPage page in _pages.Keys)
+ {
+ if (page.GetType() == pageType)
+ {
+ return page;
+ }
+ }
+ return null;
+ }
+
+ private OptionsPage GetPageFromListViewItem(ListViewItem listViewItem)
+ {
+ foreach (KeyValuePair keyValuePair in _pages)
+ {
+ OptionsPage page = KeyValuePair.Key;
+ PageInfo pageInfo = KeyValuePair.Value;
+ if (pageInfo.ListViewItem == listViewItem)
+ {
+ return page;
+ }
+ }
+ return null;
+ }
+
+ private void ShowPage(OptionsPage newPage)
+ {
+ if (_selectedPage != null)
+ {
+ OptionsPage oldPage = _selectedPage;
+ oldPage.Visible = false;
+ if (_pages.ContainsKey(oldPage))
+ {
+ PageInfo oldPageInfo = _pages[oldPage];
+ oldPageInfo.ListViewItem.Selected = false;
+ }
+ }
+
+ _selectedPage = newPage;
+
+ if (newPage != null)
+ {
+ newPage.Parent = PagePanel;
+ newPage.Dock = DockStyle.Fill;
+ newPage.Visible = true;
+ if (_pages.ContainsKey(newPage))
+ {
+ PageInfo newPageInfo = _pages[newPage];
+ newPageInfo.ListViewItem.Selected = true;
+ }
+ }
+ }
+#endregion
+
+#region Private Classes
+ private class PageInfo
+ {
+ public string IconKey {get; set;}
+ public ListViewItem ListViewItem {get; set;}
+
+ public PageInfo()
+ {
+ IconKey = Guid.NewGuid().ToString();
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsForm.resx b/mRemoteV1/CS/Forms/OptionsForm.resx
new file mode 100644
index 000000000..1984bd75d
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsForm.resx
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 172, 12
+
+
+ 610, 489
+
+
+
+ 1
+
+
+ PagePanel
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 2
+
+
+
+ NoControl
+
+
+ 626, 507
+
+
+ 75, 23
+
+
+ 2
+
+
+ &OK
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ NoControl
+
+
+ 707, 507
+
+
+ 75, 23
+
+
+ 3
+
+
+ &Cancel
+
+
+ CancelButtonControl
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ 12, 12
+
+
+ 154, 489
+
+
+ 0
+
+
+ PageListView
+
+
+ mRemoteNG.Controls.ListView, mRemoteNG, Version=1.72.5056.42837, Culture=neutral, PublicKeyToken=null
+
+
+ $this
+
+
+ 3
+
+
+ True
+
+
+ 6, 13
+
+
+ 794, 542
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA1YZW1dWCUP/RfEr/0XhErwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA2ZBkzN+jgP/qwar/6r+n/9yYcP/RekavAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANuWbv/tyLL/57ea/+azl//qwqr/3pty/9F8SK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADdnnj/7cy2/+i8ov/ksJH/5rWZ/+rCq//em3P/035MrAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA36R+kuayk//uzLf/6b2k/+Wyk//mtpr/6sOs/96dd//TgE6sAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfpIKS5rOX/+7Nuf/pvqT/5bOV/+e4nP/rxa3/3p54/9WC
+ UKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOGmhJLmtpj/7s66/+m/pv/ovKL/7Miy/9+j
+ gP/SiFzJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4aiGkua2m//vz7v/7s65/+Kt
+ i//Smnr/h4eH94WFhSMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhqIiS57ib/+a1
+ l//YqIv/0tLS/7S0tP+IiIj+hoaG+4SEhPuCgoLWgICAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOs
+ ipLapofPkZGR+8fHx//MzMz/x8fH/8XFxf/CwsL/v7+//4ODg/WBgYFwAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAJSUlEiSkpL+1NTU/8jIyP+7u7v/ubm5/8HBwf/Dw8P/hISE1gAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAlZWV/N3d3f/ExMT/jo6OwYyMjMOrq6v/19fX/4aGhvsAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeXl/vk5OT/z8/P/5GRkcIAAAAAjY2N/4uLi/+JiYn7AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamprW4uLi/+fn5/+4uLj/kpKS/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJyccJqamvXk5OT/7u7u/5WVlf8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdnZ1wm5ub1pqamvuYmJj7AAAAAAAA
+ AAAAAAAAh/+cQQP/nEEB/5xBAP+cQQB/nEGAP5xBwD+cQeAfnEHwAZxB+ACcQf4AnEH/AJxB/wicQf8H
+ nEH/B5xB/4ecQQ==
+
+
+
+ CenterParent
+
+
+ Options
+
+
+ OptionsForm
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.Designer.cs
new file mode 100644
index 000000000..1fa816ab1
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.Designer.cs
@@ -0,0 +1,286 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class AdvancedPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdvancedPage));
+ this.chkWriteLogFile = new System.Windows.Forms.CheckBox();
+ this.chkAutomaticallyGetSessionInfo = new System.Windows.Forms.CheckBox();
+ this.lblXulRunnerPath = new System.Windows.Forms.Label();
+ this.lblMaximumPuttyWaitTime = new System.Windows.Forms.Label();
+ this.chkEncryptCompleteFile = new System.Windows.Forms.CheckBox();
+ this.chkAutomaticReconnect = new System.Windows.Forms.CheckBox();
+ this.btnBrowseXulRunnerPath = new System.Windows.Forms.Button();
+ this.btnBrowseXulRunnerPath.Click += new System.EventHandler(this.btnBrowseXulRunnerPath_Click);
+ this.numPuttyWaitTime = new System.Windows.Forms.NumericUpDown();
+ this.chkUseCustomPuttyPath = new System.Windows.Forms.CheckBox();
+ this.chkUseCustomPuttyPath.CheckedChanged += new System.EventHandler(this.chkUseCustomPuttyPath_CheckedChanged);
+ this.lblConfigurePuttySessions = new System.Windows.Forms.Label();
+ this.txtXULrunnerPath = new System.Windows.Forms.TextBox();
+ this.numUVNCSCPort = new System.Windows.Forms.NumericUpDown();
+ this.txtCustomPuttyPath = new System.Windows.Forms.TextBox();
+ this.txtCustomPuttyPath.TextChanged += new System.EventHandler(this.txtCustomPuttyPath_TextChanged);
+ this.btnLaunchPutty = new System.Windows.Forms.Button();
+ this.btnLaunchPutty.Click += new System.EventHandler(this.btnLaunchPutty_Click);
+ this.lblUVNCSCPort = new System.Windows.Forms.Label();
+ this.lblSeconds = new System.Windows.Forms.Label();
+ this.btnBrowseCustomPuttyPath = new System.Windows.Forms.Button();
+ this.btnBrowseCustomPuttyPath.Click += new System.EventHandler(this.btnBrowseCustomPuttyPath_Click);
+ ((System.ComponentModel.ISupportInitialize) this.numPuttyWaitTime).BeginInit();
+ ((System.ComponentModel.ISupportInitialize) this.numUVNCSCPort).BeginInit();
+ this.SuspendLayout();
+ //
+ //chkWriteLogFile
+ //
+ this.chkWriteLogFile.AutoSize = true;
+ this.chkWriteLogFile.Location = new System.Drawing.Point(3, 0);
+ this.chkWriteLogFile.Name = "chkWriteLogFile";
+ this.chkWriteLogFile.Size = new System.Drawing.Size(171, 17);
+ this.chkWriteLogFile.TabIndex = 17;
+ this.chkWriteLogFile.Text = "Write log file (mRemoteNG.log)";
+ this.chkWriteLogFile.UseVisualStyleBackColor = true;
+ //
+ //chkAutomaticallyGetSessionInfo
+ //
+ this.chkAutomaticallyGetSessionInfo.AutoSize = true;
+ this.chkAutomaticallyGetSessionInfo.Location = new System.Drawing.Point(3, 46);
+ this.chkAutomaticallyGetSessionInfo.Name = "chkAutomaticallyGetSessionInfo";
+ this.chkAutomaticallyGetSessionInfo.Size = new System.Drawing.Size(198, 17);
+ this.chkAutomaticallyGetSessionInfo.TabIndex = 19;
+ this.chkAutomaticallyGetSessionInfo.Text = "Automatically get session information";
+ this.chkAutomaticallyGetSessionInfo.UseVisualStyleBackColor = true;
+ //
+ //lblXulRunnerPath
+ //
+ this.lblXulRunnerPath.AutoSize = true;
+ this.lblXulRunnerPath.Location = new System.Drawing.Point(3, 217);
+ this.lblXulRunnerPath.Name = "lblXulRunnerPath";
+ this.lblXulRunnerPath.Size = new System.Drawing.Size(85, 13);
+ this.lblXulRunnerPath.TabIndex = 29;
+ this.lblXulRunnerPath.Text = "XULrunner path:";
+ //
+ //lblMaximumPuttyWaitTime
+ //
+ this.lblMaximumPuttyWaitTime.Location = new System.Drawing.Point(3, 185);
+ this.lblMaximumPuttyWaitTime.Name = "lblMaximumPuttyWaitTime";
+ this.lblMaximumPuttyWaitTime.Size = new System.Drawing.Size(364, 13);
+ this.lblMaximumPuttyWaitTime.TabIndex = 26;
+ this.lblMaximumPuttyWaitTime.Text = "Maximum PuTTY wait time:";
+ this.lblMaximumPuttyWaitTime.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //chkEncryptCompleteFile
+ //
+ this.chkEncryptCompleteFile.AutoSize = true;
+ this.chkEncryptCompleteFile.Location = new System.Drawing.Point(3, 23);
+ this.chkEncryptCompleteFile.Name = "chkEncryptCompleteFile";
+ this.chkEncryptCompleteFile.Size = new System.Drawing.Size(180, 17);
+ this.chkEncryptCompleteFile.TabIndex = 18;
+ this.chkEncryptCompleteFile.Text = "Encrypt complete connection file";
+ this.chkEncryptCompleteFile.UseVisualStyleBackColor = true;
+ //
+ //chkAutomaticReconnect
+ //
+ this.chkAutomaticReconnect.AutoSize = true;
+ this.chkAutomaticReconnect.Location = new System.Drawing.Point(3, 69);
+ this.chkAutomaticReconnect.Name = "chkAutomaticReconnect";
+ this.chkAutomaticReconnect.Size = new System.Drawing.Size(399, 17);
+ this.chkAutomaticReconnect.TabIndex = 20;
+ this.chkAutomaticReconnect.Text = "Automatically try to reconnect when disconnected from server (RDP && ICA only)";
+ this.chkAutomaticReconnect.UseVisualStyleBackColor = true;
+ //
+ //btnBrowseXulRunnerPath
+ //
+ this.btnBrowseXulRunnerPath.Location = new System.Drawing.Point(373, 233);
+ this.btnBrowseXulRunnerPath.Name = "btnBrowseXulRunnerPath";
+ this.btnBrowseXulRunnerPath.Size = new System.Drawing.Size(75, 23);
+ this.btnBrowseXulRunnerPath.TabIndex = 31;
+ this.btnBrowseXulRunnerPath.Text = "Browse...";
+ this.btnBrowseXulRunnerPath.UseVisualStyleBackColor = true;
+ //
+ //numPuttyWaitTime
+ //
+ this.numPuttyWaitTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.numPuttyWaitTime.Location = new System.Drawing.Point(373, 183);
+ this.numPuttyWaitTime.Maximum = new decimal(new int[] {999, 0, 0, 0});
+ this.numPuttyWaitTime.Name = "numPuttyWaitTime";
+ this.numPuttyWaitTime.Size = new System.Drawing.Size(49, 20);
+ this.numPuttyWaitTime.TabIndex = 27;
+ this.numPuttyWaitTime.Value = new decimal(new int[] {5, 0, 0, 0});
+ //
+ //chkUseCustomPuttyPath
+ //
+ this.chkUseCustomPuttyPath.AutoSize = true;
+ this.chkUseCustomPuttyPath.Location = new System.Drawing.Point(3, 92);
+ this.chkUseCustomPuttyPath.Name = "chkUseCustomPuttyPath";
+ this.chkUseCustomPuttyPath.Size = new System.Drawing.Size(146, 17);
+ this.chkUseCustomPuttyPath.TabIndex = 21;
+ this.chkUseCustomPuttyPath.Text = "Use custom PuTTY path:";
+ this.chkUseCustomPuttyPath.UseVisualStyleBackColor = true;
+ //
+ //lblConfigurePuttySessions
+ //
+ this.lblConfigurePuttySessions.Location = new System.Drawing.Point(3, 154);
+ this.lblConfigurePuttySessions.Name = "lblConfigurePuttySessions";
+ this.lblConfigurePuttySessions.Size = new System.Drawing.Size(364, 13);
+ this.lblConfigurePuttySessions.TabIndex = 24;
+ this.lblConfigurePuttySessions.Text = "To configure PuTTY sessions click this button:";
+ this.lblConfigurePuttySessions.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtXULrunnerPath
+ //
+ this.txtXULrunnerPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtXULrunnerPath.Location = new System.Drawing.Point(21, 235);
+ this.txtXULrunnerPath.Name = "txtXULrunnerPath";
+ this.txtXULrunnerPath.Size = new System.Drawing.Size(346, 20);
+ this.txtXULrunnerPath.TabIndex = 30;
+ //
+ //numUVNCSCPort
+ //
+ this.numUVNCSCPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.numUVNCSCPort.Location = new System.Drawing.Point(373, 276);
+ this.numUVNCSCPort.Maximum = new decimal(new int[] {65535, 0, 0, 0});
+ this.numUVNCSCPort.Name = "numUVNCSCPort";
+ this.numUVNCSCPort.Size = new System.Drawing.Size(72, 20);
+ this.numUVNCSCPort.TabIndex = 33;
+ this.numUVNCSCPort.Value = new decimal(new int[] {5500, 0, 0, 0});
+ this.numUVNCSCPort.Visible = false;
+ //
+ //txtCustomPuttyPath
+ //
+ this.txtCustomPuttyPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtCustomPuttyPath.Enabled = false;
+ this.txtCustomPuttyPath.Location = new System.Drawing.Point(21, 115);
+ this.txtCustomPuttyPath.Name = "txtCustomPuttyPath";
+ this.txtCustomPuttyPath.Size = new System.Drawing.Size(346, 20);
+ this.txtCustomPuttyPath.TabIndex = 22;
+ //
+ //btnLaunchPutty
+ //
+ this.btnLaunchPutty.Image = global::My.Resources.Resources.PuttyConfig;
+ this.btnLaunchPutty.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btnLaunchPutty.Location = new System.Drawing.Point(373, 149);
+ this.btnLaunchPutty.Name = "btnLaunchPutty";
+ this.btnLaunchPutty.Size = new System.Drawing.Size(110, 23);
+ this.btnLaunchPutty.TabIndex = 25;
+ this.btnLaunchPutty.Text = "Launch PuTTY";
+ this.btnLaunchPutty.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.btnLaunchPutty.UseVisualStyleBackColor = true;
+ //
+ //lblUVNCSCPort
+ //
+ this.lblUVNCSCPort.Location = new System.Drawing.Point(3, 278);
+ this.lblUVNCSCPort.Name = "lblUVNCSCPort";
+ this.lblUVNCSCPort.Size = new System.Drawing.Size(364, 13);
+ this.lblUVNCSCPort.TabIndex = 32;
+ this.lblUVNCSCPort.Text = "UltraVNC SingleClick Listening Port:";
+ this.lblUVNCSCPort.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ this.lblUVNCSCPort.Visible = false;
+ //
+ //lblSeconds
+ //
+ this.lblSeconds.AutoSize = true;
+ this.lblSeconds.Location = new System.Drawing.Point(428, 185);
+ this.lblSeconds.Name = "lblSeconds";
+ this.lblSeconds.Size = new System.Drawing.Size(47, 13);
+ this.lblSeconds.TabIndex = 28;
+ this.lblSeconds.Text = "seconds";
+ //
+ //btnBrowseCustomPuttyPath
+ //
+ this.btnBrowseCustomPuttyPath.Enabled = false;
+ this.btnBrowseCustomPuttyPath.Location = new System.Drawing.Point(373, 113);
+ this.btnBrowseCustomPuttyPath.Name = "btnBrowseCustomPuttyPath";
+ this.btnBrowseCustomPuttyPath.Size = new System.Drawing.Size(75, 23);
+ this.btnBrowseCustomPuttyPath.TabIndex = 23;
+ this.btnBrowseCustomPuttyPath.Text = "Browse...";
+ this.btnBrowseCustomPuttyPath.UseVisualStyleBackColor = true;
+ //
+ //AdvancedPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.chkWriteLogFile);
+ this.Controls.Add(this.chkAutomaticallyGetSessionInfo);
+ this.Controls.Add(this.lblXulRunnerPath);
+ this.Controls.Add(this.lblMaximumPuttyWaitTime);
+ this.Controls.Add(this.chkEncryptCompleteFile);
+ this.Controls.Add(this.chkAutomaticReconnect);
+ this.Controls.Add(this.btnBrowseXulRunnerPath);
+ this.Controls.Add(this.numPuttyWaitTime);
+ this.Controls.Add(this.chkUseCustomPuttyPath);
+ this.Controls.Add(this.lblConfigurePuttySessions);
+ this.Controls.Add(this.txtXULrunnerPath);
+ this.Controls.Add(this.numUVNCSCPort);
+ this.Controls.Add(this.txtCustomPuttyPath);
+ this.Controls.Add(this.btnLaunchPutty);
+ this.Controls.Add(this.lblUVNCSCPort);
+ this.Controls.Add(this.lblSeconds);
+ this.Controls.Add(this.btnBrowseCustomPuttyPath);
+ this.Name = "AdvancedPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ ((System.ComponentModel.ISupportInitialize) this.numPuttyWaitTime).EndInit();
+ ((System.ComponentModel.ISupportInitialize) this.numUVNCSCPort).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.CheckBox chkWriteLogFile;
+ internal System.Windows.Forms.CheckBox chkAutomaticallyGetSessionInfo;
+ internal System.Windows.Forms.Label lblXulRunnerPath;
+ internal System.Windows.Forms.Label lblMaximumPuttyWaitTime;
+ internal System.Windows.Forms.CheckBox chkEncryptCompleteFile;
+ internal System.Windows.Forms.CheckBox chkAutomaticReconnect;
+ internal System.Windows.Forms.Button btnBrowseXulRunnerPath;
+ internal System.Windows.Forms.NumericUpDown numPuttyWaitTime;
+ internal System.Windows.Forms.CheckBox chkUseCustomPuttyPath;
+ internal System.Windows.Forms.Label lblConfigurePuttySessions;
+ internal System.Windows.Forms.TextBox txtXULrunnerPath;
+ internal System.Windows.Forms.NumericUpDown numUVNCSCPort;
+ internal System.Windows.Forms.TextBox txtCustomPuttyPath;
+ internal System.Windows.Forms.Button btnLaunchPutty;
+ internal System.Windows.Forms.Label lblUVNCSCPort;
+ internal System.Windows.Forms.Label lblSeconds;
+ internal System.Windows.Forms.Button btnBrowseCustomPuttyPath;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.cs b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.cs
new file mode 100644
index 000000000..c996dbea7
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.cs
@@ -0,0 +1,226 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+//using mRemoteNG.App.Info;
+using mRemoteNG.My;
+using mRemoteNG.Connection.Protocol;
+using mRemoteNG.Tools;
+using PSTaskDialog;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class AdvancedPage
+ {
+ public AdvancedPage()
+ {
+ InitializeComponent();
+ }
+#region Public Methods
+public override string PageName
+ {
+ get
+ {
+ return Language.strTabAdvanced;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ lblSeconds.Text = Language.strLabelSeconds;
+ lblMaximumPuttyWaitTime.Text = Language.strLabelPuttyTimeout;
+ chkAutomaticReconnect.Text = Language.strCheckboxAutomaticReconnect;
+ lblConfigurePuttySessions.Text = Language.strLabelPuttySessionsConfig;
+ btnLaunchPutty.Text = Language.strButtonLaunchPutty;
+ btnBrowseCustomPuttyPath.Text = Language.strButtonBrowse;
+ chkUseCustomPuttyPath.Text = Language.strCheckboxPuttyPath;
+ chkAutomaticallyGetSessionInfo.Text = Language.strAutomaticallyGetSessionInfo;
+ chkWriteLogFile.Text = Language.strWriteLogFile;
+ lblUVNCSCPort.Text = Language.strUltraVNCSCListeningPort;
+ lblXulRunnerPath.Text = Language.strXULrunnerPath;
+ btnBrowseXulRunnerPath.Text = Language.strButtonBrowse;
+ chkEncryptCompleteFile.Text = Language.strEncryptCompleteConnectionFile;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ chkWriteLogFile.Checked = System.Convert.ToBoolean(My.Settings.Default.WriteLogFile);
+ chkEncryptCompleteFile.Checked = System.Convert.ToBoolean(My.Settings.Default.EncryptCompleteConnectionsFile);
+ chkAutomaticallyGetSessionInfo.Checked = System.Convert.ToBoolean(My.Settings.Default.AutomaticallyGetSessionInfo);
+ chkAutomaticReconnect.Checked = System.Convert.ToBoolean(My.Settings.Default.ReconnectOnDisconnect);
+ numPuttyWaitTime.Value = System.Convert.ToDecimal(My.Settings.Default.MaxPuttyWaitTime);
+
+ chkUseCustomPuttyPath.Checked = MySettingsProperty.Settings.UseCustomPuttyPath;
+ txtCustomPuttyPath.Text = MySettingsProperty.Settings.CustomPuttyPath;
+ SetPuttyLaunchButtonEnabled();
+
+ numUVNCSCPort.Value = System.Convert.ToDecimal(My.Settings.Default.UVNCSCPort);
+
+ txtXULrunnerPath.Text = System.Convert.ToString(My.Settings.Default.XULRunnerPath);
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ My.Settings.Default.WriteLogFile = chkWriteLogFile.Checked;
+ My.Settings.Default.EncryptCompleteConnectionsFile = chkEncryptCompleteFile.Checked;
+ My.Settings.Default.AutomaticallyGetSessionInfo = chkAutomaticallyGetSessionInfo.Checked;
+ My.Settings.Default.ReconnectOnDisconnect = chkAutomaticReconnect.Checked;
+
+ bool puttyPathChanged = false;
+ if (!(MySettingsProperty.Settings.CustomPuttyPath == txtCustomPuttyPath.Text))
+ {
+ puttyPathChanged = true;
+ MySettingsProperty.Settings.CustomPuttyPath = txtCustomPuttyPath.Text;
+ }
+ if (!(MySettingsProperty.Settings.UseCustomPuttyPath == chkUseCustomPuttyPath.Checked))
+ {
+ puttyPathChanged = true;
+ MySettingsProperty.Settings.UseCustomPuttyPath = chkUseCustomPuttyPath.Checked;
+ }
+ if (puttyPathChanged)
+ {
+ if (MySettingsProperty.Settings.UseCustomPuttyPath)
+ {
+ PuttyBase.PuttyPath = MySettingsProperty.Settings.CustomPuttyPath;
+ }
+ else
+ {
+ PuttyBase.PuttyPath = App.Info.General.PuttyPath;
+ }
+ Config.Putty.Sessions.AddSessionsToTree();
+ }
+
+ My.Settings.Default.MaxPuttyWaitTime = numPuttyWaitTime.Value;
+
+ My.Settings.Default.UVNCSCPort = numUVNCSCPort.Value;
+
+ My.Settings.Default.XULRunnerPath = txtXULrunnerPath.Text;
+ }
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void chkUseCustomPuttyPath_CheckedChanged(object sender, EventArgs e)
+ {
+ txtCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked;
+ btnBrowseCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked;
+ SetPuttyLaunchButtonEnabled();
+ }
+
+ public void txtCustomPuttyPath_TextChanged(object sender, EventArgs e)
+ {
+ SetPuttyLaunchButtonEnabled();
+ }
+
+ public void btnBrowseCustomPuttyPath_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog openFileDialog = new OpenFileDialog())
+ {
+ openFileDialog.Filter = string.Format("{0}|*.exe|{1}|*.*", Language.strFilterApplication, Language.strFilterAll);
+ openFileDialog.FileName = Path.GetFileName(App.Info.General.PuttyPath);
+ openFileDialog.CheckFileExists = true;
+ openFileDialog.Multiselect = false;
+
+ if (openFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ txtCustomPuttyPath.Text = openFileDialog.FileName;
+ SetPuttyLaunchButtonEnabled();
+ }
+ }
+
+ }
+
+ public void btnLaunchPutty_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ PuttyProcessController puttyProcess = new PuttyProcessController();
+ string fileName = "";
+ if (chkUseCustomPuttyPath.Checked)
+ {
+ fileName = txtCustomPuttyPath.Text;
+ }
+ else
+ {
+ fileName = App.Info.General.PuttyPath;
+ }
+ puttyProcess.Start(fileName);
+ puttyProcess.SetControlText("Button", "&Cancel", "&Close");
+ puttyProcess.SetControlVisible("Button", "&Open", false);
+ puttyProcess.WaitForExit();
+ }
+ catch (Exception ex)
+ {
+ cTaskDialog.MessageBox(System.Convert.ToString(Application.Info.ProductName), Language.strErrorCouldNotLaunchPutty, "", ex.Message, "", "", eTaskDialogButtons.OK, eSysIcons.Error, null);
+ }
+ }
+
+ public void btnBrowseXulRunnerPath_Click(object sender, EventArgs e)
+ {
+ FolderBrowserDialog oDlg = new FolderBrowserDialog();
+ oDlg.ShowNewFolderButton = false;
+
+ if (oDlg.ShowDialog() == DialogResult.OK)
+ {
+ txtXULrunnerPath.Text = oDlg.SelectedPath;
+ }
+
+ oDlg.Dispose();
+ }
+#endregion
+
+ private void SetPuttyLaunchButtonEnabled()
+ {
+ string puttyPath = "";
+ if (chkUseCustomPuttyPath.Checked)
+ {
+ puttyPath = txtCustomPuttyPath.Text;
+ }
+ else
+ {
+ puttyPath = App.Info.General.PuttyPath;
+ }
+
+ bool exists = false;
+ try
+ {
+ exists = File.Exists(puttyPath);
+ }
+ catch
+ {
+ }
+
+ if (exists)
+ {
+ lblConfigurePuttySessions.Enabled = true;
+ btnLaunchPutty.Enabled = true;
+ }
+ else
+ {
+ lblConfigurePuttySessions.Enabled = false;
+ btnLaunchPutty.Enabled = false;
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.resx b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.resx
new file mode 100644
index 000000000..133b0a277
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AdvancedPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsbGxjWFhYv1FRUb9SUlJjAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAb29vKW1tbQ5/f38CgICA6r29vf+ysrL/W1tb6n9/fwJbW1sOUFBQKQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAgICAm25ubv1kZGTnenp6GYODg+fLy8v/x8fH/2JiYudbW1sZWFhY501N
+ Tf1ISEibAAAAAAAAAAAAAAAAo6Oje7y8vP/e3t7/pqam/4KCgvSEhIT+xMTE/8LCwv9tbW3+bW1t9Kam
+ pv/S0tL/gICA/1JSUnsAAAAAAAAAAKurq32lpaX+1dXV/8XFxf/Ly8v/0dHR/8nJyf/Hx8f/zMzM/8XF
+ xf+9vb3/y8vL/25ubv5lZWV9AAAAAAAAAAAAAAAArKyshcXFxf/BwcH/xcXF/8fHx/+qqqr/p6en/8HB
+ wf++vr7/tbW1/6qqqv9paWmFAAAAAAAAAACioqLNjo6O45+fn+7Pz8//xsbG/8zMzP+enp7GmZmZRJKS
+ kkSOjo7GwcHB/7y8vP+5ubn/Y2Nj7ldXV+NTU1PNv7+//eLi4v/S0tL/xsbG/83Nzf+xsbH/kpKSRAAA
+ AAAAAAAAlpaWRKioqP/CwsL/t7e3/8DAwP/S0tL/YGBg/cPDw/3p6en/1tbW/8nJyf/Ozs7/paWl/4OD
+ g0QAAAAAAAAAAJmZmUSsrKz/xMTE/7q6uv/Gxsb/3d3d/2pqav3IyMjNw8PD47+/v+7Y2Nj/zc3N/7y8
+ vP+CgoLGeHh4RH9/f0SOjo7Gw8PD/8LCwv/Nzc3/jIyM7oaGhuOCgoLNAAAAAAAAAADFxcWF1NTU/8zM
+ zP/Jycn/urq6/5ycnP+hoaH/wsLC/8bGxv/BwcH/t7e3/4iIiIUAAAAAAAAAAAAAAADJycl9w8PD/tzc
+ 3P/U1NT/2dnZ/9vb2//W1tb/1NTU/9nZ2f/S0tL/y8vL/8jIyP95eXn+cHBwfQAAAAAAAAAAz8/Pe9zc
+ 3P/t7e3/29vb/8LCwvS9vb3+1tbW/9TU1P+vr6/+rKys9MvLy//n5+f/t7e3/4qKinsAAAAAAAAAAAAA
+ AADQ0NCbzc3N/crKyufBwcEZwsLC597e3v/d3d3/sbGx562trRmsrKznp6en/aKiopsAAAAAAAAAAAAA
+ AAAAAAAAAAAAANPT0ynIyMgO////AsfHx+rl5eX/5OTk/6ysrOp/f38Ctra2Dq6urikAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8tjxsbGv8TExL++vr5jAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA/n8AAPw/AADEIwAAwAMAAMADAADAAwAAAYAAAAPAAAADwAAAAYAAAMADAADAAwAAwAMAAMQj
+ AAD8PwAA/n8AAA==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.Designer.cs
new file mode 100644
index 000000000..f0ec1a191
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.Designer.cs
@@ -0,0 +1,149 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class AppearancePage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AppearancePage));
+ this.lblLanguageRestartRequired = new System.Windows.Forms.Label();
+ this.cboLanguage = new System.Windows.Forms.ComboBox();
+ this.lblLanguage = new System.Windows.Forms.Label();
+ this.chkShowFullConnectionsFilePathInTitle = new System.Windows.Forms.CheckBox();
+ this.chkShowDescriptionTooltipsInTree = new System.Windows.Forms.CheckBox();
+ this.chkShowSystemTrayIcon = new System.Windows.Forms.CheckBox();
+ this.chkMinimizeToSystemTray = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ //lblLanguageRestartRequired
+ //
+ this.lblLanguageRestartRequired.AutoSize = true;
+ this.lblLanguageRestartRequired.Location = new System.Drawing.Point(3, 56);
+ this.lblLanguageRestartRequired.Name = "lblLanguageRestartRequired";
+ this.lblLanguageRestartRequired.Size = new System.Drawing.Size(380, 13);
+ this.lblLanguageRestartRequired.TabIndex = 9;
+ this.lblLanguageRestartRequired.Text = "mRemoteNG must be restarted before changes to the language will take effect.";
+ //
+ //cboLanguage
+ //
+ this.cboLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cboLanguage.FormattingEnabled = true;
+ this.cboLanguage.Location = new System.Drawing.Point(3, 24);
+ this.cboLanguage.Name = "cboLanguage";
+ this.cboLanguage.Size = new System.Drawing.Size(304, 21);
+ this.cboLanguage.Sorted = true;
+ this.cboLanguage.TabIndex = 8;
+ //
+ //lblLanguage
+ //
+ this.lblLanguage.AutoSize = true;
+ this.lblLanguage.Location = new System.Drawing.Point(3, 0);
+ this.lblLanguage.Name = "lblLanguage";
+ this.lblLanguage.Size = new System.Drawing.Size(55, 13);
+ this.lblLanguage.TabIndex = 7;
+ this.lblLanguage.Text = "Language";
+ //
+ //chkShowFullConnectionsFilePathInTitle
+ //
+ this.chkShowFullConnectionsFilePathInTitle.AutoSize = true;
+ this.chkShowFullConnectionsFilePathInTitle.Location = new System.Drawing.Point(3, 141);
+ this.chkShowFullConnectionsFilePathInTitle.Name = "chkShowFullConnectionsFilePathInTitle";
+ this.chkShowFullConnectionsFilePathInTitle.Size = new System.Drawing.Size(239, 17);
+ this.chkShowFullConnectionsFilePathInTitle.TabIndex = 11;
+ this.chkShowFullConnectionsFilePathInTitle.Text = "Show full connections file path in window title";
+ this.chkShowFullConnectionsFilePathInTitle.UseVisualStyleBackColor = true;
+ //
+ //chkShowDescriptionTooltipsInTree
+ //
+ this.chkShowDescriptionTooltipsInTree.AutoSize = true;
+ this.chkShowDescriptionTooltipsInTree.Location = new System.Drawing.Point(3, 118);
+ this.chkShowDescriptionTooltipsInTree.Name = "chkShowDescriptionTooltipsInTree";
+ this.chkShowDescriptionTooltipsInTree.Size = new System.Drawing.Size(231, 17);
+ this.chkShowDescriptionTooltipsInTree.TabIndex = 10;
+ this.chkShowDescriptionTooltipsInTree.Text = "Show description tooltips in connection tree";
+ this.chkShowDescriptionTooltipsInTree.UseVisualStyleBackColor = true;
+ //
+ //chkShowSystemTrayIcon
+ //
+ this.chkShowSystemTrayIcon.AutoSize = true;
+ this.chkShowSystemTrayIcon.Location = new System.Drawing.Point(3, 187);
+ this.chkShowSystemTrayIcon.Name = "chkShowSystemTrayIcon";
+ this.chkShowSystemTrayIcon.Size = new System.Drawing.Size(172, 17);
+ this.chkShowSystemTrayIcon.TabIndex = 12;
+ this.chkShowSystemTrayIcon.Text = "Always show System Tray Icon";
+ this.chkShowSystemTrayIcon.UseVisualStyleBackColor = true;
+ //
+ //chkMinimizeToSystemTray
+ //
+ this.chkMinimizeToSystemTray.AutoSize = true;
+ this.chkMinimizeToSystemTray.Location = new System.Drawing.Point(3, 210);
+ this.chkMinimizeToSystemTray.Name = "chkMinimizeToSystemTray";
+ this.chkMinimizeToSystemTray.Size = new System.Drawing.Size(139, 17);
+ this.chkMinimizeToSystemTray.TabIndex = 13;
+ this.chkMinimizeToSystemTray.Text = "Minimize to System Tray";
+ this.chkMinimizeToSystemTray.UseVisualStyleBackColor = true;
+ //
+ //AppearancePage
+ //
+ this.Controls.Add(this.lblLanguageRestartRequired);
+ this.Controls.Add(this.cboLanguage);
+ this.Controls.Add(this.lblLanguage);
+ this.Controls.Add(this.chkShowFullConnectionsFilePathInTitle);
+ this.Controls.Add(this.chkShowDescriptionTooltipsInTree);
+ this.Controls.Add(this.chkShowSystemTrayIcon);
+ this.Controls.Add(this.chkMinimizeToSystemTray);
+ this.Name = "AppearancePage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.Label Label1;
+ internal System.Windows.Forms.Label lblLanguageRestartRequired;
+ internal System.Windows.Forms.ComboBox cboLanguage;
+ internal System.Windows.Forms.Label lblLanguage;
+ internal System.Windows.Forms.CheckBox chkShowFullConnectionsFilePathInTitle;
+ internal System.Windows.Forms.CheckBox chkShowDescriptionTooltipsInTree;
+ internal System.Windows.Forms.CheckBox chkShowSystemTrayIcon;
+ internal System.Windows.Forms.CheckBox chkMinimizeToSystemTray;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.cs b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.cs
new file mode 100644
index 000000000..bee9805e0
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.cs
@@ -0,0 +1,112 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.App;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class AppearancePage
+ {
+ public AppearancePage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strTabAppearance;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ lblLanguage.Text = Language.strLanguage;
+ lblLanguageRestartRequired.Text = string.Format(Language.strLanguageRestartRequired, Application.Info.ProductName);
+ chkShowDescriptionTooltipsInTree.Text = Language.strShowDescriptionTooltips;
+ chkShowFullConnectionsFilePathInTitle.Text = Language.strShowFullConsFilePath;
+ chkShowSystemTrayIcon.Text = Language.strAlwaysShowSysTrayIcon;
+ chkMinimizeToSystemTray.Text = Language.strMinimizeToSysTray;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ cboLanguage.Items.Clear();
+ cboLanguage.Items.Add(Language.strLanguageDefault);
+
+ foreach (string nativeName in SupportedCultures.CultureNativeNames)
+ {
+ cboLanguage.Items.Add(nativeName);
+ }
+ if (!string.IsNullOrEmpty(Settings.OverrideUICulture) && SupportedCultures.IsNameSupported(Settings.OverrideUICulture))
+ {
+ cboLanguage.SelectedItem = SupportedCultures.get_CultureNativeName(Settings.OverrideUICulture);
+ }
+ if (cboLanguage.SelectedIndex == -1)
+ {
+ cboLanguage.SelectedIndex = 0;
+ }
+
+ chkShowDescriptionTooltipsInTree.Checked = Settings.ShowDescriptionTooltipsInTree;
+ chkShowFullConnectionsFilePathInTitle.Checked = Settings.ShowCompleteConsPathInTitle;
+ chkShowSystemTrayIcon.Checked = Settings.ShowSystemTrayIcon;
+ chkMinimizeToSystemTray.Checked = Settings.MinimizeToTray;
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ if (cboLanguage.SelectedIndex > 0 && SupportedCultures.IsNativeNameSupported(System.Convert.ToString(cboLanguage.SelectedItem)))
+ {
+ Settings.OverrideUICulture = SupportedCultures.get_CultureName(System.Convert.ToString(cboLanguage.SelectedItem));
+ }
+ else
+ {
+ Settings.OverrideUICulture = string.Empty;
+ }
+
+ Settings.ShowDescriptionTooltipsInTree = chkShowDescriptionTooltipsInTree.Checked;
+ Settings.ShowCompleteConsPathInTitle = chkShowFullConnectionsFilePathInTitle.Checked;
+ frmMain.Default.ShowFullPathInTitle = chkShowFullConnectionsFilePathInTitle.Checked;
+
+ Settings.ShowSystemTrayIcon = chkShowSystemTrayIcon.Checked;
+ if (Settings.ShowSystemTrayIcon)
+ {
+ if (Runtime.NotificationAreaIcon == null)
+ {
+ Runtime.NotificationAreaIcon = new Tools.Controls.NotificationAreaIcon();
+ }
+ }
+ else
+ {
+ if (Runtime.NotificationAreaIcon != null)
+ {
+ Runtime.NotificationAreaIcon.Dispose();
+ Runtime.NotificationAreaIcon = null;
+ }
+ }
+
+ Settings.MinimizeToTray = chkMinimizeToSystemTray.Checked;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.resx b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.resx
new file mode 100644
index 000000000..865b7f655
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/AppearancePage.resx
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAQAEBAQAAEABAAoAQAARgAAABAQAAABAAgAaAUAAG4BAAAQEAAAAQAYAGgDAADWBgAAEBAAAAEA
+ IABoBAAAPgoAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr2guAK90
+ TwA+kkMASp9QAHDJegC+gVkAuY51AMiKWgDLlGcA1KR7ANSpiQDhvJ0A7MKaAP369wD///8AAAAAAAAA
+ AAAMpiIiIiIicAn///////8gBvER9ERDPyAG8aH0VVU/IAjxofRVVT8gCPGh9FVVPyAI8qH0VVVPIAj2
+ IvRERE9gCP///////2AJ/d3d3d3fYAn93d3d3d9gCv3d3d3d35AM////////sADKmZiZmbuwAAAAAAAA
+ AAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMAB
+ AAD//wAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsYyoArmYrALFr
+ LQCzbTIAtXI3ALZ1PwCmbUwAp3BOAKpwTgCscU4AsHNPALl7SQC5fEsAqHVVAKt3WACydVAAtXZRALh5
+ UgC7flMAu31UAD2SQgA/k0QAQJRFAEOXSABDmEgARZpLAEabTABJnk8AS6BRAEyhUgBOo1QAT6RVAFCl
+ VgBRp1gAVapcAG3HdwBuyHkAcMl7AHLKfAC9gFYAv4JdALmOdQDAglcAw4VZAMWGWQDJiloAy41cAMyP
+ XgDNkV4Axo5kAMePagDLkGAAzZFgAM+WZwDOlGgAzZ5zAM2fdADVonYA0KR9ANenfgDPoYQA0aWCANSn
+ ggDWqokA2K2KANm1nwDhvJ0A7cOaAOPBpAD02sAA////ABH/WwAx/3EAUf+HAHH/nQCR/7IAsf/JANH/
+ 3wD///8AAAAAAAIvAAAEUAAABnAAAAiQAAAKsAAAC88AAA7wAAAg/xIAPf8xAFv/UQB5/3EAmP+RALX/
+ sQDU/9EA////AAAAAAAULwAAIlAAADBwAAA9kAAATLAAAFnPAABn8AAAeP8RAIr/MQCc/1EArv9xAMD/
+ kQDS/7EA5P/RAP///wAAAAAAJi8AAEBQAABacAAAdJAAAI6wAACpzwAAwvAAANH/EQDY/zEA3v9RAOP/
+ cQDp/5EA7/+xAPb/0QD///8AAAAAAC8mAABQQQAAcFsAAJB0AACwjgAAz6kAAPDDAAD/0hEA/9gxAP/d
+ UQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9bAADwaQAA/3kRAP+K
+ MQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAKAADPDAAA8A4AAP8g
+ EgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAAKwCwADYAzwBAAPAA
+ SQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAATACQAGIAsAB4AM8A
+ jgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsAUABpAHAAhwCQAKUA
+ sADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIA
+ kABjALAAdgDPAIgA8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUA
+ cAAbAJAAIQCwACYAzwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wAAAAAAAAAAAAAA
+ AAAAAAAAAEI9KRIREAsKCQcHBw4qAAAzR0dHR0dHR0dHR0dHDwAAK0cCAQFHIyEdGxgWRwcAACxHAjgB
+ RxwmJiUkFUcIAAAsRwI5AUceJycmJRdHCgAALUcEOwNHICcnJiYZRxAAAC5HBj4FRyInJyYmG0cRAAAu
+ RxMNDEcaIiEfHhxHEgAAL0dHR0dHR0dHR0dHRxQAADVHREREREREREREREcoAAA2R0RGRkZGRkZGRkRH
+ KwAAOkdERERERERERERERzIAAENHR0dHR0dHR0dHR0dAAAAARTwxMTEwNTU0Nz9BQAAAAAAAAAAAAAAA
+ AAAAAAAA//8AAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
+ AADAAQAA//8AACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZtZ/PoYS/gl25eFK1dlCzdVCw
+ c0+scU6pcE6nbk2mbUylbUyodVW5jnUAAAAAAADHj2r/////////////////////////////////////
+ //////////+rd1gAAAAAAADBgVf///+uZiusYyqsYyr///9VqlxQpVZLoFFGm0tDl0g/k0T///+mbk0A
+ AAAAAADDhVn///+uZivNnnOsYyr///9Knk9vyXpvyXpuyHltx3c9kkL///+ncE4AAAAAAADEhVr///+u
+ ZivNn3SsYyr///9NolNyynxxynxwyXtuyHlAlEX///+rcU8AAAAAAADHh1n///+zbTLQpH2xay3///9P
+ pFVzy31yy3xxyntvyXpDmEj///+xdVAAAAAAAADIiVr///+2dT/RpYK1cjf///9Rp1hyy3xyy3xxyntv
+ yXpGm0z///+1d1IAAAAAAADKi1v///+7flO5fEu5e0n///9FmktSp1hQpVZOo1RMoVJJnk////+4e1MA
+ AAAAAADLjVz///////////////////////////////////////////////+7fVQAAAAAAADNkWD////t
+ w5rtw5rtw5rtw5rtw5rtw5rtw5rtw5rtw5rtw5r///+9gFYAAAAAAADPlmf////tw5v02sD02sD028H0
+ 28H028H028H028H028Htw5r////Ag1cAAAAAAADVonb////tw5vtw5vtw5vtw5rtw5rtw5rtw5rtw5rt
+ w5rtw5r////GjmQAAAAAAADhvJ3////////////////////////////////////////////////WqYgA
+ AAAAAAAAAADjwaTXp37Okl7Nkl7NkV7Mj17NkWDNkmLLkGDOlGjUp4LYrYrXq4oAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//5xBgAGcQYABnEGAAZxBgAGcQYAB
+ nEGAAZxBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxBgAGcQcABnEH//5xBKAAAABAAAAAgAAAAAQAgAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvXxUj7x7U7W7elLuuXhS/7V2UP+zdVD/sHNP/6xx
+ Tv+pcE7/p25N/6ZtTP+lbUz+o21M8aVtTMQAAAAAAAAAAL9/VN7/////////////////////////////
+ //////////////////////////////////+lbUztAAAAAAAAAADBgVf+/////65mK/+sYyr/rGMq////
+ //9Vqlz/UKVW/0ugUf9Gm0v/Q5dI/z+TRP//////pm5N/gAAAAAAAAAAw4VZ//////+uZiv/zZ5z/6xj
+ Kv//////Sp5P/2/Jev9vyXr/bsh5/23Hd/89kkL//////6dwTv8AAAAAAAAAAMSFWv//////rmYr/82f
+ dP+sYyr//////02iU/9yynz/ccp8/3DJe/9uyHn/QJRF//////+rcU//AAAAAAAAAADHh1n//////7Nt
+ Mv/QpH3/sWst//////9PpFX/c8t9/3LLfP9xynv/b8l6/0OYSP//////sXVQ/wAAAAAAAAAAyIla////
+ //+2dT//0aWC/7VyN///////UadY/3LLfP9yy3z/ccp7/2/Jev9Gm0z//////7V3Uv8AAAAAAAAAAMqL
+ W///////u35T/7l8S/+5e0n//////0WaS/9Sp1j/UKVW/06jVP9MoVL/SZ5P//////+4e1P/AAAAAAAA
+ AADLjVz+////////////////////////////////////////////////////////////////u31U/wAA
+ AAAAAAAAzI9d+v/////tw5r/7cOa/+3Dmv/tw5r/7cOa/+3Dmv/tw5r/7cOa/+3Dmv/tw5r//////72A
+ Vv8AAAAAAAAAAM2QXvD/////7cOb//TawP/02sD/9NvB//Tbwf/028H/9NvB//Tbwf/028H/7cOa////
+ ///Ag1f+AAAAAAAAAADOkl7Y/////+3Dm//tw5v/7cOb/+3Dmv/tw5r/7cOa/+3Dmv/tw5r/7cOa/+3D
+ mv//////xYtg+AAAAAAAAAAAzpJem///////////////////////////////////////////////////
+ /////////////9apiP8AAAAAAAAAAM6SXnHOkl6QzpJezM6SXv/Nkl7+zZFe/8yPXv/NkWD/zZJi/8uQ
+ YP/LjV7vypFjy9itiv/Xq4r/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//5xBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxBgAGcQYAB
+ nEGAAZxBgAGcQYABnEGAAZxBgAGcQYABnEH//5xB
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.Designer.cs
new file mode 100644
index 000000000..f530920b7
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.Designer.cs
@@ -0,0 +1,414 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class ConnectionsPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectionsPage));
+ this.pnlRdpReconnectionCount = new System.Windows.Forms.Panel();
+ this.lblRdpReconnectionCount = new System.Windows.Forms.Label();
+ this.numRdpReconnectionCount = new System.Windows.Forms.NumericUpDown();
+ this.chkSingleClickOnConnectionOpensIt = new System.Windows.Forms.CheckBox();
+ this.chkHostnameLikeDisplayName = new System.Windows.Forms.CheckBox();
+ this.pnlDefaultCredentials = new System.Windows.Forms.Panel();
+ this.radCredentialsCustom = new System.Windows.Forms.RadioButton();
+ this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged);
+ this.lblDefaultCredentials = new System.Windows.Forms.Label();
+ this.radCredentialsNoInfo = new System.Windows.Forms.RadioButton();
+ this.radCredentialsWindows = new System.Windows.Forms.RadioButton();
+ this.txtCredentialsDomain = new System.Windows.Forms.TextBox();
+ this.lblCredentialsUsername = new System.Windows.Forms.Label();
+ this.txtCredentialsPassword = new System.Windows.Forms.TextBox();
+ this.lblCredentialsPassword = new System.Windows.Forms.Label();
+ this.txtCredentialsUsername = new System.Windows.Forms.TextBox();
+ this.lblCredentialsDomain = new System.Windows.Forms.Label();
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt = new System.Windows.Forms.CheckBox();
+ this.pnlAutoSave = new System.Windows.Forms.Panel();
+ this.lblAutoSave1 = new System.Windows.Forms.Label();
+ this.numAutoSave = new System.Windows.Forms.NumericUpDown();
+ this.lblAutoSave2 = new System.Windows.Forms.Label();
+ this.pnlConfirmCloseConnection = new System.Windows.Forms.Panel();
+ this.lblClosingConnections = new System.Windows.Forms.Label();
+ this.radCloseWarnAll = new System.Windows.Forms.RadioButton();
+ this.radCloseWarnMultiple = new System.Windows.Forms.RadioButton();
+ this.radCloseWarnExit = new System.Windows.Forms.RadioButton();
+ this.radCloseWarnNever = new System.Windows.Forms.RadioButton();
+ this.pnlRdpReconnectionCount.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.numRdpReconnectionCount).BeginInit();
+ this.pnlDefaultCredentials.SuspendLayout();
+ this.pnlAutoSave.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.numAutoSave).BeginInit();
+ this.pnlConfirmCloseConnection.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //pnlRdpReconnectionCount
+ //
+ this.pnlRdpReconnectionCount.Controls.Add(this.lblRdpReconnectionCount);
+ this.pnlRdpReconnectionCount.Controls.Add(this.numRdpReconnectionCount);
+ this.pnlRdpReconnectionCount.Location = new System.Drawing.Point(3, 69);
+ this.pnlRdpReconnectionCount.Name = "pnlRdpReconnectionCount";
+ this.pnlRdpReconnectionCount.Size = new System.Drawing.Size(596, 29);
+ this.pnlRdpReconnectionCount.TabIndex = 10;
+ //
+ //lblRdpReconnectionCount
+ //
+ this.lblRdpReconnectionCount.Location = new System.Drawing.Point(6, 9);
+ this.lblRdpReconnectionCount.Name = "lblRdpReconnectionCount";
+ this.lblRdpReconnectionCount.Size = new System.Drawing.Size(288, 13);
+ this.lblRdpReconnectionCount.TabIndex = 0;
+ this.lblRdpReconnectionCount.Text = "RDP Reconnection Count";
+ this.lblRdpReconnectionCount.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //numRdpReconnectionCount
+ //
+ this.numRdpReconnectionCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.numRdpReconnectionCount.Location = new System.Drawing.Point(300, 7);
+ this.numRdpReconnectionCount.Maximum = new decimal(new int[] {20, 0, 0, 0});
+ this.numRdpReconnectionCount.Name = "numRdpReconnectionCount";
+ this.numRdpReconnectionCount.Size = new System.Drawing.Size(53, 20);
+ this.numRdpReconnectionCount.TabIndex = 1;
+ this.numRdpReconnectionCount.Value = new decimal(new int[] {5, 0, 0, 0});
+ //
+ //chkSingleClickOnConnectionOpensIt
+ //
+ this.chkSingleClickOnConnectionOpensIt.AutoSize = true;
+ this.chkSingleClickOnConnectionOpensIt.Location = new System.Drawing.Point(3, 0);
+ this.chkSingleClickOnConnectionOpensIt.Name = "chkSingleClickOnConnectionOpensIt";
+ this.chkSingleClickOnConnectionOpensIt.Size = new System.Drawing.Size(191, 17);
+ this.chkSingleClickOnConnectionOpensIt.TabIndex = 7;
+ this.chkSingleClickOnConnectionOpensIt.Text = "Single click on connection opens it";
+ this.chkSingleClickOnConnectionOpensIt.UseVisualStyleBackColor = true;
+ //
+ //chkHostnameLikeDisplayName
+ //
+ this.chkHostnameLikeDisplayName.AutoSize = true;
+ this.chkHostnameLikeDisplayName.Location = new System.Drawing.Point(3, 46);
+ this.chkHostnameLikeDisplayName.Name = "chkHostnameLikeDisplayName";
+ this.chkHostnameLikeDisplayName.Size = new System.Drawing.Size(328, 17);
+ this.chkHostnameLikeDisplayName.TabIndex = 9;
+ this.chkHostnameLikeDisplayName.Text = "Set hostname like display name when creating new connections";
+ this.chkHostnameLikeDisplayName.UseVisualStyleBackColor = true;
+ //
+ //pnlDefaultCredentials
+ //
+ this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom);
+ this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials);
+ this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo);
+ this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows);
+ this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain);
+ this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername);
+ this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword);
+ this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword);
+ this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername);
+ this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain);
+ this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 139);
+ this.pnlDefaultCredentials.Name = "pnlDefaultCredentials";
+ this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175);
+ this.pnlDefaultCredentials.TabIndex = 12;
+ //
+ //radCredentialsCustom
+ //
+ this.radCredentialsCustom.AutoSize = true;
+ this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69);
+ this.radCredentialsCustom.Name = "radCredentialsCustom";
+ this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17);
+ this.radCredentialsCustom.TabIndex = 3;
+ this.radCredentialsCustom.Text = "the following:";
+ this.radCredentialsCustom.UseVisualStyleBackColor = true;
+ //
+ //lblDefaultCredentials
+ //
+ this.lblDefaultCredentials.AutoSize = true;
+ this.lblDefaultCredentials.Location = new System.Drawing.Point(3, 9);
+ this.lblDefaultCredentials.Name = "lblDefaultCredentials";
+ this.lblDefaultCredentials.Size = new System.Drawing.Size(257, 13);
+ this.lblDefaultCredentials.TabIndex = 0;
+ this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:";
+ //
+ //radCredentialsNoInfo
+ //
+ this.radCredentialsNoInfo.AutoSize = true;
+ this.radCredentialsNoInfo.Checked = true;
+ this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31);
+ this.radCredentialsNoInfo.Name = "radCredentialsNoInfo";
+ this.radCredentialsNoInfo.Size = new System.Drawing.Size(91, 17);
+ this.radCredentialsNoInfo.TabIndex = 1;
+ this.radCredentialsNoInfo.TabStop = true;
+ this.radCredentialsNoInfo.Text = "no information";
+ this.radCredentialsNoInfo.UseVisualStyleBackColor = true;
+ //
+ //radCredentialsWindows
+ //
+ this.radCredentialsWindows.AutoSize = true;
+ this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50);
+ this.radCredentialsWindows.Name = "radCredentialsWindows";
+ this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17);
+ this.radCredentialsWindows.TabIndex = 2;
+ this.radCredentialsWindows.Text = "my current credentials (windows logon info)";
+ this.radCredentialsWindows.UseVisualStyleBackColor = true;
+ //
+ //txtCredentialsDomain
+ //
+ this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtCredentialsDomain.Enabled = false;
+ this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147);
+ this.txtCredentialsDomain.Name = "txtCredentialsDomain";
+ this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20);
+ this.txtCredentialsDomain.TabIndex = 9;
+ //
+ //lblCredentialsUsername
+ //
+ this.lblCredentialsUsername.Enabled = false;
+ this.lblCredentialsUsername.Location = new System.Drawing.Point(37, 95);
+ this.lblCredentialsUsername.Name = "lblCredentialsUsername";
+ this.lblCredentialsUsername.Size = new System.Drawing.Size(97, 13);
+ this.lblCredentialsUsername.TabIndex = 4;
+ this.lblCredentialsUsername.Text = "Username:";
+ this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtCredentialsPassword
+ //
+ this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtCredentialsPassword.Enabled = false;
+ this.txtCredentialsPassword.Location = new System.Drawing.Point(140, 120);
+ this.txtCredentialsPassword.Name = "txtCredentialsPassword";
+ this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 20);
+ this.txtCredentialsPassword.TabIndex = 7;
+ this.txtCredentialsPassword.UseSystemPasswordChar = true;
+ //
+ //lblCredentialsPassword
+ //
+ this.lblCredentialsPassword.Enabled = false;
+ this.lblCredentialsPassword.Location = new System.Drawing.Point(34, 123);
+ this.lblCredentialsPassword.Name = "lblCredentialsPassword";
+ this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13);
+ this.lblCredentialsPassword.TabIndex = 6;
+ this.lblCredentialsPassword.Text = "Password:";
+ this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtCredentialsUsername
+ //
+ this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtCredentialsUsername.Enabled = false;
+ this.txtCredentialsUsername.Location = new System.Drawing.Point(140, 93);
+ this.txtCredentialsUsername.Name = "txtCredentialsUsername";
+ this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 20);
+ this.txtCredentialsUsername.TabIndex = 5;
+ //
+ //lblCredentialsDomain
+ //
+ this.lblCredentialsDomain.Enabled = false;
+ this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150);
+ this.lblCredentialsDomain.Name = "lblCredentialsDomain";
+ this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13);
+ this.lblCredentialsDomain.TabIndex = 8;
+ this.lblCredentialsDomain.Text = "Domain:";
+ this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //chkSingleClickOnOpenedConnectionSwitchesToIt
+ //
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.AutoSize = true;
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.Location = new System.Drawing.Point(3, 23);
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.Name = "chkSingleClickOnOpenedConnectionSwitchesToIt";
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = new System.Drawing.Size(254, 17);
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.TabIndex = 8;
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.Text = "Single click on opened connection switches to it";
+ this.chkSingleClickOnOpenedConnectionSwitchesToIt.UseVisualStyleBackColor = true;
+ //
+ //pnlAutoSave
+ //
+ this.pnlAutoSave.Controls.Add(this.lblAutoSave1);
+ this.pnlAutoSave.Controls.Add(this.numAutoSave);
+ this.pnlAutoSave.Controls.Add(this.lblAutoSave2);
+ this.pnlAutoSave.Location = new System.Drawing.Point(3, 104);
+ this.pnlAutoSave.Name = "pnlAutoSave";
+ this.pnlAutoSave.Size = new System.Drawing.Size(596, 29);
+ this.pnlAutoSave.TabIndex = 11;
+ //
+ //lblAutoSave1
+ //
+ this.lblAutoSave1.Location = new System.Drawing.Point(6, 9);
+ this.lblAutoSave1.Name = "lblAutoSave1";
+ this.lblAutoSave1.Size = new System.Drawing.Size(288, 13);
+ this.lblAutoSave1.TabIndex = 0;
+ this.lblAutoSave1.Text = "Auto Save every:";
+ this.lblAutoSave1.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //numAutoSave
+ //
+ this.numAutoSave.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.numAutoSave.Location = new System.Drawing.Point(300, 7);
+ this.numAutoSave.Maximum = new decimal(new int[] {9999, 0, 0, 0});
+ this.numAutoSave.Name = "numAutoSave";
+ this.numAutoSave.Size = new System.Drawing.Size(53, 20);
+ this.numAutoSave.TabIndex = 1;
+ //
+ //lblAutoSave2
+ //
+ this.lblAutoSave2.AutoSize = true;
+ this.lblAutoSave2.Location = new System.Drawing.Point(359, 9);
+ this.lblAutoSave2.Name = "lblAutoSave2";
+ this.lblAutoSave2.Size = new System.Drawing.Size(135, 13);
+ this.lblAutoSave2.TabIndex = 2;
+ this.lblAutoSave2.Text = "Minutes (0 means disabled)";
+ //
+ //pnlConfirmCloseConnection
+ //
+ this.pnlConfirmCloseConnection.Controls.Add(this.lblClosingConnections);
+ this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnAll);
+ this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnMultiple);
+ this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnExit);
+ this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnNever);
+ this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 320);
+ this.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection";
+ this.pnlConfirmCloseConnection.Size = new System.Drawing.Size(596, 137);
+ this.pnlConfirmCloseConnection.TabIndex = 13;
+ //
+ //lblClosingConnections
+ //
+ this.lblClosingConnections.AutoSize = true;
+ this.lblClosingConnections.Location = new System.Drawing.Point(3, 9);
+ this.lblClosingConnections.Name = "lblClosingConnections";
+ this.lblClosingConnections.Size = new System.Drawing.Size(136, 13);
+ this.lblClosingConnections.TabIndex = 0;
+ this.lblClosingConnections.Text = "When closing connections:";
+ //
+ //radCloseWarnAll
+ //
+ this.radCloseWarnAll.AutoSize = true;
+ this.radCloseWarnAll.Location = new System.Drawing.Point(16, 31);
+ this.radCloseWarnAll.Name = "radCloseWarnAll";
+ this.radCloseWarnAll.Size = new System.Drawing.Size(194, 17);
+ this.radCloseWarnAll.TabIndex = 1;
+ this.radCloseWarnAll.TabStop = true;
+ this.radCloseWarnAll.Text = "Warn me when closing connections";
+ this.radCloseWarnAll.UseVisualStyleBackColor = true;
+ //
+ //radCloseWarnMultiple
+ //
+ this.radCloseWarnMultiple.AutoSize = true;
+ this.radCloseWarnMultiple.Location = new System.Drawing.Point(16, 54);
+ this.radCloseWarnMultiple.Name = "radCloseWarnMultiple";
+ this.radCloseWarnMultiple.Size = new System.Drawing.Size(254, 17);
+ this.radCloseWarnMultiple.TabIndex = 2;
+ this.radCloseWarnMultiple.TabStop = true;
+ this.radCloseWarnMultiple.Text = "Warn me only when closing multiple connections";
+ this.radCloseWarnMultiple.UseVisualStyleBackColor = true;
+ //
+ //radCloseWarnExit
+ //
+ this.radCloseWarnExit.AutoSize = true;
+ this.radCloseWarnExit.Location = new System.Drawing.Point(16, 77);
+ this.radCloseWarnExit.Name = "radCloseWarnExit";
+ this.radCloseWarnExit.Size = new System.Drawing.Size(216, 17);
+ this.radCloseWarnExit.TabIndex = 3;
+ this.radCloseWarnExit.TabStop = true;
+ this.radCloseWarnExit.Text = "Warn me only when exiting mRemoteNG";
+ this.radCloseWarnExit.UseVisualStyleBackColor = true;
+ //
+ //radCloseWarnNever
+ //
+ this.radCloseWarnNever.AutoSize = true;
+ this.radCloseWarnNever.Location = new System.Drawing.Point(16, 100);
+ this.radCloseWarnNever.Name = "radCloseWarnNever";
+ this.radCloseWarnNever.Size = new System.Drawing.Size(226, 17);
+ this.radCloseWarnNever.TabIndex = 4;
+ this.radCloseWarnNever.TabStop = true;
+ this.radCloseWarnNever.Text = "Do not warn me when closing connections";
+ this.radCloseWarnNever.UseVisualStyleBackColor = true;
+ //
+ //ConnectionsPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.pnlRdpReconnectionCount);
+ this.Controls.Add(this.chkSingleClickOnConnectionOpensIt);
+ this.Controls.Add(this.chkHostnameLikeDisplayName);
+ this.Controls.Add(this.pnlDefaultCredentials);
+ this.Controls.Add(this.chkSingleClickOnOpenedConnectionSwitchesToIt);
+ this.Controls.Add(this.pnlAutoSave);
+ this.Controls.Add(this.pnlConfirmCloseConnection);
+ this.Name = "ConnectionsPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.pnlRdpReconnectionCount.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize) this.numRdpReconnectionCount).EndInit();
+ this.pnlDefaultCredentials.ResumeLayout(false);
+ this.pnlDefaultCredentials.PerformLayout();
+ this.pnlAutoSave.ResumeLayout(false);
+ this.pnlAutoSave.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.numAutoSave).EndInit();
+ this.pnlConfirmCloseConnection.ResumeLayout(false);
+ this.pnlConfirmCloseConnection.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.Panel pnlRdpReconnectionCount;
+ internal System.Windows.Forms.Label lblRdpReconnectionCount;
+ internal System.Windows.Forms.NumericUpDown numRdpReconnectionCount;
+ internal System.Windows.Forms.CheckBox chkSingleClickOnConnectionOpensIt;
+ internal System.Windows.Forms.CheckBox chkHostnameLikeDisplayName;
+ internal System.Windows.Forms.Panel pnlDefaultCredentials;
+ internal System.Windows.Forms.RadioButton radCredentialsCustom;
+ internal System.Windows.Forms.Label lblDefaultCredentials;
+ internal System.Windows.Forms.RadioButton radCredentialsNoInfo;
+ internal System.Windows.Forms.RadioButton radCredentialsWindows;
+ internal System.Windows.Forms.TextBox txtCredentialsDomain;
+ internal System.Windows.Forms.Label lblCredentialsUsername;
+ internal System.Windows.Forms.TextBox txtCredentialsPassword;
+ internal System.Windows.Forms.Label lblCredentialsPassword;
+ internal System.Windows.Forms.TextBox txtCredentialsUsername;
+ internal System.Windows.Forms.Label lblCredentialsDomain;
+ internal System.Windows.Forms.CheckBox chkSingleClickOnOpenedConnectionSwitchesToIt;
+ internal System.Windows.Forms.Panel pnlAutoSave;
+ internal System.Windows.Forms.Label lblAutoSave1;
+ internal System.Windows.Forms.NumericUpDown numAutoSave;
+ internal System.Windows.Forms.Label lblAutoSave2;
+ internal System.Windows.Forms.Panel pnlConfirmCloseConnection;
+ internal System.Windows.Forms.Label lblClosingConnections;
+ internal System.Windows.Forms.RadioButton radCloseWarnAll;
+ internal System.Windows.Forms.RadioButton radCloseWarnMultiple;
+ internal System.Windows.Forms.RadioButton radCloseWarnExit;
+ internal System.Windows.Forms.RadioButton radCloseWarnNever;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.cs b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.cs
new file mode 100644
index 000000000..8f1533a62
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.cs
@@ -0,0 +1,182 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+using mRemoteNG.Config;
+//using mRemoteNG.App.Info;
+using mRemoteNG.Security;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class ConnectionsPage
+ {
+ public ConnectionsPage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strConnections;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ chkSingleClickOnConnectionOpensIt.Text = Language.strSingleClickOnConnectionOpensIt;
+ chkSingleClickOnOpenedConnectionSwitchesToIt.Text = Language.strSingleClickOnOpenConnectionSwitchesToIt;
+ chkHostnameLikeDisplayName.Text = Language.strSetHostnameLikeDisplayName;
+
+ lblRdpReconnectionCount.Text = Language.strRdpReconnectCount;
+
+ lblAutoSave1.Text = Language.strAutoSaveEvery;
+ lblAutoSave2.Text = Language.strAutoSaveMins;
+
+ lblDefaultCredentials.Text = Language.strEmptyUsernamePasswordDomainFields;
+ radCredentialsNoInfo.Text = Language.strNoInformation;
+ radCredentialsWindows.Text = Language.strMyCurrentWindowsCreds;
+ radCredentialsCustom.Text = Language.strTheFollowing;
+ lblCredentialsUsername.Text = Language.strLabelUsername;
+ lblCredentialsPassword.Text = Language.strLabelPassword;
+ lblCredentialsDomain.Text = Language.strLabelDomain;
+
+ lblClosingConnections.Text = Language.strLabelClosingConnections;
+ radCloseWarnAll.Text = Language.strRadioCloseWarnAll;
+ radCloseWarnMultiple.Text = Language.strRadioCloseWarnMultiple;
+ radCloseWarnExit.Text = Language.strRadioCloseWarnExit;
+ radCloseWarnNever.Text = Language.strRadioCloseWarnNever;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ chkSingleClickOnConnectionOpensIt.Checked = System.Convert.ToBoolean(My.Settings.Default.SingleClickOnConnectionOpensIt);
+ chkSingleClickOnOpenedConnectionSwitchesToIt.Checked = System.Convert.ToBoolean(My.Settings.Default.SingleClickSwitchesToOpenConnection);
+ chkHostnameLikeDisplayName.Checked = System.Convert.ToBoolean(My.Settings.Default.SetHostnameLikeDisplayName);
+
+ numRdpReconnectionCount.Value = System.Convert.ToDecimal(My.Settings.Default.RdpReconnectionCount);
+
+ numAutoSave.Value = System.Convert.ToDecimal(My.Settings.Default.AutoSaveEveryMinutes);
+
+ // ReSharper disable once StringLiteralTypo
+ if ((string) My.Settings.Default.EmptyCredentials == "noinfo")
+ {
+ radCredentialsNoInfo.Checked = true;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "windows")
+ {
+ radCredentialsWindows.Checked = true;
+ }
+ else if ((string) My.Settings.Default.EmptyCredentials == "custom")
+ {
+ radCredentialsCustom.Checked = true;
+ }
+
+ txtCredentialsUsername.Text = System.Convert.ToString(My.Settings.Default.DefaultUsername);
+ txtCredentialsPassword.Text = Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.DefaultPassword), App.Info.General.EncryptionKey);
+ txtCredentialsDomain.Text = System.Convert.ToString(My.Settings.Default.DefaultDomain);
+
+ if (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Never)
+ {
+ radCloseWarnNever.Checked = true;
+ }
+ else if (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Exit)
+ {
+ radCloseWarnExit.Checked = true;
+ }
+ else if (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Multiple)
+ {
+ radCloseWarnMultiple.Checked = true;
+ }
+ else
+ {
+ radCloseWarnAll.Checked = true;
+ }
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ My.Settings.Default.SingleClickOnConnectionOpensIt = chkSingleClickOnConnectionOpensIt.Checked;
+ My.Settings.Default.SingleClickSwitchesToOpenConnection = chkSingleClickOnOpenedConnectionSwitchesToIt.Checked;
+ My.Settings.Default.SetHostnameLikeDisplayName = chkHostnameLikeDisplayName.Checked;
+
+ My.Settings.Default.RdpReconnectionCount = numRdpReconnectionCount.Value;
+
+ My.Settings.Default.AutoSaveEveryMinutes = numAutoSave.Value;
+ if (My.Settings.Default.AutoSaveEveryMinutes > 0)
+ {
+ frmMain.Default.tmrAutoSave.Interval = System.Convert.ToInt32(My.Settings.Default.AutoSaveEveryMinutes * 60000);
+ frmMain.Default.tmrAutoSave.Enabled = true;
+ }
+ else
+ {
+ frmMain.Default.tmrAutoSave.Enabled = false;
+ }
+
+ if (radCredentialsNoInfo.Checked)
+ {
+ // ReSharper disable once StringLiteralTypo
+ My.Settings.Default.EmptyCredentials = "noinfo";
+ }
+ else if (radCredentialsWindows.Checked)
+ {
+ My.Settings.Default.EmptyCredentials = "windows";
+ }
+ else if (radCredentialsCustom.Checked)
+ {
+ My.Settings.Default.EmptyCredentials = "custom";
+ }
+
+ My.Settings.Default.DefaultUsername = txtCredentialsUsername.Text;
+ My.Settings.Default.DefaultPassword = Crypt.Encrypt(txtCredentialsPassword.Text, App.Info.General.EncryptionKey);
+ My.Settings.Default.DefaultDomain = txtCredentialsDomain.Text;
+
+ if (radCloseWarnAll.Checked)
+ {
+ My.Settings.Default.ConfirmCloseConnection = ConfirmClose.All;
+ }
+ if (radCloseWarnMultiple.Checked)
+ {
+ My.Settings.Default.ConfirmCloseConnection = ConfirmClose.Multiple;
+ }
+ if (radCloseWarnExit.Checked)
+ {
+ My.Settings.Default.ConfirmCloseConnection = ConfirmClose.Exit;
+ }
+ if (radCloseWarnNever.Checked)
+ {
+ My.Settings.Default.ConfirmCloseConnection = ConfirmClose.Never;
+ }
+ }
+
+ public void radCredentialsCustom_CheckedChanged(object sender, EventArgs e)
+ {
+ lblCredentialsUsername.Enabled = radCredentialsCustom.Checked;
+ lblCredentialsPassword.Enabled = radCredentialsCustom.Checked;
+ lblCredentialsDomain.Enabled = radCredentialsCustom.Checked;
+ txtCredentialsUsername.Enabled = radCredentialsCustom.Checked;
+ txtCredentialsPassword.Enabled = radCredentialsCustom.Checked;
+ txtCredentialsDomain.Enabled = radCredentialsCustom.Checked;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.resx b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.resx
new file mode 100644
index 000000000..750beaa82
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ConnectionsPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADVYQEFyk4AFcdXAC3JWAA/xVIAScNPAUi+TAA9v0sAK75KABTQTwAEAAAAAAAA
+ AAAAAAAAAAAAAAAAAADGXQAHv1YALMhbAGrAVgCjrUsAxKRHBNOoRgjTqUcEw7RKAKHBUgBmwV4AKM9X
+ AAYAAAAAAAAAAAAAAADCWgABuEcAGLFEAGuCOQHXejoP/KxNJP/hbUH/5H9V/9NrOf+jSxb9o00H2r9X
+ AGrKZAAUAAAAAAAAAAAAAAAAAAAAAKc/BSZPIwHSPScX/4pcRP/Khmb/9ryc//nMt//joHj/sXdd/3lT
+ NP+GRQjdv1sAKAAAAAAAAAAAAAAAAAAAAABvRSSlVDkh/3lkT/+PdmH/rIhr/8KjiP/BpY7/s5iB/5F2
+ YP90W0b/YzwZ/4U+ALEAAAAAAAAAAAAAAACqZztfdVU6/8Oxov+2nIP/pnlM/6h3Sf/DpIf/2Maw/72p
+ i/9/Xz//XDwd/1IuDP9ZMgr/eTYAUwAAAACuXisxYjYYsWc7Fv+qhV//snIw/61PAP+6bCT/6tW///38
+ +v/Wvqb/kF8s/2IwAP9jQB//XDwe/1QsBMVUKAAnYiQAR1YhAexiMAb/mU8G/7hnE//CYwL/yXUj/+a/
+ lP/s1Lb/zZxi/6hsLP+ZbUH/o4xy/39mT/9aNhT3UigCVX0vAV9qLgP9dDsG/65ZBf/AYQX/55ZG/+iy
+ ev/ksXr/0ok5/71mBv+oVAD/uI1d/9TDsv+YhG7/Wz0f/0olBmqWQARafTwH+oNGDP/LcBv/5Ys9//62
+ cv//48L/9LyF/9Z3Kf/FbhL/umMH/693Of+uiF3/lHZd/1w+Iv9CIwVms1oVOZFJEN6OThn/7J5T//6/
+ hf//zKH//9+7//7Cf//ijkn/04Q6/8p5LP+1cCr/l2En/4FeOf9YOx/sPyEESMlsHwypUxSOwG4t//+8
+ f//6zqf/+Nu+///ixv//vob/9Kx1/+zCmv/itYv/uHUz/51kLP+IZED/QSMHpTcZABUAAAAAx1wUGu5v
+ JPHYnnL/59PA//z17v//+Ov//+XC//a5gv/y0rj/7tK2/8KGTv+ndkf/bUYj+jcaACkAAAAAAAAAAAAA
+ AADrZRdXqWI0/8q4qP////////78///24v/7xaD/5LmV/9usff/Djlz/k2Q4/0wkAWoAAAAAAAAAAAAA
+ AAAAAAAAAAAAAOqsdVG0e1Hs0LKV/+zg2f/m1cT/07CU/9Omd//Lj1X/omUt8mUwBGAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA/u/cF8aBSHqyayrFp2815aBnLeahXhvJpVkKg4A8Ah0AAAAAAAAAAAAA
+ AAAAAAAA4AcAAMADAACAAwAAwAMAAMADAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMAD
+ AADgBwAA8A8AAA==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.Designer.cs
new file mode 100644
index 000000000..c34ff8c23
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.Designer.cs
@@ -0,0 +1,216 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class KeyboardPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.Windows.Forms.GroupBox LineGroupBox = default(System.Windows.Forms.GroupBox);
+ mRemoteNG.Controls.Alignment Alignment1 = new mRemoteNG.Controls.Alignment();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(KeyboardPage));
+ this.btnDeleteKeyboardShortcut = new System.Windows.Forms.Button();
+ this.btnDeleteKeyboardShortcut.Click += new System.EventHandler(this.btnDeleteKeyboardShortcut_Click);
+ this.btnNewKeyboardShortcut = new System.Windows.Forms.Button();
+ this.btnNewKeyboardShortcut.Click += new System.EventHandler(this.btnNewKeyboardShortcut_Click);
+ this.grpModifyKeyboardShortcut = new System.Windows.Forms.GroupBox();
+ this.hotModifyKeyboardShortcut = new SharedLibraryNG.HotkeyControl();
+ this.hotModifyKeyboardShortcut.TextChanged += new System.EventHandler(this.hotModifyKeyboardShortcut_TextChanged);
+ this.btnResetAllKeyboardShortcuts = new System.Windows.Forms.Button();
+ this.btnResetAllKeyboardShortcuts.Click += new System.EventHandler(this.btnResetAllKeyboardShortcuts_Click);
+ this.btnResetKeyboardShortcuts = new System.Windows.Forms.Button();
+ this.btnResetKeyboardShortcuts.Click += new System.EventHandler(this.btnResetKeyboardShortcuts_Click);
+ this.lblKeyboardCommand = new System.Windows.Forms.Label();
+ this.lstKeyboardShortcuts = new System.Windows.Forms.ListBox();
+ this.lstKeyboardShortcuts.SelectedIndexChanged += new System.EventHandler(this.lstKeyboardShortcuts_SelectedIndexChanged);
+ this.lblKeyboardShortcuts = new System.Windows.Forms.Label();
+ this.lvKeyboardCommands = new mRemoteNG.Controls.ListView();
+ this.lvKeyboardCommands.SelectedIndexChanged += new System.EventHandler(this.lvKeyboardCommands_SelectedIndexChanged);
+ LineGroupBox = new System.Windows.Forms.GroupBox();
+ this.grpModifyKeyboardShortcut.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //LineGroupBox
+ //
+ LineGroupBox.Location = new System.Drawing.Point(212, 20);
+ LineGroupBox.Name = "LineGroupBox";
+ LineGroupBox.Size = new System.Drawing.Size(398, 3);
+ LineGroupBox.TabIndex = 19;
+ LineGroupBox.TabStop = false;
+ //
+ //btnDeleteKeyboardShortcut
+ //
+ this.btnDeleteKeyboardShortcut.Location = new System.Drawing.Point(293, 151);
+ this.btnDeleteKeyboardShortcut.Name = "btnDeleteKeyboardShortcut";
+ this.btnDeleteKeyboardShortcut.Size = new System.Drawing.Size(75, 23);
+ this.btnDeleteKeyboardShortcut.TabIndex = 15;
+ this.btnDeleteKeyboardShortcut.Text = "&Delete";
+ this.btnDeleteKeyboardShortcut.UseVisualStyleBackColor = true;
+ //
+ //btnNewKeyboardShortcut
+ //
+ this.btnNewKeyboardShortcut.Location = new System.Drawing.Point(212, 151);
+ this.btnNewKeyboardShortcut.Name = "btnNewKeyboardShortcut";
+ this.btnNewKeyboardShortcut.Size = new System.Drawing.Size(75, 23);
+ this.btnNewKeyboardShortcut.TabIndex = 14;
+ this.btnNewKeyboardShortcut.Text = "&New";
+ this.btnNewKeyboardShortcut.UseVisualStyleBackColor = true;
+ //
+ //grpModifyKeyboardShortcut
+ //
+ this.grpModifyKeyboardShortcut.Controls.Add(this.hotModifyKeyboardShortcut);
+ this.grpModifyKeyboardShortcut.Location = new System.Drawing.Point(212, 180);
+ this.grpModifyKeyboardShortcut.Name = "grpModifyKeyboardShortcut";
+ this.grpModifyKeyboardShortcut.Size = new System.Drawing.Size(398, 103);
+ this.grpModifyKeyboardShortcut.TabIndex = 17;
+ this.grpModifyKeyboardShortcut.TabStop = false;
+ this.grpModifyKeyboardShortcut.Text = "Modify Shortcut";
+ //
+ //hotModifyKeyboardShortcut
+ //
+ this.hotModifyKeyboardShortcut.HotkeyModifiers = System.Windows.Forms.Keys.None;
+ this.hotModifyKeyboardShortcut.KeyCode = System.Windows.Forms.Keys.None;
+ this.hotModifyKeyboardShortcut.Location = new System.Drawing.Point(27, 41);
+ this.hotModifyKeyboardShortcut.Name = "hotModifyKeyboardShortcut";
+ this.hotModifyKeyboardShortcut.Size = new System.Drawing.Size(344, 20);
+ this.hotModifyKeyboardShortcut.TabIndex = 0;
+ this.hotModifyKeyboardShortcut.Text = "None";
+ //
+ //btnResetAllKeyboardShortcuts
+ //
+ this.btnResetAllKeyboardShortcuts.Location = new System.Drawing.Point(3, 466);
+ this.btnResetAllKeyboardShortcuts.Name = "btnResetAllKeyboardShortcuts";
+ this.btnResetAllKeyboardShortcuts.Size = new System.Drawing.Size(120, 23);
+ this.btnResetAllKeyboardShortcuts.TabIndex = 18;
+ this.btnResetAllKeyboardShortcuts.Text = "Reset &All to Default";
+ this.btnResetAllKeyboardShortcuts.UseVisualStyleBackColor = true;
+ //
+ //btnResetKeyboardShortcuts
+ //
+ this.btnResetKeyboardShortcuts.Location = new System.Drawing.Point(490, 151);
+ this.btnResetKeyboardShortcuts.Name = "btnResetKeyboardShortcuts";
+ this.btnResetKeyboardShortcuts.Size = new System.Drawing.Size(120, 23);
+ this.btnResetKeyboardShortcuts.TabIndex = 16;
+ this.btnResetKeyboardShortcuts.Text = "&Reset to Default";
+ this.btnResetKeyboardShortcuts.UseVisualStyleBackColor = true;
+ //
+ //lblKeyboardCommand
+ //
+ this.lblKeyboardCommand.AutoSize = true;
+ this.lblKeyboardCommand.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (10.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblKeyboardCommand.Location = new System.Drawing.Point(209, 0);
+ this.lblKeyboardCommand.Name = "lblKeyboardCommand";
+ this.lblKeyboardCommand.Size = new System.Drawing.Size(71, 17);
+ this.lblKeyboardCommand.TabIndex = 11;
+ this.lblKeyboardCommand.Text = "Command";
+ //
+ //lstKeyboardShortcuts
+ //
+ this.lstKeyboardShortcuts.FormattingEnabled = true;
+ this.lstKeyboardShortcuts.Location = new System.Drawing.Point(212, 50);
+ this.lstKeyboardShortcuts.Name = "lstKeyboardShortcuts";
+ this.lstKeyboardShortcuts.Size = new System.Drawing.Size(398, 95);
+ this.lstKeyboardShortcuts.TabIndex = 13;
+ //
+ //lblKeyboardShortcuts
+ //
+ this.lblKeyboardShortcuts.AutoSize = true;
+ this.lblKeyboardShortcuts.Location = new System.Drawing.Point(209, 34);
+ this.lblKeyboardShortcuts.Name = "lblKeyboardShortcuts";
+ this.lblKeyboardShortcuts.Size = new System.Drawing.Size(100, 13);
+ this.lblKeyboardShortcuts.TabIndex = 12;
+ this.lblKeyboardShortcuts.Text = "Keyboard Shortcuts";
+ //
+ //lvKeyboardCommands
+ //
+ this.lvKeyboardCommands.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+ this.lvKeyboardCommands.HideSelection = false;
+ this.lvKeyboardCommands.InactiveHighlightBackColor = System.Drawing.SystemColors.Highlight;
+ this.lvKeyboardCommands.InactiveHighlightBorderColor = System.Drawing.SystemColors.HotTrack;
+ this.lvKeyboardCommands.InactiveHighlightForeColor = System.Drawing.SystemColors.HighlightText;
+ Alignment1.Horizontal = mRemoteNG.Controls.HorizontalAlignment.Left;
+ Alignment1.Vertical = mRemoteNG.Controls.VerticalAlignment.Middle;
+ this.lvKeyboardCommands.LabelAlignment = Alignment1;
+ this.lvKeyboardCommands.LabelWrap = false;
+ this.lvKeyboardCommands.Location = new System.Drawing.Point(3, 0);
+ this.lvKeyboardCommands.MultiSelect = false;
+ this.lvKeyboardCommands.Name = "lvKeyboardCommands";
+ this.lvKeyboardCommands.OwnerDraw = true;
+ this.lvKeyboardCommands.Size = new System.Drawing.Size(200, 460);
+ this.lvKeyboardCommands.TabIndex = 10;
+ this.lvKeyboardCommands.TileSize = new System.Drawing.Size(196, 20);
+ this.lvKeyboardCommands.UseCompatibleStateImageBehavior = false;
+ this.lvKeyboardCommands.View = System.Windows.Forms.View.Tile;
+ //
+ //KeyboardPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(LineGroupBox);
+ this.Controls.Add(this.btnDeleteKeyboardShortcut);
+ this.Controls.Add(this.btnNewKeyboardShortcut);
+ this.Controls.Add(this.grpModifyKeyboardShortcut);
+ this.Controls.Add(this.btnResetAllKeyboardShortcuts);
+ this.Controls.Add(this.btnResetKeyboardShortcuts);
+ this.Controls.Add(this.lblKeyboardCommand);
+ this.Controls.Add(this.lstKeyboardShortcuts);
+ this.Controls.Add(this.lblKeyboardShortcuts);
+ this.Controls.Add(this.lvKeyboardCommands);
+ this.Name = "KeyboardPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.grpModifyKeyboardShortcut.ResumeLayout(false);
+ this.grpModifyKeyboardShortcut.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.Button btnDeleteKeyboardShortcut;
+ internal System.Windows.Forms.Button btnNewKeyboardShortcut;
+ internal System.Windows.Forms.GroupBox grpModifyKeyboardShortcut;
+ internal SharedLibraryNG.HotkeyControl hotModifyKeyboardShortcut;
+ internal System.Windows.Forms.Button btnResetAllKeyboardShortcuts;
+ internal System.Windows.Forms.Button btnResetKeyboardShortcuts;
+ internal System.Windows.Forms.Label lblKeyboardCommand;
+ internal System.Windows.Forms.ListBox lstKeyboardShortcuts;
+ internal System.Windows.Forms.Label lblKeyboardShortcuts;
+ internal mRemoteNG.Controls.ListView lvKeyboardCommands;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.cs b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.cs
new file mode 100644
index 000000000..4c7fb5d2e
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.cs
@@ -0,0 +1,266 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.Config;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class KeyboardPage
+ {
+ public KeyboardPage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strOptionsTabKeyboard;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ lblKeyboardShortcuts.Text = Language.strOptionsKeyboardLabelKeyboardShortcuts;
+ btnNewKeyboardShortcut.Text = Language.strOptionsKeyboardButtonNew;
+ btnDeleteKeyboardShortcut.Text = Language.strOptionsKeyboardButtonDelete;
+ btnResetKeyboardShortcuts.Text = Language.strOptionsKeyboardButtonReset;
+ grpModifyKeyboardShortcut.Text = Language.strOptionsKeyboardGroupModifyShortcut;
+ btnResetAllKeyboardShortcuts.Text = Language.strOptionsKeyboardButtonResetAll;
+ }
+
+ public override void LoadSettings()
+ {
+ _tabsListViewGroup = new ListViewGroup(Language.strOptionsKeyboardCommandsGroupTabs);
+ _previousTabListViewItem = new ListViewItem(Language.strOptionsKeyboardCommandsPreviousTab, _tabsListViewGroup);
+ _nextTabListViewItem = new ListViewItem(Language.strOptionsKeyboardCommandsNextTab, _tabsListViewGroup);
+
+ _keyboardShortcutMap = KeyboardShortcuts.Map.Clone();
+
+ lvKeyboardCommands.Groups.Add(_tabsListViewGroup);
+ lvKeyboardCommands.Items.Add(_previousTabListViewItem);
+ lvKeyboardCommands.Items.Add(_nextTabListViewItem);
+ _previousTabListViewItem.Selected = true;
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ if (_keyboardShortcutMap != null)
+ {
+ KeyboardShortcuts.Map = _keyboardShortcutMap;
+ }
+ }
+
+#region Private Fields
+ private KeyboardShortcutMap _keyboardShortcutMap;
+ private ListViewGroup _tabsListViewGroup;
+ private ListViewItem _previousTabListViewItem;
+ private ListViewItem _nextTabListViewItem;
+ private bool _ignoreKeyboardShortcutTextChanged = false;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void lvKeyboardCommands_SelectedIndexChanged(System.Object sender, EventArgs e)
+ {
+ bool isItemSelected = lvKeyboardCommands.SelectedItems.Count == 1;
+ EnableKeyboardShortcutControls(isItemSelected);
+
+ if (!isItemSelected)
+ {
+ return ;
+ }
+
+ ListViewItem selectedItem = lvKeyboardCommands.SelectedItems[0];
+
+ lblKeyboardCommand.Text = selectedItem.Text;
+ lstKeyboardShortcuts.Items.Clear();
+
+ lstKeyboardShortcuts.Items.AddRange(_keyboardShortcutMap.GetShortcutKeys(GetSelectedShortcutCommand()));
+
+ if (lstKeyboardShortcuts.Items.Count > 0)
+ {
+ lstKeyboardShortcuts.SelectedIndex = 0;
+ }
+ }
+
+ public void lstKeyboardShortcuts_SelectedIndexChanged(System.Object sender, EventArgs e)
+ {
+ bool isItemSelected = lstKeyboardShortcuts.SelectedItems.Count == 1;
+
+ btnDeleteKeyboardShortcut.Enabled = isItemSelected;
+ grpModifyKeyboardShortcut.Enabled = isItemSelected;
+ hotModifyKeyboardShortcut.Enabled = isItemSelected;
+
+ if (!isItemSelected)
+ {
+ hotModifyKeyboardShortcut.Text = string.Empty;
+ return ;
+ }
+
+ object selectedItem = lstKeyboardShortcuts.SelectedItems[0];
+ ShortcutKey shortcutKey = selectedItem as ShortcutKey;
+ if (shortcutKey == null)
+ {
+ return ;
+ }
+
+ Keys keysValue = System.Windows.Forms.Keys.A;
+ Keys keyCode = System.Windows.Forms.Keys.A;
+ Keys modifiers = System.Windows.Forms.Keys.A;
+
+ _ignoreKeyboardShortcutTextChanged = true;
+ hotModifyKeyboardShortcut.KeyCode = keyCode;
+ hotModifyKeyboardShortcut.HotkeyModifiers = modifiers;
+ _ignoreKeyboardShortcutTextChanged = false;
+ }
+
+ public void btnNewKeyboardShortcut_Click(System.Object sender, EventArgs e)
+ {
+ foreach (object item in lstKeyboardShortcuts.Items)
+ {
+ ShortcutKey shortcutKey = item as ShortcutKey;
+ if (shortcutKey == null)
+ {
+ continue;
+ }
+ if (shortcutKey == 0)
+ {
+ lstKeyboardShortcuts.SelectedItem = item;
+ return ;
+ }
+ }
+
+ lstKeyboardShortcuts.SelectedIndex = lstKeyboardShortcuts.Items.Add(new ShortcutKey(Keys.None));
+ hotModifyKeyboardShortcut.Focus();
+ }
+
+ public void btnDeleteKeyboardShortcut_Click(System.Object sender, EventArgs e)
+ {
+ int selectedIndex = lstKeyboardShortcuts.SelectedIndex;
+
+ ShortcutCommand command = (ShortcutCommand) (GetSelectedShortcutCommand());
+ ShortcutKey key = lstKeyboardShortcuts.SelectedItem as ShortcutKey;
+ if (!(command == ShortcutCommand.None) & key != null)
+ {
+ _keyboardShortcutMap.Remove(GetSelectedShortcutCommand(), key);
+ }
+
+ lstKeyboardShortcuts.Items.Remove(lstKeyboardShortcuts.SelectedItem);
+
+ if (selectedIndex >= lstKeyboardShortcuts.Items.Count)
+ {
+ selectedIndex = lstKeyboardShortcuts.Items.Count - 1;
+ }
+ lstKeyboardShortcuts.SelectedIndex = selectedIndex;
+ }
+
+ public void btnResetAllKeyboardShortcuts_Click(System.Object sender, EventArgs e)
+ {
+ _keyboardShortcutMap = KeyboardShortcuts.DefaultMap.Clone();
+ lvKeyboardCommands_SelectedIndexChanged(this, new EventArgs());
+ }
+
+ public void btnResetKeyboardShortcuts_Click(System.Object sender, EventArgs e)
+ {
+ ShortcutCommand command = (ShortcutCommand) (GetSelectedShortcutCommand());
+ if (command == ShortcutCommand.None)
+ {
+ return ;
+ }
+ _keyboardShortcutMap.SetShortcutKeys(command, KeyboardShortcuts.DefaultMap.GetShortcutKeys(command));
+ lvKeyboardCommands_SelectedIndexChanged(this, new EventArgs());
+ }
+
+ public void hotModifyKeyboardShortcut_TextChanged(System.Object sender, EventArgs e)
+ {
+ if (_ignoreKeyboardShortcutTextChanged || lstKeyboardShortcuts.SelectedIndex < 0 | lstKeyboardShortcuts.SelectedIndex >= lstKeyboardShortcuts.Items.Count)
+ {
+ return ;
+ }
+
+ Keys keysValue = System.Windows.Forms.Keys.A;
+
+ bool hadFocus = hotModifyKeyboardShortcut.ContainsFocus;
+
+ ShortcutCommand command = (ShortcutCommand) (GetSelectedShortcutCommand());
+ ShortcutKey newShortcutKey = new ShortcutKey(keysValue);
+
+ if (!(command == ShortcutCommand.None))
+ {
+ ShortcutKey oldShortcutKey = lstKeyboardShortcuts.SelectedItem as ShortcutKey;
+ if (oldShortcutKey != null)
+ {
+ _keyboardShortcutMap.Remove(command, oldShortcutKey);
+ }
+ _keyboardShortcutMap.Add(command, newShortcutKey);
+ }
+
+ lstKeyboardShortcuts.Items[lstKeyboardShortcuts.SelectedIndex] = newShortcutKey;
+
+ if (hadFocus)
+ {
+ hotModifyKeyboardShortcut.Focus();
+ hotModifyKeyboardShortcut.Select(hotModifyKeyboardShortcut.TextLength, 0);
+ }
+ }
+#endregion
+
+ private ShortcutCommand GetSelectedShortcutCommand()
+ {
+ if (!(lvKeyboardCommands.SelectedItems.Count == 1))
+ {
+ return ShortcutCommand.None;
+ }
+
+ ListViewItem selectedItem = lvKeyboardCommands.SelectedItems[0];
+ if (selectedItem == _previousTabListViewItem)
+ {
+ return ShortcutCommand.PreviousTab;
+ }
+ else if (selectedItem == _nextTabListViewItem)
+ {
+ return ShortcutCommand.NextTab;
+ }
+ }
+
+ private void EnableKeyboardShortcutControls(bool enable = true)
+ {
+ lblKeyboardCommand.Visible = enable;
+ lblKeyboardShortcuts.Enabled = enable;
+ lstKeyboardShortcuts.Enabled = enable;
+ btnNewKeyboardShortcut.Enabled = enable;
+ btnResetKeyboardShortcuts.Enabled = enable;
+
+ if (!enable)
+ {
+ btnDeleteKeyboardShortcut.Enabled = false;
+ grpModifyKeyboardShortcut.Enabled = false;
+ hotModifyKeyboardShortcut.Enabled = false;
+
+ lstKeyboardShortcuts.Items.Clear();
+ hotModifyKeyboardShortcut.Text = string.Empty;
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.resx b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.resx
new file mode 100644
index 000000000..99082057b
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/KeyboardPage.resx
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AOrFpOvnwJ//47ya/+C3lf/dso//2a6K/9aphf/TpX//0KB7/82cdv/KmXL/yJZu/8aT
+ a//EkGn/xJBo/8SQaOvuy6v/6NXI/+jUxf/n0sP/5dDB/+XOvv/jzLz/48q5/+LJt//hx7X/4MWz/9/E
+ sf/fxLD/3sKv/97Crv/EkGj/8tCx/+rYzP/8/Pz/2rqk//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
+ /P/8/Pz/zKGC//z8/P/fw7D/xZJq//XUtv/s3ND/3sOv/92/q//bvaf/2bqj/9i3n//WtJz/1bGX/9Ou
+ lP/Rq4//0KiM/8+miP/No4X/4MWz/8eVbv/42Lv/7d7U//z8/P/8/Pz/3sKu//z8/P/bvKb//Pz8/9i2
+ nv/8/Pz/1bCX//z8/P/8/Pz//Pz8/+HItv/KmXL/+ty//+7g1v/jy7r/4sm4/+DGtP/fxLH/3sKt/9y/
+ qv/avKb/2bmi/9e2nv/Ws5r/6dbK//z8/P/jy7r/zp13//zewf/v4tj//Pz8/+TMvP/8/Pz/4cm3//z8
+ /P/fw7D//Pz8/9y+qf/8/Pz/2bih//z8/P/38/D/5c6+/9Giff/83sH/7+LY/+/i2P/v4tj/7uHX/+7g
+ 1v/u39T/7d3S/+zc0f/r2s7/6tjM/+rXyv/o1cf/59PF/+fRwv/VqIP//N7B4/zewf+7ubb/s7Gu//rb
+ vv/42Lv/9tW3//PSs//wzq7/7cmq/+rFpP/nwJ//47ya/+C3lf/dso//2a6K4////wD///8AxMTE/by8
+ vLSzs7MQ////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANDQ
+ 0PjJycn4wsLCZ////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wDZ2dln1NTU9s/Pz+/IyMjlwMDA2Le3t8Ourq6TpKSkfZubm26RkZFJh4eHBP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A//+sQf//rEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEHH/6xBx/+sQcAH
+ rEH//6xB//+sQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/OptionsPage.cs b/mRemoteV1/CS/Forms/OptionsPages/OptionsPage.cs
new file mode 100644
index 000000000..35ab0b2cf
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/OptionsPage.cs
@@ -0,0 +1,54 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public class OptionsPage : UserControl
+ {
+ public OptionsPage()
+ {
+ InitializeComponent();
+ }
+
+#region Public Properties
+ [Browsable(false)]public virtual string PageName {get; set;}
+
+ public virtual Icon PageIcon {get; set;}
+#endregion
+
+#region Public Methods
+ public virtual void ApplyLanguage()
+ {
+
+ }
+
+ public virtual void LoadSettings()
+ {
+
+ }
+
+ public virtual void SaveSettings()
+ {
+
+ }
+
+ public virtual void RevertSettings()
+ {
+
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.Designer.cs
new file mode 100644
index 000000000..18513d674
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.Designer.cs
@@ -0,0 +1,210 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class SqlServerPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SqlServerPage));
+ this.lblSQLDatabaseName = new System.Windows.Forms.Label();
+ this.txtSQLDatabaseName = new System.Windows.Forms.TextBox();
+ this.lblExperimental = new System.Windows.Forms.Label();
+ this.chkUseSQLServer = new System.Windows.Forms.CheckBox();
+ this.chkUseSQLServer.CheckedChanged += new System.EventHandler(this.chkUseSQLServer_CheckedChanged);
+ this.lblSQLUsername = new System.Windows.Forms.Label();
+ this.txtSQLPassword = new System.Windows.Forms.TextBox();
+ this.lblSQLInfo = new System.Windows.Forms.Label();
+ this.lblSQLServer = new System.Windows.Forms.Label();
+ this.txtSQLUsername = new System.Windows.Forms.TextBox();
+ this.txtSQLServer = new System.Windows.Forms.TextBox();
+ this.lblSQLPassword = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ //lblSQLDatabaseName
+ //
+ this.lblSQLDatabaseName.Enabled = false;
+ this.lblSQLDatabaseName.Location = new System.Drawing.Point(23, 132);
+ this.lblSQLDatabaseName.Name = "lblSQLDatabaseName";
+ this.lblSQLDatabaseName.Size = new System.Drawing.Size(111, 13);
+ this.lblSQLDatabaseName.TabIndex = 16;
+ this.lblSQLDatabaseName.Text = "Database:";
+ this.lblSQLDatabaseName.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtSQLDatabaseName
+ //
+ this.txtSQLDatabaseName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtSQLDatabaseName.Enabled = false;
+ this.txtSQLDatabaseName.Location = new System.Drawing.Point(140, 130);
+ this.txtSQLDatabaseName.Name = "txtSQLDatabaseName";
+ this.txtSQLDatabaseName.Size = new System.Drawing.Size(153, 20);
+ this.txtSQLDatabaseName.TabIndex = 17;
+ //
+ //lblExperimental
+ //
+ this.lblExperimental.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblExperimental.Font = new System.Drawing.Font("Segoe UI", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World);
+ this.lblExperimental.ForeColor = System.Drawing.Color.FromArgb(System.Convert.ToInt32(System.Convert.ToByte(192)), System.Convert.ToInt32(System.Convert.ToByte(0)), System.Convert.ToInt32(System.Convert.ToByte(0)));
+ this.lblExperimental.Location = new System.Drawing.Point(3, 0);
+ this.lblExperimental.Name = "lblExperimental";
+ this.lblExperimental.Size = new System.Drawing.Size(596, 25);
+ this.lblExperimental.TabIndex = 11;
+ this.lblExperimental.Text = "EXPERIMENTAL";
+ this.lblExperimental.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ //chkUseSQLServer
+ //
+ this.chkUseSQLServer.AutoSize = true;
+ this.chkUseSQLServer.Location = new System.Drawing.Point(3, 76);
+ this.chkUseSQLServer.Name = "chkUseSQLServer";
+ this.chkUseSQLServer.Size = new System.Drawing.Size(234, 17);
+ this.chkUseSQLServer.TabIndex = 13;
+ this.chkUseSQLServer.Text = "Use SQL Server to load && save connections";
+ this.chkUseSQLServer.UseVisualStyleBackColor = true;
+ //
+ //lblSQLUsername
+ //
+ this.lblSQLUsername.Enabled = false;
+ this.lblSQLUsername.Location = new System.Drawing.Point(23, 158);
+ this.lblSQLUsername.Name = "lblSQLUsername";
+ this.lblSQLUsername.Size = new System.Drawing.Size(111, 13);
+ this.lblSQLUsername.TabIndex = 18;
+ this.lblSQLUsername.Text = "Username:";
+ this.lblSQLUsername.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtSQLPassword
+ //
+ this.txtSQLPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtSQLPassword.Enabled = false;
+ this.txtSQLPassword.Location = new System.Drawing.Point(140, 182);
+ this.txtSQLPassword.Name = "txtSQLPassword";
+ this.txtSQLPassword.Size = new System.Drawing.Size(153, 20);
+ this.txtSQLPassword.TabIndex = 21;
+ this.txtSQLPassword.UseSystemPasswordChar = true;
+ //
+ //lblSQLInfo
+ //
+ this.lblSQLInfo.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblSQLInfo.Font = new System.Drawing.Font("Segoe UI", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World);
+ this.lblSQLInfo.ForeColor = System.Drawing.Color.FromArgb(System.Convert.ToInt32(System.Convert.ToByte(192)), System.Convert.ToInt32(System.Convert.ToByte(0)), System.Convert.ToInt32(System.Convert.ToByte(0)));
+ this.lblSQLInfo.Location = new System.Drawing.Point(3, 25);
+ this.lblSQLInfo.Name = "lblSQLInfo";
+ this.lblSQLInfo.Size = new System.Drawing.Size(596, 25);
+ this.lblSQLInfo.TabIndex = 12;
+ this.lblSQLInfo.Text = "Please see Help - Getting started - SQL Configuration for more Info!";
+ this.lblSQLInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ //lblSQLServer
+ //
+ this.lblSQLServer.Enabled = false;
+ this.lblSQLServer.Location = new System.Drawing.Point(23, 106);
+ this.lblSQLServer.Name = "lblSQLServer";
+ this.lblSQLServer.Size = new System.Drawing.Size(111, 13);
+ this.lblSQLServer.TabIndex = 14;
+ this.lblSQLServer.Text = "SQL Server:";
+ this.lblSQLServer.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //txtSQLUsername
+ //
+ this.txtSQLUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtSQLUsername.Enabled = false;
+ this.txtSQLUsername.Location = new System.Drawing.Point(140, 156);
+ this.txtSQLUsername.Name = "txtSQLUsername";
+ this.txtSQLUsername.Size = new System.Drawing.Size(153, 20);
+ this.txtSQLUsername.TabIndex = 19;
+ //
+ //txtSQLServer
+ //
+ this.txtSQLServer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtSQLServer.Enabled = false;
+ this.txtSQLServer.Location = new System.Drawing.Point(140, 103);
+ this.txtSQLServer.Name = "txtSQLServer";
+ this.txtSQLServer.Size = new System.Drawing.Size(153, 20);
+ this.txtSQLServer.TabIndex = 15;
+ //
+ //lblSQLPassword
+ //
+ this.lblSQLPassword.Enabled = false;
+ this.lblSQLPassword.Location = new System.Drawing.Point(23, 184);
+ this.lblSQLPassword.Name = "lblSQLPassword";
+ this.lblSQLPassword.Size = new System.Drawing.Size(111, 13);
+ this.lblSQLPassword.TabIndex = 20;
+ this.lblSQLPassword.Text = "Password:";
+ this.lblSQLPassword.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //SqlServerPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lblSQLDatabaseName);
+ this.Controls.Add(this.txtSQLDatabaseName);
+ this.Controls.Add(this.lblExperimental);
+ this.Controls.Add(this.chkUseSQLServer);
+ this.Controls.Add(this.lblSQLUsername);
+ this.Controls.Add(this.txtSQLPassword);
+ this.Controls.Add(this.lblSQLInfo);
+ this.Controls.Add(this.lblSQLServer);
+ this.Controls.Add(this.txtSQLUsername);
+ this.Controls.Add(this.txtSQLServer);
+ this.Controls.Add(this.lblSQLPassword);
+ this.Name = "SqlServerPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.Label lblSQLDatabaseName;
+ internal System.Windows.Forms.TextBox txtSQLDatabaseName;
+ internal System.Windows.Forms.Label lblExperimental;
+ internal System.Windows.Forms.CheckBox chkUseSQLServer;
+ internal System.Windows.Forms.Label lblSQLUsername;
+ internal System.Windows.Forms.TextBox txtSQLPassword;
+ internal System.Windows.Forms.Label lblSQLInfo;
+ internal System.Windows.Forms.Label lblSQLServer;
+ internal System.Windows.Forms.TextBox txtSQLUsername;
+ internal System.Windows.Forms.TextBox txtSQLServer;
+ internal System.Windows.Forms.Label lblSQLPassword;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.cs b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.cs
new file mode 100644
index 000000000..8febc661f
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.cs
@@ -0,0 +1,94 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+using mRemoteNG.App;
+//using mRemoteNG.App.Info;
+using mRemoteNG.Security;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class SqlServerPage
+ {
+ public SqlServerPage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strSQLServer.TrimEnd(':');
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ lblExperimental.Text = Language.strExperimental.ToUpper();
+ lblSQLInfo.Text = Language.strSQLInfo;
+
+ chkUseSQLServer.Text = Language.strUseSQLServer;
+ lblSQLServer.Text = Language.strLabelHostname;
+ lblSQLDatabaseName.Text = Language.strLabelSQLServerDatabaseName;
+ lblSQLUsername.Text = Language.strLabelUsername;
+ lblSQLPassword.Text = Language.strLabelPassword;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ chkUseSQLServer.Checked = System.Convert.ToBoolean(My.Settings.Default.UseSQLServer);
+ txtSQLServer.Text = System.Convert.ToString(My.Settings.Default.SQLHost);
+ txtSQLDatabaseName.Text = System.Convert.ToString(My.Settings.Default.SQLDatabaseName);
+ txtSQLUsername.Text = System.Convert.ToString(My.Settings.Default.SQLUser);
+ txtSQLPassword.Text = Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.SQLPass), App.Info.General.EncryptionKey);
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ My.Settings.Default.UseSQLServer = chkUseSQLServer.Checked;
+ My.Settings.Default.SQLHost = txtSQLServer.Text;
+ My.Settings.Default.SQLDatabaseName = txtSQLDatabaseName.Text;
+ My.Settings.Default.SQLUser = txtSQLUsername.Text;
+ My.Settings.Default.SQLPass = Crypt.Encrypt(txtSQLPassword.Text, App.Info.General.EncryptionKey);
+
+ Runtime.Startup.DestroySQLUpdateHandlerAndStopTimer();
+ frmMain.Default.UsingSqlServer = System.Convert.ToBoolean(My.Settings.Default.UseSQLServer);
+ if (My.Settings.Default.UseSQLServer)
+ {
+ Runtime.Startup.CreateSQLUpdateHandlerAndStartTimer();
+ }
+ }
+
+ public void chkUseSQLServer_CheckedChanged(object sender, EventArgs e)
+ {
+ lblSQLServer.Enabled = chkUseSQLServer.Checked;
+ lblSQLDatabaseName.Enabled = chkUseSQLServer.Checked;
+ lblSQLUsername.Enabled = chkUseSQLServer.Checked;
+ lblSQLPassword.Enabled = chkUseSQLServer.Checked;
+ txtSQLServer.Enabled = chkUseSQLServer.Checked;
+ txtSQLDatabaseName.Enabled = chkUseSQLServer.Checked;
+ txtSQLUsername.Enabled = chkUseSQLServer.Checked;
+ txtSQLPassword.Enabled = chkUseSQLServer.Checked;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.resx b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.resx
new file mode 100644
index 000000000..07f1e249e
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/SqlServerPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8A////AP///wD///8A////AP///wCZmZkNlZWVMZGRkS+MjIwH////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8Ao6OjIaGhoZ2fn5/woaGh/6urq/+np6f/lZWV/42NjeeJiYmKhoaGFv//
+ /wD///8A////AP///wD///8Ap6enSqWlpfTOzs7/7e3t//T09P/19fX/9PT0/+/v7//i4uL/urq6/4qK
+ iueGhoY1////AP///wD///8A////AKmpqere3t7/8/Pz/9vb2//S0tL/29vb/9bW1v/AwMD/ycnJ/+bm
+ 5v/ExMT/i4uL6v///wD///8A////AP///wCsrKzq8PDw/97e3v/U1NT/0tLS/9vb2//W1tb/v7+//7Cw
+ sP+zs7P/3t7e/5CQkOr///8A////AP///wD///8Arq6u6vLy8v/i4uL/2NjY/9XV1f/c3Nz/2NjY/8DA
+ wP+zs7P/t7e3/+Dg4P+Wlpbq////AP///wD///8A////ALCwsOrz8/P/5+fn/93d3f/Z2dn/4ODg/9vb
+ 2//ExMT/uLi4/7u7u//h4eH/m5ub6v///wD///8A////AP///wCysrLq9PT0/+rq6v/h4eH/3d3d/+Pj
+ 4//e3t7/ycnJ/729vf+/v7//4uLi/56enur///8A////AP///wD///8AtLS06vX19f/u7u7/5ubm/+Li
+ 4v/m5ub/4eHh/83Nzf/CwsL/wsLC/+Pj4/+goKDq////AP///wD///8A////ALW1ter29vb/6+vr/97e
+ 3v/W1tb/1dXV/9HR0f/Dw8P/vLy8/8DAwP/l5eX/o6Oj6v///wD///8A////AP///wC3t7fq9/f3/+fn
+ 5//v7+//9vb2//v7+//6+vr/8PDw/97e3v/Dw8P/5ubm/6Wlper///8A////AP///wD///8Aubm56vj4
+ +P/+/v7/////////////////////////////////+/v7/+rq6v+np6fq////AP///wD///8A////ALq6
+ ur/h4eH//v7+//////////////////////////////////v7+//Pz8//qampof///wD///8A////AP//
+ /wC8vLwqu7u70dDQ0P/o6Oj/8/Pz//39/f/8/Pz/7e3t/+Dg4P/CwsL/ra2tw6ysrBv///8A////AP//
+ /wD///8A////ALy8vAe7u7tVurq6rri4uNa3t7f7tra2+bS0tM2zs7OpsbGxRq+vrwP///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A/D+sQeAHrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcAD
+ rEHgB6xB//+sQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.Designer.cs
new file mode 100644
index 000000000..690099ca3
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.Designer.cs
@@ -0,0 +1,114 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class StartupExitPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StartupExitPage));
+ this.chkReconnectOnStart = new System.Windows.Forms.CheckBox();
+ base.Load += new System.EventHandler(StartupExitPage_Load);
+ this.chkSaveConsOnExit = new System.Windows.Forms.CheckBox();
+ this.chkSingleInstance = new System.Windows.Forms.CheckBox();
+ this.chkProperInstallationOfComponentsAtStartup = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ //chkReconnectOnStart
+ //
+ this.chkReconnectOnStart.AutoSize = true;
+ this.chkReconnectOnStart.Location = new System.Drawing.Point(3, 24);
+ this.chkReconnectOnStart.Name = "chkReconnectOnStart";
+ this.chkReconnectOnStart.Size = new System.Drawing.Size(273, 17);
+ this.chkReconnectOnStart.TabIndex = 7;
+ this.chkReconnectOnStart.Text = "Reconnect to previously opened sessions on startup";
+ this.chkReconnectOnStart.UseVisualStyleBackColor = true;
+ //
+ //chkSaveConsOnExit
+ //
+ this.chkSaveConsOnExit.AutoSize = true;
+ this.chkSaveConsOnExit.Location = new System.Drawing.Point(3, 0);
+ this.chkSaveConsOnExit.Name = "chkSaveConsOnExit";
+ this.chkSaveConsOnExit.Size = new System.Drawing.Size(146, 17);
+ this.chkSaveConsOnExit.TabIndex = 6;
+ this.chkSaveConsOnExit.Text = "Save connections on exit";
+ this.chkSaveConsOnExit.UseVisualStyleBackColor = true;
+ //
+ //chkSingleInstance
+ //
+ this.chkSingleInstance.AutoSize = true;
+ this.chkSingleInstance.Location = new System.Drawing.Point(3, 48);
+ this.chkSingleInstance.Name = "chkSingleInstance";
+ this.chkSingleInstance.Size = new System.Drawing.Size(366, 17);
+ this.chkSingleInstance.TabIndex = 8;
+ this.chkSingleInstance.Text = "Allow only a single instance of the application (mRemote restart required)";
+ this.chkSingleInstance.UseVisualStyleBackColor = true;
+ //
+ //chkProperInstallationOfComponentsAtStartup
+ //
+ this.chkProperInstallationOfComponentsAtStartup.AutoSize = true;
+ this.chkProperInstallationOfComponentsAtStartup.Location = new System.Drawing.Point(3, 72);
+ this.chkProperInstallationOfComponentsAtStartup.Name = "chkProperInstallationOfComponentsAtStartup";
+ this.chkProperInstallationOfComponentsAtStartup.Size = new System.Drawing.Size(262, 17);
+ this.chkProperInstallationOfComponentsAtStartup.TabIndex = 9;
+ this.chkProperInstallationOfComponentsAtStartup.Text = "Check proper installation of components at startup";
+ this.chkProperInstallationOfComponentsAtStartup.UseVisualStyleBackColor = true;
+ //
+ //StartupExitPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.chkReconnectOnStart);
+ this.Controls.Add(this.chkSaveConsOnExit);
+ this.Controls.Add(this.chkSingleInstance);
+ this.Controls.Add(this.chkProperInstallationOfComponentsAtStartup);
+ this.Name = "StartupExitPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.CheckBox chkReconnectOnStart;
+ internal System.Windows.Forms.CheckBox chkSaveConsOnExit;
+ internal System.Windows.Forms.CheckBox chkSingleInstance;
+ internal System.Windows.Forms.CheckBox chkProperInstallationOfComponentsAtStartup;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.cs b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.cs
new file mode 100644
index 000000000..610e2c577
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.cs
@@ -0,0 +1,64 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class StartupExitPage
+ {
+ public StartupExitPage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strStartupExit;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ chkSaveConsOnExit.Text = Language.strSaveConsOnExit;
+ chkReconnectOnStart.Text = Language.strReconnectAtStartup;
+ chkSingleInstance.Text = Language.strAllowOnlySingleInstance;
+ chkProperInstallationOfComponentsAtStartup.Text = Language.strCheckProperInstallationOfComponentsAtStartup;
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ Settings.SaveConsOnExit = chkSaveConsOnExit.Checked;
+ Settings.OpenConsFromLastSession = chkReconnectOnStart.Checked;
+ Settings.SingleInstance = chkSingleInstance.Checked;
+ Settings.StartupComponentsCheck = chkProperInstallationOfComponentsAtStartup.Checked;
+ }
+
+ public void StartupExitPage_Load(System.Object sender, EventArgs e)
+ {
+ chkSaveConsOnExit.Checked = Settings.SaveConsOnExit;
+ chkReconnectOnStart.Checked = Settings.OpenConsFromLastSession;
+ chkSingleInstance.Checked = Settings.SingleInstance;
+ chkProperInstallationOfComponentsAtStartup.Checked = Settings.StartupComponentsCheck;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.resx b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.resx
new file mode 100644
index 000000000..6fbdfda43
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/StartupExitPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAeRUXA3seswB9IawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAALe3t/+cqJ7/EndS/zySdP8Oe1L/JGig/yFmnv8dY5v/GmGZ/xdfl/8UXJT/EVuT/2xs
+ bP9sbGz/AAAAAAAAAAAAeRkdAH0fokGVeP+Cvqr/UKWC/zGXav80mW//OJlz/zydeP92qtL/dKjR/xVd
+ lf8AAAAAAAAAAAAAAAAAeRsiAH0hpEilZrNtrJ//dLee/367rP9+u67/f7uw/4C8s/83mnv/VJXH/3er
+ 0/8ZYJj/AAAAAAAAAAAAAAAAAH8lsTygXLODwpizXKSR/2+2m/9ospv/arKe/2yzof+Fv7b/Pp6C/1mZ
+ yf97rdT/HmSc/wAAAAAAAAAAAAAAAAGDLQsHhzWyRqVos3ayqP99vaf/h8G1/4bBtv+Hwbf/iMG5/0Si
+ iP9enMv/f7DV/yNnn/8AAAAAAAAAAAAAAAAAAAAAEYs9CBePRbJPoIr/k8m6/1+vl/9EooP/RaOH/0ek
+ i/9GqpL/VMLt/4G01/8oa6P/AAAAAAAAAAAAAAAAAAAAAAAAAAAflU8GNZR3/265nv9Jpon/ebHV/3Wt
+ 1P9xq9L/X7rk/xiZaf8njlj/KnCa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiOxP9SrIv/T6qP/361
+ 2P96stb/d6/V/3Os0/8kkGL/WaiE/xN4U/8AeRkbAAAAAAAAAAAAAAAAAAAAAAAAAABekcn/pMzk/4e7
+ 2/8/oXr/OZx0/zSacP8vlmr/S6OB/4TAq/9Clnn/AH0fogB5GR0AAAAAAAAAAAAAAAAAAAAAY5XN/6jP
+ 5f+Mv93/RaWB/43FuP+Jw7T/hsGx/4S/r/93uZ//bq2g/0ilZrMAfSGkAHkbIgAAAAAAAAAAAAAAAGeY
+ 0P+r0ef/kMLf/0ypiP+Rybv/drql/3K4of9utp7/crid/12lkv+DwpizPKBcswB/JbEAAAAAAAAAAAAA
+ AABrm9P/rtTo/6vT6P9ZsZD/m87A/5nNvf+Wy7v/lcq5/4C/qP93s6n/RqVosweHNbIBgy0LAAAAAAAA
+ AAAAAAAAbp3V/2yb0/9pmtL/SaGM/0Sfiv9BnYX/PZmA/1alkv9/uLH/UKGL/xePRbIRiz0IAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxn2OsWrOBsyiYV7MflU8GAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6NrrDGfZbMtnV8GAAAAAAAA
+ AAAAAAAA4/+cQYABnEGAB5xBAAecQQAHnEEAB5xBgAecQcAHnEHgA5xB4AGcQeAAnEHgAJxB4ACcQeAB
+ nEH/w5xB/8ecQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.Designer.cs
new file mode 100644
index 000000000..f0c04391c
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.Designer.cs
@@ -0,0 +1,220 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class TabsPanelsPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TabsPanelsPage));
+ this.chkAlwaysShowPanelTabs = new System.Windows.Forms.CheckBox();
+ this.chkIdentifyQuickConnectTabs = new System.Windows.Forms.CheckBox();
+ this.chkUseOnlyErrorsAndInfosPanel = new System.Windows.Forms.CheckBox();
+ this.chkUseOnlyErrorsAndInfosPanel.CheckedChanged += new System.EventHandler(this.chkUseOnlyErrorsAndInfosPanel_CheckedChanged);
+ this.chkOpenNewTabRightOfSelected = new System.Windows.Forms.CheckBox();
+ this.lblSwitchToErrorsAndInfos = new System.Windows.Forms.Label();
+ this.chkAlwaysShowPanelSelectionDlg = new System.Windows.Forms.CheckBox();
+ this.chkMCInformation = new System.Windows.Forms.CheckBox();
+ this.chkShowLogonInfoOnTabs = new System.Windows.Forms.CheckBox();
+ this.chkMCErrors = new System.Windows.Forms.CheckBox();
+ this.chkDoubleClickClosesTab = new System.Windows.Forms.CheckBox();
+ this.chkMCWarnings = new System.Windows.Forms.CheckBox();
+ this.chkShowProtocolOnTabs = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ //chkAlwaysShowPanelTabs
+ //
+ this.chkAlwaysShowPanelTabs.AutoSize = true;
+ this.chkAlwaysShowPanelTabs.Location = new System.Drawing.Point(3, 0);
+ this.chkAlwaysShowPanelTabs.Name = "chkAlwaysShowPanelTabs";
+ this.chkAlwaysShowPanelTabs.Size = new System.Drawing.Size(139, 17);
+ this.chkAlwaysShowPanelTabs.TabIndex = 12;
+ this.chkAlwaysShowPanelTabs.Text = "Always show panel tabs";
+ this.chkAlwaysShowPanelTabs.UseVisualStyleBackColor = true;
+ //
+ //chkIdentifyQuickConnectTabs
+ //
+ this.chkIdentifyQuickConnectTabs.AutoSize = true;
+ this.chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 92);
+ this.chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs";
+ this.chkIdentifyQuickConnectTabs.Size = new System.Drawing.Size(293, 17);
+ this.chkIdentifyQuickConnectTabs.TabIndex = 16;
+ this.chkIdentifyQuickConnectTabs.Text = global::mRemoteNG.My.Language.strIdentifyQuickConnectTabs;
+ this.chkIdentifyQuickConnectTabs.UseVisualStyleBackColor = true;
+ //
+ //chkUseOnlyErrorsAndInfosPanel
+ //
+ this.chkUseOnlyErrorsAndInfosPanel.AutoSize = true;
+ this.chkUseOnlyErrorsAndInfosPanel.Location = new System.Drawing.Point(3, 185);
+ this.chkUseOnlyErrorsAndInfosPanel.Name = "chkUseOnlyErrorsAndInfosPanel";
+ this.chkUseOnlyErrorsAndInfosPanel.Size = new System.Drawing.Size(278, 17);
+ this.chkUseOnlyErrorsAndInfosPanel.TabIndex = 19;
+ this.chkUseOnlyErrorsAndInfosPanel.Text = "Use only Notifications panel (no messagebox popups)";
+ this.chkUseOnlyErrorsAndInfosPanel.UseVisualStyleBackColor = true;
+ //
+ //chkOpenNewTabRightOfSelected
+ //
+ this.chkOpenNewTabRightOfSelected.AutoSize = true;
+ this.chkOpenNewTabRightOfSelected.Location = new System.Drawing.Point(3, 23);
+ this.chkOpenNewTabRightOfSelected.Name = "chkOpenNewTabRightOfSelected";
+ this.chkOpenNewTabRightOfSelected.Size = new System.Drawing.Size(280, 17);
+ this.chkOpenNewTabRightOfSelected.TabIndex = 13;
+ this.chkOpenNewTabRightOfSelected.Text = "Open new tab to the right of the currently selected tab";
+ this.chkOpenNewTabRightOfSelected.UseVisualStyleBackColor = true;
+ //
+ //lblSwitchToErrorsAndInfos
+ //
+ this.lblSwitchToErrorsAndInfos.AutoSize = true;
+ this.lblSwitchToErrorsAndInfos.Location = new System.Drawing.Point(3, 210);
+ this.lblSwitchToErrorsAndInfos.Name = "lblSwitchToErrorsAndInfos";
+ this.lblSwitchToErrorsAndInfos.Size = new System.Drawing.Size(159, 13);
+ this.lblSwitchToErrorsAndInfos.TabIndex = 20;
+ this.lblSwitchToErrorsAndInfos.Text = "Switch to Notifications panel on:";
+ //
+ //chkAlwaysShowPanelSelectionDlg
+ //
+ this.chkAlwaysShowPanelSelectionDlg.AutoSize = true;
+ this.chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 138);
+ this.chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg";
+ this.chkAlwaysShowPanelSelectionDlg.Size = new System.Drawing.Size(317, 17);
+ this.chkAlwaysShowPanelSelectionDlg.TabIndex = 18;
+ this.chkAlwaysShowPanelSelectionDlg.Text = "Always show panel selection dialog when opening connectins";
+ this.chkAlwaysShowPanelSelectionDlg.UseVisualStyleBackColor = true;
+ //
+ //chkMCInformation
+ //
+ this.chkMCInformation.AutoSize = true;
+ this.chkMCInformation.Enabled = false;
+ this.chkMCInformation.Location = new System.Drawing.Point(19, 230);
+ this.chkMCInformation.Name = "chkMCInformation";
+ this.chkMCInformation.Size = new System.Drawing.Size(83, 17);
+ this.chkMCInformation.TabIndex = 21;
+ this.chkMCInformation.Text = "Informations";
+ this.chkMCInformation.UseVisualStyleBackColor = true;
+ //
+ //chkShowLogonInfoOnTabs
+ //
+ this.chkShowLogonInfoOnTabs.AutoSize = true;
+ this.chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 46);
+ this.chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs";
+ this.chkShowLogonInfoOnTabs.Size = new System.Drawing.Size(203, 17);
+ this.chkShowLogonInfoOnTabs.TabIndex = 14;
+ this.chkShowLogonInfoOnTabs.Text = "Show logon information on tab names";
+ this.chkShowLogonInfoOnTabs.UseVisualStyleBackColor = true;
+ //
+ //chkMCErrors
+ //
+ this.chkMCErrors.AutoSize = true;
+ this.chkMCErrors.Enabled = false;
+ this.chkMCErrors.Location = new System.Drawing.Point(19, 276);
+ this.chkMCErrors.Name = "chkMCErrors";
+ this.chkMCErrors.Size = new System.Drawing.Size(53, 17);
+ this.chkMCErrors.TabIndex = 23;
+ this.chkMCErrors.Text = "Errors";
+ this.chkMCErrors.UseVisualStyleBackColor = true;
+ //
+ //chkDoubleClickClosesTab
+ //
+ this.chkDoubleClickClosesTab.AutoSize = true;
+ this.chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 115);
+ this.chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab";
+ this.chkDoubleClickClosesTab.Size = new System.Drawing.Size(159, 17);
+ this.chkDoubleClickClosesTab.TabIndex = 17;
+ this.chkDoubleClickClosesTab.Text = "Double click on tab closes it";
+ this.chkDoubleClickClosesTab.UseVisualStyleBackColor = true;
+ //
+ //chkMCWarnings
+ //
+ this.chkMCWarnings.AutoSize = true;
+ this.chkMCWarnings.Enabled = false;
+ this.chkMCWarnings.Location = new System.Drawing.Point(19, 253);
+ this.chkMCWarnings.Name = "chkMCWarnings";
+ this.chkMCWarnings.Size = new System.Drawing.Size(71, 17);
+ this.chkMCWarnings.TabIndex = 22;
+ this.chkMCWarnings.Text = "Warnings";
+ this.chkMCWarnings.UseVisualStyleBackColor = true;
+ //
+ //chkShowProtocolOnTabs
+ //
+ this.chkShowProtocolOnTabs.AutoSize = true;
+ this.chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 69);
+ this.chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs";
+ this.chkShowProtocolOnTabs.Size = new System.Drawing.Size(166, 17);
+ this.chkShowProtocolOnTabs.TabIndex = 15;
+ this.chkShowProtocolOnTabs.Text = "Show protocols on tab names";
+ this.chkShowProtocolOnTabs.UseVisualStyleBackColor = true;
+ //
+ //TabsPanelsPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.chkAlwaysShowPanelTabs);
+ this.Controls.Add(this.chkIdentifyQuickConnectTabs);
+ this.Controls.Add(this.chkUseOnlyErrorsAndInfosPanel);
+ this.Controls.Add(this.chkOpenNewTabRightOfSelected);
+ this.Controls.Add(this.lblSwitchToErrorsAndInfos);
+ this.Controls.Add(this.chkAlwaysShowPanelSelectionDlg);
+ this.Controls.Add(this.chkMCInformation);
+ this.Controls.Add(this.chkShowLogonInfoOnTabs);
+ this.Controls.Add(this.chkMCErrors);
+ this.Controls.Add(this.chkDoubleClickClosesTab);
+ this.Controls.Add(this.chkMCWarnings);
+ this.Controls.Add(this.chkShowProtocolOnTabs);
+ this.Name = "TabsPanelsPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.CheckBox chkAlwaysShowPanelTabs;
+ internal System.Windows.Forms.CheckBox chkIdentifyQuickConnectTabs;
+ internal System.Windows.Forms.CheckBox chkUseOnlyErrorsAndInfosPanel;
+ internal System.Windows.Forms.CheckBox chkOpenNewTabRightOfSelected;
+ internal System.Windows.Forms.Label lblSwitchToErrorsAndInfos;
+ internal System.Windows.Forms.CheckBox chkAlwaysShowPanelSelectionDlg;
+ internal System.Windows.Forms.CheckBox chkMCInformation;
+ internal System.Windows.Forms.CheckBox chkShowLogonInfoOnTabs;
+ internal System.Windows.Forms.CheckBox chkMCErrors;
+ internal System.Windows.Forms.CheckBox chkDoubleClickClosesTab;
+ internal System.Windows.Forms.CheckBox chkMCWarnings;
+ internal System.Windows.Forms.CheckBox chkShowProtocolOnTabs;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.cs b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.cs
new file mode 100644
index 000000000..c4385fc82
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.cs
@@ -0,0 +1,100 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class TabsPanelsPage
+ {
+ public TabsPanelsPage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strTabsAndPanels.Replace("&&", "&");
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ chkAlwaysShowPanelTabs.Text = Language.strAlwaysShowPanelTabs;
+ chkOpenNewTabRightOfSelected.Text = Language.strOpenNewTabRight;
+ chkShowLogonInfoOnTabs.Text = Language.strShowLogonInfoOnTabs;
+ chkShowProtocolOnTabs.Text = Language.strShowProtocolOnTabs;
+ chkIdentifyQuickConnectTabs.Text = Language.strIdentifyQuickConnectTabs;
+ chkDoubleClickClosesTab.Text = Language.strDoubleClickTabClosesIt;
+ chkAlwaysShowPanelSelectionDlg.Text = Language.strAlwaysShowPanelSelection;
+
+ chkUseOnlyErrorsAndInfosPanel.Text = Language.strUseOnlyErrorsAndInfosPanel;
+ lblSwitchToErrorsAndInfos.Text = Language.strSwitchToErrorsAndInfos;
+ chkMCInformation.Text = Language.strInformations;
+ chkMCWarnings.Text = Language.strWarnings;
+ chkMCErrors.Text = Language.strErrors;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ chkAlwaysShowPanelTabs.Checked = Settings.AlwaysShowPanelTabs;
+ chkOpenNewTabRightOfSelected.Checked = Settings.OpenTabsRightOfSelected;
+ chkShowLogonInfoOnTabs.Checked = Settings.ShowLogonInfoOnTabs;
+ chkShowProtocolOnTabs.Checked = Settings.ShowProtocolOnTabs;
+ chkIdentifyQuickConnectTabs.Checked = Settings.IdentifyQuickConnectTabs;
+ chkDoubleClickClosesTab.Checked = Settings.DoubleClickOnTabClosesIt;
+ chkAlwaysShowPanelSelectionDlg.Checked = Settings.AlwaysShowPanelSelectionDlg;
+
+ chkUseOnlyErrorsAndInfosPanel.Checked = Settings.ShowNoMessageBoxes;
+ chkMCInformation.Checked = Settings.SwitchToMCOnInformation;
+ chkMCWarnings.Checked = Settings.SwitchToMCOnWarning;
+ chkMCErrors.Checked = Settings.SwitchToMCOnError;
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ Settings.AlwaysShowPanelTabs = chkAlwaysShowPanelTabs.Checked;
+ frmMain.Default.ShowHidePanelTabs();
+
+ Settings.OpenTabsRightOfSelected = chkOpenNewTabRightOfSelected.Checked;
+ Settings.ShowLogonInfoOnTabs = chkShowLogonInfoOnTabs.Checked;
+ Settings.ShowProtocolOnTabs = chkShowProtocolOnTabs.Checked;
+ Settings.IdentifyQuickConnectTabs = chkIdentifyQuickConnectTabs.Checked;
+ Settings.DoubleClickOnTabClosesIt = chkDoubleClickClosesTab.Checked;
+ Settings.AlwaysShowPanelSelectionDlg = chkAlwaysShowPanelSelectionDlg.Checked;
+
+ Settings.ShowNoMessageBoxes = chkUseOnlyErrorsAndInfosPanel.Checked;
+ Settings.SwitchToMCOnInformation = chkMCInformation.Checked;
+ Settings.SwitchToMCOnWarning = chkMCWarnings.Checked;
+ Settings.SwitchToMCOnError = chkMCErrors.Checked;
+ }
+
+ public void chkUseOnlyErrorsAndInfosPanel_CheckedChanged(object sender, EventArgs e)
+ {
+ chkMCInformation.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked;
+ chkMCWarnings.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked;
+ chkMCErrors.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.resx b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.resx
new file mode 100644
index 000000000..eb78287ce
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/TabsPanelsPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAnZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52d
+ nf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+6vb3/5uzs/+bt7f/n7e3/6O7u/+nv7//p7+//6u/v/+rw
+ 8P/r8PD/6/Hx/+zx8f/s8fH/vb+//52dnf8AAAAAnZ2d6tvi4v/Nz8//y8vL/8zMzP/Ozs7/z8/P/9DQ
+ 0P/S0tL/09PT/9XV1f/X2Nj/5+zs/52dnfcAAAAAAAAAAJ2dnerZ4eH/y8zM/8fHx//IyMj/ysrK/8vL
+ y//Nzc3/zs7O/9DQ0P/R0dH/09TU/+Xr6/+dnZ33AAAAAAAAAACdnZ3q19/f/8fJyf/CwsL/xMTE/8XF
+ xf/IyMj/ycnJ/8rKyv/MzMz/zc3N/9DR0f/j6ur/nZ2d9wAAAAAAAAAAnZ2d6tbf3//DxcX/wMDA/8DA
+ wP/CwsL/w8PD/8TExP/FxcX/yMjI/8nJyf/Nzc3/4Ojo/52dnfcAAAAAAAAAAJ2dndbHzc3/2+Tk/9vk
+ 5P/b5eX/3OXl/9zl5f/d5ub/3ebm/97n5//f6Oj/4Ojo/83T0/+dnZ3jAAAAAAAAAACdnZ1DnZ2dyJ2d
+ nf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3dnZ2dTgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA//+cQf//nEH//5xB//+cQQAAnEEAAJxBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxB//+cQf//
+ nEH//5xB//+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ThemePage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.Designer.cs
new file mode 100644
index 000000000..7b5111d9b
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.Designer.cs
@@ -0,0 +1,113 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class ThemePage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ThemePage));
+ this.btnThemeDelete = new System.Windows.Forms.Button();
+ this.btnThemeDelete.Click += new System.EventHandler(this.btnThemeDelete_Click);
+ this.btnThemeNew = new System.Windows.Forms.Button();
+ this.btnThemeNew.Click += new System.EventHandler(this.btnThemeNew_Click);
+ this.cboTheme = new System.Windows.Forms.ComboBox();
+ this.cboTheme.DropDown += new System.EventHandler(this.cboTheme_DropDown);
+ this.cboTheme.SelectionChangeCommitted += new System.EventHandler(this.cboTheme_SelectionChangeCommitted);
+ this.ThemePropertyGrid = new System.Windows.Forms.PropertyGrid();
+ this.SuspendLayout();
+ //
+ //btnThemeDelete
+ //
+ this.btnThemeDelete.Location = new System.Drawing.Point(535, 0);
+ this.btnThemeDelete.Name = "btnThemeDelete";
+ this.btnThemeDelete.Size = new System.Drawing.Size(75, 23);
+ this.btnThemeDelete.TabIndex = 6;
+ this.btnThemeDelete.Text = "&Delete";
+ this.btnThemeDelete.UseVisualStyleBackColor = true;
+ //
+ //btnThemeNew
+ //
+ this.btnThemeNew.Location = new System.Drawing.Point(454, 0);
+ this.btnThemeNew.Name = "btnThemeNew";
+ this.btnThemeNew.Size = new System.Drawing.Size(75, 23);
+ this.btnThemeNew.TabIndex = 5;
+ this.btnThemeNew.Text = "&New";
+ this.btnThemeNew.UseVisualStyleBackColor = true;
+ //
+ //cboTheme
+ //
+ this.cboTheme.FormattingEnabled = true;
+ this.cboTheme.Location = new System.Drawing.Point(3, 1);
+ this.cboTheme.Name = "cboTheme";
+ this.cboTheme.Size = new System.Drawing.Size(445, 21);
+ this.cboTheme.TabIndex = 4;
+ //
+ //ThemePropertyGrid
+ //
+ this.ThemePropertyGrid.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.ThemePropertyGrid.Location = new System.Drawing.Point(3, 29);
+ this.ThemePropertyGrid.Name = "ThemePropertyGrid";
+ this.ThemePropertyGrid.Size = new System.Drawing.Size(607, 460);
+ this.ThemePropertyGrid.TabIndex = 7;
+ this.ThemePropertyGrid.UseCompatibleTextRendering = true;
+ //
+ //ThemePage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.btnThemeDelete);
+ this.Controls.Add(this.btnThemeNew);
+ this.Controls.Add(this.cboTheme);
+ this.Controls.Add(this.ThemePropertyGrid);
+ this.Name = "ThemePage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.Button btnThemeDelete;
+ internal System.Windows.Forms.Button btnThemeNew;
+ internal System.Windows.Forms.ComboBox cboTheme;
+ internal System.Windows.Forms.PropertyGrid ThemePropertyGrid;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ThemePage.cs b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.cs
new file mode 100644
index 000000000..7adcddb39
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.cs
@@ -0,0 +1,143 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.My;
+using mRemoteNG.Themes;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class ThemePage
+ {
+ public ThemePage()
+ {
+ InitializeComponent();
+ }
+public override string PageName
+ {
+ get
+ {
+ return Language.strOptionsTabTheme;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+ btnThemeDelete.Text = Language.strOptionsThemeButtonDelete;
+ btnThemeNew.Text = Language.strOptionsThemeButtonNew;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ _themeList = new BindingList(ThemeManager.LoadThemes());
+ cboTheme.DataSource = _themeList;
+ cboTheme.SelectedItem = ThemeManager.ActiveTheme;
+ cboTheme_SelectionChangeCommitted(this, new EventArgs());
+
+ ThemePropertyGrid.PropertySort = PropertySort.Categorized;
+
+ _originalTheme = ThemeManager.ActiveTheme;
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ ThemeManager.SaveThemes(_themeList);
+ Settings.ThemeName = ThemeManager.ActiveTheme.Name;
+ }
+
+ public override void RevertSettings()
+ {
+ ThemeManager.ActiveTheme = _originalTheme;
+ }
+
+#region Private Fields
+ private BindingList _themeList;
+ private ThemeInfo _originalTheme;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void cboTheme_DropDown(object sender, EventArgs e)
+ {
+ if (ThemeManager.ActiveTheme == ThemeManager.DefaultTheme)
+ {
+ return ;
+ }
+ ThemeManager.ActiveTheme.Name = cboTheme.Text;
+ }
+
+ public void cboTheme_SelectionChangeCommitted(object sender, EventArgs e)
+ {
+ if (cboTheme.SelectedItem == null)
+ {
+ cboTheme.SelectedItem = ThemeManager.DefaultTheme;
+ }
+
+ if (cboTheme.SelectedItem == ThemeManager.DefaultTheme)
+ {
+ cboTheme.DropDownStyle = ComboBoxStyle.DropDownList;
+ btnThemeDelete.Enabled = false;
+ ThemePropertyGrid.Enabled = false;
+ }
+ else
+ {
+ cboTheme.DropDownStyle = ComboBoxStyle.DropDown;
+ btnThemeDelete.Enabled = true;
+ ThemePropertyGrid.Enabled = true;
+ }
+
+ ThemeManager.ActiveTheme = cboTheme.SelectedItem;
+ ThemePropertyGrid.SelectedObject = ThemeManager.ActiveTheme;
+ ThemePropertyGrid.Refresh();
+ }
+
+ public void btnThemeNew_Click(object sender, EventArgs e)
+ {
+ ThemeInfo newTheme = ThemeManager.ActiveTheme.Clone();
+ newTheme.Name = Language.strUnnamedTheme;
+
+ _themeList.Add(newTheme);
+
+ cboTheme.SelectedItem = newTheme;
+ cboTheme_SelectionChangeCommitted(this, new EventArgs());
+
+ cboTheme.Focus();
+ }
+
+ public void btnThemeDelete_Click(object sender, EventArgs e)
+ {
+ ThemeInfo theme = cboTheme.SelectedItem;
+ if (theme == null)
+ {
+ return ;
+ }
+
+ _themeList.Remove(theme);
+
+ cboTheme.SelectedItem = ThemeManager.DefaultTheme;
+ cboTheme_SelectionChangeCommitted(this, new EventArgs());
+ }
+#endregion
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/ThemePage.resx b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.resx
new file mode 100644
index 000000000..c75e1d525
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/ThemePage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGaichxkn/MZYp3PFmCakBNemDMAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGyoMCRqpfyGreH/fqjc/1+Syf8wcqv/FF+ZsRNd
+ ly0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxvrKttndH/mbzr/3Gg4/+Wuer/lLjq/2CT
+ yv8VX5n8E12XeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV2sy0xc7D8nb/s/2mc4v9bk9//WJHf/1+U
+ 4P+VuOr/hq3h/0mDu/8TXpiQAAAAAAAAAABFgb9CQX68hD58ubc6ebfzdqTX/6HC7f+fwO3/nb/t/3Sj
+ 5P9akt//WJDe/3un5v+Stuj/Q3+3/xRfmVpOh8eTZJfP/3uo2f+NtOL/o8Tt/6fH7v9kl83/NHWy/1+T
+ yf+fwO3/eJaj/56WSP98lJH/jbPp/3ml2P8YYZzYUorL9q7N8P+wz/D/mL/s/36u5/+qyu//PXu4/wAA
+ AAA1drP/osPt/6iXMf/EtVr/rJcm/1uT3/+Yu+v/HGSf/1eNzt6oye3/hKft/1hq7f9qjun/rc3w/22d
+ 0v8+fLn/Z5nO/6XF7v+Vmmn/rZcm/52XTf9mm+L/mLvq/yFnovZbkNGckrnl/2509v+BhPX/QEDw/5C7
+ 6/+uzfD/rMzw/6rK8P+Fsun/XqnB/0Szjf9WqLb/cKHk/5e66P8laqbtX5PVM1yR0vySpPX/WVr2/1GG
+ 9P87pvv/XKvy/36v5/97ref/eKrm/z+2gP9gyJf/O7d6/32s5/+PteP/Km6q1QAAAABgk9WHhq/h/7nX
+ 8/8ypv7/bL///yuj//9mvvD/Os77/1q+8f9Ss6D/O7d5/0ezkP+nyO7/d6XW/y9xrpwAAAAAY5bYBmGU
+ 1p+FruH/WrL5/yuj//9Aqfv/MNP+/2zi//8r1f//f7Do/3yt5/+pyu//pcXt/zd3tfw0dbIwAAAAAAAA
+ AAAAAAAAYZXXdV+T1faOtuP/udfz/13V+/8q1f//QdH7/7PS8v+x0PH/krji/2KVzP89e7iKAAAAAAAA
+ AAAAAAAAAAAAAAAAAABildceYJPVrnaj3P+RuOT/qMrs/6XH7P+NteL/aJrS/0mDwttFgb9OAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhlNZCXpLUkFuQ0dJYjs/PVIzMmVGJykUAAAAAAAAAAAAA
+ AAAAAAAA//+cQfwfnEH4B5xB+AOcQfABnEGAAJxBAACcQQEAnEEAAJxBAACcQQAAnEGAAJxBgACcQeAB
+ nEHwA5xB/A+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.Designer.cs b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.Designer.cs
new file mode 100644
index 000000000..3de8c0dd4
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.Designer.cs
@@ -0,0 +1,305 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class UpdatesPage : OptionsPage
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdatesPage));
+ this.lblUpdatesExplanation = new System.Windows.Forms.Label();
+ this.pnlUpdateCheck = new System.Windows.Forms.Panel();
+ this.btnUpdateCheckNow = new System.Windows.Forms.Button();
+ this.btnUpdateCheckNow.Click += new System.EventHandler(this.btnUpdateCheckNow_Click);
+ this.chkCheckForUpdatesOnStartup = new System.Windows.Forms.CheckBox();
+ this.chkCheckForUpdatesOnStartup.CheckedChanged += new System.EventHandler(this.chkCheckForUpdatesOnStartup_CheckedChanged);
+ this.cboUpdateCheckFrequency = new System.Windows.Forms.ComboBox();
+ this.pnlProxy = new System.Windows.Forms.Panel();
+ this.pnlProxyBasic = new System.Windows.Forms.Panel();
+ this.lblProxyAddress = new System.Windows.Forms.Label();
+ this.txtProxyAddress = new System.Windows.Forms.TextBox();
+ this.lblProxyPort = new System.Windows.Forms.Label();
+ this.numProxyPort = new System.Windows.Forms.NumericUpDown();
+ this.chkUseProxyForAutomaticUpdates = new System.Windows.Forms.CheckBox();
+ this.chkUseProxyForAutomaticUpdates.CheckedChanged += new System.EventHandler(this.chkUseProxyForAutomaticUpdates_CheckedChanged);
+ this.chkUseProxyAuthentication = new System.Windows.Forms.CheckBox();
+ this.chkUseProxyAuthentication.CheckedChanged += new System.EventHandler(this.chkUseProxyAuthentication_CheckedChanged);
+ this.pnlProxyAuthentication = new System.Windows.Forms.Panel();
+ this.lblProxyUsername = new System.Windows.Forms.Label();
+ this.txtProxyUsername = new System.Windows.Forms.TextBox();
+ this.lblProxyPassword = new System.Windows.Forms.Label();
+ this.txtProxyPassword = new System.Windows.Forms.TextBox();
+ this.btnTestProxy = new System.Windows.Forms.Button();
+ this.btnTestProxy.Click += new System.EventHandler(this.btnTestProxy_Click);
+ this.pnlUpdateCheck.SuspendLayout();
+ this.pnlProxy.SuspendLayout();
+ this.pnlProxyBasic.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.numProxyPort).BeginInit();
+ this.pnlProxyAuthentication.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //lblUpdatesExplanation
+ //
+ this.lblUpdatesExplanation.Location = new System.Drawing.Point(3, 0);
+ this.lblUpdatesExplanation.Name = "lblUpdatesExplanation";
+ this.lblUpdatesExplanation.Size = new System.Drawing.Size(536, 40);
+ this.lblUpdatesExplanation.TabIndex = 3;
+ this.lblUpdatesExplanation.Text = "mRemoteNG can periodically connect to the mRemoteNG website to check for updates " +
+ "and product announcements.";
+ //
+ //pnlUpdateCheck
+ //
+ this.pnlUpdateCheck.Controls.Add(this.btnUpdateCheckNow);
+ this.pnlUpdateCheck.Controls.Add(this.chkCheckForUpdatesOnStartup);
+ this.pnlUpdateCheck.Controls.Add(this.cboUpdateCheckFrequency);
+ this.pnlUpdateCheck.Location = new System.Drawing.Point(0, 48);
+ this.pnlUpdateCheck.Name = "pnlUpdateCheck";
+ this.pnlUpdateCheck.Size = new System.Drawing.Size(610, 120);
+ this.pnlUpdateCheck.TabIndex = 4;
+ //
+ //btnUpdateCheckNow
+ //
+ this.btnUpdateCheckNow.Location = new System.Drawing.Point(3, 80);
+ this.btnUpdateCheckNow.Name = "btnUpdateCheckNow";
+ this.btnUpdateCheckNow.Size = new System.Drawing.Size(120, 32);
+ this.btnUpdateCheckNow.TabIndex = 2;
+ this.btnUpdateCheckNow.Text = "Check Now";
+ this.btnUpdateCheckNow.UseVisualStyleBackColor = true;
+ //
+ //chkCheckForUpdatesOnStartup
+ //
+ this.chkCheckForUpdatesOnStartup.AutoSize = true;
+ this.chkCheckForUpdatesOnStartup.Location = new System.Drawing.Point(3, 8);
+ this.chkCheckForUpdatesOnStartup.Name = "chkCheckForUpdatesOnStartup";
+ this.chkCheckForUpdatesOnStartup.Size = new System.Drawing.Size(213, 17);
+ this.chkCheckForUpdatesOnStartup.TabIndex = 0;
+ this.chkCheckForUpdatesOnStartup.Text = "Check for updates and announcements";
+ this.chkCheckForUpdatesOnStartup.UseVisualStyleBackColor = true;
+ //
+ //cboUpdateCheckFrequency
+ //
+ this.cboUpdateCheckFrequency.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cboUpdateCheckFrequency.FormattingEnabled = true;
+ this.cboUpdateCheckFrequency.Location = new System.Drawing.Point(48, 40);
+ this.cboUpdateCheckFrequency.Name = "cboUpdateCheckFrequency";
+ this.cboUpdateCheckFrequency.Size = new System.Drawing.Size(128, 21);
+ this.cboUpdateCheckFrequency.TabIndex = 1;
+ //
+ //pnlProxy
+ //
+ this.pnlProxy.Controls.Add(this.pnlProxyBasic);
+ this.pnlProxy.Controls.Add(this.chkUseProxyForAutomaticUpdates);
+ this.pnlProxy.Controls.Add(this.chkUseProxyAuthentication);
+ this.pnlProxy.Controls.Add(this.pnlProxyAuthentication);
+ this.pnlProxy.Controls.Add(this.btnTestProxy);
+ this.pnlProxy.Location = new System.Drawing.Point(0, 200);
+ this.pnlProxy.Name = "pnlProxy";
+ this.pnlProxy.Size = new System.Drawing.Size(610, 224);
+ this.pnlProxy.TabIndex = 5;
+ //
+ //pnlProxyBasic
+ //
+ this.pnlProxyBasic.Controls.Add(this.lblProxyAddress);
+ this.pnlProxyBasic.Controls.Add(this.txtProxyAddress);
+ this.pnlProxyBasic.Controls.Add(this.lblProxyPort);
+ this.pnlProxyBasic.Controls.Add(this.numProxyPort);
+ this.pnlProxyBasic.Enabled = false;
+ this.pnlProxyBasic.Location = new System.Drawing.Point(3, 32);
+ this.pnlProxyBasic.Name = "pnlProxyBasic";
+ this.pnlProxyBasic.Size = new System.Drawing.Size(604, 40);
+ this.pnlProxyBasic.TabIndex = 1;
+ //
+ //lblProxyAddress
+ //
+ this.lblProxyAddress.Location = new System.Drawing.Point(8, 4);
+ this.lblProxyAddress.Name = "lblProxyAddress";
+ this.lblProxyAddress.Size = new System.Drawing.Size(96, 24);
+ this.lblProxyAddress.TabIndex = 0;
+ this.lblProxyAddress.Text = "Address:";
+ this.lblProxyAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //txtProxyAddress
+ //
+ this.txtProxyAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtProxyAddress.Location = new System.Drawing.Point(104, 8);
+ this.txtProxyAddress.Name = "txtProxyAddress";
+ this.txtProxyAddress.Size = new System.Drawing.Size(240, 20);
+ this.txtProxyAddress.TabIndex = 1;
+ //
+ //lblProxyPort
+ //
+ this.lblProxyPort.Location = new System.Drawing.Point(350, 5);
+ this.lblProxyPort.Name = "lblProxyPort";
+ this.lblProxyPort.Size = new System.Drawing.Size(64, 23);
+ this.lblProxyPort.TabIndex = 2;
+ this.lblProxyPort.Text = "Port:";
+ this.lblProxyPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //numProxyPort
+ //
+ this.numProxyPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.numProxyPort.Location = new System.Drawing.Point(420, 8);
+ this.numProxyPort.Maximum = new decimal(new int[] {65535, 0, 0, 0});
+ this.numProxyPort.Minimum = new decimal(new int[] {1, 0, 0, 0});
+ this.numProxyPort.Name = "numProxyPort";
+ this.numProxyPort.Size = new System.Drawing.Size(64, 20);
+ this.numProxyPort.TabIndex = 3;
+ this.numProxyPort.Value = new decimal(new int[] {80, 0, 0, 0});
+ //
+ //chkUseProxyForAutomaticUpdates
+ //
+ this.chkUseProxyForAutomaticUpdates.AutoSize = true;
+ this.chkUseProxyForAutomaticUpdates.Location = new System.Drawing.Point(3, 8);
+ this.chkUseProxyForAutomaticUpdates.Name = "chkUseProxyForAutomaticUpdates";
+ this.chkUseProxyForAutomaticUpdates.Size = new System.Drawing.Size(168, 17);
+ this.chkUseProxyForAutomaticUpdates.TabIndex = 0;
+ this.chkUseProxyForAutomaticUpdates.Text = "Use a proxy server to connect";
+ this.chkUseProxyForAutomaticUpdates.UseVisualStyleBackColor = true;
+ //
+ //chkUseProxyAuthentication
+ //
+ this.chkUseProxyAuthentication.AutoSize = true;
+ this.chkUseProxyAuthentication.Enabled = false;
+ this.chkUseProxyAuthentication.Location = new System.Drawing.Point(27, 80);
+ this.chkUseProxyAuthentication.Name = "chkUseProxyAuthentication";
+ this.chkUseProxyAuthentication.Size = new System.Drawing.Size(216, 17);
+ this.chkUseProxyAuthentication.TabIndex = 2;
+ this.chkUseProxyAuthentication.Text = "This proxy server requires authentication";
+ this.chkUseProxyAuthentication.UseVisualStyleBackColor = true;
+ //
+ //pnlProxyAuthentication
+ //
+ this.pnlProxyAuthentication.Controls.Add(this.lblProxyUsername);
+ this.pnlProxyAuthentication.Controls.Add(this.txtProxyUsername);
+ this.pnlProxyAuthentication.Controls.Add(this.lblProxyPassword);
+ this.pnlProxyAuthentication.Controls.Add(this.txtProxyPassword);
+ this.pnlProxyAuthentication.Enabled = false;
+ this.pnlProxyAuthentication.Location = new System.Drawing.Point(3, 104);
+ this.pnlProxyAuthentication.Name = "pnlProxyAuthentication";
+ this.pnlProxyAuthentication.Size = new System.Drawing.Size(604, 72);
+ this.pnlProxyAuthentication.TabIndex = 3;
+ //
+ //lblProxyUsername
+ //
+ this.lblProxyUsername.Location = new System.Drawing.Point(8, 4);
+ this.lblProxyUsername.Name = "lblProxyUsername";
+ this.lblProxyUsername.Size = new System.Drawing.Size(96, 24);
+ this.lblProxyUsername.TabIndex = 0;
+ this.lblProxyUsername.Text = "Username:";
+ this.lblProxyUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //txtProxyUsername
+ //
+ this.txtProxyUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtProxyUsername.Location = new System.Drawing.Point(104, 8);
+ this.txtProxyUsername.Name = "txtProxyUsername";
+ this.txtProxyUsername.Size = new System.Drawing.Size(240, 20);
+ this.txtProxyUsername.TabIndex = 1;
+ //
+ //lblProxyPassword
+ //
+ this.lblProxyPassword.Location = new System.Drawing.Point(8, 36);
+ this.lblProxyPassword.Name = "lblProxyPassword";
+ this.lblProxyPassword.Size = new System.Drawing.Size(96, 24);
+ this.lblProxyPassword.TabIndex = 2;
+ this.lblProxyPassword.Text = "Password:";
+ this.lblProxyPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //txtProxyPassword
+ //
+ this.txtProxyPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtProxyPassword.Location = new System.Drawing.Point(104, 40);
+ this.txtProxyPassword.Name = "txtProxyPassword";
+ this.txtProxyPassword.Size = new System.Drawing.Size(240, 20);
+ this.txtProxyPassword.TabIndex = 3;
+ this.txtProxyPassword.UseSystemPasswordChar = true;
+ //
+ //btnTestProxy
+ //
+ this.btnTestProxy.Location = new System.Drawing.Point(3, 184);
+ this.btnTestProxy.Name = "btnTestProxy";
+ this.btnTestProxy.Size = new System.Drawing.Size(120, 32);
+ this.btnTestProxy.TabIndex = 4;
+ this.btnTestProxy.Text = "Test Proxy";
+ this.btnTestProxy.UseVisualStyleBackColor = true;
+ //
+ //UpdatesPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lblUpdatesExplanation);
+ this.Controls.Add(this.pnlUpdateCheck);
+ this.Controls.Add(this.pnlProxy);
+ this.Name = "UpdatesPage";
+ this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
+ this.Size = new System.Drawing.Size(610, 489);
+ this.pnlUpdateCheck.ResumeLayout(false);
+ this.pnlUpdateCheck.PerformLayout();
+ this.pnlProxy.ResumeLayout(false);
+ this.pnlProxy.PerformLayout();
+ this.pnlProxyBasic.ResumeLayout(false);
+ this.pnlProxyBasic.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.numProxyPort).EndInit();
+ this.pnlProxyAuthentication.ResumeLayout(false);
+ this.pnlProxyAuthentication.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.Label lblUpdatesExplanation;
+ internal System.Windows.Forms.Panel pnlUpdateCheck;
+ internal System.Windows.Forms.Button btnUpdateCheckNow;
+ internal System.Windows.Forms.CheckBox chkCheckForUpdatesOnStartup;
+ internal System.Windows.Forms.ComboBox cboUpdateCheckFrequency;
+ internal System.Windows.Forms.Panel pnlProxy;
+ internal System.Windows.Forms.Panel pnlProxyBasic;
+ internal System.Windows.Forms.Label lblProxyAddress;
+ internal System.Windows.Forms.TextBox txtProxyAddress;
+ internal System.Windows.Forms.Label lblProxyPort;
+ internal System.Windows.Forms.NumericUpDown numProxyPort;
+ internal System.Windows.Forms.CheckBox chkUseProxyForAutomaticUpdates;
+ internal System.Windows.Forms.CheckBox chkUseProxyAuthentication;
+ internal System.Windows.Forms.Panel pnlProxyAuthentication;
+ internal System.Windows.Forms.Label lblProxyUsername;
+ internal System.Windows.Forms.TextBox txtProxyUsername;
+ internal System.Windows.Forms.Label lblProxyPassword;
+ internal System.Windows.Forms.TextBox txtProxyPassword;
+ internal System.Windows.Forms.Button btnTestProxy;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.cs b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.cs
new file mode 100644
index 000000000..9c513920c
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.cs
@@ -0,0 +1,261 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.My;
+using mRemoteNG.App;
+//using mRemoteNG.App.Info;
+using mRemoteNG.Security;
+using mRemoteNG.Tools;
+using mRemoteNG.UI.Window;
+using PSTaskDialog;
+
+
+namespace mRemoteNG.Forms.OptionsPages
+{
+ public partial class UpdatesPage
+ {
+ public UpdatesPage()
+ {
+ InitializeComponent();
+ }
+#region Public Methods
+public override string PageName
+ {
+ get
+ {
+ return Language.strTabUpdates;
+ }
+ set
+ {
+ }
+ }
+
+ public override void ApplyLanguage()
+ {
+ base.ApplyLanguage();
+
+#if !PORTABLE
+ lblUpdatesExplanation.Text = Language.strUpdateCheck;
+#else
+ lblUpdatesExplanation.Text = Language.strUpdateCheckPortableEdition;
+#endif
+
+ chkCheckForUpdatesOnStartup.Text = Language.strCheckForUpdatesOnStartup;
+ btnUpdateCheckNow.Text = Language.strCheckNow;
+
+ chkUseProxyForAutomaticUpdates.Text = Language.strCheckboxUpdateUseProxy;
+ lblProxyAddress.Text = Language.strLabelAddress;
+ lblProxyPort.Text = Language.strLabelPort;
+
+ chkUseProxyAuthentication.Text = Language.strCheckboxProxyAuthentication;
+ lblProxyUsername.Text = Language.strLabelUsername;
+ lblProxyPassword.Text = Language.strLabelPassword;
+
+ btnTestProxy.Text = Language.strButtonTestProxy;
+ }
+
+ public override void LoadSettings()
+ {
+ base.SaveSettings();
+
+ chkCheckForUpdatesOnStartup.Checked = System.Convert.ToBoolean(My.Settings.Default.CheckForUpdatesOnStartup);
+ cboUpdateCheckFrequency.Enabled = chkCheckForUpdatesOnStartup.Checked;
+ cboUpdateCheckFrequency.Items.Clear();
+ int nDaily = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyDaily);
+ int nWeekly = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyWeekly);
+ int nMonthly = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyMonthly);
+ if (My.Settings.Default.CheckForUpdatesFrequencyDays < 1)
+ {
+ chkCheckForUpdatesOnStartup.Checked = false;
+ cboUpdateCheckFrequency.SelectedIndex = nDaily;
+ } // Daily
+ else if ((int) My.Settings.Default.CheckForUpdatesFrequencyDays == 1)
+ {
+ cboUpdateCheckFrequency.SelectedIndex = nDaily;
+ } // Weekly
+ else if ((int) My.Settings.Default.CheckForUpdatesFrequencyDays == 7)
+ {
+ cboUpdateCheckFrequency.SelectedIndex = nWeekly;
+ } // Monthly
+ else if ((int) My.Settings.Default.CheckForUpdatesFrequencyDays == 31)
+ {
+ cboUpdateCheckFrequency.SelectedIndex = nMonthly;
+ }
+ else
+ {
+ int nCustom = cboUpdateCheckFrequency.Items.Add(string.Format(Language.strUpdateFrequencyCustom, My.Settings.Default.CheckForUpdatesFrequencyDays));
+ cboUpdateCheckFrequency.SelectedIndex = nCustom;
+ }
+
+ chkUseProxyForAutomaticUpdates.Checked = System.Convert.ToBoolean(My.Settings.Default.UpdateUseProxy);
+ pnlProxyBasic.Enabled = System.Convert.ToBoolean(My.Settings.Default.UpdateUseProxy);
+ txtProxyAddress.Text = System.Convert.ToString(My.Settings.Default.UpdateProxyAddress);
+ numProxyPort.Value = System.Convert.ToDecimal(My.Settings.Default.UpdateProxyPort);
+
+ chkUseProxyAuthentication.Checked = System.Convert.ToBoolean(My.Settings.Default.UpdateProxyUseAuthentication);
+ pnlProxyAuthentication.Enabled = System.Convert.ToBoolean(My.Settings.Default.UpdateProxyUseAuthentication);
+ txtProxyUsername.Text = System.Convert.ToString(My.Settings.Default.UpdateProxyAuthUser);
+ txtProxyPassword.Text = Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.UpdateProxyAuthPass), App.Info.General.EncryptionKey);
+
+ btnTestProxy.Enabled = System.Convert.ToBoolean(My.Settings.Default.UpdateUseProxy);
+
+#if PORTABLE
+ foreach (Control Control in Controls)
+ {
+ if (Control != lblUpdatesExplanation)
+ {
+ Control.Visible = false;
+ }
+ }
+#endif
+ }
+
+ public override void SaveSettings()
+ {
+ base.SaveSettings();
+
+ My.Settings.Default.CheckForUpdatesOnStartup = chkCheckForUpdatesOnStartup.Checked;
+ if (cboUpdateCheckFrequency.SelectedItem.ToString() == Language.strUpdateFrequencyDaily)
+ {
+ My.Settings.Default.CheckForUpdatesFrequencyDays = 1;
+ }
+ else if (cboUpdateCheckFrequency.SelectedItem.ToString() == Language.strUpdateFrequencyWeekly)
+ {
+ My.Settings.Default.CheckForUpdatesFrequencyDays = 7;
+ }
+ else if (cboUpdateCheckFrequency.SelectedItem.ToString() == Language.strUpdateFrequencyMonthly)
+ {
+ My.Settings.Default.CheckForUpdatesFrequencyDays = 31;
+ }
+
+ My.Settings.Default.UpdateUseProxy = chkUseProxyForAutomaticUpdates.Checked;
+ My.Settings.Default.UpdateProxyAddress = txtProxyAddress.Text;
+ My.Settings.Default.UpdateProxyPort = numProxyPort.Value;
+
+ My.Settings.Default.UpdateProxyUseAuthentication = chkUseProxyAuthentication.Checked;
+ My.Settings.Default.UpdateProxyAuthUser = txtProxyUsername.Text;
+ My.Settings.Default.UpdateProxyAuthPass = Crypt.Encrypt(txtProxyPassword.Text, App.Info.General.EncryptionKey);
+ }
+#endregion
+
+#region Private Fields
+ private App.Update _appUpdate;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void chkCheckForUpdatesOnStartup_CheckedChanged(object sender, EventArgs e)
+ {
+ cboUpdateCheckFrequency.Enabled = chkCheckForUpdatesOnStartup.Checked;
+ }
+
+ public void btnUpdateCheckNow_Click(object sender, EventArgs e)
+ {
+ Runtime.Windows.Show(Type.Update);
+ }
+
+ public void chkUseProxyForAutomaticUpdates_CheckedChanged(object sender, EventArgs e)
+ {
+ pnlProxyBasic.Enabled = chkUseProxyForAutomaticUpdates.Checked;
+ btnTestProxy.Enabled = chkUseProxyForAutomaticUpdates.Checked;
+
+ if (chkUseProxyForAutomaticUpdates.Checked)
+ {
+ chkUseProxyAuthentication.Enabled = true;
+
+ if (chkUseProxyAuthentication.Checked)
+ {
+ pnlProxyAuthentication.Enabled = true;
+ }
+ }
+ else
+ {
+ chkUseProxyAuthentication.Enabled = false;
+ pnlProxyAuthentication.Enabled = false;
+ }
+ }
+
+ public void btnTestProxy_Click(object sender, EventArgs e)
+ {
+ if (_appUpdate != null)
+ {
+ if (_appUpdate.IsGetUpdateInfoRunning)
+ {
+ return ;
+ }
+ }
+
+ _appUpdate = new App.Update();
+ _appUpdate.Load += _appUpdate.Update_Load;
+ _appUpdate.SetProxySettings(chkUseProxyForAutomaticUpdates.Checked, txtProxyAddress.Text, (int) numProxyPort.Value, chkUseProxyAuthentication.Checked, txtProxyUsername.Text, txtProxyPassword.Text);
+
+ btnTestProxy.Enabled = false;
+ btnTestProxy.Text = Language.strOptionsProxyTesting;
+
+ _appUpdate.GetUpdateInfoCompletedEvent += GetUpdateInfoCompleted;
+
+ _appUpdate.GetUpdateInfoAsync();
+ }
+
+ public void chkUseProxyAuthentication_CheckedChanged(object sender, EventArgs e)
+ {
+ if (chkUseProxyForAutomaticUpdates.Checked)
+ {
+ if (chkUseProxyAuthentication.Checked)
+ {
+ pnlProxyAuthentication.Enabled = true;
+ }
+ else
+ {
+ pnlProxyAuthentication.Enabled = false;
+ }
+ }
+ }
+#endregion
+
+ private void GetUpdateInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (InvokeRequired)
+ {
+ AsyncCompletedEventHandler myDelegate = new AsyncCompletedEventHandler(GetUpdateInfoCompleted);
+ Invoke(myDelegate, new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetUpdateInfoCompletedEvent -= GetUpdateInfoCompleted;
+
+ btnTestProxy.Enabled = true;
+ btnTestProxy.Text = Language.strButtonTestProxy;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ cTaskDialog.ShowCommandBox(this, System.Convert.ToString(Application.Info.ProductName), Language.strProxyTestSucceeded, "", Language.strButtonOK, false);
+ }
+ catch (Exception ex)
+ {
+ cTaskDialog.ShowCommandBox(this, System.Convert.ToString(Application.Info.ProductName), Language.strProxyTestFailed, Misc.GetExceptionMessageRecursive(ex), "", "", "", Language.strButtonOK, false, eSysIcons.Error, (PSTaskDialog.eSysIcons) 0);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.resx b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.resx
new file mode 100644
index 000000000..90e6d05ef
--- /dev/null
+++ b/mRemoteV1/CS/Forms/OptionsPages/UpdatesPage.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AACjo6O3n5+f/5qamv+Wlpb/kZGR/42Njf+JiYn/hISE/4CAgP98fHz/eHh4/3R0dP9xcXH/bW1t/2pq
+ av9nZ2e3qKio/+np6f/T09P/0tLS/9HR0f/Q0ND/zs7O/83Nzf/Nzc3/y8vL/8vLy//Kysr/ycnJ/8jI
+ yP/i4uL/ampq/62trf/W1tb/urq6/7i4uP+1tbX/s7Oz/7Gxsf+wsLD/ra2t/6urq/+qqqr/qKio/6en
+ p/+mpqb/yMjI/25ubv+xsbH/2dnZ/729vf+6urr/uLi4/7a2tv+1tbX/s7Oz/7CwsP+vr6//ra2t/6ur
+ q/+pqan/qKio/8rKyv9ycnL/tra2/93d3f/BwcH/vb29/7y8vP+6urr/uLi4/7W1tf+0tLT/srKy/7Cw
+ sP+tra3/rKys/6ysrP/Pz8//dnZ2/7q6ur3a2tr/yMjI/8DAwP+/v7//vb29/7q6uv+4uLj/t7e3/7W1
+ tf+zs7P/sLCw/6+vr/+zs7P/wsLC/3t7e72+vr694+Pj/+fn5//h4eH/4ODg/+Dg4P/f39//39/f/97e
+ 3v/d3d3/3d3d/9zc3P/b29v/4ODg/9DQ0P9/f3+9w8PDP87Ozv/s7Oz/3t7e/9jY2P/S0tL/zMzM/8jI
+ yP/Hx8f/yMjI/8vLy//Q0ND/3d3d/+jo6P+kpKT/hISEQgAAAADDw8O94+Pj/9vb2//i4uL/t9C4/2St
+ aP92qmT/cK9o/1alYv+sxaz/wsLC/9HR0f/T09P/jY2NvQAAAAAAAAAAyMjIP9HR0f/z8/P/x97K/2TJ
+ hf+z3KT/58d8/9y/c/92zI//T61o/7jQuP/x8fH/r6+v/5KSkkIAAAAAAAAAAAAAAADIyMi9xMTE/3bO
+ i/+Z5Kv/sMVd/+q1SP/hojn/pZ1A/4LFj/9Jmlb/oKCg/5ubm70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AACI46n8oumV/9bPaf/is0f/0btP/8KuQv+CvWz/Xbh4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAj+Ws/KLwn//Y7a//3sVo/7TiZf9g5zn/a9dr/2i8gPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAG7Xh9zI99T/2PbK/+fjqf/bz2z/r9xo/53qq/9OrF/gAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABbw2hFkuau+tv46f/n8tj/7eWz/9/Zpv+F1I/7QqNOUAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFvDaEdz2IrZmuKl/Jvdmvxw0n/dUbddUAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAACcQQAAnEEAAJxBAACcQQAAnEEAAJxBAACcQQAAnEGAAZxBgAGcQcADnEHwD5xB8A+cQfAP
+ nEHwD5xB+B+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/PasswordForm.Designer.cs b/mRemoteV1/CS/Forms/PasswordForm.Designer.cs
new file mode 100644
index 000000000..22bc13c42
--- /dev/null
+++ b/mRemoteV1/CS/Forms/PasswordForm.Designer.cs
@@ -0,0 +1,183 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Forms
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class PasswordForm : System.Windows.Forms.Form
+ {
+
+ //Form overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ this.lblPassword = new System.Windows.Forms.Label();
+ this.Load += new System.EventHandler(frmPassword_Load);
+ this.lblVerify = new System.Windows.Forms.Label();
+ this.btnOK = new System.Windows.Forms.Button();
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ this.lblStatus = new System.Windows.Forms.Label();
+ this.pbLock = new System.Windows.Forms.PictureBox();
+ this.txtVerify = new mRemoteNG.Controls.TextBox();
+ this.txtVerify.TextChanged += new System.EventHandler(this.txtPassword_TextChanged);
+ this.txtPassword = new mRemoteNG.Controls.TextBox();
+ this.txtPassword.TextChanged += new System.EventHandler(this.txtPassword_TextChanged);
+ ((System.ComponentModel.ISupportInitialize) this.pbLock).BeginInit();
+ this.SuspendLayout();
+ //
+ //lblPassword
+ //
+ this.lblPassword.AutoSize = true;
+ this.lblPassword.Location = new System.Drawing.Point(82, 12);
+ this.lblPassword.Name = "lblPassword";
+ this.lblPassword.Size = new System.Drawing.Size(56, 13);
+ this.lblPassword.TabIndex = 1;
+ this.lblPassword.Text = "Password:";
+ //
+ //lblVerify
+ //
+ this.lblVerify.AutoSize = true;
+ this.lblVerify.Location = new System.Drawing.Point(82, 51);
+ this.lblVerify.Name = "lblVerify";
+ this.lblVerify.Size = new System.Drawing.Size(36, 13);
+ this.lblVerify.TabIndex = 3;
+ this.lblVerify.Text = "Verify:";
+ //
+ //btnOK
+ //
+ this.btnOK.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnOK.Location = new System.Drawing.Point(291, 119);
+ this.btnOK.Name = "btnOK";
+ this.btnOK.Size = new System.Drawing.Size(75, 23);
+ this.btnOK.TabIndex = 7;
+ this.btnOK.Text = global::mRemoteNG.My.Language.strButtonOK;
+ this.btnOK.UseVisualStyleBackColor = true;
+ //
+ //btnCancel
+ //
+ this.btnCancel.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.Location = new System.Drawing.Point(210, 119);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(75, 23);
+ this.btnCancel.TabIndex = 6;
+ this.btnCancel.Text = global::mRemoteNG.My.Language.strButtonCancel;
+ this.btnCancel.UseVisualStyleBackColor = true;
+ //
+ //lblStatus
+ //
+ this.lblStatus.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblStatus.ForeColor = System.Drawing.Color.Red;
+ this.lblStatus.Location = new System.Drawing.Point(85, 90);
+ this.lblStatus.Name = "lblStatus";
+ this.lblStatus.Size = new System.Drawing.Size(281, 13);
+ this.lblStatus.TabIndex = 5;
+ this.lblStatus.Text = "Status";
+ this.lblStatus.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ this.lblStatus.Visible = false;
+ //
+ //pbLock
+ //
+ this.pbLock.Image = global::My.Resources.Resources.Lock;
+ this.pbLock.Location = new System.Drawing.Point(12, 12);
+ this.pbLock.Name = "pbLock";
+ this.pbLock.Size = new System.Drawing.Size(64, 64);
+ this.pbLock.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.pbLock.TabIndex = 7;
+ this.pbLock.TabStop = false;
+ //
+ //txtVerify
+ //
+ this.txtVerify.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtVerify.Location = new System.Drawing.Point(85, 67);
+ this.txtVerify.Name = "txtVerify";
+ this.txtVerify.SelectAllOnFocus = true;
+ this.txtVerify.Size = new System.Drawing.Size(281, 20);
+ this.txtVerify.TabIndex = 4;
+ this.txtVerify.UseSystemPasswordChar = true;
+ //
+ //txtPassword
+ //
+ this.txtPassword.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtPassword.Location = new System.Drawing.Point(85, 28);
+ this.txtPassword.Name = "txtPassword";
+ this.txtPassword.SelectAllOnFocus = true;
+ this.txtPassword.Size = new System.Drawing.Size(281, 20);
+ this.txtPassword.TabIndex = 2;
+ this.txtPassword.UseSystemPasswordChar = true;
+ //
+ //frmPassword
+ //
+ this.AcceptButton = this.btnOK;
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.btnCancel;
+ this.ClientSize = new System.Drawing.Size(378, 154);
+ this.ControlBox = false;
+ this.Controls.Add(this.pbLock);
+ this.Controls.Add(this.txtVerify);
+ this.Controls.Add(this.txtPassword);
+ this.Controls.Add(this.lblStatus);
+ this.Controls.Add(this.lblVerify);
+ this.Controls.Add(this.lblPassword);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.btnOK);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "PasswordForm";
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Password";
+ ((System.ComponentModel.ISupportInitialize) this.pbLock).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ private Controls.TextBox txtPassword;
+ private Controls.TextBox txtVerify;
+ private System.Windows.Forms.Label lblPassword;
+ private System.Windows.Forms.Label lblVerify;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.Button btnCancel;
+ private System.Windows.Forms.Label lblStatus;
+ private System.Windows.Forms.PictureBox pbLock;
+ }
+}
diff --git a/mRemoteV1/CS/Forms/PasswordForm.cs b/mRemoteV1/CS/Forms/PasswordForm.cs
new file mode 100644
index 000000000..73387d542
--- /dev/null
+++ b/mRemoteV1/CS/Forms/PasswordForm.cs
@@ -0,0 +1,159 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Forms
+{
+ public partial class PasswordForm
+ {
+#region Public Properties
+ private bool _Verify = true;
+public bool Verify
+ {
+ get
+ {
+ return _Verify;
+ }
+ set
+ {
+ _Verify = value;
+ }
+ }
+
+public string Password
+ {
+ get
+ {
+ if (Verify)
+ {
+ return txtVerify.Text;
+ }
+ else
+ {
+ return txtPassword.Text;
+ }
+ }
+ }
+#endregion
+
+
+#region Constructors
+ public PasswordForm(string passwordName = null, bool verify = true)
+ {
+ // This call is required by the designer.
+ InitializeComponent();
+
+ // Add any initialization after the InitializeComponent() call.
+ _passwordName = passwordName;
+ this.Verify = verify;
+ }
+#endregion
+
+#region Event Handlers
+ public void frmPassword_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+
+ if (!Verify)
+ {
+ Height = Height - (txtVerify.Top - txtPassword.Top);
+ lblVerify.Visible = false;
+ txtVerify.Visible = false;
+ }
+ }
+
+ public void btnCancel_Click(System.Object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ }
+
+ public void btnOK_Click(System.Object sender, EventArgs e)
+ {
+ if (Verify)
+ {
+ if (VerifyPassword())
+ {
+ DialogResult = DialogResult.OK;
+ }
+ }
+ else
+ {
+ DialogResult = DialogResult.OK;
+ }
+ }
+
+ public void txtPassword_TextChanged(System.Object sender, EventArgs e)
+ {
+ HideStatus();
+ }
+#endregion
+
+#region Private Fields
+ private string _passwordName;
+#endregion
+
+#region Private Methods
+ private void ApplyLanguage()
+ {
+ if (string.IsNullOrEmpty(_passwordName))
+ {
+ Text = Language.strTitlePassword;
+ }
+ else
+ {
+ Text = string.Format(Language.strTitlePasswordWithName, _passwordName);
+ }
+
+ lblPassword.Text = Language.strLabelPassword;
+ lblVerify.Text = Language.strLabelVerify;
+
+ btnCancel.Text = Language.strButtonCancel;
+ btnOK.Text = Language.strButtonOK;
+ }
+
+ private bool VerifyPassword()
+ {
+ if (txtPassword.Text.Length >= 3)
+ {
+ if (txtPassword.Text == txtVerify.Text)
+ {
+ return true;
+ }
+ else
+ {
+ ShowStatus(Language.strPasswordStatusMustMatch);
+ return false;
+ }
+ }
+ else
+ {
+ ShowStatus(Language.strPasswordStatusTooShort);
+ return false;
+ }
+ }
+
+ private void ShowStatus(string status)
+ {
+ lblStatus.Visible = true;
+ lblStatus.Text = status;
+ }
+
+ private void HideStatus()
+ {
+ lblStatus.Visible = false;
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Forms/PasswordForm.resx b/mRemoteV1/CS/Forms/PasswordForm.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/Forms/PasswordForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/frmChoosePanel.Designer.cs b/mRemoteV1/CS/Forms/frmChoosePanel.Designer.cs
new file mode 100644
index 000000000..8fdbf58d0
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmChoosePanel.Designer.cs
@@ -0,0 +1,137 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class frmChoosePanel : System.Windows.Forms.Form
+ {
+
+ //Form overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ this.cbPanels = new System.Windows.Forms.ComboBox();
+ base.Load += new System.EventHandler(frmChoosePanel_Load);
+ this.btnOK = new System.Windows.Forms.Button();
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ this.lblDescription = new System.Windows.Forms.Label();
+ this.btnNew = new System.Windows.Forms.Button();
+ this.btnNew.Click += new System.EventHandler(this.btnNew_Click);
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ this.SuspendLayout();
+ //
+ //cbPanels
+ //
+ this.cbPanels.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cbPanels.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.cbPanels.FormattingEnabled = true;
+ this.cbPanels.Location = new System.Drawing.Point(79, 45);
+ this.cbPanels.Name = "cbPanels";
+ this.cbPanels.Size = new System.Drawing.Size(157, 21);
+ this.cbPanels.TabIndex = 10;
+ //
+ //btnOK
+ //
+ this.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnOK.Location = new System.Drawing.Point(167, 74);
+ this.btnOK.Name = "btnOK";
+ this.btnOK.Size = new System.Drawing.Size(69, 23);
+ this.btnOK.TabIndex = 20;
+ this.btnOK.Text = My.Language.strButtonOK;
+ this.btnOK.UseVisualStyleBackColor = true;
+ //
+ //lblDescription
+ //
+ this.lblDescription.Location = new System.Drawing.Point(7, 8);
+ this.lblDescription.Name = "lblDescription";
+ this.lblDescription.Size = new System.Drawing.Size(229, 29);
+ this.lblDescription.TabIndex = 0;
+ this.lblDescription.Text = My.Language.strLabelSelectPanel;
+ //
+ //btnNew
+ //
+ this.btnNew.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnNew.Image = global::My.Resources.Resources.Panel_Add;
+ this.btnNew.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btnNew.Location = new System.Drawing.Point(10, 44);
+ this.btnNew.Name = "btnNew";
+ this.btnNew.Size = new System.Drawing.Size(57, 23);
+ this.btnNew.TabIndex = 40;
+ this.btnNew.Text = My.Language.strButtonNew;
+ this.btnNew.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.btnNew.UseVisualStyleBackColor = true;
+ //
+ //btnCancel
+ //
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnCancel.Location = new System.Drawing.Point(92, 74);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(69, 23);
+ this.btnCancel.TabIndex = 30;
+ this.btnCancel.Text = My.Language.strButtonCancel;
+ this.btnCancel.UseVisualStyleBackColor = true;
+ //
+ //frmChoosePanel
+ //
+ this.AcceptButton = this.btnOK;
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.btnCancel;
+ this.ClientSize = new System.Drawing.Size(245, 107);
+ this.Controls.Add(this.lblDescription);
+ this.Controls.Add(this.btnNew);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.btnOK);
+ this.Controls.Add(this.cbPanels);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = global::My.Resources.Resources.Panels_Icon;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "frmChoosePanel";
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = My.Language.strTitleSelectPanel;
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.ComboBox cbPanels;
+ internal System.Windows.Forms.Button btnOK;
+ internal System.Windows.Forms.Label lblDescription;
+ internal System.Windows.Forms.Button btnNew;
+ internal System.Windows.Forms.Button btnCancel;
+ }
+}
diff --git a/mRemoteV1/CS/Forms/frmChoosePanel.cs b/mRemoteV1/CS/Forms/frmChoosePanel.cs
new file mode 100644
index 000000000..a1940b4f1
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmChoosePanel.cs
@@ -0,0 +1,97 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+
+namespace mRemoteNG
+{
+ public partial class frmChoosePanel
+ {
+ public frmChoosePanel()
+ {
+ InitializeComponent();
+ }
+public string Panel
+ {
+ get
+ {
+ return cbPanels.SelectedItem.ToString();
+ }
+ set
+ {
+ cbPanels.SelectedItem = value;
+ }
+ }
+
+ public void frmChoosePanel_Load(System.Object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+
+ AddAvailablePanels();
+ }
+
+ private void ApplyLanguage()
+ {
+ btnOK.Text = My.Language.strButtonOK;
+ lblDescription.Text = My.Language.strLabelSelectPanel;
+ btnNew.Text = My.Language.strButtonNew;
+ btnCancel.Text = My.Language.strButtonCancel;
+ Text = My.Language.strTitleSelectPanel;
+ }
+
+ private void AddAvailablePanels()
+ {
+ cbPanels.Items.Clear();
+
+ for (int i = 0; i <= WindowList.Count - 1; i++)
+ {
+ cbPanels.Items.Add(WindowList[i].Text.Replace("&&", "&"));
+ }
+
+ if (cbPanels.Items.Count > 0)
+ {
+ cbPanels.SelectedItem = cbPanels.Items[0];
+ cbPanels.Enabled = true;
+ btnOK.Enabled = true;
+ }
+ else
+ {
+ cbPanels.Enabled = false;
+ btnOK.Enabled = false;
+ }
+ }
+
+ public void btnNew_Click(System.Object sender, System.EventArgs e)
+ {
+ string pnlName = Interaction.InputBox(My.Language.strPanelName + ":", My.Language.strNewPanel, My.Language.strNewPanel);
+
+ if (!string.IsNullOrEmpty(pnlName))
+ {
+ AddPanel(pnlName);
+ AddAvailablePanels();
+ cbPanels.SelectedItem = pnlName;
+ cbPanels.Focus();
+ }
+ }
+
+ public void btnOK_Click(System.Object sender, System.EventArgs e)
+ {
+ this.DialogResult = System.Windows.Forms.DialogResult.OK;
+ }
+
+ public void btnCancel_Click(System.Object sender, System.EventArgs e)
+ {
+ this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Forms/frmChoosePanel.resx b/mRemoteV1/CS/Forms/frmChoosePanel.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmChoosePanel.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/frmMain.Designer.cs b/mRemoteV1/CS/Forms/frmMain.Designer.cs
new file mode 100644
index 000000000..4fd5a78da
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmMain.Designer.cs
@@ -0,0 +1,997 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class frmMain : System.Windows.Forms.Form
+ {
+
+ //Form overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(frmMain_Load);
+ this.Shown += new System.EventHandler(frmMain_Shown);
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(frmMain_FormClosing);
+ this.ResizeBegin += new System.EventHandler(frmMain_ResizeBegin);
+ this.Resize += new System.EventHandler(frmMain_Resize);
+ this.ResizeEnd += new System.EventHandler(frmMain_ResizeEnd);
+ WeifenLuo.WinFormsUI.Docking.DockPanelSkin DockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
+ WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin AutoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
+ WeifenLuo.WinFormsUI.Docking.DockPanelGradient DockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin DockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
+ WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient DockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.DockPanelGradient DockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient DockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.DockPanelGradient DockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ WeifenLuo.WinFormsUI.Docking.TabGradient TabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain));
+ this.pnlDock = new WeifenLuo.WinFormsUI.Docking.DockPanel();
+ this.pnlDock.ActiveDocumentChanged += new System.EventHandler(this.pnlDock_ActiveDocumentChanged);
+ this.msMain = new System.Windows.Forms.MenuStrip();
+ this.mMenFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFile.DropDownOpening += new System.EventHandler(this.mMenFile_DropDownOpening);
+ this.mMenFileNewConnection = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileNewConnection.Click += new System.EventHandler(this.mMenFileNewConnection_Click);
+ this.mMenFileNewFolder = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileNewFolder.Click += new System.EventHandler(this.mMenFileNewFolder_Click);
+ this.mMenFileSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenFileNew = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileNew.Click += new System.EventHandler(this.mMenFileNew_Click);
+ this.mMenFileLoad = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileLoad.Click += new System.EventHandler(this.mMenFileLoad_Click);
+ this.mMenFileSave = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileSave.Click += new System.EventHandler(this.mMenFileSave_Click);
+ this.mMenFileSaveAs = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileSaveAs.Click += new System.EventHandler(this.mMenFileSaveAs_Click);
+ this.mMenFileSep2 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenFileImport = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileImportFromFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileImportFromFile.Click += new System.EventHandler(this.mMenFileImportFromFile_Click);
+ this.mMenFileImportFromActiveDirectory = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileImportFromActiveDirectory.Click += new System.EventHandler(this.mMenFileImportFromActiveDirectory_Click);
+ this.mMenFileImportFromPortScan = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileImportFromPortScan.Click += new System.EventHandler(this.mMenFileImportFromPortScan_Click);
+ this.mMenFileExport = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileExport.Click += new System.EventHandler(this.mMenFileExport_Click);
+ this.mMenFileSep3 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenFileDelete = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileDelete.Click += new System.EventHandler(this.mMenFileDelete_Click);
+ this.mMenFileRename = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileRename.Click += new System.EventHandler(this.mMenFileRename_Click);
+ this.mMenFileDuplicate = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileDuplicate.Click += new System.EventHandler(this.mMenFileDuplicate_Click);
+ this.mMenFileSep4 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenFileExit = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileExit.Click += new System.EventHandler(this.mMenFileExit_Click);
+ this.mMenView = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenView.DropDownOpening += new System.EventHandler(this.mMenView_DropDownOpening);
+ this.mMenViewAddConnectionPanel = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewAddConnectionPanel.Click += new System.EventHandler(this.mMenViewAddConnectionPanel_Click);
+ this.mMenViewConnectionPanels = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenViewConnections = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewConnections.Click += new System.EventHandler(this.mMenViewConnections_Click);
+ this.mMenViewConfig = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewConfig.Click += new System.EventHandler(this.mMenViewConfig_Click);
+ this.mMenViewSessions = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewSessions.Click += new System.EventHandler(this.mMenViewSessions_Click);
+ this.mMenViewErrorsAndInfos = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewErrorsAndInfos.Click += new System.EventHandler(this.mMenViewErrorsAndInfos_Click);
+ this.mMenViewScreenshotManager = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewScreenshotManager.Click += new System.EventHandler(this.mMenViewScreenshotManager_Click);
+ this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenViewJumpTo = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewJumpToConnectionsConfig = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewJumpToConnectionsConfig.Click += new System.EventHandler(this.mMenViewJumpToConnectionsConfig_Click);
+ this.mMenViewJumpToSessionsScreenshots = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewJumpToSessionsScreenshots.Click += new System.EventHandler(this.mMenViewJumpToSessionsScreenshots_Click);
+ this.mMenViewJumpToErrorsInfos = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewJumpToErrorsInfos.Click += new System.EventHandler(this.mMenViewJumpToErrorsInfos_Click);
+ this.mMenViewResetLayout = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewResetLayout.Click += new System.EventHandler(this.mMenViewResetLayout_Click);
+ this.mMenViewSep2 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenViewQuickConnectToolbar = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewQuickConnectToolbar.Click += new System.EventHandler(this.mMenViewQuickConnectToolbar_Click);
+ this.mMenViewExtAppsToolbar = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewExtAppsToolbar.Click += new System.EventHandler(this.mMenViewExtAppsToolbar_Click);
+ this.mMenViewSep3 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenViewFullscreen = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewFullscreen.Click += new System.EventHandler(this.mMenViewFullscreen_Click);
+ this.mMenTools = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsSSHTransfer = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsSSHTransfer.Click += new System.EventHandler(this.mMenToolsSSHTransfer_Click);
+ this.mMenToolsUVNCSC = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsUVNCSC.Click += new System.EventHandler(this.mMenToolsUVNCSC_Click);
+ this.mMenToolsExternalApps = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsExternalApps.Click += new System.EventHandler(this.mMenToolsExternalApps_Click);
+ this.mMenToolsPortScan = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsPortScan.Click += new System.EventHandler(this.mMenToolsPortScan_Click);
+ this.mMenToolsSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenToolsComponentsCheck = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsComponentsCheck.Click += new System.EventHandler(this.mMenToolsComponentsCheck_Click);
+ this.mMenToolsOptions = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsOptions.Click += new System.EventHandler(this.mMenToolsOptions_Click);
+ this.mMenInfo = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoHelp = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoHelp.Click += new System.EventHandler(this.mMenInfoHelp_Click);
+ this.mMenInfoSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenInfoWebsite = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoWebsite.Click += new System.EventHandler(this.mMenInfoWebsite_Click);
+ this.mMenInfoDonate = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoDonate.Click += new System.EventHandler(this.mMenInfoDonate_Click);
+ this.mMenInfoForum = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoForum.Click += new System.EventHandler(this.mMenInfoForum_Click);
+ this.mMenInfoBugReport = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoBugReport.Click += new System.EventHandler(this.mMenInfoBugReport_Click);
+ this.ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenInfoAnnouncements = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoAnnouncements.Click += new System.EventHandler(this.mMenInfoAnnouncements_Click);
+ this.mMenToolsUpdate = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenToolsUpdate.Click += new System.EventHandler(this.mMenToolsUpdate_Click);
+ this.mMenInfoSep2 = new System.Windows.Forms.ToolStripSeparator();
+ this.mMenInfoAbout = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenInfoAbout.Click += new System.EventHandler(this.mMenInfoAbout_Click);
+ this.mMenSep3 = new System.Windows.Forms.ToolStripSeparator();
+ this.lblQuickConnect = new System.Windows.Forms.ToolStripLabel();
+ this.lblQuickConnect.Click += new System.EventHandler(this.lblQuickConnect_Click);
+ this.cmbQuickConnect = new mRemoteNG.Controls.QuickConnectComboBox();
+ this.cmbQuickConnect.ConnectRequested += new mRemoteNG.Controls.QuickConnectComboBox.ConnectRequestedEventHandler(this.cmbQuickConnect_ConnectRequested);
+ this.cmbQuickConnect.ProtocolChanged += new mRemoteNG.Controls.QuickConnectComboBox.ProtocolChangedEventHandler(this.cmbQuickConnect_ProtocolChanged);
+ this.tsContainer = new System.Windows.Forms.ToolStripContainer();
+ this.tsQuickConnect = new System.Windows.Forms.ToolStrip();
+ this.btnQuickConnect = new mRemoteNG.Controls.ToolStripSplitButton();
+ this.btnQuickConnect.ButtonClick += new System.EventHandler(this.btnQuickConnect_ButtonClick);
+ this.btnQuickConnect.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.btnQuickConnect_DropDownItemClicked);
+ this.mnuQuickConnectProtocol = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.btnConnections = new System.Windows.Forms.ToolStripDropDownButton();
+ this.btnConnections.DropDownOpening += new System.EventHandler(this.btnConnections_DropDownOpening);
+ this.mnuConnections = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.tsExternalTools = new System.Windows.Forms.ToolStrip();
+ this.cMenExtAppsToolbar = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.cMenToolbarShowText = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenToolbarShowText.Click += new System.EventHandler(this.cMenToolbarShowText_Click);
+ this.ToolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.ToolStripButton1 = new System.Windows.Forms.ToolStripButton();
+ this.ToolStripButton2 = new System.Windows.Forms.ToolStripButton();
+ this.ToolStripButton3 = new System.Windows.Forms.ToolStripButton();
+ this.ToolStripSplitButton1 = new System.Windows.Forms.ToolStripDropDownButton();
+ this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+ this.tmrAutoSave = new System.Windows.Forms.Timer(this.components);
+ this.tmrAutoSave.Tick += new System.EventHandler(this.tmrAutoSave_Tick);
+ this.msMain.SuspendLayout();
+ this.tsContainer.ContentPanel.SuspendLayout();
+ this.tsContainer.TopToolStripPanel.SuspendLayout();
+ this.tsContainer.SuspendLayout();
+ this.tsQuickConnect.SuspendLayout();
+ this.cMenExtAppsToolbar.SuspendLayout();
+ this.ToolStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //pnlDock
+ //
+ this.pnlDock.ActiveAutoHideContent = null;
+ this.pnlDock.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.pnlDock.DockBackColor = System.Drawing.SystemColors.Control;
+ this.pnlDock.DockLeftPortion = 230.0D;
+ this.pnlDock.DockRightPortion = 230.0D;
+ this.pnlDock.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingSdi;
+ this.pnlDock.Location = new System.Drawing.Point(0, 0);
+ this.pnlDock.Name = "pnlDock";
+ this.pnlDock.Size = new System.Drawing.Size(842, 449);
+ DockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
+ DockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
+ AutoHideStripSkin2.DockStripGradient = DockPanelGradient4;
+ TabGradient8.EndColor = System.Drawing.SystemColors.Control;
+ TabGradient8.StartColor = System.Drawing.SystemColors.Control;
+ TabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+ AutoHideStripSkin2.TabGradient = TabGradient8;
+ AutoHideStripSkin2.TextFont = new System.Drawing.Font("Segoe UI", (float) (9.0F));
+ DockPanelSkin2.AutoHideStripSkin = AutoHideStripSkin2;
+ TabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
+ TabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
+ TabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
+ DockPaneStripGradient2.ActiveTabGradient = TabGradient9;
+ DockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
+ DockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
+ DockPaneStripGradient2.DockStripGradient = DockPanelGradient5;
+ TabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
+ TabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
+ TabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
+ DockPaneStripGradient2.InactiveTabGradient = TabGradient10;
+ DockPaneStripSkin2.DocumentGradient = DockPaneStripGradient2;
+ DockPaneStripSkin2.TextFont = new System.Drawing.Font("Segoe UI", (float) (9.0F));
+ TabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
+ TabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+ TabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
+ TabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
+ DockPaneStripToolWindowGradient2.ActiveCaptionGradient = TabGradient11;
+ TabGradient12.EndColor = System.Drawing.SystemColors.Control;
+ TabGradient12.StartColor = System.Drawing.SystemColors.Control;
+ TabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
+ DockPaneStripToolWindowGradient2.ActiveTabGradient = TabGradient12;
+ DockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
+ DockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
+ DockPaneStripToolWindowGradient2.DockStripGradient = DockPanelGradient6;
+ TabGradient13.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
+ TabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+ TabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
+ TabGradient13.TextColor = System.Drawing.SystemColors.ControlText;
+ DockPaneStripToolWindowGradient2.InactiveCaptionGradient = TabGradient13;
+ TabGradient14.EndColor = System.Drawing.Color.Transparent;
+ TabGradient14.StartColor = System.Drawing.Color.Transparent;
+ TabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+ DockPaneStripToolWindowGradient2.InactiveTabGradient = TabGradient14;
+ DockPaneStripSkin2.ToolWindowGradient = DockPaneStripToolWindowGradient2;
+ DockPanelSkin2.DockPaneStripSkin = DockPaneStripSkin2;
+ this.pnlDock.Skin = DockPanelSkin2;
+ this.pnlDock.TabIndex = 13;
+ //
+ //msMain
+ //
+ this.msMain.Dock = System.Windows.Forms.DockStyle.None;
+ this.msMain.GripMargin = new System.Windows.Forms.Padding(0);
+ this.msMain.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible;
+ this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenFile, this.mMenView, this.mMenTools, this.mMenInfo});
+ this.msMain.Location = new System.Drawing.Point(3, 0);
+ this.msMain.Name = "msMain";
+ this.msMain.Padding = new System.Windows.Forms.Padding(2, 2, 0, 2);
+ this.msMain.Size = new System.Drawing.Size(274, 24);
+ this.msMain.Stretch = false;
+ this.msMain.TabIndex = 16;
+ this.msMain.Text = "Main Toolbar";
+ //
+ //mMenFile
+ //
+ this.mMenFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenFileNewConnection, this.mMenFileNewFolder, this.mMenFileSep1, this.mMenFileNew, this.mMenFileLoad, this.mMenFileSave, this.mMenFileSaveAs, this.mMenFileSep2, this.mMenFileDelete, this.mMenFileRename, this.mMenFileDuplicate, this.mMenFileSep3, this.mMenFileImport, this.mMenFileExport, this.mMenFileSep4, this.mMenFileExit});
+ this.mMenFile.Name = "mMenFile";
+ this.mMenFile.Size = new System.Drawing.Size(37, 20);
+ this.mMenFile.Text = "&File";
+ //
+ //mMenFileNewConnection
+ //
+ this.mMenFileNewConnection.Image = global::My.Resources.Resources.Connection_Add;
+ this.mMenFileNewConnection.Name = "mMenFileNewConnection";
+ this.mMenFileNewConnection.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N);
+ this.mMenFileNewConnection.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileNewConnection.Text = "New Connection";
+ //
+ //mMenFileNewFolder
+ //
+ this.mMenFileNewFolder.Image = global::My.Resources.Resources.Folder_Add;
+ this.mMenFileNewFolder.Name = "mMenFileNewFolder";
+ this.mMenFileNewFolder.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.N);
+ this.mMenFileNewFolder.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileNewFolder.Text = "New Folder";
+ //
+ //mMenFileSep1
+ //
+ this.mMenFileSep1.Name = "mMenFileSep1";
+ this.mMenFileSep1.Size = new System.Drawing.Size(278, 6);
+ //
+ //mMenFileNew
+ //
+ this.mMenFileNew.Image = global::My.Resources.Resources.Connections_New;
+ this.mMenFileNew.Name = "mMenFileNew";
+ this.mMenFileNew.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileNew.Text = "New Connection File";
+ //
+ //mMenFileLoad
+ //
+ this.mMenFileLoad.Image = global::My.Resources.Resources.Connections_Load;
+ this.mMenFileLoad.Name = "mMenFileLoad";
+ this.mMenFileLoad.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O);
+ this.mMenFileLoad.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileLoad.Text = "Open Connection File...";
+ //
+ //mMenFileSave
+ //
+ this.mMenFileSave.Image = global::My.Resources.Resources.Connections_Save;
+ this.mMenFileSave.Name = "mMenFileSave";
+ this.mMenFileSave.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S);
+ this.mMenFileSave.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileSave.Text = "Save Connection File";
+ //
+ //mMenFileSaveAs
+ //
+ this.mMenFileSaveAs.Image = global::My.Resources.Resources.Connections_SaveAs;
+ this.mMenFileSaveAs.Name = "mMenFileSaveAs";
+ this.mMenFileSaveAs.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.S);
+ this.mMenFileSaveAs.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileSaveAs.Text = "Save Connection File As...";
+ //
+ //mMenFileSep2
+ //
+ this.mMenFileSep2.Name = "mMenFileSep2";
+ this.mMenFileSep2.Size = new System.Drawing.Size(278, 6);
+ //
+ //mMenFileImport
+ //
+ this.mMenFileImport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenFileImportFromFile, this.mMenFileImportFromActiveDirectory, this.mMenFileImportFromPortScan});
+ this.mMenFileImport.Name = "mMenFileImport";
+ this.mMenFileImport.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileImport.Text = "&Import";
+ //
+ //mMenFileImportFromFile
+ //
+ this.mMenFileImportFromFile.Name = "mMenFileImportFromFile";
+ this.mMenFileImportFromFile.Size = new System.Drawing.Size(235, 22);
+ this.mMenFileImportFromFile.Text = "Import from &File...";
+ //
+ //mMenFileImportFromActiveDirectory
+ //
+ this.mMenFileImportFromActiveDirectory.Name = "mMenFileImportFromActiveDirectory";
+ this.mMenFileImportFromActiveDirectory.Size = new System.Drawing.Size(235, 22);
+ this.mMenFileImportFromActiveDirectory.Text = "Import from &Active Directory...";
+ //
+ //mMenFileImportFromPortScan
+ //
+ this.mMenFileImportFromPortScan.Name = "mMenFileImportFromPortScan";
+ this.mMenFileImportFromPortScan.Size = new System.Drawing.Size(235, 22);
+ this.mMenFileImportFromPortScan.Text = "Import from &Port Scan...";
+ //
+ //mMenFileExport
+ //
+ this.mMenFileExport.Name = "mMenFileExport";
+ this.mMenFileExport.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileExport.Text = "&Export to File...";
+ //
+ //mMenFileSep3
+ //
+ this.mMenFileSep3.Name = "mMenFileSep3";
+ this.mMenFileSep3.Size = new System.Drawing.Size(278, 6);
+ //
+ //mMenFileDelete
+ //
+ this.mMenFileDelete.Image = global::My.Resources.Resources.Delete;
+ this.mMenFileDelete.Name = "mMenFileDelete";
+ this.mMenFileDelete.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileDelete.Text = "Delete...";
+ //
+ //mMenFileRename
+ //
+ this.mMenFileRename.Image = global::My.Resources.Resources.Rename;
+ this.mMenFileRename.Name = "mMenFileRename";
+ this.mMenFileRename.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileRename.Text = "Rename";
+ //
+ //mMenFileDuplicate
+ //
+ this.mMenFileDuplicate.Image = global::My.Resources.Resources.page_copy;
+ this.mMenFileDuplicate.Name = "mMenFileDuplicate";
+ this.mMenFileDuplicate.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileDuplicate.Text = "Duplicate";
+ //
+ //mMenFileSep4
+ //
+ this.mMenFileSep4.Name = "mMenFileSep4";
+ this.mMenFileSep4.Size = new System.Drawing.Size(278, 6);
+ //
+ //mMenFileExit
+ //
+ this.mMenFileExit.Image = global::My.Resources.Resources.Quit;
+ this.mMenFileExit.Name = "mMenFileExit";
+ this.mMenFileExit.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4);
+ this.mMenFileExit.Size = new System.Drawing.Size(281, 22);
+ this.mMenFileExit.Text = "Exit";
+ //
+ //mMenView
+ //
+ this.mMenView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenViewAddConnectionPanel, this.mMenViewConnectionPanels, this.mMenViewSep1, this.mMenViewConnections, this.mMenViewConfig, this.mMenViewSessions, this.mMenViewErrorsAndInfos, this.mMenViewScreenshotManager, this.ToolStripSeparator1, this.mMenViewJumpTo, this.mMenViewResetLayout, this.mMenViewSep2, this.mMenViewQuickConnectToolbar, this.mMenViewExtAppsToolbar, this.mMenViewSep3, this.mMenViewFullscreen});
+ this.mMenView.Name = "mMenView";
+ this.mMenView.Size = new System.Drawing.Size(44, 20);
+ this.mMenView.Text = "&View";
+ //
+ //mMenViewAddConnectionPanel
+ //
+ this.mMenViewAddConnectionPanel.Image = global::My.Resources.Resources.Panel_Add;
+ this.mMenViewAddConnectionPanel.Name = "mMenViewAddConnectionPanel";
+ this.mMenViewAddConnectionPanel.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewAddConnectionPanel.Text = "Add Connection Panel";
+ //
+ //mMenViewConnectionPanels
+ //
+ this.mMenViewConnectionPanels.Image = global::My.Resources.Resources.Panels;
+ this.mMenViewConnectionPanels.Name = "mMenViewConnectionPanels";
+ this.mMenViewConnectionPanels.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewConnectionPanels.Text = "Connection Panels";
+ //
+ //mMenViewSep1
+ //
+ this.mMenViewSep1.Name = "mMenViewSep1";
+ this.mMenViewSep1.Size = new System.Drawing.Size(225, 6);
+ //
+ //mMenViewConnections
+ //
+ this.mMenViewConnections.Checked = true;
+ this.mMenViewConnections.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.mMenViewConnections.Image = global::My.Resources.Resources.Root;
+ this.mMenViewConnections.Name = "mMenViewConnections";
+ this.mMenViewConnections.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewConnections.Text = "Connections";
+ //
+ //mMenViewConfig
+ //
+ this.mMenViewConfig.Checked = true;
+ this.mMenViewConfig.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.mMenViewConfig.Image = global::My.Resources.Resources.cog;
+ this.mMenViewConfig.Name = "mMenViewConfig";
+ this.mMenViewConfig.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewConfig.Text = "Config";
+ //
+ //mMenViewSessions
+ //
+ this.mMenViewSessions.Checked = true;
+ this.mMenViewSessions.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.mMenViewSessions.Image = (System.Drawing.Image) (resources.GetObject("mMenViewSessions.Image"));
+ this.mMenViewSessions.Name = "mMenViewSessions";
+ this.mMenViewSessions.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewSessions.Text = "Sessions";
+ //
+ //mMenViewErrorsAndInfos
+ //
+ this.mMenViewErrorsAndInfos.Checked = true;
+ this.mMenViewErrorsAndInfos.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.mMenViewErrorsAndInfos.Image = global::My.Resources.Resources.ErrorsAndInfos;
+ this.mMenViewErrorsAndInfos.Name = "mMenViewErrorsAndInfos";
+ this.mMenViewErrorsAndInfos.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewErrorsAndInfos.Text = "Errors and Infos";
+ //
+ //mMenViewScreenshotManager
+ //
+ this.mMenViewScreenshotManager.Image = (System.Drawing.Image) (resources.GetObject("mMenViewScreenshotManager.Image"));
+ this.mMenViewScreenshotManager.Name = "mMenViewScreenshotManager";
+ this.mMenViewScreenshotManager.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewScreenshotManager.Text = "Screenshot Manager";
+ //
+ //ToolStripSeparator1
+ //
+ this.ToolStripSeparator1.Name = "ToolStripSeparator1";
+ this.ToolStripSeparator1.Size = new System.Drawing.Size(225, 6);
+ //
+ //mMenViewJumpTo
+ //
+ this.mMenViewJumpTo.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenViewJumpToConnectionsConfig, this.mMenViewJumpToSessionsScreenshots, this.mMenViewJumpToErrorsInfos});
+ this.mMenViewJumpTo.Image = global::My.Resources.Resources.JumpTo;
+ this.mMenViewJumpTo.Name = "mMenViewJumpTo";
+ this.mMenViewJumpTo.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewJumpTo.Text = "Jump To";
+ //
+ //mMenViewJumpToConnectionsConfig
+ //
+ this.mMenViewJumpToConnectionsConfig.Image = global::My.Resources.Resources.Root;
+ this.mMenViewJumpToConnectionsConfig.Name = "mMenViewJumpToConnectionsConfig";
+ this.mMenViewJumpToConnectionsConfig.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Alt)
+ | System.Windows.Forms.Keys.C);
+ this.mMenViewJumpToConnectionsConfig.Size = new System.Drawing.Size(260, 22);
+ this.mMenViewJumpToConnectionsConfig.Text = "Connections && Config";
+ //
+ //mMenViewJumpToSessionsScreenshots
+ //
+ this.mMenViewJumpToSessionsScreenshots.Image = global::My.Resources.Resources.Sessions;
+ this.mMenViewJumpToSessionsScreenshots.Name = "mMenViewJumpToSessionsScreenshots";
+ this.mMenViewJumpToSessionsScreenshots.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Alt)
+ | System.Windows.Forms.Keys.S);
+ this.mMenViewJumpToSessionsScreenshots.Size = new System.Drawing.Size(260, 22);
+ this.mMenViewJumpToSessionsScreenshots.Text = "Sessions && Screenshots";
+ //
+ //mMenViewJumpToErrorsInfos
+ //
+ this.mMenViewJumpToErrorsInfos.Image = global::My.Resources.Resources.InformationSmall;
+ this.mMenViewJumpToErrorsInfos.Name = "mMenViewJumpToErrorsInfos";
+ this.mMenViewJumpToErrorsInfos.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Alt)
+ | System.Windows.Forms.Keys.E);
+ this.mMenViewJumpToErrorsInfos.Size = new System.Drawing.Size(260, 22);
+ this.mMenViewJumpToErrorsInfos.Text = "Errors && Infos";
+ //
+ //mMenViewResetLayout
+ //
+ this.mMenViewResetLayout.Image = global::My.Resources.Resources.application_side_tree;
+ this.mMenViewResetLayout.Name = "mMenViewResetLayout";
+ this.mMenViewResetLayout.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewResetLayout.Text = "Reset Layout";
+ //
+ //mMenViewSep2
+ //
+ this.mMenViewSep2.Name = "mMenViewSep2";
+ this.mMenViewSep2.Size = new System.Drawing.Size(225, 6);
+ //
+ //mMenViewQuickConnectToolbar
+ //
+ this.mMenViewQuickConnectToolbar.Image = global::My.Resources.Resources.Play_Quick;
+ this.mMenViewQuickConnectToolbar.Name = "mMenViewQuickConnectToolbar";
+ this.mMenViewQuickConnectToolbar.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewQuickConnectToolbar.Text = "Quick Connect Toolbar";
+ //
+ //mMenViewExtAppsToolbar
+ //
+ this.mMenViewExtAppsToolbar.Image = global::My.Resources.Resources.ExtApp;
+ this.mMenViewExtAppsToolbar.Name = "mMenViewExtAppsToolbar";
+ this.mMenViewExtAppsToolbar.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewExtAppsToolbar.Text = "External Applications Toolbar";
+ //
+ //mMenViewSep3
+ //
+ this.mMenViewSep3.Name = "mMenViewSep3";
+ this.mMenViewSep3.Size = new System.Drawing.Size(225, 6);
+ //
+ //mMenViewFullscreen
+ //
+ this.mMenViewFullscreen.Image = global::My.Resources.Resources.arrow_out;
+ this.mMenViewFullscreen.Name = "mMenViewFullscreen";
+ this.mMenViewFullscreen.ShortcutKeys = System.Windows.Forms.Keys.F11;
+ this.mMenViewFullscreen.Size = new System.Drawing.Size(228, 22);
+ this.mMenViewFullscreen.Text = "Full Screen";
+ //
+ //mMenTools
+ //
+ this.mMenTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenToolsSSHTransfer, this.mMenToolsUVNCSC, this.mMenToolsExternalApps, this.mMenToolsPortScan, this.mMenToolsSep1, this.mMenToolsComponentsCheck, this.mMenToolsOptions});
+ this.mMenTools.Name = "mMenTools";
+ this.mMenTools.Size = new System.Drawing.Size(48, 20);
+ this.mMenTools.Text = "&Tools";
+ //
+ //mMenToolsSSHTransfer
+ //
+ this.mMenToolsSSHTransfer.Image = global::My.Resources.Resources.SSHTransfer;
+ this.mMenToolsSSHTransfer.Name = "mMenToolsSSHTransfer";
+ this.mMenToolsSSHTransfer.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsSSHTransfer.Text = "SSH File Transfer";
+ //
+ //mMenToolsUVNCSC
+ //
+ this.mMenToolsUVNCSC.Image = global::My.Resources.Resources.UVNC_SC;
+ this.mMenToolsUVNCSC.Name = "mMenToolsUVNCSC";
+ this.mMenToolsUVNCSC.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsUVNCSC.Text = "UltraVNC SingleClick";
+ this.mMenToolsUVNCSC.Visible = false;
+ //
+ //mMenToolsExternalApps
+ //
+ this.mMenToolsExternalApps.Image = global::My.Resources.Resources.ExtApp;
+ this.mMenToolsExternalApps.Name = "mMenToolsExternalApps";
+ this.mMenToolsExternalApps.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsExternalApps.Text = "External Applications";
+ //
+ //mMenToolsPortScan
+ //
+ this.mMenToolsPortScan.Image = global::My.Resources.Resources.PortScan;
+ this.mMenToolsPortScan.Name = "mMenToolsPortScan";
+ this.mMenToolsPortScan.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsPortScan.Text = "Port Scan";
+ //
+ //mMenToolsSep1
+ //
+ this.mMenToolsSep1.Name = "mMenToolsSep1";
+ this.mMenToolsSep1.Size = new System.Drawing.Size(181, 6);
+ //
+ //mMenToolsComponentsCheck
+ //
+ this.mMenToolsComponentsCheck.Image = global::My.Resources.Resources.cog_error;
+ this.mMenToolsComponentsCheck.Name = "mMenToolsComponentsCheck";
+ this.mMenToolsComponentsCheck.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsComponentsCheck.Text = "Components Check";
+ //
+ //mMenToolsOptions
+ //
+ this.mMenToolsOptions.Image = (System.Drawing.Image) (resources.GetObject("mMenToolsOptions.Image"));
+ this.mMenToolsOptions.Name = "mMenToolsOptions";
+ this.mMenToolsOptions.Size = new System.Drawing.Size(184, 22);
+ this.mMenToolsOptions.Text = "Options";
+ //
+ //mMenInfo
+ //
+ this.mMenInfo.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenInfoHelp, this.mMenInfoSep1, this.mMenInfoWebsite, this.mMenInfoDonate, this.mMenInfoForum, this.mMenInfoBugReport, this.ToolStripSeparator2, this.mMenInfoAnnouncements, this.mMenToolsUpdate, this.mMenInfoSep2, this.mMenInfoAbout});
+ this.mMenInfo.Name = "mMenInfo";
+ this.mMenInfo.Size = new System.Drawing.Size(44, 20);
+ this.mMenInfo.Text = "&Help";
+ this.mMenInfo.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
+ //
+ //mMenInfoHelp
+ //
+ this.mMenInfoHelp.Image = (System.Drawing.Image) (resources.GetObject("mMenInfoHelp.Image"));
+ this.mMenInfoHelp.Name = "mMenInfoHelp";
+ this.mMenInfoHelp.ShortcutKeys = System.Windows.Forms.Keys.F1;
+ this.mMenInfoHelp.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoHelp.Text = "mRemoteNG Help";
+ //
+ //mMenInfoSep1
+ //
+ this.mMenInfoSep1.Name = "mMenInfoSep1";
+ this.mMenInfoSep1.Size = new System.Drawing.Size(187, 6);
+ //
+ //mMenInfoWebsite
+ //
+ this.mMenInfoWebsite.Image = (System.Drawing.Image) (resources.GetObject("mMenInfoWebsite.Image"));
+ this.mMenInfoWebsite.Name = "mMenInfoWebsite";
+ this.mMenInfoWebsite.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoWebsite.Text = "Website";
+ //
+ //mMenInfoDonate
+ //
+ this.mMenInfoDonate.Image = global::My.Resources.Resources.Donate;
+ this.mMenInfoDonate.Name = "mMenInfoDonate";
+ this.mMenInfoDonate.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoDonate.Text = "Donate";
+ //
+ //mMenInfoForum
+ //
+ this.mMenInfoForum.Image = global::My.Resources.Resources.user_comment;
+ this.mMenInfoForum.Name = "mMenInfoForum";
+ this.mMenInfoForum.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoForum.Text = "Support Forum";
+ //
+ //mMenInfoBugReport
+ //
+ this.mMenInfoBugReport.Image = global::My.Resources.Resources.Bug;
+ this.mMenInfoBugReport.Name = "mMenInfoBugReport";
+ this.mMenInfoBugReport.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoBugReport.Text = "Report a Bug";
+ //
+ //ToolStripSeparator2
+ //
+ this.ToolStripSeparator2.Name = "ToolStripSeparator2";
+ this.ToolStripSeparator2.Size = new System.Drawing.Size(187, 6);
+ //
+ //mMenInfoAnnouncements
+ //
+ this.mMenInfoAnnouncements.Image = global::My.Resources.Resources.News;
+ this.mMenInfoAnnouncements.Name = "mMenInfoAnnouncements";
+ this.mMenInfoAnnouncements.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoAnnouncements.Text = "Announcements";
+ //
+ //mMenToolsUpdate
+ //
+ this.mMenToolsUpdate.Image = global::My.Resources.Resources.Update;
+ this.mMenToolsUpdate.Name = "mMenToolsUpdate";
+ this.mMenToolsUpdate.Size = new System.Drawing.Size(190, 22);
+ this.mMenToolsUpdate.Text = "Check for Updates";
+ //
+ //mMenInfoSep2
+ //
+ this.mMenInfoSep2.Name = "mMenInfoSep2";
+ this.mMenInfoSep2.Size = new System.Drawing.Size(187, 6);
+ //
+ //mMenInfoAbout
+ //
+ this.mMenInfoAbout.Image = global::My.Resources.Resources.mRemote;
+ this.mMenInfoAbout.Name = "mMenInfoAbout";
+ this.mMenInfoAbout.Size = new System.Drawing.Size(190, 22);
+ this.mMenInfoAbout.Text = "About mRemoteNG";
+ //
+ //mMenSep3
+ //
+ this.mMenSep3.Name = "mMenSep3";
+ this.mMenSep3.Size = new System.Drawing.Size(211, 6);
+ //
+ //lblQuickConnect
+ //
+ this.lblQuickConnect.Name = "lblQuickConnect";
+ this.lblQuickConnect.Size = new System.Drawing.Size(55, 22);
+ this.lblQuickConnect.Text = "&Connect:";
+ //
+ //cmbQuickConnect
+ //
+ this.cmbQuickConnect.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
+ this.cmbQuickConnect.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
+ this.cmbQuickConnect.Margin = new System.Windows.Forms.Padding(1, 0, 3, 0);
+ this.cmbQuickConnect.Name = "cmbQuickConnect";
+ this.cmbQuickConnect.Size = new System.Drawing.Size(200, 25);
+ //
+ //tsContainer
+ //
+ //
+ //tsContainer.BottomToolStripPanel
+ //
+ this.tsContainer.BottomToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ //
+ //tsContainer.ContentPanel
+ //
+ this.tsContainer.ContentPanel.Controls.Add(this.pnlDock);
+ this.tsContainer.ContentPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.tsContainer.ContentPanel.Size = new System.Drawing.Size(842, 449);
+ this.tsContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+ //
+ //tsContainer.LeftToolStripPanel
+ //
+ this.tsContainer.LeftToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.tsContainer.Location = new System.Drawing.Point(0, 0);
+ this.tsContainer.Name = "tsContainer";
+ //
+ //tsContainer.RightToolStripPanel
+ //
+ this.tsContainer.RightToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.tsContainer.Size = new System.Drawing.Size(842, 523);
+ this.tsContainer.TabIndex = 17;
+ this.tsContainer.Text = "ToolStripContainer1";
+ //
+ //tsContainer.TopToolStripPanel
+ //
+ this.tsContainer.TopToolStripPanel.Controls.Add(this.msMain);
+ this.tsContainer.TopToolStripPanel.Controls.Add(this.tsQuickConnect);
+ this.tsContainer.TopToolStripPanel.Controls.Add(this.tsExternalTools);
+ this.tsContainer.TopToolStripPanel.Controls.Add(this.ToolStrip1);
+ this.tsContainer.TopToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ //
+ //tsQuickConnect
+ //
+ this.tsQuickConnect.Dock = System.Windows.Forms.DockStyle.None;
+ this.tsQuickConnect.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.lblQuickConnect, this.cmbQuickConnect, this.btnQuickConnect, this.btnConnections});
+ this.tsQuickConnect.Location = new System.Drawing.Point(3, 24);
+ this.tsQuickConnect.MaximumSize = new System.Drawing.Size(0, 25);
+ this.tsQuickConnect.Name = "tsQuickConnect";
+ this.tsQuickConnect.Size = new System.Drawing.Size(387, 25);
+ this.tsQuickConnect.TabIndex = 18;
+ //
+ //btnQuickConnect
+ //
+ this.btnQuickConnect.DropDown = this.mnuQuickConnectProtocol;
+ this.btnQuickConnect.Image = global::My.Resources.Resources.Play_Quick;
+ this.btnQuickConnect.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnQuickConnect.Margin = new System.Windows.Forms.Padding(0, 1, 3, 2);
+ this.btnQuickConnect.Name = "btnQuickConnect";
+ this.btnQuickConnect.Size = new System.Drawing.Size(84, 22);
+ this.btnQuickConnect.Text = "Connect";
+ //
+ //mnuQuickConnectProtocol
+ //
+ this.mnuQuickConnectProtocol.Name = "mnuQuickConnectProtocol";
+ this.mnuQuickConnectProtocol.OwnerItem = this.btnQuickConnect;
+ this.mnuQuickConnectProtocol.ShowCheckMargin = true;
+ this.mnuQuickConnectProtocol.ShowImageMargin = false;
+ this.mnuQuickConnectProtocol.Size = new System.Drawing.Size(61, 4);
+ //
+ //btnConnections
+ //
+ this.btnConnections.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnConnections.DropDown = this.mnuConnections;
+ this.btnConnections.Image = global::My.Resources.Resources.Root;
+ this.btnConnections.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btnConnections.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnConnections.Name = "btnConnections";
+ this.btnConnections.Size = new System.Drawing.Size(29, 22);
+ this.btnConnections.Text = "Connections";
+ //
+ //mnuConnections
+ //
+ this.mnuConnections.Name = "mnuConnections";
+ this.mnuConnections.OwnerItem = this.btnConnections;
+ this.mnuConnections.Size = new System.Drawing.Size(61, 4);
+ //
+ //tsExternalTools
+ //
+ this.tsExternalTools.ContextMenuStrip = this.cMenExtAppsToolbar;
+ this.tsExternalTools.Dock = System.Windows.Forms.DockStyle.None;
+ this.tsExternalTools.Location = new System.Drawing.Point(39, 49);
+ this.tsExternalTools.MaximumSize = new System.Drawing.Size(0, 25);
+ this.tsExternalTools.Name = "tsExternalTools";
+ this.tsExternalTools.Size = new System.Drawing.Size(111, 25);
+ this.tsExternalTools.TabIndex = 17;
+ //
+ //cMenExtAppsToolbar
+ //
+ this.cMenExtAppsToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenToolbarShowText});
+ this.cMenExtAppsToolbar.Name = "cMenToolbar";
+ this.cMenExtAppsToolbar.Size = new System.Drawing.Size(129, 26);
+ //
+ //cMenToolbarShowText
+ //
+ this.cMenToolbarShowText.Checked = true;
+ this.cMenToolbarShowText.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.cMenToolbarShowText.Name = "cMenToolbarShowText";
+ this.cMenToolbarShowText.Size = new System.Drawing.Size(128, 22);
+ this.cMenToolbarShowText.Text = "Show Text";
+ //
+ //ToolStrip1
+ //
+ this.ToolStrip1.Dock = System.Windows.Forms.DockStyle.None;
+ this.ToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.ToolStripButton1, this.ToolStripButton2, this.ToolStripButton3, this.ToolStripSplitButton1});
+ this.ToolStrip1.Location = new System.Drawing.Point(3, 74);
+ this.ToolStrip1.MaximumSize = new System.Drawing.Size(0, 25);
+ this.ToolStrip1.Name = "ToolStrip1";
+ this.ToolStrip1.Size = new System.Drawing.Size(0, 25);
+ this.ToolStrip1.TabIndex = 19;
+ this.ToolStrip1.Visible = false;
+ //
+ //ToolStripButton1
+ //
+ this.ToolStripButton1.Image = global::My.Resources.Resources.Play;
+ this.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.ToolStripButton1.Name = "ToolStripButton1";
+ this.ToolStripButton1.Size = new System.Drawing.Size(72, 22);
+ this.ToolStripButton1.Text = "Connect";
+ //
+ //ToolStripButton2
+ //
+ this.ToolStripButton2.Image = global::My.Resources.Resources.Screenshot;
+ this.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.ToolStripButton2.Name = "ToolStripButton2";
+ this.ToolStripButton2.Size = new System.Drawing.Size(85, 22);
+ this.ToolStripButton2.Text = "Screenshot";
+ //
+ //ToolStripButton3
+ //
+ this.ToolStripButton3.Image = global::My.Resources.Resources.Refresh;
+ this.ToolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.ToolStripButton3.Name = "ToolStripButton3";
+ this.ToolStripButton3.Size = new System.Drawing.Size(66, 22);
+ this.ToolStripButton3.Text = "Refresh";
+ //
+ //ToolStripSplitButton1
+ //
+ this.ToolStripSplitButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.ToolStripSplitButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.ToolStripMenuItem1, this.ToolStripMenuItem2});
+ this.ToolStripSplitButton1.Image = global::My.Resources.Resources.Keyboard;
+ this.ToolStripSplitButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.ToolStripSplitButton1.Name = "ToolStripSplitButton1";
+ this.ToolStripSplitButton1.Size = new System.Drawing.Size(29, 22);
+ this.ToolStripSplitButton1.Text = "Special Keys";
+ //
+ //ToolStripMenuItem1
+ //
+ this.ToolStripMenuItem1.Name = "ToolStripMenuItem1";
+ this.ToolStripMenuItem1.Size = new System.Drawing.Size(135, 22);
+ this.ToolStripMenuItem1.Text = "Ctrl-Alt-Del";
+ //
+ //ToolStripMenuItem2
+ //
+ this.ToolStripMenuItem2.Name = "ToolStripMenuItem2";
+ this.ToolStripMenuItem2.Size = new System.Drawing.Size(135, 22);
+ this.ToolStripMenuItem2.Text = "Ctrl-Esc";
+ //
+ //tmrAutoSave
+ //
+ this.tmrAutoSave.Interval = 10000;
+ //
+ //frmMain
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(842, 523);
+ this.Controls.Add(this.tsContainer);
+ this.Icon = global::My.Resources.Resources.mRemote_Icon;
+ this.MainMenuStrip = this.msMain;
+ this.Name = "frmMain";
+ this.Opacity = 0.0D;
+ this.Text = "mRemoteNG";
+ this.msMain.ResumeLayout(false);
+ this.msMain.PerformLayout();
+ this.tsContainer.ContentPanel.ResumeLayout(false);
+ this.tsContainer.TopToolStripPanel.ResumeLayout(false);
+ this.tsContainer.TopToolStripPanel.PerformLayout();
+ this.tsContainer.ResumeLayout(false);
+ this.tsContainer.PerformLayout();
+ this.tsQuickConnect.ResumeLayout(false);
+ this.tsQuickConnect.PerformLayout();
+ this.cMenExtAppsToolbar.ResumeLayout(false);
+ this.ToolStrip1.ResumeLayout(false);
+ this.ToolStrip1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+ internal WeifenLuo.WinFormsUI.Docking.DockPanel pnlDock;
+ internal System.Windows.Forms.MenuStrip msMain;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFile;
+ internal System.Windows.Forms.ToolStripMenuItem mMenView;
+ internal System.Windows.Forms.ToolStripMenuItem mMenTools;
+ internal System.Windows.Forms.ToolStripLabel lblQuickConnect;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfo;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileNew;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileLoad;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileSave;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileSaveAs;
+ internal System.Windows.Forms.ToolStripSeparator mMenFileSep1;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileExit;
+ internal System.Windows.Forms.ToolStripSeparator mMenToolsSep1;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsOptions;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoHelp;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoWebsite;
+ internal System.Windows.Forms.ToolStripSeparator mMenInfoSep1;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoAbout;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewConnectionPanels;
+ internal System.Windows.Forms.ToolStripSeparator mMenViewSep1;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewSessions;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewConnections;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewConfig;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewErrorsAndInfos;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewScreenshotManager;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewAddConnectionPanel;
+ internal Controls.QuickConnectComboBox cmbQuickConnect;
+ internal System.Windows.Forms.ToolStripSeparator mMenViewSep2;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewFullscreen;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsSSHTransfer;
+ internal System.Windows.Forms.ToolStripContainer tsContainer;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsExternalApps;
+ internal System.Windows.Forms.Timer tmrAutoSave;
+ internal System.Windows.Forms.ToolStrip tsExternalTools;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewExtAppsToolbar;
+ internal System.Windows.Forms.ContextMenuStrip cMenExtAppsToolbar;
+ internal System.Windows.Forms.ToolStripMenuItem cMenToolbarShowText;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsPortScan;
+ internal System.Windows.Forms.ToolStrip tsQuickConnect;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewQuickConnectToolbar;
+ internal System.Windows.Forms.ToolStripSeparator mMenSep3;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoDonate;
+ internal System.Windows.Forms.ToolStripSeparator mMenViewSep3;
+ internal Controls.ToolStripSplitButton btnQuickConnect;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewJumpTo;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewJumpToConnectionsConfig;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewJumpToSessionsScreenshots;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewJumpToErrorsInfos;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsUVNCSC;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsComponentsCheck;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoAnnouncements;
+ internal System.Windows.Forms.ToolStripSeparator mMenInfoSep2;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoBugReport;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator2;
+ internal System.Windows.Forms.ToolStripMenuItem mMenInfoForum;
+ internal System.Windows.Forms.ToolStripMenuItem mMenToolsUpdate;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewResetLayout;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileDuplicate;
+ internal System.Windows.Forms.ToolStripSeparator mMenFileSep2;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileNewConnection;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileNewFolder;
+ internal System.Windows.Forms.ToolStripSeparator mMenFileSep3;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileDelete;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileRename;
+ internal System.Windows.Forms.ToolStripSeparator mMenFileSep4;
+ internal System.Windows.Forms.ToolStrip ToolStrip1;
+ internal System.Windows.Forms.ToolStripButton ToolStripButton1;
+ internal System.Windows.Forms.ToolStripButton ToolStripButton2;
+ internal System.Windows.Forms.ToolStripButton ToolStripButton3;
+ internal System.Windows.Forms.ToolStripDropDownButton ToolStripSplitButton1;
+ internal System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
+ internal System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem2;
+ internal System.Windows.Forms.ContextMenuStrip mnuQuickConnectProtocol;
+ internal System.Windows.Forms.ToolStripDropDownButton btnConnections;
+ internal System.Windows.Forms.ContextMenuStrip mnuConnections;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileExport;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileImportFromFile;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileImportFromActiveDirectory;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileImportFromPortScan;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileImport;
+
+ }
+}
diff --git a/mRemoteV1/CS/Forms/frmMain.cs b/mRemoteV1/CS/Forms/frmMain.cs
new file mode 100644
index 000000000..53e36590e
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmMain.cs
@@ -0,0 +1,1405 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using mRemoteNG.App;
+using mRemoteNG.My;
+using SharedLibraryNG;
+using System.Text;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using Crownwood;
+//using mRemoteNG.App.Native;
+using PSTaskDialog;
+using mRemoteNG.Config;
+using mRemoteNG.Themes;
+
+namespace mRemoteNG
+{
+ public partial class frmMain
+ {
+ public frmMain()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ _showFullPathInTitle = System.Convert.ToBoolean(My.Settings.Default.ShowCompleteConsPathInTitle);
+
+ InitializeComponent();
+
+ //Added to support default instance behavour in C#
+ if (defaultInstance == null)
+ defaultInstance = this;
+ }
+
+#region Default Instance
+
+ private static frmMain defaultInstance;
+
+ ///
+ /// Added by the VB.Net to C# Converter to support default instance behavour in C#
+ ///
+public static frmMain Default
+ {
+ get
+ {
+ if (defaultInstance == null)
+ {
+ defaultInstance = new frmMain();
+ defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
+ }
+
+ return defaultInstance;
+ }
+ set
+ {
+ defaultInstance = value;
+ }
+ }
+
+ static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ defaultInstance = null;
+ }
+
+#endregion
+ private FormWindowState _previousWindowState;
+public FormWindowState PreviousWindowState
+ {
+ get
+ {
+ return _previousWindowState;
+ }
+ set
+ {
+ _previousWindowState = value;
+ }
+ }
+ public delegate void clipboardchangeEventHandler();
+ private static clipboardchangeEventHandler clipboardchangeEvent;
+
+ public static event clipboardchangeEventHandler clipboardchange
+ {
+ add
+ {
+ clipboardchangeEvent = (clipboardchangeEventHandler) System.Delegate.Combine(clipboardchangeEvent, value);
+ }
+ remove
+ {
+ clipboardchangeEvent = (clipboardchangeEventHandler) System.Delegate.Remove(clipboardchangeEvent, value);
+ }
+ }
+
+ private IntPtr fpChainedWindowHandle;
+
+#region Properties
+ private bool _isClosing = false;
+public bool IsClosing
+ {
+ get
+ {
+ return _isClosing;
+ }
+ }
+
+ private bool _usingSqlServer = false;
+public bool UsingSqlServer
+ {
+ get
+ {
+ return _usingSqlServer;
+ }
+ set
+ {
+ if (_usingSqlServer == value)
+ {
+ return ;
+ }
+ _usingSqlServer = value;
+ UpdateWindowTitle();
+ }
+ }
+
+ private string _connectionsFileName = null;
+public string ConnectionsFileName
+ {
+ get
+ {
+ return _connectionsFileName;
+ }
+ set
+ {
+ if (_connectionsFileName == value)
+ {
+ return ;
+ }
+ _connectionsFileName = value;
+ UpdateWindowTitle();
+ }
+ }
+
+ private bool _showFullPathInTitle; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+public bool ShowFullPathInTitle
+ {
+ get
+ {
+ return _showFullPathInTitle;
+ }
+ set
+ {
+ if (_showFullPathInTitle == value)
+ {
+ return ;
+ }
+ _showFullPathInTitle = value;
+ UpdateWindowTitle();
+ }
+ }
+
+ private Protocol.Info _selectedConnection = null;
+public Protocol.Info SelectedConnection
+ {
+ get
+ {
+ return _selectedConnection;
+ }
+ set
+ {
+ if (_selectedConnection == value)
+ {
+ return ;
+ }
+ _selectedConnection = value;
+ UpdateWindowTitle();
+ }
+ }
+#endregion
+
+#region Startup & Shutdown
+ public void frmMain_Load(object sender, System.EventArgs e)
+ {
+ MainForm = this;
+
+ Startup.CheckCompatibility();
+
+ Startup.CreateLogger();
+
+ // Create gui config load and save objects
+ Config.Settings.Load SettingsLoad = new Config.Settings.Load(this);
+
+ // Load GUI Configuration
+ SettingsLoad.Load_Renamed();
+
+ Debug.Print("---------------------------" + Constants.vbNewLine + "[START] - " + System.Convert.ToString(DateTime.Now));
+
+ Startup.ParseCommandLineArgs();
+
+ ApplyLanguage();
+ PopulateQuickConnectProtocolMenu();
+
+ ThemeManager.ThemeChanged += ApplyThemes;
+ ApplyThemes();
+
+ fpChainedWindowHandle = SetClipboardViewer(this.Handle);
+
+ MessageCollector = new Messages.Collector(Windows.errorsForm);
+
+ WindowList = new UI.Window.List();
+
+ Tools.IeBrowserEmulation.Register();
+
+ Startup.GetConnectionIcons();
+ Windows.treePanel.Focus();
+
+ Tree.Node.TreeView = Windows.treeForm.tvConnections;
+
+ if (My.Settings.Default.FirstStart && !My.Settings.Default.LoadConsFromCustomLocation && !System.IO.File.Exists(GetStartupConnectionFileName()))
+ {
+ NewConnections(GetStartupConnectionFileName());
+ }
+
+ //LoadCredentials()
+ LoadConnections();
+ if (!IsConnectionsFileLoaded)
+ {
+ System.Windows.Forms.Application.Exit();
+ return ;
+ }
+
+ Config.Putty.Sessions.StartWatcher();
+
+ if (My.Settings.Default.StartupComponentsCheck)
+ {
+ Windows.Show(UI.Window.Type.ComponentsCheck);
+ }
+
+#if PORTABLE
+ mMenInfoAnnouncements.Visible = false;
+ mMenToolsUpdate.Visible = false;
+ mMenInfoSep2.Visible = false;
+#endif
+
+ Startup.CreateSQLUpdateHandlerAndStartTimer();
+
+ AddSysMenuItems();
+ Microsoft.Win32.SystemEvents.DisplaySettingsChanged += DisplayChanged;
+
+ this.Opacity = 1;
+
+ KeyboardShortcuts.RequestKeyNotifications(Handle);
+ }
+
+ private void ApplyLanguage()
+ {
+ mMenFile.Text = My.Language.strMenuFile;
+ mMenFileNew.Text = My.Language.strMenuNewConnectionFile;
+ mMenFileNewConnection.Text = My.Language.strNewConnection;
+ mMenFileNewFolder.Text = My.Language.strNewFolder;
+ mMenFileLoad.Text = My.Language.strMenuOpenConnectionFile;
+ mMenFileSave.Text = My.Language.strMenuSaveConnectionFile;
+ mMenFileSaveAs.Text = My.Language.strMenuSaveConnectionFileAs;
+ mMenFileImport.Text = Language.strImportMenuItem;
+ mMenFileImportFromFile.Text = Language.strImportFromFileMenuItem;
+ mMenFileImportFromActiveDirectory.Text = Language.strImportAD;
+ mMenFileImportFromPortScan.Text = Language.strImportPortScan;
+ mMenFileExport.Text = Language.strExportToFileMenuItem;
+ mMenFileExit.Text = My.Language.strMenuExit;
+
+ mMenView.Text = My.Language.strMenuView;
+ mMenViewAddConnectionPanel.Text = My.Language.strMenuAddConnectionPanel;
+ mMenViewConnectionPanels.Text = My.Language.strMenuConnectionPanels;
+ mMenViewConnections.Text = My.Language.strMenuConnections;
+ mMenViewConfig.Text = My.Language.strMenuConfig;
+ mMenViewSessions.Text = My.Language.strMenuSessions;
+ mMenViewErrorsAndInfos.Text = My.Language.strMenuNotifications;
+ mMenViewScreenshotManager.Text = My.Language.strScreenshots;
+ mMenViewJumpTo.Text = My.Language.strMenuJumpTo;
+ mMenViewJumpToConnectionsConfig.Text = My.Language.strMenuConnectionsAndConfig;
+ mMenViewJumpToSessionsScreenshots.Text = My.Language.strMenuSessionsAndScreenshots;
+ mMenViewJumpToErrorsInfos.Text = My.Language.strMenuNotifications;
+ mMenViewResetLayout.Text = My.Language.strMenuResetLayout;
+ mMenViewQuickConnectToolbar.Text = My.Language.strMenuQuickConnectToolbar;
+ mMenViewExtAppsToolbar.Text = My.Language.strMenuExternalToolsToolbar;
+ mMenViewFullscreen.Text = My.Language.strMenuFullScreen;
+
+ mMenTools.Text = My.Language.strMenuTools;
+ mMenToolsSSHTransfer.Text = My.Language.strMenuSSHFileTransfer;
+ mMenToolsExternalApps.Text = My.Language.strMenuExternalTools;
+ mMenToolsPortScan.Text = My.Language.strMenuPortScan;
+ mMenToolsComponentsCheck.Text = My.Language.strComponentsCheck;
+ mMenToolsUpdate.Text = My.Language.strMenuCheckForUpdates;
+ mMenToolsOptions.Text = My.Language.strMenuOptions;
+
+ mMenInfo.Text = My.Language.strMenuHelp;
+ mMenInfoHelp.Text = My.Language.strMenuHelpContents;
+ mMenInfoForum.Text = My.Language.strMenuSupportForum;
+ mMenInfoBugReport.Text = My.Language.strMenuReportBug;
+ mMenInfoDonate.Text = My.Language.strMenuDonate;
+ mMenInfoWebsite.Text = My.Language.strMenuWebsite;
+ mMenInfoAbout.Text = My.Language.strMenuAbout;
+ mMenInfoAnnouncements.Text = My.Language.strMenuAnnouncements;
+
+ lblQuickConnect.Text = My.Language.strLabelConnect;
+ btnQuickConnect.Text = My.Language.strMenuConnect;
+ btnConnections.Text = My.Language.strMenuConnections;
+
+ cMenToolbarShowText.Text = My.Language.strMenuShowText;
+
+ ToolStripButton1.Text = My.Language.strConnect;
+ ToolStripButton2.Text = My.Language.strScreenshot;
+ ToolStripButton3.Text = My.Language.strRefresh;
+
+ ToolStripSplitButton1.Text = My.Language.strSpecialKeys;
+ ToolStripMenuItem1.Text = My.Language.strKeysCtrlAltDel;
+ ToolStripMenuItem2.Text = My.Language.strKeysCtrlEsc;
+ }
+
+ public void ApplyThemes()
+ {
+ pnlDock.DockBackColor = ThemeManager.ActiveTheme.WindowBackgroundColor;
+ tsContainer.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsContainer.TopToolStripPanel.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.TopToolStripPanel.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsContainer.BottomToolStripPanel.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.BottomToolStripPanel.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsContainer.LeftToolStripPanel.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.LeftToolStripPanel.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsContainer.RightToolStripPanel.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.RightToolStripPanel.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsContainer.ContentPanel.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsContainer.ContentPanel.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ msMain.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ msMain.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ ApplyMenuColors(msMain.Items);
+ tsExternalTools.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsExternalTools.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ tsQuickConnect.BackColor = ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ tsQuickConnect.ForeColor = ThemeManager.ActiveTheme.ToolbarTextColor;
+ }
+
+ private static void ApplyMenuColors(ToolStripItemCollection itemCollection)
+ {
+ ToolStripMenuItem menuItem = default(ToolStripMenuItem);
+ foreach (ToolStripItem item in itemCollection)
+ {
+ item.BackColor = ThemeManager.ActiveTheme.MenuBackgroundColor;
+ item.ForeColor = ThemeManager.ActiveTheme.MenuTextColor;
+
+ menuItem = item as ToolStripMenuItem;
+ if (menuItem != null)
+ {
+ ApplyMenuColors(menuItem.DropDownItems);
+ }
+ }
+ }
+
+ public void frmMain_Shown(object sender, EventArgs e)
+ {
+#if PORTABLE
+ return ;
+#endif
+// if (!My.Settings.Default.CheckForUpdatesAsked)
+// {
+// string[] commandButtons = new string[] {My.Language.strAskUpdatesCommandRecommended, My.Language.strAskUpdatesCommandCustom, My.Language.strAskUpdatesCommandAskLater};
+// cTaskDialog.ShowTaskDialogBox(this, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, My.Language.strAskUpdatesMainInstruction, string.Format(My.Language.strAskUpdatesContent, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName), "", "", "", "", string.Join("|", commandButtons), eTaskDialogButtons.None, eSysIcons.Question, eSysIcons.Question);
+// if (cTaskDialog.CommandButtonResult == 0 | cTaskDialog.CommandButtonResult == 1)
+// {
+// My.Settings.Default.CheckForUpdatesAsked = true;
+// }
+// if (cTaskDialog.CommandButtonResult == 1)
+// {
+// Windows.ShowUpdatesTab();
+// }
+// return ;
+// }
+
+// if (!My.Settings.Default.CheckForUpdatesOnStartup)
+// {
+// return ;
+// }
+
+// DateTime nextUpdateCheck = System.Convert.ToDateTime(My.Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(System.Convert.ToDouble(My.Settings.Default.CheckForUpdatesFrequencyDays))));
+// if (My.Settings.Default.UpdatePending || DateTime.UtcNow > nextUpdateCheck)
+// {
+// if (!IsHandleCreated)
+// {
+// CreateHandle(); // Make sure the handle is created so that InvokeRequired returns the correct result
+// }
+// Startup.CheckForUpdate();
+// Startup.CheckForAnnouncement();
+// }
+ }
+
+ public void frmMain_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
+ {
+ if (!(WindowList == null || WindowList.Count == 0))
+ {
+ UI.Window.Connection connectionWindow = default(UI.Window.Connection);
+ int openConnections = 0;
+ foreach (UI.Window.Base window in WindowList)
+ {
+ connectionWindow = window as UI.Window.Connection;
+ if (connectionWindow != null)
+ {
+ openConnections = openConnections + connectionWindow.TabController.TabPages.Count;
+ }
+ }
+
+ if (openConnections > 0 && (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.All | (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Multiple & openConnections > 1) || My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Exit))
+ {
+ DialogResult result = cTaskDialog.MessageBox(this, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, My.Language.strConfirmExitMainInstruction, "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, null);
+ if (cTaskDialog.VerificationChecked)
+ {
+ My.Settings.Default.ConfirmCloseConnection--;
+ }
+ if (result == DialogResult.No)
+ {
+ e.Cancel = true;
+ return ;
+ }
+ }
+ }
+
+ Shutdown.Cleanup();
+
+ _isClosing = true;
+
+ if (WindowList != null)
+ {
+ foreach (UI.Window.Base window in WindowList)
+ {
+ window.Close();
+ }
+ }
+
+ Shutdown.StartUpdate();
+
+ Debug.Print("[END] - " + System.Convert.ToString(DateTime.Now));
+ }
+#endregion
+
+#region Timer
+ public void tmrAutoSave_Tick(System.Object sender, System.EventArgs e)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Doing AutoSave", true);
+ App.Runtime.SaveConnections();
+ }
+#endregion
+
+#region Ext Apps Toolbar
+ public void cMenToolbarShowText_Click(System.Object sender, System.EventArgs e)
+ {
+ SwitchToolBarText(!cMenToolbarShowText.Checked);
+ }
+
+ public void AddExternalToolsToToolBar()
+ {
+ try
+ {
+ for (int index = tsExternalTools.Items.Count - 1; index >= 0; index--)
+ {
+ tsExternalTools.Items[index].Dispose();
+ }
+ tsExternalTools.Items.Clear();
+
+ ToolStripButton button = default(ToolStripButton);
+ foreach (Tools.ExternalTool tool in ExternalTools)
+ {
+ button = tsExternalTools.Items.Add(tool.DisplayName, tool.Image, tsExtAppEntry_Click);
+
+ if (cMenToolbarShowText.Checked == true)
+ {
+ button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
+ }
+ else
+ {
+ if (button.Image != null)
+ {
+ button.DisplayStyle = ToolStripItemDisplayStyle.Image;
+ }
+ else
+ {
+ button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
+ }
+ }
+
+ button.Tag = tool;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strErrorAddExternalToolsToToolBarFailed, ex.Message), true);
+ }
+ }
+
+ private void tsExtAppEntry_Click(System.Object sender, System.EventArgs e)
+ {
+ Tools.ExternalTool extA = sender.Tag;
+
+ if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.PuttySession)
+ {
+ extA.Start(Tree.Node.SelectedNode.Tag);
+ }
+ else
+ {
+ extA.Start();
+ }
+ }
+
+ public void SwitchToolBarText(bool show)
+ {
+ foreach (ToolStripButton tItem in tsExternalTools.Items)
+ {
+ if (show == true)
+ {
+ tItem.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
+ }
+ else
+ {
+ if (tItem.Image != null)
+ {
+ tItem.DisplayStyle = ToolStripItemDisplayStyle.Image;
+ }
+ else
+ {
+ tItem.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
+ }
+ }
+ }
+
+ cMenToolbarShowText.Checked = show;
+ }
+#endregion
+
+#region Menu
+#region File
+ public void mMenFile_DropDownOpening(System.Object sender, System.EventArgs e)
+ {
+ if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Root)
+ {
+ mMenFileNewConnection.Enabled = true;
+ mMenFileNewFolder.Enabled = true;
+ mMenFileDelete.Enabled = false;
+ mMenFileRename.Enabled = true;
+ mMenFileDuplicate.Enabled = false;
+ mMenFileDelete.Text = My.Language.strMenuDelete;
+ mMenFileRename.Text = My.Language.strMenuRenameFolder;
+ mMenFileDuplicate.Text = My.Language.strMenuDuplicate;
+ }
+ else if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Container)
+ {
+ mMenFileNewConnection.Enabled = true;
+ mMenFileNewFolder.Enabled = true;
+ mMenFileDelete.Enabled = true;
+ mMenFileRename.Enabled = true;
+ mMenFileDuplicate.Enabled = true;
+ mMenFileDelete.Text = My.Language.strMenuDeleteFolder;
+ mMenFileRename.Text = My.Language.strMenuRenameFolder;
+ mMenFileDuplicate.Text = My.Language.strMenuDuplicateFolder;
+ }
+ else if (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.Connection)
+ {
+ mMenFileNewConnection.Enabled = true;
+ mMenFileNewFolder.Enabled = true;
+ mMenFileDelete.Enabled = true;
+ mMenFileRename.Enabled = true;
+ mMenFileDuplicate.Enabled = true;
+ mMenFileDelete.Text = My.Language.strMenuDeleteConnection;
+ mMenFileRename.Text = My.Language.strMenuRenameConnection;
+ mMenFileDuplicate.Text = My.Language.strMenuDuplicateConnection;
+ }
+ else if ((Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.PuttyRoot) || (Tree.Node.GetNodeType(Tree.Node.SelectedNode) == Tree.Node.Type.PuttySession))
+ {
+ mMenFileNewConnection.Enabled = false;
+ mMenFileNewFolder.Enabled = false;
+ mMenFileDelete.Enabled = false;
+ mMenFileRename.Enabled = false;
+ mMenFileDuplicate.Enabled = false;
+ mMenFileDelete.Text = My.Language.strMenuDelete;
+ mMenFileRename.Text = My.Language.strMenuRename;
+ mMenFileDuplicate.Text = My.Language.strMenuDuplicate;
+ }
+ else
+ {
+ mMenFileNewConnection.Enabled = true;
+ mMenFileNewFolder.Enabled = true;
+ mMenFileDelete.Enabled = false;
+ mMenFileRename.Enabled = false;
+ mMenFileDuplicate.Enabled = false;
+ mMenFileDelete.Text = My.Language.strMenuDelete;
+ mMenFileRename.Text = My.Language.strMenuRename;
+ mMenFileDuplicate.Text = My.Language.strMenuDuplicate;
+ }
+ }
+
+ static public void mMenFileNewConnection_Click(System.Object sender, EventArgs e)
+ {
+ Windows.treeForm.AddConnection();
+ SaveConnectionsBG();
+ }
+
+ static public void mMenFileNewFolder_Click(System.Object sender, EventArgs e)
+ {
+ Windows.treeForm.AddFolder();
+ SaveConnectionsBG();
+ }
+
+ static public void mMenFileNew_Click(System.Object sender, EventArgs e)
+ {
+ SaveFileDialog saveFileDialog = Tools.Controls.ConnectionsSaveAsDialog();
+ if (!(saveFileDialog.ShowDialog() == DialogResult.OK))
+ {
+ return ;
+ }
+
+ NewConnections(saveFileDialog.FileName);
+ }
+
+ static public void mMenFileLoad_Click(System.Object sender, EventArgs e)
+ {
+ if (IsConnectionsFileLoaded)
+ {
+ switch (Interaction.MsgBox(Language.strSaveConnectionsFileBeforeOpeningAnother, (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.YesNoCancel | MsgBoxStyle.Question), null))
+ {
+ case MsgBoxResult.Yes:
+ SaveConnections();
+ break;
+ case MsgBoxResult.Cancel:
+ return ;
+ }
+ }
+
+ LoadConnections(true);
+ }
+
+ static public void mMenFileSave_Click(System.Object sender, EventArgs e)
+ {
+ SaveConnections();
+ }
+
+ static public void mMenFileSaveAs_Click(System.Object sender, EventArgs e)
+ {
+ SaveConnectionsAs();
+ }
+
+ static public void mMenFileDelete_Click(System.Object sender, EventArgs e)
+ {
+ Tree.Node.DeleteSelectedNode();
+ SaveConnectionsBG();
+ }
+
+ static public void mMenFileRename_Click(System.Object sender, EventArgs e)
+ {
+ Tree.Node.StartRenameSelectedNode();
+ SaveConnectionsBG();
+ }
+
+ static public void mMenFileDuplicate_Click(System.Object sender, EventArgs e)
+ {
+ Tree.Node.CloneNode(Tree.Node.SelectedNode);
+ SaveConnectionsBG();
+ }
+
+ static public void mMenFileImportFromFile_Click(System.Object sender, EventArgs e)
+ {
+ Import.ImportFromFile(Windows.treeForm.tvConnections.Nodes[0], Windows.treeForm.tvConnections.SelectedNode);
+ }
+
+ static public void mMenFileImportFromActiveDirectory_Click(System.Object sender, EventArgs e)
+ {
+ Windows.Show(UI.Window.Type.ActiveDirectoryImport);
+ }
+
+ static public void mMenFileImportFromPortScan_Click(System.Object sender, EventArgs e)
+ {
+ Windows.Show(UI.Window.Type.PortScan, true);
+ }
+
+ static public void mMenFileExport_Click(System.Object sender, EventArgs e)
+ {
+ Export.ExportToFile(Windows.treeForm.tvConnections.Nodes[0], Windows.treeForm.tvConnections.SelectedNode);
+ }
+
+ static public void mMenFileExit_Click(System.Object sender, EventArgs e)
+ {
+ Shutdown.Quit();
+ }
+#endregion
+
+#region View
+ public void mMenView_DropDownOpening(object sender, System.EventArgs e)
+ {
+ this.mMenViewConnections.Checked = !Windows.treeForm.IsHidden;
+ this.mMenViewConfig.Checked = !Windows.configForm.IsHidden;
+ this.mMenViewErrorsAndInfos.Checked = !Windows.errorsForm.IsHidden;
+ this.mMenViewSessions.Checked = !Windows.sessionsForm.IsHidden;
+ this.mMenViewScreenshotManager.Checked = !Windows.screenshotForm.IsHidden;
+
+ this.mMenViewExtAppsToolbar.Checked = tsExternalTools.Visible;
+ this.mMenViewQuickConnectToolbar.Checked = tsQuickConnect.Visible;
+
+ this.mMenViewConnectionPanels.DropDownItems.Clear();
+
+ for (int i = 0; i <= WindowList.Count - 1; i++)
+ {
+ ToolStripMenuItem tItem = new ToolStripMenuItem(System.Convert.ToString(WindowList[i].Text), WindowList[i].Icon.ToBitmap, ConnectionPanelMenuItem_Click);
+ tItem.Tag = WindowList[i];
+
+ this.mMenViewConnectionPanels.DropDownItems.Add(tItem);
+ }
+
+ if (this.mMenViewConnectionPanels.DropDownItems.Count > 0)
+ {
+ this.mMenViewConnectionPanels.Enabled = true;
+ }
+ else
+ {
+ this.mMenViewConnectionPanels.Enabled = false;
+ }
+ }
+
+ private void ConnectionPanelMenuItem_Click(object sender, System.EventArgs e)
+ {
+ (sender.Tag as UI.Window.Base).Show(this.pnlDock);
+ (sender.Tag as UI.Window.Base).Focus();
+ }
+
+ public void mMenViewSessions_Click(object sender, System.EventArgs e)
+ {
+ if (this.mMenViewSessions.Checked == false)
+ {
+ Windows.sessionsPanel.Show(this.pnlDock);
+ this.mMenViewSessions.Checked = true;
+ }
+ else
+ {
+ Windows.sessionsPanel.Hide();
+ this.mMenViewSessions.Checked = false;
+ }
+ }
+
+ public void mMenViewConnections_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.mMenViewConnections.Checked == false)
+ {
+ Windows.treePanel.Show(this.pnlDock);
+ this.mMenViewConnections.Checked = true;
+ }
+ else
+ {
+ Windows.treePanel.Hide();
+ this.mMenViewConnections.Checked = false;
+ }
+ }
+
+ public void mMenViewConfig_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.mMenViewConfig.Checked == false)
+ {
+ Windows.configPanel.Show(this.pnlDock);
+ this.mMenViewConfig.Checked = true;
+ }
+ else
+ {
+ Windows.configPanel.Hide();
+ this.mMenViewConfig.Checked = false;
+ }
+ }
+
+ public void mMenViewErrorsAndInfos_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.mMenViewErrorsAndInfos.Checked == false)
+ {
+ Windows.errorsPanel.Show(this.pnlDock);
+ this.mMenViewErrorsAndInfos.Checked = true;
+ }
+ else
+ {
+ Windows.errorsPanel.Hide();
+ this.mMenViewErrorsAndInfos.Checked = false;
+ }
+ }
+
+ public void mMenViewScreenshotManager_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.mMenViewScreenshotManager.Checked == false)
+ {
+ Windows.screenshotPanel.Show(this.pnlDock);
+ this.mMenViewScreenshotManager.Checked = true;
+ }
+ else
+ {
+ Windows.screenshotPanel.Hide();
+ this.mMenViewScreenshotManager.Checked = false;
+ }
+ }
+
+ public void mMenViewJumpToConnectionsConfig_Click(object sender, System.EventArgs e)
+ {
+ if (pnlDock.ActiveContent == Windows.treePanel)
+ {
+ Windows.configForm.Activate();
+ }
+ else
+ {
+ Windows.treeForm.Activate();
+ }
+ }
+
+ public void mMenViewJumpToSessionsScreenshots_Click(object sender, System.EventArgs e)
+ {
+ if (pnlDock.ActiveContent == Windows.sessionsPanel)
+ {
+ Windows.screenshotForm.Activate();
+ }
+ else
+ {
+ Windows.sessionsForm.Activate();
+ }
+ }
+
+ public void mMenViewJumpToErrorsInfos_Click(object sender, System.EventArgs e)
+ {
+ Windows.errorsForm.Activate();
+ }
+
+ public void mMenViewResetLayout_Click(System.Object sender, System.EventArgs e)
+ {
+ if (Interaction.MsgBox(My.Language.strConfirmResetLayout, (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.Question | MsgBoxStyle.YesNo), null) == MsgBoxResult.Yes)
+ {
+ App.Runtime.Startup.SetDefaultLayout();
+ }
+ }
+
+ public void mMenViewAddConnectionPanel_Click(System.Object sender, System.EventArgs e)
+ {
+ AddPanel();
+ }
+
+ public void mMenViewExtAppsToolbar_Click(System.Object sender, System.EventArgs e)
+ {
+ if (mMenViewExtAppsToolbar.Checked == false)
+ {
+ tsExternalTools.Visible = true;
+ mMenViewExtAppsToolbar.Checked = true;
+ }
+ else
+ {
+ tsExternalTools.Visible = false;
+ mMenViewExtAppsToolbar.Checked = false;
+ }
+ }
+
+ public void mMenViewQuickConnectToolbar_Click(System.Object sender, System.EventArgs e)
+ {
+ if (mMenViewQuickConnectToolbar.Checked == false)
+ {
+ tsQuickConnect.Visible = true;
+ mMenViewQuickConnectToolbar.Checked = true;
+ }
+ else
+ {
+ tsQuickConnect.Visible = false;
+ mMenViewQuickConnectToolbar.Checked = false;
+ }
+ }
+
+ public Tools.Misc.Fullscreen Fullscreen; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ public void mMenViewFullscreen_Click(System.Object sender, System.EventArgs e)
+ {
+ Fullscreen.Value = !Fullscreen.Value;
+ mMenViewFullscreen.Checked = Fullscreen.Value;
+ }
+#endregion
+
+#region Tools
+ public void mMenToolsUpdate_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.Update);
+ }
+
+ public void mMenToolsSSHTransfer_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.SSHTransfer);
+ }
+
+ public void mMenToolsUVNCSC_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.UltraVNCSC);
+ }
+
+ public void mMenToolsExternalApps_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.ExternalApps);
+ }
+
+ public void mMenToolsPortScan_Click(System.Object sender, EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.PortScan, false);
+ }
+
+ public void mMenToolsComponentsCheck_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.ComponentsCheck);
+ }
+
+ public void mMenToolsOptions_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.Options);
+ }
+#endregion
+
+#region Quick Connect
+ private void PopulateQuickConnectProtocolMenu()
+ {
+ try
+ {
+ mnuQuickConnectProtocol.Items.Clear();
+ foreach (FieldInfo fieldInfo in typeof(Connection.Protocol.Protocols).GetFields)
+ {
+ if (!(fieldInfo.Name == "value__" || fieldInfo.Name == "IntApp"))
+ {
+ ToolStripMenuItem menuItem = new ToolStripMenuItem(fieldInfo.Name);
+ if (fieldInfo.Name == My.Settings.Default.QuickConnectProtocol)
+ {
+ menuItem.Checked = true;
+ btnQuickConnect.Text = System.Convert.ToString(My.Settings.Default.QuickConnectProtocol);
+ }
+ mnuQuickConnectProtocol.Items.Add(menuItem);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("PopulateQuickConnectProtocolMenu() failed.", ex, Messages.MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public void lblQuickConnect_Click(System.Object sender, EventArgs e)
+ {
+ cmbQuickConnect.Focus();
+ }
+
+ public void cmbQuickConnect_ConnectRequested(object sender, Controls.QuickConnectComboBox.ConnectRequestedEventArgs e)
+ {
+ btnQuickConnect_ButtonClick(sender, e);
+ }
+
+ public void btnQuickConnect_ButtonClick(object sender, EventArgs e)
+ {
+ try
+ {
+ Connection.Info connectionInfo = CreateQuickConnect(cmbQuickConnect.Text.Trim(), Connection.Protocol.Converter.StringToProtocol(System.Convert.ToString(My.Settings.Default.QuickConnectProtocol)));
+ if (connectionInfo == null)
+ {
+ cmbQuickConnect.Focus();
+ return ;
+ }
+
+ cmbQuickConnect.Add(connectionInfo);
+
+ OpenConnection(connectionInfo, Connection.Info.Force.DoNotJump);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("btnQuickConnect_ButtonClick() failed.", ex, Messages.MessageClass.ErrorMsg, true);
+ }
+ }
+
+ public void cmbQuickConnect_ProtocolChanged(object sender, Controls.QuickConnectComboBox.ProtocolChangedEventArgs e)
+ {
+ SetQuickConnectProtocol(Connection.Protocol.Converter.ProtocolToString(e.Protocol));
+ }
+
+ public void btnQuickConnect_DropDownItemClicked(System.Object sender, System.Windows.Forms.ToolStripItemClickedEventArgs e)
+ {
+ SetQuickConnectProtocol(e.ClickedItem.Text);
+ }
+
+ private void SetQuickConnectProtocol(string protocol)
+ {
+ My.Settings.Default.QuickConnectProtocol = protocol;
+ btnQuickConnect.Text = protocol;
+ foreach (ToolStripMenuItem menuItem in mnuQuickConnectProtocol.Items)
+ {
+ if (menuItem.Text == protocol)
+ {
+ menuItem.Checked = true;
+ }
+ else
+ {
+ menuItem.Checked = false;
+ }
+ }
+ }
+#endregion
+
+#region Info
+ public void mMenInfoHelp_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.Help);
+ }
+
+ public void mMenInfoForum_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.GoToForum();
+ }
+
+ public void mMenInfoBugReport_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.GoToBugs();
+ }
+
+ public void mMenInfoWebsite_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.GoToWebsite();
+ }
+
+ public void mMenInfoDonate_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.GoToDonate();
+ }
+
+ public void mMenInfoAnnouncements_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.Announcement);
+ }
+
+ public void mMenInfoAbout_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Windows.Show(UI.Window.Type.About);
+ }
+#endregion
+#endregion
+
+#region Connections DropDown
+ public void btnConnections_DropDownOpening(object sender, EventArgs e)
+ {
+ btnConnections.DropDownItems.Clear();
+
+ foreach (TreeNode treeNode in Windows.treeForm.tvConnections.Nodes)
+ {
+ AddNodeToMenu(treeNode.Nodes, btnConnections);
+ }
+ }
+
+ private static void AddNodeToMenu(TreeNodeCollection treeNodeCollection, ToolStripDropDownItem toolStripMenuItem)
+ {
+ try
+ {
+ foreach (TreeNode treeNode in treeNodeCollection)
+ {
+ ToolStripMenuItem menuItem = new ToolStripMenuItem();
+ menuItem.Text = treeNode.Text;
+ menuItem.Tag = treeNode;
+
+ if (Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.Container)
+ {
+ menuItem.Image = global::My.Resources.Folder;
+ menuItem.Tag = treeNode.Tag;
+
+ toolStripMenuItem.DropDownItems.Add(menuItem);
+ AddNodeToMenu(treeNode.Nodes, menuItem);
+ }
+ else if (Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(treeNode) == Tree.Node.Type.PuttySession)
+ {
+ menuItem.Image = Windows.treeForm.imgListTree.Images[treeNode.ImageIndex];
+ menuItem.Tag = treeNode.Tag;
+
+ toolStripMenuItem.DropDownItems.Add(menuItem);
+ }
+
+ menuItem.MouseUp += ConnectionsMenuItem_MouseUp;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("frmMain.AddNodeToMenu() failed", ex, Messages.MessageClass.ErrorMsg, true);
+ }
+ }
+
+ private static void ConnectionsMenuItem_MouseUp(System.Object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ if (sender.Tag is Connection.Info)
+ {
+ App.Runtime.OpenConnection(sender.Tag);
+ }
+ }
+ }
+#endregion
+
+#region Window Overrides and DockPanel Stuff
+ private bool _inSizeMove = false;
+ public void frmMain_ResizeBegin(object sender, EventArgs e)
+ {
+ _inSizeMove = true;
+ }
+
+ public void frmMain_Resize(object sender, EventArgs e)
+ {
+ if (WindowState == FormWindowState.Minimized)
+ {
+ if (My.Settings.Default.MinimizeToTray)
+ {
+ if (NotificationAreaIcon == null)
+ {
+ NotificationAreaIcon = new Tools.Controls.NotificationAreaIcon();
+ }
+ Hide();
+ }
+ }
+ else
+ {
+ PreviousWindowState = WindowState;
+ }
+ }
+
+ public void frmMain_ResizeEnd(object sender, EventArgs e)
+ {
+ _inSizeMove = false;
+
+ // This handles activations from clicks that started a size/move operation
+ ActivateConnection();
+ }
+
+ private bool _inMouseActivate = false;
+ protected override void WndProc(ref Message m)
+ {
+ try
+ {
+ if (m.Msg == WM_MOUSEACTIVATE)
+ {
+ _inMouseActivate = true;
+ }
+ else if (m.Msg == WM_ACTIVATEAPP)
+ {
+ _inMouseActivate = false;
+ }
+ else if (m.Msg == WM_ACTIVATE)
+ {
+ // Ingore this message if it wasn't triggered by a click
+ if (!(LOWORD(m.WParam) == WA_CLICKACTIVE))
+ {
+ }
+
+ Control control = FromChildHandle(WindowFromPoint(MousePosition));
+ if (!(control == null))
+ {
+ // Let TreeViews and ComboBoxes get focus but don't simulate a mouse event
+ if (control is TreeView|| control is ComboBox)
+ {
+ }
+
+ if (control.CanSelect || control is MenuStrip|| control is ToolStrip|| control is Crownwood.Magic.Controls.TabControl|| control is Crownwood.Magic.Controls.InertButton)
+ {
+ // Simulate a mouse event since one wasn't generated by Windows
+ Point clientMousePosition = control.PointToClient(MousePosition);
+ System.Int32 temp_wLow = clientMousePosition.X;
+ System.Int32 temp_wHigh = clientMousePosition.Y;
+ SendMessage(control.Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(ref temp_wLow, ref temp_wHigh));
+ clientMousePosition.X = temp_wLow;
+ clientMousePosition.Y = temp_wHigh;
+
+ control.Focus();
+ }
+ }
+
+ // This handles activations from clicks that did not start a size/move operation
+ ActivateConnection();
+ }
+ else if (m.Msg == WM_WINDOWPOSCHANGED)
+ {
+ // Ignore this message if the window wasn't activated
+ WINDOWPOS windowPos = Marshal.PtrToStructure(m.LParam, typeof(WINDOWPOS));
+ if (!((windowPos.flags & SWP_NOACTIVATE) == 0))
+ {
+ }
+
+ // This handles all other activations
+ if (!_inMouseActivate && !_inSizeMove)
+ {
+ ActivateConnection();
+ }
+ }
+ else if (m.Msg == WM_SYSCOMMAND)
+ {
+ for (int i = 0; i <= SysMenSubItems.Length - 1; i++)
+ {
+ if (SysMenSubItems[i] == m.WParam)
+ {
+ Screens.SendFormToScreen(Screen.AllScreens[i]);
+ break;
+ }
+ }
+ }
+ else if (m.Msg == WM_DRAWCLIPBOARD)
+ {
+ SendMessage(fpChainedWindowHandle, m.Msg, m.LParam, m.WParam);
+ if (clipboardchangeEvent != null)
+ clipboardchangeEvent();
+ }
+ else if (m.Msg == WM_CHANGECBCHAIN)
+ {
+ //Send to the next window
+ SendMessage(fpChainedWindowHandle, m.Msg, m.LParam, m.WParam);
+ fpChainedWindowHandle = m.LParam;
+ }
+ else if (m.Msg == KeyboardHook.HookKeyMsg)
+ {
+ if (!(m.WParam.ToInt32() == Win32.WM_KEYDOWN))
+ {
+ }
+
+ switch (KeyboardShortcuts.CommandFromHookKeyMessage(m))
+ {
+ case ShortcutCommand.PreviousTab:
+ SelectTabRelative(-1);
+ break;
+ case ShortcutCommand.NextTab:
+ SelectTabRelative(1);
+ break;
+ }
+ }
+ }
+ catch (Exception)
+ {
+ }
+
+ base.WndProc(ref m);
+ }
+
+ private void ActivateConnection()
+ {
+ if (pnlDock.ActiveDocument is UI.Window.Connection)
+ {
+ UI.Window.Connection cW = pnlDock.ActiveDocument;
+ if (cW.TabController.SelectedTab != null)
+ {
+ Crownwood.Magic.Controls.TabPage tab = cW.TabController.SelectedTab;
+ Connection.InterfaceControl ifc = tab.Tag as Connection.InterfaceControl;
+ ifc.Protocol.Focus();
+ (ifc.FindForm() as UI.Window.Connection).RefreshIC();
+ }
+ }
+ }
+
+ public void pnlDock_ActiveDocumentChanged(object sender, EventArgs e)
+ {
+ ActivateConnection();
+ UI.Window.Connection connectionWindow = pnlDock.ActiveDocument as UI.Window.Connection;
+ if (connectionWindow != null)
+ {
+ connectionWindow.UpdateSelectedConnection();
+ }
+ }
+
+ private void UpdateWindowTitle()
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new MethodInvoker(UpdateWindowTitle));
+ return ;
+ }
+
+ StringBuilder titleBuilder = new StringBuilder(System.Convert.ToInt32(Application.Info.ProductName));
+ const string separator = " - ";
+
+ if (IsConnectionsFileLoaded)
+ {
+ if (UsingSqlServer)
+ {
+ titleBuilder.Append(separator);
+ titleBuilder.Append(Language.strSQLServer.TrimEnd(':'));
+ }
+ else
+ {
+ if (!string.IsNullOrEmpty(ConnectionsFileName))
+ {
+ titleBuilder.Append(separator);
+ if (My.Settings.Default.ShowCompleteConsPathInTitle)
+ {
+ titleBuilder.Append(ConnectionsFileName);
+ }
+ else
+ {
+ titleBuilder.Append(Path.GetFileName(ConnectionsFileName));
+ }
+ }
+ }
+ }
+
+ if (!(SelectedConnection == null || string.IsNullOrEmpty(SelectedConnection.Name)))
+ {
+ titleBuilder.Append(separator);
+ titleBuilder.Append(SelectedConnection.Name);
+ }
+
+ Text = titleBuilder.ToString();
+ }
+
+ public void ShowHidePanelTabs(DockContent closingDocument = null)
+ {
+ DocumentStyle newDocumentStyle = pnlDock.DocumentStyle;
+
+ if (My.Settings.Default.AlwaysShowPanelTabs)
+ {
+ newDocumentStyle = DocumentStyle.DockingWindow; // Show the panel tabs
+ }
+ else
+ {
+ int nonConnectionPanelCount = 0;
+ foreach (DockContent document in pnlDock.Documents)
+ {
+ if ((closingDocument == null || document != closingDocument) && !(document is UI.Window.Connection))
+ {
+ nonConnectionPanelCount++;
+ }
+ }
+
+ if (nonConnectionPanelCount == 0)
+ {
+ newDocumentStyle = DocumentStyle.DockingSdi; // Hide the panel tabs
+ }
+ else
+ {
+ newDocumentStyle = DocumentStyle.DockingWindow; // Show the panel tabs
+ }
+ }
+
+ if (!(pnlDock.DocumentStyle == newDocumentStyle))
+ {
+ pnlDock.DocumentStyle = newDocumentStyle;
+ pnlDock.Size = new Size(1, 1);
+ }
+ }
+
+ private void SelectTabRelative(int relativeIndex)
+ {
+ if (!(pnlDock.ActiveDocument is UI.Window.Connection))
+ {
+ return ;
+ }
+
+ UI.Window.Connection connectionWindow = pnlDock.ActiveDocument;
+ Crownwood.Magic.Controls.TabControl tabController = connectionWindow.TabController;
+
+ int newIndex = tabController.SelectedIndex + relativeIndex;
+ while (newIndex < 0 | newIndex >= tabController.TabPages.Count)
+ {
+ if (newIndex < 0)
+ {
+ newIndex = tabController.TabPages.Count + newIndex;
+ }
+ if (newIndex >= tabController.TabPages.Count)
+ {
+ newIndex = newIndex - tabController.TabPages.Count;
+ }
+ }
+
+ tabController.SelectedIndex = newIndex;
+ }
+#endregion
+
+#region Screen Stuff
+ private void DisplayChanged(object sender, System.EventArgs e)
+ {
+ ResetSysMenuItems();
+ AddSysMenuItems();
+ }
+
+ private int[] SysMenSubItems = new int[51];
+ private static void ResetSysMenuItems()
+ {
+ SystemMenu.Reset();
+ }
+
+ private void AddSysMenuItems()
+ {
+ SystemMenu = new Tools.SystemMenu(this.Handle);
+ IntPtr popMen = SystemMenu.CreatePopupMenuItem();
+
+ for (int i = 0; i <= Screen.AllScreens.Length - 1; i++)
+ {
+ SysMenSubItems[i] = 200 + i;
+ SystemMenu.AppendMenuItem(popMen, Tools.SystemMenu.Flags.MF_STRING, SysMenSubItems[i], My.Language.strScreen + " " + System.Convert.ToString(i + 1));
+ }
+
+ SystemMenu.InsertMenuItem(SystemMenu.SystemMenuHandle, 0, Tools.SystemMenu.Flags.MF_POPUP | Tools.SystemMenu.Flags.MF_BYPOSITION, popMen, My.Language.strSendTo);
+ SystemMenu.InsertMenuItem(SystemMenu.SystemMenuHandle, 1, Tools.SystemMenu.Flags.MF_BYPOSITION | Tools.SystemMenu.Flags.MF_SEPARATOR, IntPtr.Zero, null);
+ }
+#endregion
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/CS/Forms/frmMain.resx b/mRemoteV1/CS/Forms/frmMain.resx
new file mode 100644
index 000000000..a0a4c9024
--- /dev/null
+++ b/mRemoteV1/CS/Forms/frmMain.resx
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 150, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
+ Cv8BNGKaggAAA31JREFUOE9lkm1MU3cUh/9L5pxabCozmU4TF5YNh86JumkKa2H09vblWkppoRRbkNt2
+ CG0F2kIpryWCFIrWYYWKBhMjhDFkZBtsBDfcNFnm4lzIFgSZMZrNGceSNSszq7/ddZ+UD0/O+XKe88vJ
+ IQCegN25Lk4Jhzk18bWmzMTpkEoQ7VLwo3UZgvt5qS+UUimCZyVb+eQ/lglq0gRx3MJ1fF8G/2qIeQ4B
+ 5UoE1Xy0KwWw7k2I5O97SVVKJxMr9epyQTCLF+d4xqotoewN+KhBiYu1NDxZibALeSjcsRJNujdah5t1
+ 5II3e7mgNzcxTrdyzaYhDxP7a+EKHn4RxHgXi0u9Tnx80onhylTf92fM5FpPESHvscX/Yz74jLXIoK+V
+ vny7UcT7zZ3Ge+BQbPt7ZrIfkRtDeDQzjKXZcdwZq3tcrNGyyeqzZLv6BCFlJQfilLIHd1fr0ucC2iT4
+ mfXw527BIeFa1JfIcG+iA39c7sbi583w2/TR1XuOWtZmniGrRT2EOOXb41TJdtQ1MUmop9bDq9iMcm64
+ QrIRyuTn0epzoKPLh1BfGP1fx/CmdurWir2n3+WJOUGFMIFUCteQsj0rvM2FaZg8VYUPW03wF7+FXmc2
+ LJIkVH16HYYvgZwxoGUaOP7JEl5RjCzwRSeExCTfTbR0OmEl2ywzQ01Ymp/E0g9D+P1KGNHZCUx1mWDu
+ n0PB4GNozsZAnQTMpxcxcS6MgQrqJqFkCrJPaiC7xPmK98slkT+vhhCb5VYtfIZfpwJwWzXQhH9B/nlA
+ NwAUDnJJaq9juq8Fdzp2/UPkcjmRyRXJaaKsS/XempjXZccHbSXorjGgxlUBm80OWWk7cvvuIu/CQ4iP
+ /Awhc+reeL3029n+IheRMjmbDtkc06r9++F0usCaLRgdHUUoFMIBowmOw4eRp9PhbVllZKvi/N3N1MiP
+ 6bpw2Vfd7IvzA+WriNeUORIONMLXcgR6vR4FBQUIBoNob/dDqVRCrVbD5a7GsYYyuPWic08/Hrkf2Inv
+ BhtRWV2Hzs5OLrINDMOApmlYrVa4XFwqixUPxhuw0JzyaJlgrkdzccxLIUdfBI/Hg7a2tng1Go3w+/2w
+ 2+2Q0jJ8c5TCTz353BmfEswP2hImOg0p72TJfNxBb2u12kWVShXl+qhGo4mIxeJbNC1nb4SNr98ccCQ8
+ KQD5F90VJ4irTWosAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi9JREFUOE+lk+9P
+ UlEYx/2netf6sfmqtdqsOXsRrRFzUas1XTrMRHRek/ihVwFBupEFCiUliiZhBaNkChdyq+ms1Sx+DPBe
+ 4Mr1Vd8OvKAYzLZ68Tnb2Tnn8zznOc9pAvBfVAabJ6phXrCpCVeE1zoaYK+FdkZ4izuiqwqYeTadyWZ/
+ FgUBwr54KNmiiDRXgPFZlKsKypELRQETC7vQLMSgXJyFbYOGMz4Ie0yF8YAaVx+Y0WENosv6EZmCiHEX
+ y1cFOpJm2W5c3AW1tAzbOo2ZD52wrLfDuCaFKSyH2jcA+eQTKJhPSPMNBAUimFz6DqV3Gg4S1RSWYfTd
+ RagDF0C9bYM2cAuXxu6j99EWUnyJCKK1Ap4ILMs/0Oex4WGkF/qQBNSbVvSvtuDuqxZQ/uuQ6O+h//E2
+ ktx+vYATRFhfJkB5vKADw9CFpFCunoNi5Sz6/G2487wbcsM0Bh07SO41yGCPVJfxJUF74+h2MqDmb2LE
+ LwPlu4we1zVcoUdJ+iEMz36uF5TfOkcqa/OnKpIxTwy3VRIMaZtBqU9COdAKlf09tHNfoX76BYlGgmxe
+ hMJ5Bl0zp9FpPwVzzxFsMucRJ7iHjqPdfAIy0zFIDUfrBRr7Bp8jgsDO6yqhTTfCa1OIu28guLVSs5bI
+ lUA7/8ygIijVbDqMRE6sFRhckW85Lo88KWReOABfQQRP5lwdB8hUWpn93cpT7uiIeY4Nlu9VNv8N8g94
+ ckZfFfw7aPoFMekVKhSu/5wAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgRJREFUOE+NkEtv
+ EmEUhue/+FuMGmOMK1cuXYvRhaRpmuE+lEscCoIz0IU2WEtrDKUtiIoMN5PRSZGLN2iKFAQtrhoXY/r2
+ DAl2qJPaxfPN5JzzfN85hwHwX2KxmEkUxYYgCGokElH1ualCI6LRqInEg263i9FohFAoROHj/FSxESQ3
+ Op0O+v0+0uk0AoEAhY/zU8VGhMNhVXtdURTwPJ/XYj6fDx6PB263WzWU9FDLf1qtForFIvx+/xuv1ysl
+ Egk0m004nc7TLwgGgxep5cNarYZKpYJsNotMJoN8Po9CoQC73d4wFOdXv/Gu+GeFWlbL5TJkWYb2LZVK
+ kCQJuVwONpvtwGKxmP6RueVdXkz3Ed7owbP8EdVqFalUChzHHWot06uq1WptsCxr0uqnZKcmb/aQVX4h
+ 834Ez1oHM0IVLpfrt8PhOKevnfD3xx7f5SMkvyAxnhvg0cvvSFZ+gn28gxtc9a1e0jM+rEs7fHi9h8y7
+ EZZeDxBa30OUxlgr/YB5sY1r1vrTk+IEZo7khWQPWzLJrwZYSO5BoE5WC0Pci7Vxlf2QMBInMObFFjbl
+ /XHL/PMuHtLyEtIQd8U2rsydLmswtx58oVn3IWzR5mmMFZLvkHxpdvuZkXAS5ub9T7K2qJX8EE9yQ9yO
+ fMWFmbPJGuPjurNep0Xh8uw2zpvPLgNgjgByavlR+3PXTAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqtJREFUOE+lk+1P
+ klEYxv1b9E9oreZq1Wp9q63xoQ99cGq+Ak0tV8tgOUuHOc2SUjPTqaCmzqko8CQggmiiCAgCDybypjww
+ EB541Gy7QpaQ1dpaH35n5z67r2u7zrlPFoD/4rcDDXmYo3Yc8FS2fVKxwdCfLHFaZqbJGWOUN2XYy/m1
+ /1ShtDGsWWvC7wwcYnOXgcNHp3DuJGD1JjCyGPQPLQRYP2vSG2I9zpKaYvEtah9rX8IQz3kgGLOhfmQD
+ XcQmdNYg7H4aHxSeeBexnTZJLZK1aPbkasS3GWCwYAuhNinqJJzwhBi4QwmMLXpRIzZBvuqHxR1F6yTp
+ ax63Z6cNRpeC/HVPHCvOCPiDFjzsWUPi4CjJtx8coXbQiJp+A+YtFNTrFOrEJn7aoG/OT9qTWbuJLVT3
+ GFDVvQJPMIGpZS+U5h0wSQOl2Qd2uwatU1aYXGE86taTaYMOmYtx+GLgi4yofK8Hp1OXbNZiWu9GmD7A
+ bphB76wdpW1qVL7TwureA0eoZdIGLeN2xu6N4fGAEewOLcrfalD2RoMY8xXbFA2uUI2iFgXuJuEKVbB4
+ IshvUmYMnonNpHk7AqHEDk67DmXCeZS8nkPxS2WKwhcEChtlKGiUol68DL2Twu06aSZCMg9fpvdCa6VQ
+ 2aFLC0PRfVB7DPIEMykKBRIQq26IknFu1ExkLpErXMgufzXvW7JRkK94wG5ToaBJjrZxQ4pjcX7DBIZV
+ DqiMXlyvHvNdvT+aecZj8gSzrDsNRFxj2YHS5MNz0RJKmqUoapzG014t5HoXFGseXK74GL94b+j0IJ1w
+ iy9h3Xwy6e8jNvDZEYDRFUqxaNtFl8SMXI7Yf75c9OdRPuHag9GcK1UjvEsVw+QF7iCdyxbT58oGyLOl
+ /bwzxX1//0z/DrK+A9evBaLmuZREAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA2BJREFUOE9dkt9P
+ Wmccxkm63bXZf+F1l6UXLloidlRRZp1Lnc38OYEoHA2SoriMdkcWqQ4rpqur3VyrRYuKqAW7tqBCsZQp
+ BxggKAqt7TalczRd1WZd+uw956Jpd/FJnnzzPp/35uEBeIsmT20uYYyQIjwnvCBsE2Yod03B/9+/WXyH
+ cI0t3HlownL6NuYeLMK2toipmBMTsRE0zFW+lN4+NVs3W37wLQEpvUvwDMW/xdauH2s7EYR3GFhTAdiT
+ KxiKRHA1yGAs6IHR14lKa1moYqzkvTcFpiuxTiSfLWDlmRfRTBSB7SBGElGMJ9fR60+g+34MPS4frFEn
+ jN52lA2LZjkBKecQ/tn8ewG2jB0TT+24uePCzUcR/BBfxXfhNVB2P6gbXuiW7BhIXYD/DyvEl4X/Fl4U
+ lLACiz35PZaf2DGamYb5Lx986RAMgSi6l1YhtfkhczigXBmAKklDud6O4aAR1+7rkX8+9xYr2Pz1zxsY
+ 2rwMQ/pH8nsE3nQQTbcCkE4v47RvCbKEGuJVKcQxCSrDCmjvqOBOmHBUn/07K9hdfzqHjvjXoBKtGPht
+ HqOpZVRe/wUKpxvdaz+jJj4CfqgVwmAjTjgqoBj/AszjGWTTR/Z41N2avY3MHL4KqaAI9WLwgQNVo15U
+ TYVRdukemhz30B6ygvLYUG22otz8JWTDp8A8msYR7fv7vMb5qseB7Sn0RjrQtT6PM4tOVOt/Aq3vxuDg
+ INRnv0HxWQuO01Mk67ibrrMD/SN6fNB6eJtHhjFjjfXBlryC5rs06s+pYTQasbW1hY2NDbhcLrTrutB8
+ pgvRWJy7eTxkD+SNoCpvk1drOykkw3gZTttRY/wMqlYVmHAYFVQbiorFkEgk6Ovrg0aj4XJRcRHU2iZO
+ 0qJq2eWGVH7942nDghqUtha0juYEDSYX8o4J4XQ6wTAM3G43LBYL8j8SQGOScgKapvc5wSdXCw+RYYRq
+ tZ+CapZzgmqqBYL8YxAKhSgtLeVgsyBfANHnhbusQCaTZTgBy/ELeYdyNdnuopOiVz3GHpgnxjE5OYn+
+ /n4olUq0tbVxmb2Zx8wZg8GQEYvFsdcClqysrAM5sg9bCkoK9uokda8a5A1olDciT8HPHG3OYUjel8vl
+ +/X19c9FIlGKz+cf/g/A3LOff0xp0AAAAABJRU5ErkJggg==
+
+
+
+ 367, 17
+
+
+ 17, 17
+
+
+ 504, 17
+
+
+ 671, 17
+
+
+ 778, 17
+
+
+ 17, 56
+
+
+ 245, 17
+
+
+ 155
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/CMDSwitches.htm b/mRemoteV1/CS/Help/CMDSwitches.htm
new file mode 100644
index 000000000..842deea0b
--- /dev/null
+++ b/mRemoteV1/CS/Help/CMDSwitches.htm
@@ -0,0 +1,28 @@
+
+
+
+ Command-Line Switches
+
+
+
+
+
+ The following is a list of command line switches supported by mRemote.
+
+ /cons :PathToConnectionsFile or /c :PathToConnectionsFile
+ Loads the connections file from the given path
+ /reset
+ Resets window position, panels and toolbars
+ /resetpos or /rp
+ Resets the window position
+ /resetpanels or /rpnl
+ Resets all panel's positions
+ Use this if you have troubles with panel layouts
+ /resettoolbar or /rtbr
+ Resets the positions of all toolbars
+ /noreconnect or /norc Temporary disables reconnect to previously opened sessions Use this if you have problems opening mRemote after you enabled the setting and
+ restarted mRemote
+
+
+
+
diff --git a/mRemoteV1/CS/Help/Config.htm b/mRemoteV1/CS/Help/Config.htm
new file mode 100644
index 000000000..ce9389855
--- /dev/null
+++ b/mRemoteV1/CS/Help/Config.htm
@@ -0,0 +1,13 @@
+
+
+
+ Config
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/CS/Help/Configuration.htm b/mRemoteV1/CS/Help/Configuration.htm
new file mode 100644
index 000000000..b7e0d1101
--- /dev/null
+++ b/mRemoteV1/CS/Help/Configuration.htm
@@ -0,0 +1,163 @@
+
+
+
+ Configuration
+
+
+
+
+
+ First start
+
+ Once you got mRemote installed and run it for the first time you should see a
+ screen like on the following screenshot.
+
+
+
+ The first thing that catches your attention will probably be the info box
+ popping up.
+ Don't freak out just yet, this is not a error message and it's totally ok to
+ show up on the first run.
+ It just tells you that the connections file could not be found at the default
+ location and that mRemote will create a new one for you at this location.
+ If you click anywhere else in the application the panel will hide itself again.
+ (Tip: You can also hit Escape to hide the Errors and Infos panel)
+
+
+
+ Now that we now about the Errors and Infos panel take a deep breath and just
+ stare at the gorgeous about screen for a few seconds. =)
+ No, seriously, to create your first connection continue reading.
+
+ Creating Connections
+
+ Right click the root item (the blue ball labeled "Connections") in the
+ Connections panel and select "Add Connection".
+
+
+
+ A new item shows up under the root item. You can give it a name now (or rename
+ it later). I just named mine "Test".
+
+
+
+ Now have a look at the Config panel in the bottom left, just under the
+ Connections panel.
+
+
+
+ As you may notice this is where you configure all the properties of connections
+ and folders.
+ There are a lot of values that can be set but for our first connection we will
+ keep things simple.
+
+ The most important things right now are that we tell the application which host
+ we want to connect to and which protocol we want to use.
+ In this example I will use a Windows 2003 server that has RDP (Remote Desktop
+ Protocol) enabled.
+ As RDP is the default protocol whenever you create a new connection I don't have
+ to change anything there.
+
+ The next thing I'll do is to fill the Hostname/IP field with the hostname I
+ want to connect to.
+
+
+
+ I'll also fill the Username and Password fields so I will be automatically
+ logged on to the server.
+
+
+
+ Ok, that's it, we are ready for our first connection test.
+
+ Opening and Closing Connections
+
+ There are multiple ways to open a connection in mRemote, but the easiest is to
+ just double-click the connection in the Connections panel.
+
+ If I do that now, a new panel named "General" with one tab inside named "Test"
+ will show up.
+
+
+
+ Alright, mRemote is now trying to connect to the specified host.
+
+ If it cannot connect you will see a message popping up like on the following
+ screenshot.
+
+
+
+ This for example means the hostname cannot be resolved.
+
+ Instead, if all goes well you should see the remote desktop.
+
+
+
+ If you do not want to log off from the remote machine but just close it you can
+ do this by simply double-clicking the tab labeled "test" or just close the whole
+ "General" panel by clicking the small "x" in the upper right corner.
+
+ Folders and Inheritance
+
+ Folders in mRemote cannot only be used to categorize connections but also to
+ apply properties to the underlying connections.
+
+ Example:
+ You have 10 Remote Desktop enabled servers in one domain and 15 in another
+ domain.
+ Normally you would spend a lot of time creating all those connections and
+ setting the individual properties like username, password, etc.
+ In mRemote there is an easier way. You just create two folders, one for domain A
+ and one for domain B and set all properties there.
+ Then create the Connections and let them inherit every property. The only
+ properties left to fill on Connection basis are the Connection's name and
+ hostname. Everything else will be inherited from the parent folder.
+
+ "Sounds cool, but how to do it?"
+ I'll show you how to do it!
+
+ First add a new folder.
+
+
+
+ Then give it a name and fill all the properties you need (just like you did with
+ the test Connection).
+
+
+
+
+
+ When you're done setting the values you can either just drag the test Connection
+ inside the folder or create a new one.
+
+
+
+ Right now nothing has changed and nothing will be inherited.
+ To enable inheritance switch to the inheritance view by clicking the dedicated
+ button.
+
+
+
+ The properties that show up now are almost the same as before, but you can only
+ select yes or no.
+
+
+
+ When no is selected the property will not be inherited, yes indicates an
+ inherited property.
+ For this test set "Inherit Everything" to Yes.
+
+ Now if you switch back to the properties view (the button left of the
+ inheritance button) you should see that not much is left of all those
+ properties.
+
+
+
+ Only the Name and Hostname/IP properties are left over, everything else will be
+ inherited from the parent folder.
+ Of course you can also only let some of the properties be inherited.
+
+ Just play around with this a bit and you'll get the hang of it.
+
+
+
diff --git a/mRemoteV1/CS/Help/ConfigurationSQL.htm b/mRemoteV1/CS/Help/ConfigurationSQL.htm
new file mode 100644
index 000000000..419ec236f
--- /dev/null
+++ b/mRemoteV1/CS/Help/ConfigurationSQL.htm
@@ -0,0 +1,49 @@
+
+
+
+ SQL Configuration
+
+
+
+
+
+ Warning
+
+ The SQL feature is in an early beta stage and not intended for use in an
+ productive environment!
+ I recommend you to do a full backup of your connections and settings before
+ switching to SQL Server.
+
+ Steps to configure your SQL Server
+
+ Create a new Database called "mRemoteNG" on your SQL Server.
+ Run the SQL Script below on the newly created Database.
+ Give the users that you want to grant access to the mRemote Connections Database
+ Read/Write permissions on the Database.
+
+
+ Steps to configure mRemoteNG for SQL
+
+ Start mRemoteNG if it's not already running.
+ Go to Options - Connections.
+ Check the box that says "Use SQL Server to load & save connections".
+ Fill in your SQL Server hostname or ip address.
+ If you do not use your Windows logon info to authenticate against the SQL Server
+ fill in the correct Username and Password.
+ Click OK to apply the changes. The main window title should now change to
+ "mRemoteNG | SQL Server".
+ Now click on File - Save to update the tables on your SQL Server with the data
+ from the loaded connections xml file. (Do not click File - New, this doesn't
+ work yet)
+ You should now be able to do everything you were able to do with the XML storage
+ plus see the changes live on another mRemoteNG instance that is connected to the
+ same Database.
+
+
+
+ SQL Table creation Script
+
+ Click here to view the SQL script
+
+
+
diff --git a/mRemoteV1/CS/Help/Connection.htm b/mRemoteV1/CS/Help/Connection.htm
new file mode 100644
index 000000000..22e2784eb
--- /dev/null
+++ b/mRemoteV1/CS/Help/Connection.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connection
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/Connections.htm b/mRemoteV1/CS/Help/Connections.htm
new file mode 100644
index 000000000..6c2e919a8
--- /dev/null
+++ b/mRemoteV1/CS/Help/Connections.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connections
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/CS/Help/ErrorsAndInfos.htm b/mRemoteV1/CS/Help/ErrorsAndInfos.htm
new file mode 100644
index 000000000..8659fe062
--- /dev/null
+++ b/mRemoteV1/CS/Help/ErrorsAndInfos.htm
@@ -0,0 +1,13 @@
+
+
+
+ Errors and Infos
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/ExternalTools.htm b/mRemoteV1/CS/Help/ExternalTools.htm
new file mode 100644
index 000000000..5f9a91af5
--- /dev/null
+++ b/mRemoteV1/CS/Help/ExternalTools.htm
@@ -0,0 +1,245 @@
+
+
+
+ External Tools
+
+
+
+
+
+
+ Introduction to External Tools
+
+ External Tools can help you get things done that can't be done in
+ mRemoteNG.
+ You can for example start a command prompt or launch your favorite FTP tool from
+ within mRemoteNG.
+ This wouldn't make much sense by itself because you can already launch your
+ applications by using the Windows Start Menu, Quick Launch or whatever you
+ prefer to use
+ to start your apps.
+
+ But there's more!
+
+ In mRemoteNG, you can launch applications and tell them what to do with the use of
+ arguments (parameters) and variables of the currently selected Connection.
+ You can, for example, select your home router's SSH Connection entry and do a
+ traceroute (tracert) on that host.
+ This is much quicker and more powerful than opening the console and typing
+ "tracert yourhost".
+
+ The external tools configuration is stored in %APPDATA%\mRemoteNG\extApps.xml
+
+
+ Variables
+
+
+
+ Variables and arguments can be used to tell the external tool what to do.
+
+ This is the list of variables supported by mRemoteNG:
+
+
+
+ %NAME%
+ %HOSTNAME%
+ %PORT%
+ %USERNAME%
+ %PASSWORD%
+ %DOMAIN%
+ %DESCRIPTION%
+ %MACADDRESS%
+ %USERFIELD%
+
+
+
+ Variables always refer to the currently selected connection. Variable names are case-insensitive.
+ Variables can be used in both the Filename and Arguments fields.
+
+
+ mRemoteNG will also expand environment variables such as %PATH% and
+ %USERPROFILE%.
+ If you need to use an environment variable with the same name as an mRemoteNG
+ variable, use \% instead of %. The most common use of this is for the USERNAME
+ environment variable. %USERNAME% will be expanded to the username set in the
+ currently selected connection. \%USERNAME\% will be expanded to the value set in
+ the USERNAME environment variable.
+
+ If you need to send a variable name to a program without mRemoteNG expanding it,
+ use ^% instead of %. mRemoteNG will remove the caret (^) and leave the rest
+ unchanged. For example, ^%USERNAME^% will be sent to the program as %USERNAME%
+ and will not be expanded.
+
+
+ Special Character Escaping
+
+
+
+ Expanded variables will be escaped using the rules below. There are two levels
+ of escaping that are done. The first is escaping for standard argument splitting
+ (C/C++ argv, CommandLineToArgvW, etc). The second is escaping shell
+ metacharacters for ShellExecute.
+
+ Argument splitting escaping:
+
+
+ Each quotation mark will be escaped by a backslash.
+ One or more backslashes (\) followed by a quotation mark ("):
+
+ Each backslash will be escaped by another backslash.
+ The quotation mark will be escaped by a backslash.
+ If the connection's user field contains
+ "This" is a \"test\".
+ Then %USERFIELD% is replaced with
+ \"This\" is a \\\"test\\\".
+
+
+ A variable name followed by a quotation mark (for example, %USERFIELD%") with
+ a value ending in one or more backslashes:
+
+ Each backslash will be escaped by another backslash.
+ Example:
+ If the connection's user field contains c:\Example\
+ Then "%USERFIELD%" is replaced with "c:\Example\\"
+
+
+
+
+
+ To disable
+ argument splitting escaping for a variable, precede its name with a minus (-)
+ sign. For example, %-USERFIELD%.
+
+ Shell metacharacter escaping:
+
+
+ The shell metacharacters are ( ) % ! ^ " < > & |
+ Each shell metacharacter will be escaped by a caret (^).
+
+
+ To disable both argument splitting and shell metacharacter escaping for a
+ variable, precede its name with an exclamation point (!). For example,
+ %!USERFIELD%. This is not recommended and may cause unexpected results.
+
+ Only variables that have been expanded will be escaped. It is up to you to
+ escape the rest of the arguments.
+
+
+ Variable Examples
+
+
+ Arguments User Field Result
+
+ %USERFIELD% "Example" Text
+ \^"Example\^" Text
+
+
+ %-USERFIELD% "Example" Text
+ ^"Example^" Text
+
+
+ %!USERFIELD% "Example" Text
+ "Example" Text
+
+
+ ^%USERFIELD^% "Example" Text
+ %USERFIELD%
+
+
+ ^^%USERFIELD^^% "Example" Text
+ ^%USERFIELD^%
+
+
+ -d "%USERFIELD%" c:\Example\ -d "c:\Example\\"
+
+
+ -d "%-USERFIELD%" c:\Example\ -d "c:\Example\"
+
+
+ -d "%USERFIELD%" Left
+ & Right -d "Left ^& Right"
+
+
+ -d "%!USERFIELD%" Left
+ & Right -d "Left & Right"
+
+
+ %WINDIR% N/A c:\Windows\
+
+
+ \%WINDIR\% N/A c:\Windows\
+
+
+ \^%WINDIR\^% N/A
+ \%WINDIR\%
+
+
+ \\%WINDIR\\% N/A \\%WINDIR\\%
+
+
+
+
+ Example
+
+ First of all, start the external tools editor. To do this, click Tools in the main menu and
+ select External Tools.
+ You will see a screen like on the following screenshot.
+
+
+
+ The fields below the list are greyed out because you haven't created an external tool
+ entry yet.
+ To create one, right click the blank area in the list and select Add, as in the
+ screenshot below.
+
+
+
+ This is what you'll get:
+
+
+
+ So the three fields are now available and need to be filled.
+ The Display Name is simply the name you will see when you want to launch that
+ tool, so give it a descriptive name.
+ I named mine Traceroute as I will create a external tool that will start the
+ tracert command in the console.
+
+
+
+ Ok, the next thing we'll need is a filename. This is the program that we
+ want to be executed.
+ I simply type in cmd for a Windows cmd console.
+
+
+
+ Now the fun part comes in—the arguments.
+ The Windows cmd has a command line argument that tells the console to launch the
+ command followed by that argument and stay open.
+ It's /K. (There's also /C, this is useful when you want the console to close
+ after the command was executed)
+ In this case, I'll use /K as I want to look through the result when the command
+ completes.
+ After that, I just type tracert %HostName%. This tells the console to do a
+ traceroute on the hostname of the currently selected Connection.
+
+
+
+ Alright! That's all we'll need.
+ Now right click one of you connections, click Tools, External Tools
+ and select Traceroute.
+
+
+
+ Voil! A console window will popup and execute your tracert command.
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/ImportFromAD.htm b/mRemoteV1/CS/Help/ImportFromAD.htm
new file mode 100644
index 000000000..fb9585b99
--- /dev/null
+++ b/mRemoteV1/CS/Help/ImportFromAD.htm
@@ -0,0 +1,13 @@
+
+
+
+ Import from Active Directory
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/Index.htm b/mRemoteV1/CS/Help/Index.htm
new file mode 100644
index 000000000..388465618
--- /dev/null
+++ b/mRemoteV1/CS/Help/Index.htm
@@ -0,0 +1,38 @@
+
+
+
+mRemote Help
+
+
+
+
+ Introduction
+ Getting started:
+
+ User Interface:
+
+ Quick Reference
+
+
diff --git a/mRemoteV1/CS/Help/Installation.htm b/mRemoteV1/CS/Help/Installation.htm
new file mode 100644
index 000000000..f9cd6feaa
--- /dev/null
+++ b/mRemoteV1/CS/Help/Installation.htm
@@ -0,0 +1,48 @@
+
+
+
+ Installation
+
+
+
+
+
+ Downloads are provided in four different packages, the setup package, binary package,
+ portable package and
+ the source package. They are described below.
+
+ Setup Package
+
+ The setup package is the compiled version of mRemote which comes in the form of
+ a NSIS generated setup.
+ The common way to get mRemote up and running
+
+ Bin Package
+
+ The binary package is a zip package and contains the same files as the setup
+ package but has no automated installer.
+
+ Portable Package
+
+ The portable package consists of the same files as the bin package but contains
+ an modified version of the executable which stores and loads all your settings
+ from files in the application's directory.
+ This package can be used to run mRemote from an USB stick an preserve your
+ configuration wherever you go.
+
+ Source Package
+
+
+ The source package is a zip package and contains the source code in form of a
+ Visual Studio 2008 solution.
+
+
+
+ Updating and Uninstalling
+
+ mRemote can be updated without uninstalling it before.
+ There are no user preferences stored in the application directory (except if you
+ put them there), so uninstalling doesn't wipe your settings.
+
+
+
diff --git a/mRemoteV1/CS/Help/Introduction.htm b/mRemoteV1/CS/Help/Introduction.htm
new file mode 100644
index 000000000..8fa9f8fe2
--- /dev/null
+++ b/mRemoteV1/CS/Help/Introduction.htm
@@ -0,0 +1,45 @@
+
+
+
+ Introduction
+
+
+
+
+
+ Introduction
+
+ mRemote is a multi-protocol remote connections manager.
+ As of Version 1.00 it supports the RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S protocols.
+ The main goal is to minimize window clutter and to provide a easy gui for managing all your remote connections.
+
+
+ Features
+
+ Free and Open Source, released under the GPL
+ Panels and tabs allow to group certain connections together, dock them to any side of the window or completely undock them and move them to another screen for example
+ Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)
+ Easy to organize and maintain list of connections
+ Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info
+ Support for importing connections from Active Directory
+ Allows creating nested containers (folders) to categorize connections
+ "Quick Connect" feature to quickly open a connection without creating an entry
+ "Quick Search" feature to quickly find a connection while typing
+ Support for SCP/SFTP (SSH) file transfers
+ Assign icons to connections to easily identify purpose
+ Screenshot manager allows to collect multiple screenshots and save them all together or copy them to the clipboard
+ View remote session info and log off sessions (RDP)
+ Portable (with the use of command line switches)
+ "Auto-Update" feature
+ Show description tooltips when hoovering over connections
+ System tray icon with connection menu
+ Fullscreen (Kiosk) mode
+ Assign global credentials to use when no information is provided on connection basis
+ Host Up/Down (Ping) feature shows if the selected host answers to a ping
+
+ License
+
+ The application is released under the GPL (V2)
+ Binary and source code packages are available for download.
+
+
diff --git a/mRemoteV1/CS/Help/Main.css b/mRemoteV1/CS/Help/Main.css
new file mode 100644
index 000000000..b2b8afd18
--- /dev/null
+++ b/mRemoteV1/CS/Help/Main.css
@@ -0,0 +1,148 @@
+/* COMMON STUFF */
+
+body
+{
+ background-color: #FFFFFF;
+ margin-left: 10px;
+ margin-top: 10px;
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+
+body, td, th
+{
+ font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #333333;
+}
+
+img
+{
+ border: none;
+}
+
+ul
+{
+ list-style: square;
+}
+
+
+
+/* HEADINGS */
+
+.heading1
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 16px;
+ color: Black;
+}
+.heading1 a:link
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:visited
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:hover
+{
+ color: Black;
+ text-decoration: none;
+ border-bottom: 5px solid #e9e9e9;
+}
+
+.heading2
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 15px;
+ color: Black;
+}
+
+.heading3
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 14px;
+ color: Black;
+}
+
+.heading4
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: Black;
+}
+
+.heading5
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ color: Black;
+}
+
+
+
+
+/* LINKS */
+
+a:link
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:visited
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:hover
+{
+ color: Black;
+ text-decoration: underline;
+}
+
+
+
+
+/* TABLES */
+
+table {
+ border-collapse: collapse;
+}
+
+table, th, td {
+ border: 1px solid black;
+}
+
+th,td {
+ padding: 5px;
+}
+
+th {
+ background-color: lightgrey;
+ text-align: left;
+}
+
+
+/* MISC STYLES */
+
+.Code
+{
+ padding-right: 5px;
+ padding-left: 5px;
+ color: #000000;
+ font-family: 'Courier New' , Monospace;
+ background-color: #C1C1C1;
+}
+
+.monospace {
+ white-space: nowrap;
+ font-family: 'Courier New', monospace;
+}
+
+.nowrap {
+ white-space: nowrap
+}
diff --git a/mRemoteV1/CS/Help/MainMenu.htm b/mRemoteV1/CS/Help/MainMenu.htm
new file mode 100644
index 000000000..1b8ac409a
--- /dev/null
+++ b/mRemoteV1/CS/Help/MainMenu.htm
@@ -0,0 +1,13 @@
+
+
+
+ Main Menu
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/CS/Help/Options.htm b/mRemoteV1/CS/Help/Options.htm
new file mode 100644
index 000000000..90535aa16
--- /dev/null
+++ b/mRemoteV1/CS/Help/Options.htm
@@ -0,0 +1,13 @@
+
+
+
+ Options
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/PortScan.htm b/mRemoteV1/CS/Help/PortScan.htm
new file mode 100644
index 000000000..5d96e08f4
--- /dev/null
+++ b/mRemoteV1/CS/Help/PortScan.htm
@@ -0,0 +1,13 @@
+
+
+
+ Port Scan
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/CS/Help/Prerequisites.htm b/mRemoteV1/CS/Help/Prerequisites.htm
new file mode 100644
index 000000000..68e24ee3a
--- /dev/null
+++ b/mRemoteV1/CS/Help/Prerequisites.htm
@@ -0,0 +1,35 @@
+
+
+
+ Prerequisites
+
+
+
+
+
+ Supported Operating Systems:
+
+
+ Prerequisites:
+
+
+ ATTENTION!
+ mRemote was only tested under 32bit environments, so
+ 64bit systems are
+ unsupported but may run mRemote just as usual.
+
+
+
diff --git a/mRemoteV1/CS/Help/QuickConnect.htm b/mRemoteV1/CS/Help/QuickConnect.htm
new file mode 100644
index 000000000..943e82e9a
--- /dev/null
+++ b/mRemoteV1/CS/Help/QuickConnect.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Connect
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/QuickReference.htm b/mRemoteV1/CS/Help/QuickReference.htm
new file mode 100644
index 000000000..c088ed03a
--- /dev/null
+++ b/mRemoteV1/CS/Help/QuickReference.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Reference
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/SQLScript.txt b/mRemoteV1/CS/Help/SQLScript.txt
new file mode 100644
index 000000000..a70599561
--- /dev/null
+++ b/mRemoteV1/CS/Help/SQLScript.txt
@@ -0,0 +1,141 @@
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblCons]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblRoot]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblUpdate]
+GO
+
+CREATE TABLE [dbo].[tblCons] (
+ [ID] [int] IDENTITY (1001, 1) NOT NULL ,
+ [ConstantID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PositionID] [int] NOT NULL ,
+ [ParentID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [LastChange] [datetime] NOT NULL ,
+ [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Type] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Expanded] [bit] NOT NULL ,
+ [Description] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Icon] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Panel] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Username] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [DomainName] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Password] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Hostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Protocol] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [PuttySession] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Port] [int] NOT NULL ,
+ [ConnectToConsole] [bit] NOT NULL ,
+ [UseCredSsp] [bit] NOT NULL ,
+ [RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ICAEncryptionStrength] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Colors] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Resolution] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [DisplayWallpaper] [bit] NOT NULL ,
+ [DisplayThemes] [bit] NOT NULL ,
+ [EnableFontSmoothing] [bit] NOT NULL ,
+ [EnableDesktopComposition] [bit] NOT NULL ,
+ [CacheBitmaps] [bit] NOT NULL ,
+ [RedirectDiskDrives] [bit] NOT NULL ,
+ [RedirectPorts] [bit] NOT NULL ,
+ [RedirectPrinters] [bit] NOT NULL ,
+ [RedirectSmartCards] [bit] NOT NULL ,
+ [RedirectSound] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RedirectKeys] [bit] NOT NULL ,
+ [Connected] [bit] NOT NULL ,
+ [PreExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PostExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCCompression] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCEncoding] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCAuthMode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyType] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyIP] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPort] [int] NULL ,
+ [VNCProxyUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCColors] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCSmartSizeMode] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCViewOnly] [bit] NOT NULL ,
+ [RDGatewayUsageMethod] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayHostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayUseConnectionCredentials] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayDomain] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [InheritCacheBitmaps] [bit] NOT NULL ,
+ [InheritColors] [bit] NOT NULL ,
+ [InheritDescription] [bit] NOT NULL ,
+ [InheritDisplayThemes] [bit] NOT NULL ,
+ [InheritDisplayWallpaper] [bit] NOT NULL ,
+ [InheritEnableFontSmoothing] [bit] NOT NULL ,
+ [InheritEnableDesktopComposition] [bit] NOT NULL ,
+ [InheritDomain] [bit] NOT NULL ,
+ [InheritIcon] [bit] NOT NULL ,
+ [InheritPanel] [bit] NOT NULL ,
+ [InheritPassword] [bit] NOT NULL ,
+ [InheritPort] [bit] NOT NULL ,
+ [InheritProtocol] [bit] NOT NULL ,
+ [InheritPuttySession] [bit] NOT NULL ,
+ [InheritRedirectDiskDrives] [bit] NOT NULL ,
+ [InheritRedirectKeys] [bit] NOT NULL ,
+ [InheritRedirectPorts] [bit] NOT NULL ,
+ [InheritRedirectPrinters] [bit] NOT NULL ,
+ [InheritRedirectSmartCards] [bit] NOT NULL ,
+ [InheritRedirectSound] [bit] NOT NULL ,
+ [InheritResolution] [bit] NOT NULL ,
+ [InheritUseConsoleSession] [bit] NOT NULL ,
+ [InheritUseCredSsp] [bit] NOT NULL ,
+ [InheritRenderingEngine] [bit] NOT NULL ,
+ [InheritICAEncryptionStrength] [bit] NOT NULL ,
+ [InheritRDPAuthenticationLevel] [bit] NOT NULL ,
+ [InheritUsername] [bit] NOT NULL ,
+ [InheritPreExtApp] [bit] NOT NULL ,
+ [InheritPostExtApp] [bit] NOT NULL ,
+ [InheritMacAddress] [bit] NOT NULL ,
+ [InheritUserField] [bit] NOT NULL ,
+ [InheritExtApp] [bit] NOT NULL ,
+ [InheritVNCCompression] [bit] NOT NULL,
+ [InheritVNCEncoding] [bit] NOT NULL ,
+ [InheritVNCAuthMode] [bit] NOT NULL ,
+ [InheritVNCProxyType] [bit] NOT NULL ,
+ [InheritVNCProxyIP] [bit] NOT NULL ,
+ [InheritVNCProxyPort] [bit] NOT NULL ,
+ [InheritVNCProxyUsername] [bit] NOT NULL ,
+ [InheritVNCProxyPassword] [bit] NOT NULL ,
+ [InheritVNCColors] [bit] NOT NULL ,
+ [InheritVNCSmartSizeMode] [bit] NOT NULL ,
+ [InheritVNCViewOnly] [bit] NOT NULL ,
+ [InheritRDGatewayUsageMethod] [bit] NOT NULL ,
+ [InheritRDGatewayHostname] [bit] NOT NULL ,
+ [InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL ,
+ [InheritRDGatewayUsername] [bit] NOT NULL ,
+ [InheritRDGatewayPassword] [bit] NOT NULL ,
+ [InheritRDGatewayDomain] [bit] NOT NULL ,
+ [LoadBalanceInfo] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [AutomaticResize] [bit] NOT NULL DEFAULT 1 ,
+ [InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 ,
+ [InheritAutomaticResize] [bit] NOT NULL DEFAULT 0
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblRoot] (
+ [Name] [varchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Export] [bit] NOT NULL ,
+ [Protected] [varchar] (4048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [ConfVersion] [float] NOT NULL
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblUpdate] (
+ [LastUpdate] [datetime] NULL
+) ON [PRIMARY]
+GO
+
diff --git a/mRemoteV1/CS/Help/SSHFileTransfer.htm b/mRemoteV1/CS/Help/SSHFileTransfer.htm
new file mode 100644
index 000000000..11094cf78
--- /dev/null
+++ b/mRemoteV1/CS/Help/SSHFileTransfer.htm
@@ -0,0 +1,13 @@
+
+
+
+ SSH File Transfer
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/SaveAsExport.htm b/mRemoteV1/CS/Help/SaveAsExport.htm
new file mode 100644
index 000000000..6f0518181
--- /dev/null
+++ b/mRemoteV1/CS/Help/SaveAsExport.htm
@@ -0,0 +1,13 @@
+
+
+
+ Save As / Export
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/ScreenshotManager.htm b/mRemoteV1/CS/Help/ScreenshotManager.htm
new file mode 100644
index 000000000..9687ba0f2
--- /dev/null
+++ b/mRemoteV1/CS/Help/ScreenshotManager.htm
@@ -0,0 +1,13 @@
+
+
+
+ Screenshot Manager
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/01.png b/mRemoteV1/CS/Help/Screenshots/Configuration/01.png
new file mode 100644
index 000000000..af7434b8e
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/01.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/02.png b/mRemoteV1/CS/Help/Screenshots/Configuration/02.png
new file mode 100644
index 000000000..f859e5c7f
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/02.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/03.png b/mRemoteV1/CS/Help/Screenshots/Configuration/03.png
new file mode 100644
index 000000000..ca1c8ea5b
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/03.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/04.png b/mRemoteV1/CS/Help/Screenshots/Configuration/04.png
new file mode 100644
index 000000000..fb3096ad7
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/04.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/05.png b/mRemoteV1/CS/Help/Screenshots/Configuration/05.png
new file mode 100644
index 000000000..54d099427
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/05.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/06.png b/mRemoteV1/CS/Help/Screenshots/Configuration/06.png
new file mode 100644
index 000000000..9b50fcb8d
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/06.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/07.png b/mRemoteV1/CS/Help/Screenshots/Configuration/07.png
new file mode 100644
index 000000000..fed9440db
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/07.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/08.png b/mRemoteV1/CS/Help/Screenshots/Configuration/08.png
new file mode 100644
index 000000000..cf6eac257
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/08.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/09.png b/mRemoteV1/CS/Help/Screenshots/Configuration/09.png
new file mode 100644
index 000000000..a60a92e8f
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/09.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/10.png b/mRemoteV1/CS/Help/Screenshots/Configuration/10.png
new file mode 100644
index 000000000..2d064c1e7
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/10.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/11.png b/mRemoteV1/CS/Help/Screenshots/Configuration/11.png
new file mode 100644
index 000000000..daa443650
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/11.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/12.png b/mRemoteV1/CS/Help/Screenshots/Configuration/12.png
new file mode 100644
index 000000000..7bf9c39d2
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/12.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/13.png b/mRemoteV1/CS/Help/Screenshots/Configuration/13.png
new file mode 100644
index 000000000..9f5cc5a93
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/13.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/14.png b/mRemoteV1/CS/Help/Screenshots/Configuration/14.png
new file mode 100644
index 000000000..d7549110f
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/14.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/15.png b/mRemoteV1/CS/Help/Screenshots/Configuration/15.png
new file mode 100644
index 000000000..17ada9012
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/15.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/16.png b/mRemoteV1/CS/Help/Screenshots/Configuration/16.png
new file mode 100644
index 000000000..6c0c2d686
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/16.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Configuration/17.png b/mRemoteV1/CS/Help/Screenshots/Configuration/17.png
new file mode 100644
index 000000000..5b6d4f23b
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Configuration/17.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/01.png b/mRemoteV1/CS/Help/Screenshots/External Tools/01.png
new file mode 100644
index 000000000..2cbd401e6
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/01.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/02.png b/mRemoteV1/CS/Help/Screenshots/External Tools/02.png
new file mode 100644
index 000000000..2f25956d5
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/02.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/03.png b/mRemoteV1/CS/Help/Screenshots/External Tools/03.png
new file mode 100644
index 000000000..3a7a8ed2c
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/03.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/04.png b/mRemoteV1/CS/Help/Screenshots/External Tools/04.png
new file mode 100644
index 000000000..e8ac720dd
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/04.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/05.png b/mRemoteV1/CS/Help/Screenshots/External Tools/05.png
new file mode 100644
index 000000000..9e719ca30
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/05.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/06.png b/mRemoteV1/CS/Help/Screenshots/External Tools/06.png
new file mode 100644
index 000000000..a5e90d290
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/06.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/07.png b/mRemoteV1/CS/Help/Screenshots/External Tools/07.png
new file mode 100644
index 000000000..52f96e91f
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/07.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/External Tools/08.png b/mRemoteV1/CS/Help/Screenshots/External Tools/08.png
new file mode 100644
index 000000000..7b90f49da
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/External Tools/08.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Main Menu/File.png b/mRemoteV1/CS/Help/Screenshots/Main Menu/File.png
new file mode 100644
index 000000000..3f2038760
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Main Menu/File.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Main Menu/Info.png b/mRemoteV1/CS/Help/Screenshots/Main Menu/Info.png
new file mode 100644
index 000000000..b7efeb861
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Main Menu/Info.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Main Menu/QuickConnect.png b/mRemoteV1/CS/Help/Screenshots/Main Menu/QuickConnect.png
new file mode 100644
index 000000000..7ed0dbe9b
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Main Menu/QuickConnect.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Main Menu/Tools.png b/mRemoteV1/CS/Help/Screenshots/Main Menu/Tools.png
new file mode 100644
index 000000000..70b7be4f5
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Main Menu/Tools.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Main Menu/View.png b/mRemoteV1/CS/Help/Screenshots/Main Menu/View.png
new file mode 100644
index 000000000..3efc7b2ef
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Main Menu/View.png differ
diff --git a/mRemoteV1/CS/Help/Screenshots/Reference/01.png b/mRemoteV1/CS/Help/Screenshots/Reference/01.png
new file mode 100644
index 000000000..431af8282
Binary files /dev/null and b/mRemoteV1/CS/Help/Screenshots/Reference/01.png differ
diff --git a/mRemoteV1/CS/Help/Sessions.htm b/mRemoteV1/CS/Help/Sessions.htm
new file mode 100644
index 000000000..3897f7bee
--- /dev/null
+++ b/mRemoteV1/CS/Help/Sessions.htm
@@ -0,0 +1,13 @@
+
+
+
+ Sessions
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Help/Update.htm b/mRemoteV1/CS/Help/Update.htm
new file mode 100644
index 000000000..339d3a563
--- /dev/null
+++ b/mRemoteV1/CS/Help/Update.htm
@@ -0,0 +1,13 @@
+
+
+
+ Update
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Icons/Anti Virus.ico b/mRemoteV1/CS/Icons/Anti Virus.ico
new file mode 100644
index 000000000..815d01c4c
Binary files /dev/null and b/mRemoteV1/CS/Icons/Anti Virus.ico differ
diff --git a/mRemoteV1/CS/Icons/Backup.ico b/mRemoteV1/CS/Icons/Backup.ico
new file mode 100644
index 000000000..3e9165148
Binary files /dev/null and b/mRemoteV1/CS/Icons/Backup.ico differ
diff --git a/mRemoteV1/CS/Icons/Build Server.ico b/mRemoteV1/CS/Icons/Build Server.ico
new file mode 100644
index 000000000..b664fa74e
Binary files /dev/null and b/mRemoteV1/CS/Icons/Build Server.ico differ
diff --git a/mRemoteV1/CS/Icons/Database.ico b/mRemoteV1/CS/Icons/Database.ico
new file mode 100644
index 000000000..0926231a4
Binary files /dev/null and b/mRemoteV1/CS/Icons/Database.ico differ
diff --git a/mRemoteV1/CS/Icons/Domain Controller.ico b/mRemoteV1/CS/Icons/Domain Controller.ico
new file mode 100644
index 000000000..0582f3cac
Binary files /dev/null and b/mRemoteV1/CS/Icons/Domain Controller.ico differ
diff --git a/mRemoteV1/CS/Icons/ESX.ico b/mRemoteV1/CS/Icons/ESX.ico
new file mode 100644
index 000000000..54eeb2a4d
Binary files /dev/null and b/mRemoteV1/CS/Icons/ESX.ico differ
diff --git a/mRemoteV1/CS/Icons/Fax.ico b/mRemoteV1/CS/Icons/Fax.ico
new file mode 100644
index 000000000..3bdc790ab
Binary files /dev/null and b/mRemoteV1/CS/Icons/Fax.ico differ
diff --git a/mRemoteV1/CS/Icons/File Server.ico b/mRemoteV1/CS/Icons/File Server.ico
new file mode 100644
index 000000000..67676b7d7
Binary files /dev/null and b/mRemoteV1/CS/Icons/File Server.ico differ
diff --git a/mRemoteV1/CS/Icons/Finance.ico b/mRemoteV1/CS/Icons/Finance.ico
new file mode 100644
index 000000000..ab813dca8
Binary files /dev/null and b/mRemoteV1/CS/Icons/Finance.ico differ
diff --git a/mRemoteV1/CS/Icons/Firewall.ico b/mRemoteV1/CS/Icons/Firewall.ico
new file mode 100644
index 000000000..2343ae6a6
Binary files /dev/null and b/mRemoteV1/CS/Icons/Firewall.ico differ
diff --git a/mRemoteV1/CS/Icons/Linux.ico b/mRemoteV1/CS/Icons/Linux.ico
new file mode 100644
index 000000000..cb8f13a90
Binary files /dev/null and b/mRemoteV1/CS/Icons/Linux.ico differ
diff --git a/mRemoteV1/CS/Icons/Log.ico b/mRemoteV1/CS/Icons/Log.ico
new file mode 100644
index 000000000..789653ef1
Binary files /dev/null and b/mRemoteV1/CS/Icons/Log.ico differ
diff --git a/mRemoteV1/CS/Icons/Mail Server.ico b/mRemoteV1/CS/Icons/Mail Server.ico
new file mode 100644
index 000000000..9f0d18069
Binary files /dev/null and b/mRemoteV1/CS/Icons/Mail Server.ico differ
diff --git a/mRemoteV1/CS/Icons/PuTTY.ico b/mRemoteV1/CS/Icons/PuTTY.ico
new file mode 100644
index 000000000..f7a1840a8
Binary files /dev/null and b/mRemoteV1/CS/Icons/PuTTY.ico differ
diff --git a/mRemoteV1/CS/Icons/Remote Desktop.ico b/mRemoteV1/CS/Icons/Remote Desktop.ico
new file mode 100644
index 000000000..2ac9c2123
Binary files /dev/null and b/mRemoteV1/CS/Icons/Remote Desktop.ico differ
diff --git a/mRemoteV1/CS/Icons/Router.ico b/mRemoteV1/CS/Icons/Router.ico
new file mode 100644
index 000000000..b1cd8e60c
Binary files /dev/null and b/mRemoteV1/CS/Icons/Router.ico differ
diff --git a/mRemoteV1/CS/Icons/SSH.ico b/mRemoteV1/CS/Icons/SSH.ico
new file mode 100644
index 000000000..12b5b5809
Binary files /dev/null and b/mRemoteV1/CS/Icons/SSH.ico differ
diff --git a/mRemoteV1/CS/Icons/SharePoint.ico b/mRemoteV1/CS/Icons/SharePoint.ico
new file mode 100644
index 000000000..5c420c311
Binary files /dev/null and b/mRemoteV1/CS/Icons/SharePoint.ico differ
diff --git a/mRemoteV1/CS/Icons/Switch.ico b/mRemoteV1/CS/Icons/Switch.ico
new file mode 100644
index 000000000..acb7482ad
Binary files /dev/null and b/mRemoteV1/CS/Icons/Switch.ico differ
diff --git a/mRemoteV1/CS/Icons/Tel.ico b/mRemoteV1/CS/Icons/Tel.ico
new file mode 100644
index 000000000..b4b401fc0
Binary files /dev/null and b/mRemoteV1/CS/Icons/Tel.ico differ
diff --git a/mRemoteV1/CS/Icons/Telnet.ico b/mRemoteV1/CS/Icons/Telnet.ico
new file mode 100644
index 000000000..ebe0c036a
Binary files /dev/null and b/mRemoteV1/CS/Icons/Telnet.ico differ
diff --git a/mRemoteV1/CS/Icons/Terminal Server.ico b/mRemoteV1/CS/Icons/Terminal Server.ico
new file mode 100644
index 000000000..c19c6ba67
Binary files /dev/null and b/mRemoteV1/CS/Icons/Terminal Server.ico differ
diff --git a/mRemoteV1/CS/Icons/Test Server.ico b/mRemoteV1/CS/Icons/Test Server.ico
new file mode 100644
index 000000000..6159d9f8c
Binary files /dev/null and b/mRemoteV1/CS/Icons/Test Server.ico differ
diff --git a/mRemoteV1/CS/Icons/Virtual Machine.ico b/mRemoteV1/CS/Icons/Virtual Machine.ico
new file mode 100644
index 000000000..00d805f8e
Binary files /dev/null and b/mRemoteV1/CS/Icons/Virtual Machine.ico differ
diff --git a/mRemoteV1/CS/Icons/Web Server.ico b/mRemoteV1/CS/Icons/Web Server.ico
new file mode 100644
index 000000000..d2aa024d7
Binary files /dev/null and b/mRemoteV1/CS/Icons/Web Server.ico differ
diff --git a/mRemoteV1/CS/Icons/WiFi.ico b/mRemoteV1/CS/Icons/WiFi.ico
new file mode 100644
index 000000000..860757459
Binary files /dev/null and b/mRemoteV1/CS/Icons/WiFi.ico differ
diff --git a/mRemoteV1/CS/Icons/Windows.ico b/mRemoteV1/CS/Icons/Windows.ico
new file mode 100644
index 000000000..3a9752bad
Binary files /dev/null and b/mRemoteV1/CS/Icons/Windows.ico differ
diff --git a/mRemoteV1/CS/Icons/Workstation.ico b/mRemoteV1/CS/Icons/Workstation.ico
new file mode 100644
index 000000000..95cbf2321
Binary files /dev/null and b/mRemoteV1/CS/Icons/Workstation.ico differ
diff --git a/mRemoteV1/CS/Icons/mRemote.ico b/mRemoteV1/CS/Icons/mRemote.ico
new file mode 100644
index 000000000..02b38ac0b
Binary files /dev/null and b/mRemoteV1/CS/Icons/mRemote.ico differ
diff --git a/mRemoteV1/CS/Icons/mRemoteNG.ico b/mRemoteV1/CS/Icons/mRemoteNG.ico
new file mode 100644
index 000000000..08c1072aa
Binary files /dev/null and b/mRemoteV1/CS/Icons/mRemoteNG.ico differ
diff --git a/mRemoteV1/CS/Images/Images.Enums.cs b/mRemoteV1/CS/Images/Images.Enums.cs
new file mode 100644
index 000000000..0c84af9f5
--- /dev/null
+++ b/mRemoteV1/CS/Images/Images.Enums.cs
@@ -0,0 +1,39 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Images
+ {
+ public class Enums
+ {
+ public enum TreeImage
+ {
+ Root = 0,
+ Container = 1,
+ ConnectionOpen = 2,
+ ConnectionClosed = 3,
+ PuttySessions = 4
+ }
+
+ public enum ErrorImage
+ {
+ _Information = 0,
+ _Warning = 1,
+ _Error = 2
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Language/Language.Designer.cs b/mRemoteV1/CS/Language/Language.Designer.cs
new file mode 100644
index 000000000..cb65b81b5
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.Designer.cs
@@ -0,0 +1,8298 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18408
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+
+namespace mRemoteNG
+{
+ namespace My
+ {
+
+ //This class was auto-generated by the StronglyTypedResourceBuilder
+ //class via a tool like ResGen or Visual Studio.
+ //To add or remove a member, edit your .ResX file then rerun ResGen
+ //with the /str option, or rebuild your VS project.
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"),
+ global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+ global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]internal class Language
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]internal Language()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if (object.ReferenceEquals(resourceMan, null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("mRemoteNG.Language", typeof(Language).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to About.
+ ///
+internal static string strAbout
+ {
+ get
+ {
+ return ResourceManager.GetString("strAbout", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Active.
+ ///
+internal static string strActive
+ {
+ get
+ {
+ return ResourceManager.GetString("strActive", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Active Directory.
+ ///
+internal static string strActiveDirectory
+ {
+ get
+ {
+ return ResourceManager.GetString("strActiveDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Activity.
+ ///
+internal static string strActivity
+ {
+ get
+ {
+ return ResourceManager.GetString("strActivity", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Connection.
+ ///
+internal static string strAddConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strAddConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New folder.
+ ///
+internal static string strAddFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strAddFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AddNodeFromXML failed!.
+ ///
+internal static string strAddNodeFromXmlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strAddNodeFromXmlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AddNodesFromSQL failed!.
+ ///
+internal static string strAddNodesFromSqlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strAddNodesFromSqlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Allow only a single instance of the application (mRemoteNG restart required).
+ ///
+internal static string strAllowOnlySingleInstance
+ {
+ get
+ {
+ return ResourceManager.GetString("strAllowOnlySingleInstance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always.
+ ///
+internal static string strAlways
+ {
+ get
+ {
+ return ResourceManager.GetString("strAlways", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always connect, even if authentication fails.
+ ///
+internal static string strAlwaysConnectEvenIfAuthFails
+ {
+ get
+ {
+ return ResourceManager.GetString("strAlwaysConnectEvenIfAuthFails", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always show panel selection dialog when opening connections.
+ ///
+internal static string strAlwaysShowPanelSelection
+ {
+ get
+ {
+ return ResourceManager.GetString("strAlwaysShowPanelSelection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always show panel tabs.
+ ///
+internal static string strAlwaysShowPanelTabs
+ {
+ get
+ {
+ return ResourceManager.GetString("strAlwaysShowPanelTabs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always show notification area icon.
+ ///
+internal static string strAlwaysShowSysTrayIcon
+ {
+ get
+ {
+ return ResourceManager.GetString("strAlwaysShowSysTrayIcon", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ask me again later.
+ ///
+internal static string strAskUpdatesCommandAskLater
+ {
+ get
+ {
+ return ResourceManager.GetString("strAskUpdatesCommandAskLater", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Customize the settings now.
+ ///
+internal static string strAskUpdatesCommandCustom
+ {
+ get
+ {
+ return ResourceManager.GetString("strAskUpdatesCommandCustom", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use the recommended settings.
+ ///
+internal static string strAskUpdatesCommandRecommended
+ {
+ get
+ {
+ return ResourceManager.GetString("strAskUpdatesCommandRecommended", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} can automatically check for updates that may provide new features and bug fixes. It is recommended that you allow {0} to check for updates weekly..
+ ///
+internal static string strAskUpdatesContent
+ {
+ get
+ {
+ return ResourceManager.GetString("strAskUpdatesContent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Automatic update settings.
+ ///
+internal static string strAskUpdatesMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strAskUpdatesMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Aspect.
+ ///
+internal static string strAspect
+ {
+ get
+ {
+ return ResourceManager.GetString("strAspect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Automatically get session information.
+ ///
+internal static string strAutomaticallyGetSessionInfo
+ {
+ get
+ {
+ return ResourceManager.GetString("strAutomaticallyGetSessionInfo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Auto save every:.
+ ///
+internal static string strAutoSaveEvery
+ {
+ get
+ {
+ return ResourceManager.GetString("strAutoSaveEvery", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Minutes (0 means disabled).
+ ///
+internal static string strAutoSaveMins
+ {
+ get
+ {
+ return ResourceManager.GetString("strAutoSaveMins", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Latest version.
+ ///
+internal static string strAvailableVersion
+ {
+ get
+ {
+ return ResourceManager.GetString("strAvailableVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Browse....
+ ///
+internal static string strButtonBrowse
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonBrowse", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Cancel.
+ ///
+internal static string strButtonCancel
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonCancel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Change.
+ ///
+internal static string strButtonChange
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonChange", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Close.
+ ///
+internal static string strButtonClose
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonClose", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Default Inheritance.
+ ///
+internal static string strButtonDefaultInheritance
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonDefaultInheritance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Default Properties.
+ ///
+internal static string strButtonDefaultProperties
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonDefaultProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disconnect.
+ ///
+internal static string strButtonDisconnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonDisconnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Icon.
+ ///
+internal static string strButtonIcon
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonIcon", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Import.
+ ///
+internal static string strButtonImport
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonImport", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Inheritance.
+ ///
+internal static string strButtonInheritance
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonInheritance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Launch.
+ ///
+internal static string strButtonLaunch
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonLaunch", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Launch PuTTY.
+ ///
+internal static string strButtonLaunchPutty
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonLaunchPutty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &New.
+ ///
+internal static string strButtonNew
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonNew", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &OK.
+ ///
+internal static string strButtonOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Properties.
+ ///
+internal static string strButtonProperties
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Scan.
+ ///
+internal static string strButtonScan
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonScan", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Stop.
+ ///
+internal static string strButtonStop
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonStop", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Test Proxy.
+ ///
+internal static string strButtonTestProxy
+ {
+ get
+ {
+ return ResourceManager.GetString("strButtonTestProxy", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You cannot import a normal connection file.
+ ///Please use File - Load Connections for normal connection files!.
+ ///
+internal static string strCannotImportNormalSessionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strCannotImportNormalSessionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot start Port Scan, incorrect IP format!.
+ ///
+internal static string strCannotStartPortScan
+ {
+ get
+ {
+ return ResourceManager.GetString("strCannotStartPortScan", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Appearance.
+ ///
+internal static string strCategoryAppearance
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryAppearance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection.
+ ///
+internal static string strCategoryConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Credentials.
+ ///
+internal static string strCategoryCredentials
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryCredentials", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Display.
+ ///
+internal static string strCategoryDisplay
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryDisplay", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gateway.
+ ///
+internal static string strCategoryGateway
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryGateway", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to General.
+ ///
+internal static string strCategoryGeneral
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryGeneral", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Miscellaneous.
+ ///
+internal static string strCategoryMiscellaneous
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryMiscellaneous", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol.
+ ///
+internal static string strCategoryProtocol
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryProtocol", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Redirect.
+ ///
+internal static string strCategoryRedirect
+ {
+ get
+ {
+ return ResourceManager.GetString("strCategoryRedirect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Always show this screen at startup.
+ ///
+internal static string strCcAlwaysShowScreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcAlwaysShowScreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Refresh.
+ ///
+internal static string strCcCheckAgain
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcCheckAgain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check failed!.
+ ///
+internal static string strCcCheckFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcCheckFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check succeeded!.
+ ///
+internal static string strCcCheckSucceeded
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcCheckSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The (RDP) Sessions feature requires that you have a copy of eolwtscom.dll registered on your system.
+ ///mRemoteNG ships with this component but it is not registered automatically if you do not use the mRemoteNG Installer.
+ ///To register it manually, run the following command from an elevated command prompt: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (where C:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
+ ///If this check still fails or you are unable to use the (RDP) Sessions feat [rest of string was truncated]";.
+ ///
+internal static string strCcEOLFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcEOLFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to EOLWTSCOM was found and seems to be registered properly..
+ ///
+internal static string strCcEOLOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcEOLOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to To use the Gecko Rendering Engine you need to have XULrunner 1.8.1.x and the path to the installation set in your Options.
+ ///You can download XULrunner 1.8.1.3 here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+ ///When you are finished downloading extract the package to a path of your choice. Then in mRemoteNG go to Tools - Options - Advanced and enter the correct path in the XULrunner path field.
+ ///If you are still not able to pass this check or use the Gecko Engine in mRemoteNG please c [rest of string was truncated]";.
+ ///
+internal static string strCcGeckoFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcGeckoFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to XULrunner was found and seems to be installed properly..
+ ///
+internal static string strCcGeckoOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcGeckoOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA requires that the XenDesktop Online Plugin is installed and that the wfica.ocx library is registered. You can download the client here: http://www.citrix.com/download/
+ ///If you have the XenDesktop Online Plugin installed and the check still fails, try to register wfica.ocx manually.
+ ///To do this open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (Where c:\Program Files\Citrix\ICA Client\ is the path to your XenDesktop Online Plugin install [rest of string was truncated]";.
+ ///
+internal static string strCcICAFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcICAFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All ICA components were found and seem to be registered properly.
+ ///Citrix ICA Client Control Version {0}.
+ ///
+internal static string strCcICAOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcICAOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to not installed properly.
+ ///
+internal static string strCcNotInstalledProperly
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcNotInstalledProperly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The SSH, Telnet, Rlogin and RAW protocols need PuTTY to work. PuTTY comes with every mRemoteNG package and is located in the installation path.
+ ///Please make sure that either you have the Putty.exe in your mRemoteNG directory (default: c:\Program Files\mRemoteNG\) or that you specified a valid path to your PuTTY executable in the Options (Tools - Options - Advanced - Custom PuTTY path).
+ ///
+internal static string strCcPuttyFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcPuttyFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The PuTTY executable was found and should be ready to use..
+ ///
+internal static string strCcPuttyOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcPuttyOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services) Client 6.0 installed. You can download it here: http://support.microsoft.com/kb/925876
+ ///If this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/..
+ ///
+internal static string strCcRDPFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcRDPFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All RDP components were found and seem to be registered properly.
+ ///Remote Desktop Connection Control Version {0}.
+ ///
+internal static string strCcRDPOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcRDPOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC requires VncSharpNG.dll to be located in your mRemoteNG application folder.
+ ///Please make sure that you have the VncSharpNG.dll file in your mRemoteNG application folder (usually C:\Program Files\mRemoteNG\).
+ ///If you are still not able to pass this check or use VNC in mRemoteNG please consult the mRemoteNG Forum at http://forum.mremoteng.org/.
+ ///
+internal static string strCcVNCFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcVNCFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All VNC components were found and seem to be registered properly.
+ ///VncSharpNG Control Version {0}.
+ ///
+internal static string strCcVNCOK
+ {
+ get
+ {
+ return ResourceManager.GetString("strCcVNCOK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Automatically try to reconnect when disconnected from server (RDP && ICA only).
+ ///
+internal static string strCheckboxAutomaticReconnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxAutomaticReconnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Domain.
+ ///
+internal static string strCheckboxDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do not show this message again..
+ ///
+internal static string strCheckboxDoNotShowThisMessageAgain
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxDoNotShowThisMessageAgain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Inheritance.
+ ///
+internal static string strCheckboxInheritance
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxInheritance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password.
+ ///
+internal static string strCheckboxPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to This proxy server requires authentication.
+ ///
+internal static string strCheckboxProxyAuthentication
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxProxyAuthentication", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use custom PuTTY path:.
+ ///
+internal static string strCheckboxPuttyPath
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxPuttyPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reconnect when ready.
+ ///
+internal static string strCheckboxReconnectWhenReady
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxReconnectWhenReady", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use a proxy server to connect.
+ ///
+internal static string strCheckboxUpdateUseProxy
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxUpdateUseProxy", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Username.
+ ///
+internal static string strCheckboxUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Wait for exit.
+ ///
+internal static string strCheckboxWaitForExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckboxWaitForExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check Again.
+ ///
+internal static string strCheckForUpdate
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckForUpdate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check for updates and announcements at startup.
+ ///
+internal static string strCheckForUpdatesOnStartup
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckForUpdatesOnStartup", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check now.
+ ///
+internal static string strCheckNow
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckNow", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check proper installation of components at startup.
+ ///
+internal static string strCheckProperInstallationOfComponentsAtStartup
+ {
+ get
+ {
+ return ResourceManager.GetString("strCheckProperInstallationOfComponentsAtStartup", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose panel before connecting.
+ ///
+internal static string strChoosePanelBeforeConnecting
+ {
+ get
+ {
+ return ResourceManager.GetString("strChoosePanelBeforeConnecting", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Closed Ports.
+ ///
+internal static string strClosedPorts
+ {
+ get
+ {
+ return ResourceManager.GetString("strClosedPorts", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Collapse all folders.
+ ///
+internal static string strCollapseAllFolders
+ {
+ get
+ {
+ return ResourceManager.GetString("strCollapseAllFolders", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Arguments.
+ ///
+internal static string strColumnArguments
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnArguments", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Display Name.
+ ///
+internal static string strColumnDisplayName
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnDisplayName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Filename.
+ ///
+internal static string strColumnFilename
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnFilename", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Hostname/IP.
+ ///
+internal static string strColumnHostnameIP
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnHostnameIP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Message.
+ ///
+internal static string strColumnMessage
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Username.
+ ///
+internal static string strColumnUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Wait For Exit.
+ ///
+internal static string strColumnWaitForExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strColumnWaitForExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to E&xit {0}.
+ ///
+internal static string strCommandExitProgram
+ {
+ get
+ {
+ return ResourceManager.GetString("strCommandExitProgram", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't parse command line args!.
+ ///
+internal static string strCommandLineArgsCouldNotBeParsed
+ {
+ get
+ {
+ return ResourceManager.GetString("strCommandLineArgsCouldNotBeParsed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Open a connection file.
+ ///
+internal static string strCommandOpenConnectionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strCommandOpenConnectionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Try again.
+ ///
+internal static string strCommandTryAgain
+ {
+ get
+ {
+ return ResourceManager.GetString("strCommandTryAgain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} has detected the Lenovo Auto Scroll Utility running on this system. This utility is known to cause problems with {0}. It is recommended that you disable or uninstall it..
+ ///
+internal static string strCompatibilityLenovoAutoScrollUtilityDetected
+ {
+ get
+ {
+ return ResourceManager.GetString("strCompatibilityLenovoAutoScrollUtilityDetected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Compatibility problem detected.
+ ///
+internal static string strCompatibilityProblemDetected
+ {
+ get
+ {
+ return ResourceManager.GetString("strCompatibilityProblemDetected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Components Check.
+ ///
+internal static string strComponentsCheck
+ {
+ get
+ {
+ return ResourceManager.GetString("strComponentsCheck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to btnIcon_Click failed!.
+ ///
+internal static string strConfigPropertyGridButtonIconClickFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridButtonIconClickFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ShowHideGridItems failed!.
+ ///
+internal static string strConfigPropertyGridHideItemsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridHideItemsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to IconMenu_Click failed!.
+ ///
+internal static string strConfigPropertyGridMenuClickFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridMenuClickFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Property Grid object failed!.
+ ///
+internal static string strConfigPropertyGridObjectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridObjectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SetHostStatus failed!.
+ ///
+internal static string strConfigPropertyGridSetHostStatusFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridSetHostStatusFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to pGrid_PopertyValueChanged failed!.
+ ///
+internal static string strConfigPropertyGridValueFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigPropertyGridValueFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config UI load failed!.
+ ///
+internal static string strConfigUiLoadFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfigUiLoadFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do you want to close the connection, "{0}"?.
+ ///
+internal static string strConfirmCloseConnectionMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmCloseConnectionMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to close the panel, "{0}"? Any connections that it contains will also be closed..
+ ///
+internal static string strConfirmCloseConnectionPanelMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmCloseConnectionPanelMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the external tool, "{0}"?.
+ ///
+internal static string strConfirmDeleteExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmDeleteExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the {0} selected external tools?.
+ ///
+internal static string strConfirmDeleteExternalToolMultiple
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmDeleteExternalToolMultiple", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the connection, "{0}"?.
+ ///
+internal static string strConfirmDeleteNodeConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmDeleteNodeConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the empty folder, "{0}"?.
+ ///
+internal static string strConfirmDeleteNodeFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmDeleteNodeFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the folder, "{0}"? Any folders or connections that it contains will also be deleted..
+ ///
+internal static string strConfirmDeleteNodeFolderNotEmpty
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmDeleteNodeFolderNotEmpty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do you want to close all open connections?.
+ ///
+internal static string strConfirmExitMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmExitMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to reset the panels to their default layout?.
+ ///
+internal static string strConfirmResetLayout
+ {
+ get
+ {
+ return ResourceManager.GetString("strConfirmResetLayout", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect.
+ ///
+internal static string strConnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect in fullscreen mode.
+ ///
+internal static string strConnectInFullscreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectInFullscreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connecting....
+ ///
+internal static string strConnecting
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnecting", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol Event Connected.
+ ///
+internal static string strConnectionEventConnected
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionEventConnected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection to "{0}" via "{1}" established by user "{2}" (Description: "{3}"; User Field: "{4}").
+ ///
+internal static string strConnectionEventConnectedDetail
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionEventConnectedDetail", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Conenction failed!.
+ ///
+internal static string strConnectionEventConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionEventConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol Event ErrorOccured.
+ ///
+internal static string strConnectionEventErrorOccured
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionEventErrorOccured", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Opening connection failed!.
+ ///
+internal static string strConnectionOpenFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionOpenFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot open connection: No hostname specified!.
+ ///
+internal static string strConnectionOpenFailedNoHostname
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionOpenFailedNoHostname", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP error!
+ ///Error Code: {0}
+ ///Error Description: {1}.
+ ///
+internal static string strConnectionRdpErrorDetail
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionRdpErrorDetail", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections.
+ ///
+internal static string strConnections
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnections", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't set default port!.
+ ///
+internal static string strConnectionSetDefaultPortFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionSetDefaultPortFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't create backup of connections file!.
+ ///
+internal static string strConnectionsFileBackupFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileBackupFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't import connections file!.
+ ///
+internal static string strConnectionsFileCouldNotBeImported
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileCouldNotBeImported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections file "{0}" could not be loaded!.
+ ///
+internal static string strConnectionsFileCouldNotBeLoaded
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileCouldNotBeLoaded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections file "{0}" could not be loaded!
+ ///Starting with new connections file..
+ ///
+internal static string strConnectionsFileCouldNotBeLoadedNew
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileCouldNotBeLoadedNew", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't save connections file!.
+ ///
+internal static string strConnectionsFileCouldNotBeSaved
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileCouldNotBeSaved", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't save connections file as "{0}"!.
+ ///
+internal static string strConnectionsFileCouldNotSaveAs
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectionsFileCouldNotSaveAs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect without credentials.
+ ///
+internal static string strConnectNoCredentials
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectNoCredentials", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect to console session.
+ ///
+internal static string strConnectToConsoleSession
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectToConsoleSession", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect (with options).
+ ///
+internal static string strConnectWithOptions
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnectWithOptions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection to {0} via {1} closed by user {2}..
+ ///
+internal static string strConnenctionClosedByUser
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnenctionClosedByUser", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection to {0} via {1} closed by user {2}. (Description: "{3}"; User Field: "{4}").
+ ///
+internal static string strConnenctionClosedByUserDetail
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnenctionClosedByUserDetail", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection Event Closed.
+ ///
+internal static string strConnenctionCloseEvent
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnenctionCloseEvent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection Event Closed failed!.
+ ///
+internal static string strConnenctionCloseEventFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strConnenctionCloseEventFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't create new connections file!.
+ ///
+internal static string strCouldNotCreateNewConnectionsFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strCouldNotCreateNewConnectionsFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Could not find ToolStrip control in FilteredPropertyGrid..
+ ///
+internal static string strCouldNotFindToolStripInFilteredPropertyGrid
+ {
+ get
+ {
+ return ResourceManager.GetString("strCouldNotFindToolStripInFilteredPropertyGrid", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Installed version.
+ ///
+internal static string strCurrentVersion
+ {
+ get
+ {
+ return ResourceManager.GetString("strCurrentVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Default Theme.
+ ///
+internal static string strDefaultTheme
+ {
+ get
+ {
+ return ResourceManager.GetString("strDefaultTheme", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Detect.
+ ///
+internal static string strDetect
+ {
+ get
+ {
+ return ResourceManager.GetString("strDetect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Don't connect to console session.
+ ///
+internal static string strDontConnectToConsoleSessionMenuItem
+ {
+ get
+ {
+ return ResourceManager.GetString("strDontConnectToConsoleSessionMenuItem", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Don't connect if authentication fails.
+ ///
+internal static string strDontConnectWhenAuthFails
+ {
+ get
+ {
+ return ResourceManager.GetString("strDontConnectWhenAuthFails", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Double click on tab closes it.
+ ///
+internal static string strDoubleClickTabClosesIt
+ {
+ get
+ {
+ return ResourceManager.GetString("strDoubleClickTabClosesIt", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Download and Install.
+ ///
+internal static string strDownloadAndInstall
+ {
+ get
+ {
+ return ResourceManager.GetString("strDownloadAndInstall", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Duplicate.
+ ///
+internal static string strDuplicate
+ {
+ get
+ {
+ return ResourceManager.GetString("strDuplicate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do you want to continue with no password?.
+ ///
+internal static string strEmptyPasswordContinue
+ {
+ get
+ {
+ return ResourceManager.GetString("strEmptyPasswordContinue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to For empty Username, Password or Domain fields use:.
+ ///
+internal static string strEmptyUsernamePasswordDomainFields
+ {
+ get
+ {
+ return ResourceManager.GetString("strEmptyUsernamePasswordDomainFields", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 128-bit.
+ ///
+internal static string strEnc128Bit
+ {
+ get
+ {
+ return ResourceManager.GetString("strEnc128Bit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 128-bit (logon only).
+ ///
+internal static string strEnc128BitLogonOnly
+ {
+ get
+ {
+ return ResourceManager.GetString("strEnc128BitLogonOnly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 40-bit.
+ ///
+internal static string strEnc40Bit
+ {
+ get
+ {
+ return ResourceManager.GetString("strEnc40Bit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 56-bit.
+ ///
+internal static string strEnc56Bit
+ {
+ get
+ {
+ return ResourceManager.GetString("strEnc56Bit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Basic.
+ ///
+internal static string strEncBasic
+ {
+ get
+ {
+ return ResourceManager.GetString("strEncBasic", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Completely encrypt connection file.
+ ///
+internal static string strEncryptCompleteConnectionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strEncryptCompleteConnectionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to End IP.
+ ///
+internal static string strEndIP
+ {
+ get
+ {
+ return ResourceManager.GetString("strEndIP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to End Port.
+ ///
+internal static string strEndPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strEndPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AddExternalToolsToToolBar (frmMain) failed. {0}.
+ ///
+internal static string strErrorAddExternalToolsToToolBarFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorAddExternalToolsToToolBarFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AddFolder (UI.Window.Tree) failed. {0}.
+ ///
+internal static string strErrorAddFolderFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorAddFolderFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The database version {0} is not compatible with this version of {1}..
+ ///
+internal static string strErrorBadDatabaseVersion
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorBadDatabaseVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to CloneNode (Tree.Node) failed . {0}.
+ ///
+internal static string strErrorCloneNodeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorCloneNodeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error code {0}..
+ ///
+internal static string strErrorCode
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorCode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The connection list could not be saved..
+ ///
+internal static string strErrorConnectionListSaveFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorConnectionListSaveFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY could not be launched..
+ ///
+internal static string strErrorCouldNotLaunchPutty
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorCouldNotLaunchPutty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Decryption failed. {0}.
+ ///
+internal static string strErrorDecryptionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorDecryptionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Encryption failed. {0}.
+ ///
+internal static string strErrorEncryptionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorEncryptionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The Windows security setting, "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing", is enabled. This setting is not compatible with {0}.
+ ///
+ ///See the Microsoft Support article at http://support.microsoft.com/kb/811833 for more information.
+ ///
+ ///{0} will now close..
+ ///
+internal static string strErrorFipsPolicyIncompatible
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorFipsPolicyIncompatible", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Errors.
+ ///
+internal static string strErrors
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The startup connection file could not be loaded.{0}{0}{2}{0}{3}{0}{0}In order to prevent data loss, {1} will now exit..
+ ///
+internal static string strErrorStartupConnectionFileLoad
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorStartupConnectionFileLoad", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VerifyDatabaseVersion (Config.Connections.Save) failed. {0}.
+ ///
+internal static string strErrorVerifyDatabaseVersionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strErrorVerifyDatabaseVersionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Expand all folders.
+ ///
+internal static string strExpandAllFolders
+ {
+ get
+ {
+ return ResourceManager.GetString("strExpandAllFolders", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Experimental.
+ ///
+internal static string strExperimental
+ {
+ get
+ {
+ return ResourceManager.GetString("strExperimental", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export.
+ ///
+internal static string strExport
+ {
+ get
+ {
+ return ResourceManager.GetString("strExport", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export everything.
+ ///
+internal static string strExportEverything
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportEverything", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export File.
+ ///
+internal static string strExportFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export Items.
+ ///
+internal static string strExportItems
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportItems", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export mRemote/mRemoteNG XML.
+ ///
+internal static string strExportmRemoteXML
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportmRemoteXML", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export Properties.
+ ///
+internal static string strExportProperties
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export the currently selected connection.
+ ///
+internal static string strExportSelectedConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportSelectedConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Export the currently selected folder.
+ ///
+internal static string strExportSelectedFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportSelectedFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Export to File....
+ ///
+internal static string strExportToFileMenuItem
+ {
+ get
+ {
+ return ResourceManager.GetString("strExportToFileMenuItem", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ext. App.
+ ///
+internal static string strExtApp
+ {
+ get
+ {
+ return ResourceManager.GetString("strExtApp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New External Tool.
+ ///
+internal static string strExternalToolDefaultName
+ {
+ get
+ {
+ return ResourceManager.GetString("strExternalToolDefaultName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Includes icons by [FAMFAMFAM].
+ ///
+internal static string strFAMFAMFAMAttribution
+ {
+ get
+ {
+ return ResourceManager.GetString("strFAMFAMFAMAttribution", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to http://www.famfamfam.com/.
+ ///
+internal static string strFAMFAMFAMAttributionURL
+ {
+ get
+ {
+ return ResourceManager.GetString("strFAMFAMFAMAttributionURL", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to File &Format:.
+ ///
+internal static string strFileFormatLabel
+ {
+ get
+ {
+ return ResourceManager.GetString("strFileFormatLabel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All Files (*.*).
+ ///
+internal static string strFilterAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All importable files.
+ ///
+internal static string strFilterAllImportable
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterAllImportable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Application Files (*.exe).
+ ///
+internal static string strFilterApplication
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterApplication", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemote CSV Files (*.csv).
+ ///
+internal static string strFiltermRemoteCSV
+ {
+ get
+ {
+ return ResourceManager.GetString("strFiltermRemoteCSV", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemote XML Files (*.xml).
+ ///
+internal static string strFiltermRemoteXML
+ {
+ get
+ {
+ return ResourceManager.GetString("strFiltermRemoteXML", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Connection Manager files.
+ ///
+internal static string strFilterPuttyConnectionManager
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterPuttyConnectionManager", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remote Desktop Connection Manager files (*.rdg).
+ ///
+internal static string strFilterRdgFiles
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterRdgFiles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP Files (*.rdp).
+ ///
+internal static string strFilterRDP
+ {
+ get
+ {
+ return ResourceManager.GetString("strFilterRDP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to visionapp Remote Desktop 2008 CSV Files (*.csv).
+ ///
+internal static string strFiltervRD2008CSV
+ {
+ get
+ {
+ return ResourceManager.GetString("strFiltervRD2008CSV", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Inherit {0}.
+ ///
+internal static string strFormatInherit
+ {
+ get
+ {
+ return ResourceManager.GetString("strFormatInherit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Description of inherited property: {0}.
+ ///
+internal static string strFormatInheritDescription
+ {
+ get
+ {
+ return ResourceManager.GetString("strFormatInheritDescription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Free.
+ ///
+internal static string strFree
+ {
+ get
+ {
+ return ResourceManager.GetString("strFree", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Fullscreen.
+ ///
+internal static string strFullscreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strFullscreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to General.
+ ///
+internal static string strGeneral
+ {
+ get
+ {
+ return ResourceManager.GetString("strGeneral", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Get Connection Info From SQL failed.
+ ///
+internal static string strGetConnectionInfoFromSqlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strGetConnectionInfoFromSqlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An error occured while loading the connection entry for "{0}" from "{1}". {2}.
+ ///
+internal static string strGetConnectionInfoFromXmlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strGetConnectionInfoFromXmlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Automatic Reconnect.
+ ///
+internal static string strGroupboxAutomaticReconnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strGroupboxAutomaticReconnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection.
+ ///
+internal static string strGroupboxConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strGroupboxConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tool Properties.
+ ///
+internal static string strGroupboxExternalToolProperties
+ {
+ get
+ {
+ return ResourceManager.GetString("strGroupboxExternalToolProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Files.
+ ///
+internal static string strGroupboxFiles
+ {
+ get
+ {
+ return ResourceManager.GetString("strGroupboxFiles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Host.
+ ///
+internal static string strHost
+ {
+ get
+ {
+ return ResourceManager.GetString("strHost", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to HTTP.
+ ///
+internal static string strHttp
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to HTTP Connect Failed!.
+ ///
+internal static string strHttpConnectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpConnectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't create new HTTP Connection!.
+ ///
+internal static string strHttpConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changing HTTP Document Tile Failed!.
+ ///
+internal static string strHttpDocumentTileChangeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpDocumentTileChangeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gecko (Firefox).
+ ///
+internal static string strHttpGecko
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpGecko", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internet Explorer.
+ ///
+internal static string strHttpInternetExplorer
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpInternetExplorer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to HTTPS.
+ ///
+internal static string strHttps
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttps", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Set HTTP Props failed!.
+ ///
+internal static string strHttpSetPropsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strHttpSetPropsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA.
+ ///
+internal static string strICA
+ {
+ get
+ {
+ return ResourceManager.GetString("strICA", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't create new ICA Connection!.
+ ///
+internal static string strIcaConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Loading ICA Plugin failed!.
+ ///
+internal static string strIcaControlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaControlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA SetCredentials failed!.
+ ///
+internal static string strIcaSetCredentialsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaSetCredentialsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA Set Event Handlers Failed!.
+ ///
+internal static string strIcaSetEventHandlersFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaSetEventHandlersFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA Set Props Failed!.
+ ///
+internal static string strIcaSetPropsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaSetPropsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ICA Set Resolution Failed!.
+ ///
+internal static string strIcaSetResolutionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIcaSetResolutionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Identify quick connect tabs by adding the prefix "Quick:".
+ ///
+internal static string strIdentifyQuickConnectTabs
+ {
+ get
+ {
+ return ResourceManager.GetString("strIdentifyQuickConnectTabs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import from Active Directory.
+ ///
+internal static string strImportAD
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportAD", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import/Export.
+ ///
+internal static string strImportExport
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportExport", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An error occurred while importing the file, "{0}"..
+ ///
+internal static string strImportFileFailedContent
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportFileFailedContent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import failed.
+ ///
+internal static string strImportFileFailedMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportFileFailedMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import from &File....
+ ///
+internal static string strImportFromFileMenuItem
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportFromFileMenuItem", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Under the root{0}{1}|Under the selected folder{0}{2}.
+ ///
+internal static string strImportLocationCommandButtons
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportLocationCommandButtons", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Where would you like the imported items to be placed?.
+ ///
+internal static string strImportLocationContent
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportLocationContent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import location.
+ ///
+internal static string strImportLocationMainInstruction
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportLocationMainInstruction", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Import.
+ ///
+internal static string strImportMenuItem
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportMenuItem", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import mRemote/mRemoteNG XML.
+ ///
+internal static string strImportmRemoteXML
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportmRemoteXML", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import from Port Scan.
+ ///
+internal static string strImportPortScan
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportPortScan", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Import from .RDP file(s).
+ ///
+internal static string strImportRDPFiles
+ {
+ get
+ {
+ return ResourceManager.GetString("strImportRDPFiles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Inactive.
+ ///
+internal static string strInactive
+ {
+ get
+ {
+ return ResourceManager.GetString("strInactive", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Informations.
+ ///
+internal static string strInformations
+ {
+ get
+ {
+ return ResourceManager.GetString("strInformations", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG is up to date.
+ ///
+internal static string strInheritNewConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strInheritNewConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection failed!.
+ ///
+internal static string strIntAppConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Dispose of Int App process failed!.
+ ///
+internal static string strIntAppDisposeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppDisposeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Int App Focus Failed!.
+ ///
+internal static string strIntAppFocusFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppFocusFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Int App Handle: {0}.
+ ///
+internal static string strIntAppHandle
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppHandle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Killing Int App Process failed!.
+ ///
+internal static string strIntAppKillFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppKillFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Panel Handle: {0}.
+ ///
+internal static string strIntAppParentHandle
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppParentHandle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Int App Resize failed!.
+ ///
+internal static string strIntAppResizeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppResizeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to --- IntApp Stuff ---.
+ ///
+internal static string strIntAppStuff
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppStuff", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Int App Title: {0}.
+ ///
+internal static string strIntAppTitle
+ {
+ get
+ {
+ return ResourceManager.GetString("strIntAppTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to CTRL-ALT-DEL.
+ ///
+internal static string strKeysCtrlAltDel
+ {
+ get
+ {
+ return ResourceManager.GetString("strKeysCtrlAltDel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to CTRL-ESC.
+ ///
+internal static string strKeysCtrlEsc
+ {
+ get
+ {
+ return ResourceManager.GetString("strKeysCtrlEsc", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Address:.
+ ///
+internal static string strLabelAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Arguments:.
+ ///
+internal static string strLabelArguments
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelArguments", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Change Log:.
+ ///
+internal static string strLabelChangeLog
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelChangeLog", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to When closing connections:.
+ ///
+internal static string strLabelClosingConnections
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelClosingConnections", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Connect:.
+ ///
+internal static string strLabelConnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelConnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Display Name.
+ ///
+internal static string strLabelDisplayName
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelDisplayName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Domain:.
+ ///
+internal static string strLabelDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Filename:.
+ ///
+internal static string strLabelFilename
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelFilename", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Hostname:.
+ ///
+internal static string strLabelHostname
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelHostname", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Options:.
+ ///
+internal static string strLabelOptions
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelOptions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password:.
+ ///
+internal static string strLabelPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Port:.
+ ///
+internal static string strLabelPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Portable Edition.
+ ///
+internal static string strLabelPortableEdition
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelPortableEdition", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol:.
+ ///
+internal static string strLabelProtocol
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelProtocol", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to To configure PuTTY sessions click this button:.
+ ///
+internal static string strLabelPuttySessionsConfig
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelPuttySessionsConfig", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Maximum PuTTY and integrated external tools wait time:.
+ ///
+internal static string strLabelPuttyTimeout
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelPuttyTimeout", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Released under the GNU General Public License (GPL).
+ ///
+internal static string strLabelReleasedUnderGPL
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelReleasedUnderGPL", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to seconds.
+ ///
+internal static string strLabelSeconds
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelSeconds", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select a panel from the list below or click New to add a new one. Click OK to continue..
+ ///
+internal static string strLabelSelectPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelSelectPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Server Status:.
+ ///
+internal static string strLabelServerStatus
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelServerStatus", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Database:.
+ ///
+internal static string strLabelSQLDatabaseName
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelSQLDatabaseName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Database:.
+ ///
+internal static string strLabelSQLServerDatabaseName
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelSQLServerDatabaseName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Username:.
+ ///
+internal static string strLabelUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Verify:.
+ ///
+internal static string strLabelVerify
+ {
+ get
+ {
+ return ResourceManager.GetString("strLabelVerify", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Language.
+ ///
+internal static string strLanguage
+ {
+ get
+ {
+ return ResourceManager.GetString("strLanguage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to (Automatically Detect).
+ ///
+internal static string strLanguageDefault
+ {
+ get
+ {
+ return ResourceManager.GetString("strLanguageDefault", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} must be restarted before changes to the language will take effect..
+ ///
+internal static string strLanguageRestartRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("strLanguageRestartRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Load from SQL failed.
+ ///
+internal static string strLoadFromSqlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strLoadFromSqlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The connection information could not be loaded from the SQL server..
+ ///
+internal static string strLoadFromSqlFailedContent
+ {
+ get
+ {
+ return ResourceManager.GetString("strLoadFromSqlFailedContent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Load From XML failed!.
+ ///
+internal static string strLoadFromXmlFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strLoadFromXmlFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Local file.
+ ///
+internal static string strLocalFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strLocalFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Local file does not exist!.
+ ///
+internal static string strLocalFileDoesNotExist
+ {
+ get
+ {
+ return ResourceManager.GetString("strLocalFileDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Logoff.
+ ///
+internal static string strLogOff
+ {
+ get
+ {
+ return ResourceManager.GetString("strLogOff", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Writing to report file failed!.
+ ///
+internal static string strLogWriteToFileFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strLogWriteToFileFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't save report to final location..
+ ///
+internal static string strLogWriteToFileFinalLocationFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strLogWriteToFileFinalLocationFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Uses the Magic library by [Crownwood Software].
+ ///
+internal static string strMagicLibraryAttribution
+ {
+ get
+ {
+ return ResourceManager.GetString("strMagicLibraryAttribution", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to http://www.dotnetmagic.com/.
+ ///
+internal static string strMagicLibraryAttributionURL
+ {
+ get
+ {
+ return ResourceManager.GetString("strMagicLibraryAttributionURL", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to About.
+ ///
+internal static string strMenuAbout
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuAbout", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add Connection Panel.
+ ///
+internal static string strMenuAddConnectionPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuAddConnectionPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Announcements.
+ ///
+internal static string strMenuAnnouncements
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuAnnouncements", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check for Updates.
+ ///
+internal static string strMenuCheckForUpdates
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuCheckForUpdates", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config.
+ ///
+internal static string strMenuConfig
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuConfig", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect.
+ ///
+internal static string strMenuConnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuConnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection Panels.
+ ///
+internal static string strMenuConnectionPanels
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuConnectionPanels", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections.
+ ///
+internal static string strMenuConnections
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuConnections", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections and Config.
+ ///
+internal static string strMenuConnectionsAndConfig
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuConnectionsAndConfig", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Copy.
+ ///
+internal static string strMenuCopy
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuCopy", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ctrl-Alt-Del.
+ ///
+internal static string strMenuCtrlAltDel
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuCtrlAltDel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ctrl-Esc.
+ ///
+internal static string strMenuCtrlEsc
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuCtrlEsc", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete....
+ ///
+internal static string strMenuDelete
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDelete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete Connection....
+ ///
+internal static string strMenuDeleteConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDeleteConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete External Tool....
+ ///
+internal static string strMenuDeleteExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDeleteExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete Folder....
+ ///
+internal static string strMenuDeleteFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDeleteFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disconnect.
+ ///
+internal static string strMenuDisconnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDisconnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Donate.
+ ///
+internal static string strMenuDonate
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDonate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Duplicate.
+ ///
+internal static string strMenuDuplicate
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDuplicate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Duplicate Connection.
+ ///
+internal static string strMenuDuplicateConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDuplicateConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Duplicate Folder.
+ ///
+internal static string strMenuDuplicateFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDuplicateFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Duplicate Tab.
+ ///
+internal static string strMenuDuplicateTab
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuDuplicateTab", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Exit.
+ ///
+internal static string strMenuExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tools.
+ ///
+internal static string strMenuExternalTools
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuExternalTools", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tools Toolbar.
+ ///
+internal static string strMenuExternalToolsToolbar
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuExternalToolsToolbar", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &File.
+ ///
+internal static string strMenuFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Full Screen.
+ ///
+internal static string strMenuFullScreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuFullScreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Full Screen (RDP).
+ ///
+internal static string strMenuFullScreenRDP
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuFullScreenRDP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Help.
+ ///
+internal static string strMenuHelp
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuHelp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG Help.
+ ///
+internal static string strMenuHelpContents
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuHelpContents", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Jump To.
+ ///
+internal static string strMenuJumpTo
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuJumpTo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Launch External Tool.
+ ///
+internal static string strMenuLaunchExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuLaunchExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Connection File.
+ ///
+internal static string strMenuNewConnectionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNewConnectionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New External Tool.
+ ///
+internal static string strMenuNewExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNewExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Notifications.
+ ///
+internal static string strMenuNotifications
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNotifications", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Copy All.
+ ///
+internal static string strMenuNotificationsCopyAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNotificationsCopyAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete.
+ ///
+internal static string strMenuNotificationsDelete
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNotificationsDelete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete All.
+ ///
+internal static string strMenuNotificationsDeleteAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuNotificationsDeleteAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Open Connection File....
+ ///
+internal static string strMenuOpenConnectionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuOpenConnectionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Options.
+ ///
+internal static string strMenuOptions
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuOptions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Paste.
+ ///
+internal static string strMenuPaste
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuPaste", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Port Scan.
+ ///
+internal static string strMenuPortScan
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuPortScan", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Quick Connect Toolbar.
+ ///
+internal static string strMenuQuickConnectToolbar
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuQuickConnectToolbar", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reconnect.
+ ///
+internal static string strMenuReconnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuReconnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Refresh Screen (VNC).
+ ///
+internal static string strMenuRefreshScreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuRefreshScreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rename.
+ ///
+internal static string strMenuRename
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuRename", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rename Connection.
+ ///
+internal static string strMenuRenameConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuRenameConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rename Folder.
+ ///
+internal static string strMenuRenameFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuRenameFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rename Tab.
+ ///
+internal static string strMenuRenameTab
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuRenameTab", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Report a Bug.
+ ///
+internal static string strMenuReportBug
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuReportBug", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reset layout.
+ ///
+internal static string strMenuResetLayout
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuResetLayout", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Save Connection File.
+ ///
+internal static string strMenuSaveConnectionFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSaveConnectionFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Save Connection File As....
+ ///
+internal static string strMenuSaveConnectionFileAs
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSaveConnectionFileAs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Screenshot.
+ ///
+internal static string strMenuScreenshot
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuScreenshot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Screenshot Manager.
+ ///
+internal static string strMenuScreenshotManager
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuScreenshotManager", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Send Special Keys (VNC).
+ ///
+internal static string strMenuSendSpecialKeys
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSendSpecialKeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Retrieve.
+ ///
+internal static string strMenuSessionRetrieve
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSessionRetrieve", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sessions.
+ ///
+internal static string strMenuSessions
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSessions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sessions and Screenshots.
+ ///
+internal static string strMenuSessionsAndScreenshots
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSessionsAndScreenshots", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Show Help Text.
+ ///
+internal static string strMenuShowHelpText
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuShowHelpText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show Text.
+ ///
+internal static string strMenuShowText
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuShowText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SmartSize (RDP/VNC).
+ ///
+internal static string strMenuSmartSize
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSmartSize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH File Transfer.
+ ///
+internal static string strMenuSSHFileTransfer
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSSHFileTransfer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Start Chat (VNC).
+ ///
+internal static string strMenuStartChat
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuStartChat", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Support Forum.
+ ///
+internal static string strMenuSupportForum
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuSupportForum", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Tools.
+ ///
+internal static string strMenuTools
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuTools", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Transfer File (SSH).
+ ///
+internal static string strMenuTransferFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuTransferFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &View.
+ ///
+internal static string strMenuView
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuView", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to View Only (VNC).
+ ///
+internal static string strMenuViewOnly
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuViewOnly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Website.
+ ///
+internal static string strMenuWebsite
+ {
+ get
+ {
+ return ResourceManager.GetString("strMenuWebsite", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Minimize to notification area.
+ ///
+internal static string strMinimizeToSysTray
+ {
+ get
+ {
+ return ResourceManager.GetString("strMinimizeToSysTray", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Move down.
+ ///
+internal static string strMoveDown
+ {
+ get
+ {
+ return ResourceManager.GetString("strMoveDown", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Move up.
+ ///
+internal static string strMoveUp
+ {
+ get
+ {
+ return ResourceManager.GetString("strMoveUp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG CSV.
+ ///
+internal static string strMremoteNgCsv
+ {
+ get
+ {
+ return ResourceManager.GetString("strMremoteNgCsv", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG XML.
+ ///
+internal static string strMremoteNgXml
+ {
+ get
+ {
+ return ResourceManager.GetString("strMremoteNgXml", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to My current credentials (Windows logon information).
+ ///
+internal static string strMyCurrentWindowsCreds
+ {
+ get
+ {
+ return ResourceManager.GetString("strMyCurrentWindowsCreds", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Never.
+ ///
+internal static string strNever
+ {
+ get
+ {
+ return ResourceManager.GetString("strNever", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Connection.
+ ///
+internal static string strNewConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strNewConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Folder.
+ ///
+internal static string strNewFolder
+ {
+ get
+ {
+ return ResourceManager.GetString("strNewFolder", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Panel.
+ ///
+internal static string strNewPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strNewPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Root.
+ ///
+internal static string strNewRoot
+ {
+ get
+ {
+ return ResourceManager.GetString("strNewRoot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Title.
+ ///
+internal static string strNewTitle
+ {
+ get
+ {
+ return ResourceManager.GetString("strNewTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No.
+ ///
+internal static string strNo
+ {
+ get
+ {
+ return ResourceManager.GetString("strNo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No Compression.
+ ///
+internal static string strNoCompression
+ {
+ get
+ {
+ return ResourceManager.GetString("strNoCompression", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No Ext. App specified..
+ ///
+internal static string strNoExtAppDefined
+ {
+ get
+ {
+ return ResourceManager.GetString("strNoExtAppDefined", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to None.
+ ///
+internal static string strNoInformation
+ {
+ get
+ {
+ return ResourceManager.GetString("strNoInformation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to None.
+ ///
+internal static string strNone
+ {
+ get
+ {
+ return ResourceManager.GetString("strNone", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Normal.
+ ///
+internal static string strNormal
+ {
+ get
+ {
+ return ResourceManager.GetString("strNormal", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No SmartSize.
+ ///
+internal static string strNoSmartSize
+ {
+ get
+ {
+ return ResourceManager.GetString("strNoSmartSize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No update available.
+ ///
+internal static string strNoUpdateAvailable
+ {
+ get
+ {
+ return ResourceManager.GetString("strNoUpdateAvailable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You are trying to load a connection file that was created using an very early version of mRemote, this could result in an runtime error.
+ ///If you run into such an error, please create a new connection file!.
+ ///
+internal static string strOldConffile
+ {
+ get
+ {
+ return ResourceManager.GetString("strOldConffile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Open new tab to the right of the currently selected tab.
+ ///
+internal static string strOpenNewTabRight
+ {
+ get
+ {
+ return ResourceManager.GetString("strOpenNewTabRight", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Open Ports.
+ ///
+internal static string strOpenPorts
+ {
+ get
+ {
+ return ResourceManager.GetString("strOpenPorts", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Delete.
+ ///
+internal static string strOptionsKeyboardButtonDelete
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardButtonDelete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &New.
+ ///
+internal static string strOptionsKeyboardButtonNew
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardButtonNew", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Reset to Default.
+ ///
+internal static string strOptionsKeyboardButtonReset
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardButtonReset", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reset &All to Default.
+ ///
+internal static string strOptionsKeyboardButtonResetAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardButtonResetAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tabs.
+ ///
+internal static string strOptionsKeyboardCommandsGroupTabs
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardCommandsGroupTabs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Next Tab.
+ ///
+internal static string strOptionsKeyboardCommandsNextTab
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardCommandsNextTab", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Previous Tab.
+ ///
+internal static string strOptionsKeyboardCommandsPreviousTab
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardCommandsPreviousTab", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Modify Shortcut.
+ ///
+internal static string strOptionsKeyboardGroupModifyShortcut
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardGroupModifyShortcut", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Keyboard Shortcuts.
+ ///
+internal static string strOptionsKeyboardLabelKeyboardShortcuts
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsKeyboardLabelKeyboardShortcuts", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Testing....
+ ///
+internal static string strOptionsProxyTesting
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsProxyTesting", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Keyboard.
+ ///
+internal static string strOptionsTabKeyboard
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsTabKeyboard", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Theme.
+ ///
+internal static string strOptionsTabTheme
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsTabTheme", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Delete.
+ ///
+internal static string strOptionsThemeButtonDelete
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsThemeButtonDelete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &New.
+ ///
+internal static string strOptionsThemeButtonNew
+ {
+ get
+ {
+ return ResourceManager.GetString("strOptionsThemeButtonNew", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Panel Name.
+ ///
+internal static string strPanelName
+ {
+ get
+ {
+ return ResourceManager.GetString("strPanelName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password protect.
+ ///
+internal static string strPasswordProtect
+ {
+ get
+ {
+ return ResourceManager.GetString("strPasswordProtect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Both passwords must match..
+ ///
+internal static string strPasswordStatusMustMatch
+ {
+ get
+ {
+ return ResourceManager.GetString("strPasswordStatusMustMatch", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The password must be at least 3 characters long..
+ ///
+internal static string strPasswordStatusTooShort
+ {
+ get
+ {
+ return ResourceManager.GetString("strPasswordStatusTooShort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please fill all fields.
+ ///
+internal static string strPleaseFillAllFields
+ {
+ get
+ {
+ return ResourceManager.GetString("strPleaseFillAllFields", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Port scan complete..
+ ///
+internal static string strPortScanComplete
+ {
+ get
+ {
+ return ResourceManager.GetString("strPortScanComplete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't load PortScan panel!.
+ ///
+internal static string strPortScanCouldNotLoadPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strPortScanCouldNotLoadPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to (These properties will only be saved if you select mRemote/mRemoteNG XML as output file format!).
+ ///
+internal static string strPropertiesWillOnlyBeSavedMRemoteXML
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertiesWillOnlyBeSavedMRemoteXML", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter the hostname or ip you want to connect to..
+ ///
+internal static string strPropertyDescriptionAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Toggle all inheritance options..
+ ///
+internal static string strPropertyDescriptionAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select which authentication level this connection should use..
+ ///
+internal static string strPropertyDescriptionAuthenticationLevel
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionAuthenticationLevel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select how you want to authenticate against the VNC server..
+ ///
+internal static string strPropertyDescriptionAuthenticationMode
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionAuthenticationMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether to automatically resize the connection when the window is resized or when fullscreen mode is toggled. Requires RDC 8.0 or higher..
+ ///
+internal static string strPropertyDescriptionAutomaticResize
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionAutomaticResize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether to use bitmap caching or not..
+ ///
+internal static string strPropertyDescriptionCacheBitmaps
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionCacheBitmaps", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the colour quality to be used..
+ ///
+internal static string strPropertyDescriptionColors
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionColors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the compression value to be used..
+ ///
+internal static string strPropertyDescriptionCompression
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionCompression", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Put your notes or a description for the host here..
+ ///
+internal static string strPropertyDescriptionDescription
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionDescription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select yes if the theme of the remote host should be displayed..
+ ///
+internal static string strPropertyDescriptionDisplayThemes
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionDisplayThemes", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select yes if the wallpaper of the remote host should be displayed..
+ ///
+internal static string strPropertyDescriptionDisplayWallpaper
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionDisplayWallpaper", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter your domain..
+ ///
+internal static string strPropertyDescriptionDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether to use desktop composition or not..
+ ///
+internal static string strPropertyDescriptionEnableDesktopComposition
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionEnableDesktopComposition", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether to use font smoothing or not..
+ ///
+internal static string strPropertyDescriptionEnableFontSmoothing
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionEnableFontSmoothing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the encoding mode to be used..
+ ///
+internal static string strPropertyDescriptionEncoding
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionEncoding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the encryption strength of the remote host..
+ ///
+internal static string strPropertyDescriptionEncryptionStrength
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionEncryptionStrength", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the external tool to be started..
+ ///
+internal static string strPropertyDescriptionExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select a external tool to be started after the disconnection to the remote host..
+ ///
+internal static string strPropertyDescriptionExternalToolAfter
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionExternalToolAfter", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select a external tool to be started before the connection to the remote host is established..
+ ///
+internal static string strPropertyDescriptionExternalToolBefore
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionExternalToolBefore", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose a icon that will be displayed when connected to the host..
+ ///
+internal static string strPropertyDescriptionIcon
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionIcon", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies the load balancing information for use by load balancing routers to choose the best server..
+ ///
+internal static string strPropertyDescriptionLoadBalanceInfo
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionLoadBalanceInfo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter the MAC address of the remote host if you wish to use it in an external tool..
+ ///
+internal static string strPropertyDescriptionMACAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionMACAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to This is the name that will be displayed in the connections tree..
+ ///
+internal static string strPropertyDescriptionName
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sets the panel in which the connection will open..
+ ///
+internal static string strPropertyDescriptionPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter your password..
+ ///
+internal static string strPropertyDescriptionPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter the port the selected protocol is listening on..
+ ///
+internal static string strPropertyDescriptionPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose the protocol mRemoteNG should use to connect to the host..
+ ///
+internal static string strPropertyDescriptionProtocol
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionProtocol", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select a PuTTY session to be used when connecting..
+ ///
+internal static string strPropertyDescriptionPuttySession
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionPuttySession", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies the domain name that a user provides to connect to the RD Gateway server..
+ ///
+internal static string strPropertyDescriptionRDGatewayDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRDGatewayDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies the host name of the Remote Desktop Gateway server..
+ ///
+internal static string strPropertyDescriptionRDGatewayHostname
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRDGatewayHostname", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies when to use a Remote Desktop Gateway (RD Gateway) server..
+ ///
+internal static string strPropertyDescriptionRDGatewayUsageMethod
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRDGatewayUsageMethod", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies whether or not to log on to the gateway using the same username and password as the connection..
+ ///
+internal static string strPropertyDescriptionRDGatewayUseConnectionCredentials
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRDGatewayUseConnectionCredentials", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Specifies the user name that a user provides to connect to the RD Gateway server..
+ ///
+internal static string strPropertyDescriptionRDGatewayUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRDGatewayUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether local disk drives should be shown on the remote host..
+ ///
+internal static string strPropertyDescriptionRedirectDrives
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectDrives", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether key combinations (e.g. Alt-Tab) should be redirected to the remote host..
+ ///
+internal static string strPropertyDescriptionRedirectKeys
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectKeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether local ports (ie. com, parallel) should be shown on the remote host..
+ ///
+internal static string strPropertyDescriptionRedirectPorts
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectPorts", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether local printers should be shown on the remote host..
+ ///
+internal static string strPropertyDescriptionRedirectPrinters
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectPrinters", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select whether local smart cards should be available on the remote host..
+ ///
+internal static string strPropertyDescriptionRedirectSmartCards
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectSmartCards", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select how remote sound should be redirected..
+ ///
+internal static string strPropertyDescriptionRedirectSounds
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRedirectSounds", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select one of the available rendering engines that will be used to display HTML..
+ ///
+internal static string strPropertyDescriptionRenderingEngine
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionRenderingEngine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose the resolution or mode this connection will open in..
+ ///
+internal static string strPropertyDescriptionResolution
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionResolution", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the SmartSize mode to be used..
+ ///
+internal static string strPropertyDescriptionSmartSizeMode
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionSmartSizeMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connect to the console session of the remote host..
+ ///
+internal static string strPropertyDescriptionUseConsoleSession
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionUseConsoleSession", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use the Credential Security Support Provider (CredSSP) for authentication if it is available..
+ ///
+internal static string strPropertyDescriptionUseCredSsp
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionUseCredSsp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Feel free to enter any information you need here..
+ ///
+internal static string strPropertyDescriptionUser1
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionUser1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter your username..
+ ///
+internal static string strPropertyDescriptionUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to If you want to establish a view only connection to the host select yes..
+ ///
+internal static string strPropertyDescriptionViewOnly
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionViewOnly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter the proxy address to be used..
+ ///
+internal static string strPropertyDescriptionVNCProxyAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionVNCProxyAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter your password for authenticating against the proxy..
+ ///
+internal static string strPropertyDescriptionVNCProxyPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionVNCProxyPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter the port the proxy server listens on..
+ ///
+internal static string strPropertyDescriptionVNCProxyPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionVNCProxyPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to If you use a proxy to tunnel VNC connections, select which type it is..
+ ///
+internal static string strPropertyDescriptionVNCProxyType
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionVNCProxyType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enter your username for authenticating against the proxy..
+ ///
+internal static string strPropertyDescriptionVNCProxyUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyDescriptionVNCProxyUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Hostname/IP.
+ ///
+internal static string strPropertyNameAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All.
+ ///
+internal static string strPropertyNameAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Server Authentication.
+ ///
+internal static string strPropertyNameAuthenticationLevel
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameAuthenticationLevel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Authentication Mode.
+ ///
+internal static string strPropertyNameAuthenticationMode
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameAuthenticationMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Automatic Resize.
+ ///
+internal static string strPropertyNameAutomaticResize
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameAutomaticResize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cache Bitmaps.
+ ///
+internal static string strPropertyNameCacheBitmaps
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameCacheBitmaps", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Colours.
+ ///
+internal static string strPropertyNameColors
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameColors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Compression.
+ ///
+internal static string strPropertyNameCompression
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameCompression", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Description.
+ ///
+internal static string strPropertyNameDescription
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameDescription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Display Themes.
+ ///
+internal static string strPropertyNameDisplayThemes
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameDisplayThemes", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Display Wallpaper.
+ ///
+internal static string strPropertyNameDisplayWallpaper
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameDisplayWallpaper", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Domain.
+ ///
+internal static string strPropertyNameDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Desktop Composition.
+ ///
+internal static string strPropertyNameEnableDesktopComposition
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameEnableDesktopComposition", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Font Smoothing.
+ ///
+internal static string strPropertyNameEnableFontSmoothing
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameEnableFontSmoothing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Encoding.
+ ///
+internal static string strPropertyNameEncoding
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameEncoding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Encryption Strength.
+ ///
+internal static string strPropertyNameEncryptionStrength
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameEncryptionStrength", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tool.
+ ///
+internal static string strPropertyNameExternalTool
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameExternalTool", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tool After.
+ ///
+internal static string strPropertyNameExternalToolAfter
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameExternalToolAfter", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to External Tool Before.
+ ///
+internal static string strPropertyNameExternalToolBefore
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameExternalToolBefore", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Icon.
+ ///
+internal static string strPropertyNameIcon
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameIcon", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Load Balance Info.
+ ///
+internal static string strPropertyNameLoadBalanceInfo
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameLoadBalanceInfo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to MAC Address.
+ ///
+internal static string strPropertyNameMACAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameMACAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Name.
+ ///
+internal static string strPropertyNameName
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Panel.
+ ///
+internal static string strPropertyNamePanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNamePanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password.
+ ///
+internal static string strPropertyNamePassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNamePassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Port.
+ ///
+internal static string strPropertyNamePort
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNamePort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol.
+ ///
+internal static string strPropertyNameProtocol
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameProtocol", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Session.
+ ///
+internal static string strPropertyNamePuttySession
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNamePuttySession", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gateway Domain.
+ ///
+internal static string strPropertyNameRDGatewayDomain
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gateway Hostname.
+ ///
+internal static string strPropertyNameRDGatewayHostname
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayHostname", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remote Desktop Gateway Password.
+ ///
+internal static string strPropertyNameRDGatewayPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use Gateway.
+ ///
+internal static string strPropertyNameRDGatewayUsageMethod
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayUsageMethod", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gateway Credentials.
+ ///
+internal static string strPropertyNameRDGatewayUseConnectionCredentials
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayUseConnectionCredentials", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Gateway Username.
+ ///
+internal static string strPropertyNameRDGatewayUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRDGatewayUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disk Drives.
+ ///
+internal static string strPropertyNameRedirectDrives
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectDrives", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Key Combinations.
+ ///
+internal static string strPropertyNameRedirectKeys
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectKeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ports.
+ ///
+internal static string strPropertyNameRedirectPorts
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectPorts", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Printers.
+ ///
+internal static string strPropertyNameRedirectPrinters
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectPrinters", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Smart Cards.
+ ///
+internal static string strPropertyNameRedirectSmartCards
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectSmartCards", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sounds.
+ ///
+internal static string strPropertyNameRedirectSounds
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRedirectSounds", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rendering Engine.
+ ///
+internal static string strPropertyNameRenderingEngine
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameRenderingEngine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resolution.
+ ///
+internal static string strPropertyNameResolution
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameResolution", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SmartSize Mode.
+ ///
+internal static string strPropertyNameSmartSizeMode
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameSmartSizeMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use Console Session.
+ ///
+internal static string strPropertyNameUseConsoleSession
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameUseConsoleSession", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use CredSSP.
+ ///
+internal static string strPropertyNameUseCredSsp
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameUseCredSsp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to User Field.
+ ///
+internal static string strPropertyNameUser1
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameUser1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Username.
+ ///
+internal static string strPropertyNameUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to View Only.
+ ///
+internal static string strPropertyNameViewOnly
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameViewOnly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy Address.
+ ///
+internal static string strPropertyNameVNCProxyAddress
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameVNCProxyAddress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy Password.
+ ///
+internal static string strPropertyNameVNCProxyPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameVNCProxyPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy Port.
+ ///
+internal static string strPropertyNameVNCProxyPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameVNCProxyPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy Type.
+ ///
+internal static string strPropertyNameVNCProxyType
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameVNCProxyType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy Username.
+ ///
+internal static string strPropertyNameVNCProxyUsername
+ {
+ get
+ {
+ return ResourceManager.GetString("strPropertyNameVNCProxyUsername", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol Event Disconnected.
+ ///Message:
+ ///{0}.
+ ///
+internal static string strProtocolEventDisconnected
+ {
+ get
+ {
+ return ResourceManager.GetString("strProtocolEventDisconnected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol Event Disconnected failed.
+ ///{0}.
+ ///
+internal static string strProtocolEventDisconnectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strProtocolEventDisconnectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Protocol to import.
+ ///
+internal static string strProtocolToImport
+ {
+ get
+ {
+ return ResourceManager.GetString("strProtocolToImport", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy test failed!.
+ ///
+internal static string strProxyTestFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strProxyTestFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Proxy test succeeded!.
+ ///
+internal static string strProxyTestSucceeded
+ {
+ get
+ {
+ return ResourceManager.GetString("strProxyTestSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connection failed!.
+ ///
+internal static string strPuttyConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Dispose of Putty process failed!.
+ ///
+internal static string strPuttyDisposeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyDisposeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't set focus!.
+ ///
+internal static string strPuttyFocusFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyFocusFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Get Putty Sessions Failed!.
+ ///
+internal static string strPuttyGetSessionsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyGetSessionsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Putty Handle: {0}.
+ ///
+internal static string strPuttyHandle
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyHandle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Killing Putty Process failed!.
+ ///
+internal static string strPuttyKillFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyKillFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Panel Handle: {0}.
+ ///
+internal static string strPuttyParentHandle
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyParentHandle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Putty Resize Failed!.
+ ///
+internal static string strPuttyResizeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyResizeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Saved Sessions.
+ ///
+internal static string strPuttySavedSessionsRootName
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttySavedSessionsRootName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Session Settings.
+ ///
+internal static string strPuttySessionSettings
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttySessionSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Settings.
+ ///
+internal static string strPuttySettings
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttySettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show PuTTY Settings Dialog failed!.
+ ///
+internal static string strPuttyShowSettingsDialogFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyShowSettingsDialogFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Putty Start Failed!.
+ ///
+internal static string strPuttyStartFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyStartFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to --- PuTTY Stuff ---.
+ ///
+internal static string strPuttyStuff
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyStuff", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to PuTTY Title: {0}.
+ ///
+internal static string strPuttyTitle
+ {
+ get
+ {
+ return ResourceManager.GetString("strPuttyTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Quick: {0}.
+ ///
+internal static string strQuick
+ {
+ get
+ {
+ return ResourceManager.GetString("strQuick", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Quick Connect.
+ ///
+internal static string strQuickConnect
+ {
+ get
+ {
+ return ResourceManager.GetString("strQuickConnect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Quick Connect Add Failed!.
+ ///
+internal static string strQuickConnectAddFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strQuickConnectAddFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Creating quick connect failed.
+ ///
+internal static string strQuickConnectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strQuickConnectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Warn me when closing connections.
+ ///
+internal static string strRadioCloseWarnAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strRadioCloseWarnAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Warn me only when e&xiting mRemoteNG.
+ ///
+internal static string strRadioCloseWarnExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strRadioCloseWarnExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Warn me only when closing &multiple connections.
+ ///
+internal static string strRadioCloseWarnMultiple
+ {
+ get
+ {
+ return ResourceManager.GetString("strRadioCloseWarnMultiple", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do ¬ warn me when closing connections.
+ ///
+internal static string strRadioCloseWarnNever
+ {
+ get
+ {
+ return ResourceManager.GetString("strRadioCloseWarnNever", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RAW.
+ ///
+internal static string strRAW
+ {
+ get
+ {
+ return ResourceManager.GetString("strRAW", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP.
+ ///
+internal static string strRDP
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 16777216 Colours (24-bit).
+ ///
+internal static string strRDP16777216Colors
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP16777216Colors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 256 Colours (8-bit).
+ ///
+internal static string strRDP256Colors
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP256Colors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 32768 Colours (15-bit).
+ ///
+internal static string strRDP32768Colors
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP32768Colors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 16777216 Colours (32-bit).
+ ///
+internal static string strRDP4294967296Colors
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP4294967296Colors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 65536 Colours (16-bit).
+ ///
+internal static string strRDP65536Colors
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDP65536Colors", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP Add Resolution failed!.
+ ///
+internal static string strRdpAddResolutionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpAddResolutionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP Add Resolutions failed!.
+ ///
+internal static string strRdpAddResolutionsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpAddResolutionsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add Session failed.
+ ///
+internal static string strRdpAddSessionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpAddSessionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Close RDP Connection failed!.
+ ///
+internal static string strRdpCloseConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpCloseConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Opening connection failed!.
+ ///
+internal static string strRdpConnectionOpenFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpConnectionOpenFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't create RDP control, please check mRemoteNG requirements..
+ ///
+internal static string strRdpControlCreationFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpControlCreationFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Cursor blinking.
+ ///
+internal static string strRDPDisableCursorblinking
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableCursorblinking", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Cursor Shadow.
+ ///
+internal static string strRDPDisableCursorShadow
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableCursorShadow", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Full Window drag.
+ ///
+internal static string strRDPDisableFullWindowdrag
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableFullWindowdrag", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Menu Animations.
+ ///
+internal static string strRDPDisableMenuAnimations
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableMenuAnimations", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Themes.
+ ///
+internal static string strRDPDisableThemes
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableThemes", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disable Wallpaper.
+ ///
+internal static string strRDPDisableWallpaper
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPDisableWallpaper", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP disconnected!.
+ ///
+internal static string strRdpDisconnected
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpDisconnected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP Disconnect failed, trying to close!.
+ ///
+internal static string strRdpDisconnectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpDisconnectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal error code 1..
+ ///
+internal static string strRdpErrorCode1
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorCode1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal error code 2..
+ ///
+internal static string strRdpErrorCode2
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorCode2", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal error code 3. This is not a valid state..
+ ///
+internal static string strRdpErrorCode3
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorCode3", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal error code 4..
+ ///
+internal static string strRdpErrorCode4
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorCode4", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An unrecoverable error has occurred during client connection..
+ ///
+internal static string strRdpErrorConnection
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to GetError failed (FatalErrors).
+ ///
+internal static string strRdpErrorGetFailure
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorGetFailure", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An unknown fatal RDP error has occurred. Error code {0}..
+ ///
+internal static string strRdpErrorGetUnknown
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorGetUnknown", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An out-of-memory error has occurred..
+ ///
+internal static string strRdpErrorOutOfMemory
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorOutOfMemory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An unknown error has occurred..
+ ///
+internal static string strRdpErrorUnknown
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorUnknown", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A window-creation error has occurred..
+ ///
+internal static string strRdpErrorWindowCreation
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorWindowCreation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Winsock initialization error..
+ ///
+internal static string strRdpErrorWinsock
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpErrorWinsock", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't import rdp file!.
+ ///
+internal static string strRdpFileCouldNotBeImported
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpFileCouldNotBeImported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Fit To Panel.
+ ///
+internal static string strRDPFitToPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPFitToPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP Focus failed!.
+ ///
+internal static string strRdpFocusFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpFocusFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RD Gateway is supported..
+ ///
+internal static string strRdpGatewayIsSupported
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpGatewayIsSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RD Gateway is not supported!.
+ ///
+internal static string strRdpGatewayNotSupported
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpGatewayNotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to GetSessions failed!.
+ ///
+internal static string strRdpGetSessionsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpGetSessionsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Open RDP Connection failed!.
+ ///
+internal static string strRdpOpenConnectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpOpenConnectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP reconnection count:.
+ ///
+internal static string strRdpReconnectCount
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpReconnectCount", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetAuthenticationLevel failed!.
+ ///
+internal static string strRdpSetAuthenticationLevelFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetAuthenticationLevelFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetUseConsoleSession failed!.
+ ///
+internal static string strRdpSetConsoleSessionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetConsoleSessionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Setting Console switch for RDC {0}..
+ ///
+internal static string strRdpSetConsoleSwitch
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetConsoleSwitch", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetCredentials failed!.
+ ///
+internal static string strRdpSetCredentialsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetCredentialsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetEventHandlers failed!.
+ ///
+internal static string strRdpSetEventHandlersFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetEventHandlersFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetRDGateway failed!.
+ ///
+internal static string strRdpSetGatewayFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetGatewayFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetPerformanceFlags failed!.
+ ///
+internal static string strRdpSetPerformanceFlagsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetPerformanceFlagsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetPort failed!.
+ ///
+internal static string strRdpSetPortFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetPortFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetProps failed!.
+ ///
+internal static string strRdpSetPropsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetPropsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rdp Set Redirection Failed!.
+ ///
+internal static string strRdpSetRedirectionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetRedirectionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rdp Set Redirect Keys Failed!.
+ ///
+internal static string strRdpSetRedirectKeysFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetRedirectKeysFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP SetResolution failed!.
+ ///
+internal static string strRdpSetResolutionFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpSetResolutionFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Smart Size.
+ ///
+internal static string strRDPSmartSize
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPSmartSize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Bring to this computer.
+ ///
+internal static string strRDPSoundBringToThisComputer
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPSoundBringToThisComputer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do not play.
+ ///
+internal static string strRDPSoundDoNotPlay
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPSoundDoNotPlay", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Leave at remote computer.
+ ///
+internal static string strRDPSoundLeaveAtRemoteComputer
+ {
+ get
+ {
+ return ResourceManager.GetString("strRDPSoundLeaveAtRemoteComputer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP ToggleFullscreen failed!.
+ ///
+internal static string strRdpToggleFullscreenFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpToggleFullscreenFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RDP ToggleSmartSize failed!.
+ ///
+internal static string strRdpToggleSmartSizeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strRdpToggleSmartSizeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reconnect to previously opened sessions on startup.
+ ///
+internal static string strReconnectAtStartup
+ {
+ get
+ {
+ return ResourceManager.GetString("strReconnectAtStartup", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Refresh.
+ ///
+internal static string strRefresh
+ {
+ get
+ {
+ return ResourceManager.GetString("strRefresh", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remote file.
+ ///
+internal static string strRemoteFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strRemoteFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove All.
+ ///
+internal static string strRemoveAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strRemoveAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rename.
+ ///
+internal static string strRename
+ {
+ get
+ {
+ return ResourceManager.GetString("strRename", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rlogin.
+ ///
+internal static string strRlogin
+ {
+ get
+ {
+ return ResourceManager.GetString("strRlogin", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Save.
+ ///
+internal static string strSave
+ {
+ get
+ {
+ return ResourceManager.GetString("strSave", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Save All.
+ ///
+internal static string strSaveAll
+ {
+ get
+ {
+ return ResourceManager.GetString("strSaveAll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Do you want to save the current connections file before loading another?.
+ ///
+internal static string strSaveConnectionsFileBeforeOpeningAnother
+ {
+ get
+ {
+ return ResourceManager.GetString("strSaveConnectionsFileBeforeOpeningAnother", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Save connections on exit.
+ ///
+internal static string strSaveConsOnExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strSaveConsOnExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png.
+ ///
+internal static string strSaveImageFilter
+ {
+ get
+ {
+ return ResourceManager.GetString("strSaveImageFilter", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Screen.
+ ///
+internal static string strScreen
+ {
+ get
+ {
+ return ResourceManager.GetString("strScreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Screenshot.
+ ///
+internal static string strScreenshot
+ {
+ get
+ {
+ return ResourceManager.GetString("strScreenshot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Screenshots.
+ ///
+internal static string strScreenshots
+ {
+ get
+ {
+ return ResourceManager.GetString("strScreenshots", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Search.
+ ///
+internal static string strSearchPrompt
+ {
+ get
+ {
+ return ResourceManager.GetString("strSearchPrompt", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Send To....
+ ///
+internal static string strSendTo
+ {
+ get
+ {
+ return ResourceManager.GetString("strSendTo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Get Sessions Background failed.
+ ///
+internal static string strSessionGetFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strSessionGetFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Kill Session Background failed.
+ ///
+internal static string strSessionKillFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strSessionKillFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Set hostname like display name when creating or renaming connections.
+ ///
+internal static string strSetHostnameLikeDisplayName
+ {
+ get
+ {
+ return ResourceManager.GetString("strSetHostnameLikeDisplayName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Setting main form text failed.
+ ///
+internal static string strSettingMainFormTextFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strSettingMainFormTextFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Couldn't save settings or dispose SysTray Icon!.
+ ///
+internal static string strSettingsCouldNotBeSavedOrTrayDispose
+ {
+ get
+ {
+ return ResourceManager.GetString("strSettingsCouldNotBeSavedOrTrayDispose", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show description tooltips in connection tree.
+ ///
+internal static string strShowDescriptionTooltips
+ {
+ get
+ {
+ return ResourceManager.GetString("strShowDescriptionTooltips", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show full connections file path in window title.
+ ///
+internal static string strShowFullConsFilePath
+ {
+ get
+ {
+ return ResourceManager.GetString("strShowFullConsFilePath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show logon information on tab names.
+ ///
+internal static string strShowLogonInfoOnTabs
+ {
+ get
+ {
+ return ResourceManager.GetString("strShowLogonInfoOnTabs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Show protocols on tab names.
+ ///
+internal static string strShowProtocolOnTabs
+ {
+ get
+ {
+ return ResourceManager.GetString("strShowProtocolOnTabs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Single click on connection opens it.
+ ///
+internal static string strSingleClickOnConnectionOpensIt
+ {
+ get
+ {
+ return ResourceManager.GetString("strSingleClickOnConnectionOpensIt", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Single click on opened connection switches to it.
+ ///
+internal static string strSingleClickOnOpenConnectionSwitchesToIt
+ {
+ get
+ {
+ return ResourceManager.GetString("strSingleClickOnOpenConnectionSwitchesToIt", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Aspect.
+ ///
+internal static string strSmartSizeModeAspect
+ {
+ get
+ {
+ return ResourceManager.GetString("strSmartSizeModeAspect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Free.
+ ///
+internal static string strSmartSizeModeFree
+ {
+ get
+ {
+ return ResourceManager.GetString("strSmartSizeModeFree", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No SmartSize.
+ ///
+internal static string strSmartSizeModeNone
+ {
+ get
+ {
+ return ResourceManager.GetString("strSmartSizeModeNone", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Socks 5.
+ ///
+internal static string strSocks5
+ {
+ get
+ {
+ return ResourceManager.GetString("strSocks5", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sort.
+ ///
+internal static string strSort
+ {
+ get
+ {
+ return ResourceManager.GetString("strSort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ascending (A-Z).
+ ///
+internal static string strSortAsc
+ {
+ get
+ {
+ return ResourceManager.GetString("strSortAsc", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Descending (Z-A).
+ ///
+internal static string strSortDesc
+ {
+ get
+ {
+ return ResourceManager.GetString("strSortDesc", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Special Keys.
+ ///
+internal static string strSpecialKeys
+ {
+ get
+ {
+ return ResourceManager.GetString("strSpecialKeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please see Help - Getting started - SQL Configuration for more Info!.
+ ///
+internal static string strSQLInfo
+ {
+ get
+ {
+ return ResourceManager.GetString("strSQLInfo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SQL Server.
+ ///
+internal static string strSQLServer
+ {
+ get
+ {
+ return ResourceManager.GetString("strSQLServer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SQL Update check finished and there is an update available! Going to refresh connections..
+ ///
+internal static string strSqlUpdateCheckUpdateAvailable
+ {
+ get
+ {
+ return ResourceManager.GetString("strSqlUpdateCheckUpdateAvailable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH version 1.
+ ///
+internal static string strSsh1
+ {
+ get
+ {
+ return ResourceManager.GetString("strSsh1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH version 2.
+ ///
+internal static string strSsh2
+ {
+ get
+ {
+ return ResourceManager.GetString("strSsh2", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH background transfer failed!.
+ ///
+internal static string strSSHStartTransferBG
+ {
+ get
+ {
+ return ResourceManager.GetString("strSSHStartTransferBG", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Transfer successful!.
+ ///
+internal static string strSSHTranferSuccessful
+ {
+ get
+ {
+ return ResourceManager.GetString("strSSHTranferSuccessful", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH Transfer End (UI.Window.SSHTransfer) failed!.
+ ///
+internal static string strSSHTransferEndFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strSSHTransferEndFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SSH transfer failed..
+ ///
+internal static string strSSHTransferFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strSSHTransferFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Start IP.
+ ///
+internal static string strStartIP
+ {
+ get
+ {
+ return ResourceManager.GetString("strStartIP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Start Port.
+ ///
+internal static string strStartPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strStartPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Startup/Exit.
+ ///
+internal static string strStartupExit
+ {
+ get
+ {
+ return ResourceManager.GetString("strStartupExit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Status.
+ ///
+internal static string strStatus
+ {
+ get
+ {
+ return ResourceManager.GetString("strStatus", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Switch to Notifications panel on:.
+ ///
+internal static string strSwitchToErrorsAndInfos
+ {
+ get
+ {
+ return ResourceManager.GetString("strSwitchToErrorsAndInfos", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Advanced.
+ ///
+internal static string strTabAdvanced
+ {
+ get
+ {
+ return ResourceManager.GetString("strTabAdvanced", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Appearance.
+ ///
+internal static string strTabAppearance
+ {
+ get
+ {
+ return ResourceManager.GetString("strTabAppearance", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tabs && Panels.
+ ///
+internal static string strTabsAndPanels
+ {
+ get
+ {
+ return ResourceManager.GetString("strTabsAndPanels", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Updates.
+ ///
+internal static string strTabUpdates
+ {
+ get
+ {
+ return ResourceManager.GetString("strTabUpdates", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Telnet.
+ ///
+internal static string strTelnet
+ {
+ get
+ {
+ return ResourceManager.GetString("strTelnet", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The following:.
+ ///
+internal static string strTheFollowing
+ {
+ get
+ {
+ return ResourceManager.GetString("strTheFollowing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel.
+ ///
+internal static string strThemeCategoryConfigPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeCategoryConfigPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections Panel.
+ ///
+internal static string strThemeCategoryConnectionsPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeCategoryConnectionsPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to General.
+ ///
+internal static string strThemeCategoryGeneral
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeCategoryGeneral", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the config panel..
+ ///
+internal static string strThemeDescriptionConfigPanelBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the category text in the config panel..
+ ///
+internal static string strThemeDescriptionConfigPanelCategoryTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelCategoryTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the grid lines in the config panel.
+ ///
+internal static string strThemeDescriptionConfigPanelGridLineColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelGridLineColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the help area of the config panel..
+ ///
+internal static string strThemeDescriptionConfigPanelHelpBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelHelpBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the help area of the config panel..
+ ///
+internal static string strThemeDescriptionConfigPanelHelpTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelHelpTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the config panel..
+ ///
+internal static string strThemeDescriptionConfigPanelTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConfigPanelTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the connections panel..
+ ///
+internal static string strThemeDescriptionConnectionsPanelBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConnectionsPanelBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the connections panel..
+ ///
+internal static string strThemeDescriptionConnectionsPanelTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConnectionsPanelTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the tree lines in the connections panel..
+ ///
+internal static string strThemeDescriptionConnectionsPanelTreeLineColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionConnectionsPanelTreeLineColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the menus..
+ ///
+internal static string strThemeDescriptionMenuBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionMenuBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the menus..
+ ///
+internal static string strThemeDescriptionMenuTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionMenuTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the search box..
+ ///
+internal static string strThemeDescriptionSearchBoxBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionSearchBoxBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the search box..
+ ///
+internal static string strThemeDescriptionSearchBoxTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionSearchBoxTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the prompt text in the search box..
+ ///
+internal static string strThemeDescriptionSearchBoxTextPromptColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionSearchBoxTextPromptColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the toolbars..
+ ///
+internal static string strThemeDescriptionToolbarBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionToolbarBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The colour of the text in the toolbars..
+ ///
+internal static string strThemeDescriptionToolbarTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionToolbarTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The background colour of the main window..
+ ///
+internal static string strThemeDescriptionWindowBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeDescriptionWindowBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Background Colour.
+ ///
+internal static string strThemeNameConfigPanelBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Category Text Colour.
+ ///
+internal static string strThemeNameConfigPanelCategoryTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelCategoryTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Grid Line Colour.
+ ///
+internal static string strThemeNameConfigPanelGridLineColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelGridLineColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Help Background Colour.
+ ///
+internal static string strThemeNameConfigPanelHelpBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelHelpBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Help Text Colour.
+ ///
+internal static string strThemeNameConfigPanelHelpTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelHelpTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Config Panel Text Colour.
+ ///
+internal static string strThemeNameConfigPanelTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConfigPanelTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections Panel Background Colour.
+ ///
+internal static string strThemeNameConnectionsPanelBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConnectionsPanelBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections Panel Text Colour.
+ ///
+internal static string strThemeNameConnectionsPanelTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConnectionsPanelTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connections Panel Tree Line Colour.
+ ///
+internal static string strThemeNameConnectionsPanelTreeLineColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameConnectionsPanelTreeLineColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Menu Background Colour.
+ ///
+internal static string strThemeNameMenuBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameMenuBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Menu Text Colour.
+ ///
+internal static string strThemeNameMenuTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameMenuTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Search Box Background Colour.
+ ///
+internal static string strThemeNameSearchBoxBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameSearchBoxBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Search Box Text Colour.
+ ///
+internal static string strThemeNameSearchBoxTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameSearchBoxTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Search Box Text Prompt Colour.
+ ///
+internal static string strThemeNameSearchBoxTextPromptColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameSearchBoxTextPromptColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Toolbar Background Colour.
+ ///
+internal static string strThemeNameToolbarBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameToolbarBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Toolbar Text Colour.
+ ///
+internal static string strThemeNameToolbarTextColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameToolbarTextColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Window Background Colour.
+ ///
+internal static string strThemeNameWindowBackgroundColor
+ {
+ get
+ {
+ return ResourceManager.GetString("strThemeNameWindowBackgroundColor", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error ({0}).
+ ///
+internal static string strTitleError
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitleError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Information ({0}).
+ ///
+internal static string strTitleInformation
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitleInformation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password.
+ ///
+internal static string strTitlePassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitlePassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Password for {0}.
+ ///
+internal static string strTitlePasswordWithName
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitlePasswordWithName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select Panel.
+ ///
+internal static string strTitleSelectPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitleSelectPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Warning ({0}).
+ ///
+internal static string strTitleWarning
+ {
+ get
+ {
+ return ResourceManager.GetString("strTitleWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Transfer.
+ ///
+internal static string strTransfer
+ {
+ get
+ {
+ return ResourceManager.GetString("strTransfer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Transfer failed!.
+ ///
+internal static string strTransferFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strTransferFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Try to integrate.
+ ///
+internal static string strTryIntegrate
+ {
+ get
+ {
+ return ResourceManager.GetString("strTryIntegrate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Type.
+ ///
+internal static string strType
+ {
+ get
+ {
+ return ResourceManager.GetString("strType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ultra VNC Repeater.
+ ///
+internal static string strUltraVncRepeater
+ {
+ get
+ {
+ return ResourceManager.GetString("strUltraVncRepeater", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to UltraVNC SingleClick port:.
+ ///
+internal static string strUltraVNCSCListeningPort
+ {
+ get
+ {
+ return ResourceManager.GetString("strUltraVNCSCListeningPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Uncheck the properties you want not to be saved!.
+ ///
+internal static string strUncheckProperties
+ {
+ get
+ {
+ return ResourceManager.GetString("strUncheckProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unnamed Theme.
+ ///
+internal static string strUnnamedTheme
+ {
+ get
+ {
+ return ResourceManager.GetString("strUnnamedTheme", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG requires an update.
+ ///
+internal static string strUpdateAvailable
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateAvailable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG can periodically connect to the mRemoteNG website to check for updates and product announcements..
+ ///
+internal static string strUpdateCheck
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateCheck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The update information could not be downloaded..
+ ///
+internal static string strUpdateCheckCompleteFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateCheckCompleteFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check failed.
+ ///
+internal static string strUpdateCheckFailedLabel
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateCheckFailedLabel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Checking for updates....
+ ///
+internal static string strUpdateCheckingLabel
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateCheckingLabel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to mRemoteNG Portable Edition does not currently support automatic updates..
+ ///
+internal static string strUpdateCheckPortableEdition
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateCheckPortableEdition", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Download complete!
+ ///mRemoteNG will now quit and begin with the installation..
+ ///
+internal static string strUpdateDownloadComplete
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateDownloadComplete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The update could not be downloaded..
+ ///
+internal static string strUpdateDownloadCompleteFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateDownloadCompleteFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The update download could not be initiated..
+ ///
+internal static string strUpdateDownloadFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateDownloadFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Every {0} days.
+ ///
+internal static string strUpdateFrequencyCustom
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateFrequencyCustom", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Daily.
+ ///
+internal static string strUpdateFrequencyDaily
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateFrequencyDaily", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Monthly.
+ ///
+internal static string strUpdateFrequencyMonthly
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateFrequencyMonthly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Weekly.
+ ///
+internal static string strUpdateFrequencyWeekly
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateFrequencyWeekly", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The announcement information could not be downloaded..
+ ///
+internal static string strUpdateGetAnnouncementInfoFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateGetAnnouncementInfoFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The change log could not be downloaded..
+ ///
+internal static string strUpdateGetChangeLogFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strUpdateGetChangeLogFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use a different username and password.
+ ///
+internal static string strUseDifferentUsernameAndPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strUseDifferentUsernameAndPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use only Notifications panel (no messagebox popups).
+ ///
+internal static string strUseOnlyErrorsAndInfosPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("strUseOnlyErrorsAndInfosPanel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to User.
+ ///
+internal static string strUser
+ {
+ get
+ {
+ return ResourceManager.GetString("strUser", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use the same username and password.
+ ///
+internal static string strUseSameUsernameAndPassword
+ {
+ get
+ {
+ return ResourceManager.GetString("strUseSameUsernameAndPassword", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use a smart card.
+ ///
+internal static string strUseSmartCard
+ {
+ get
+ {
+ return ResourceManager.GetString("strUseSmartCard", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Use SQL Server to load && save connections.
+ ///
+internal static string strUseSQLServer
+ {
+ get
+ {
+ return ResourceManager.GetString("strUseSQLServer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Version.
+ ///
+internal static string strVersion
+ {
+ get
+ {
+ return ResourceManager.GetString("strVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to visionapp Remote Desktop 2008 CSV.
+ ///
+internal static string strVisionAppRemoteDesktopCsv
+ {
+ get
+ {
+ return ResourceManager.GetString("strVisionAppRemoteDesktopCsv", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC.
+ ///
+internal static string strVnc
+ {
+ get
+ {
+ return ResourceManager.GetString("strVnc", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC disconnect failed!.
+ ///
+internal static string strVncConnectionDisconnectFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncConnectionDisconnectFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Opening connection failed!.
+ ///
+internal static string strVncConnectionOpenFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncConnectionOpenFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Refresh Screen Failed!.
+ ///
+internal static string strVncRefreshFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncRefreshFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC SendSpecialKeys failed!.
+ ///
+internal static string strVncSendSpecialKeysFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncSendSpecialKeysFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Set Event Handlers failed!.
+ ///
+internal static string strVncSetEventHandlersFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncSetEventHandlersFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Set Props Failed!.
+ ///
+internal static string strVncSetPropsFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncSetPropsFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Start Chat Failed!.
+ ///
+internal static string strVncStartChatFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncStartChatFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Toggle SmartSize Failed!.
+ ///
+internal static string strVncToggleSmartSizeFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncToggleSmartSizeFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VNC Toggle ViewOnly Failed!.
+ ///
+internal static string strVncToggleViewOnlyFailed
+ {
+ get
+ {
+ return ResourceManager.GetString("strVncToggleViewOnlyFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Warn me if authentication fails.
+ ///
+internal static string strWarnIfAuthFails
+ {
+ get
+ {
+ return ResourceManager.GetString("strWarnIfAuthFails", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Warnings.
+ ///
+internal static string strWarnings
+ {
+ get
+ {
+ return ResourceManager.GetString("strWarnings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Uses the DockPanel Suite by [Weifen Luo].
+ ///
+internal static string strWeifenLuoAttribution
+ {
+ get
+ {
+ return ResourceManager.GetString("strWeifenLuoAttribution", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to http://sourceforge.net/projects/dockpanelsuite/.
+ ///
+internal static string strWeifenLuoAttributionURL
+ {
+ get
+ {
+ return ResourceManager.GetString("strWeifenLuoAttributionURL", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Write log file (mRemoteNG.log).
+ ///
+internal static string strWriteLogFile
+ {
+ get
+ {
+ return ResourceManager.GetString("strWriteLogFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to XULrunner path:.
+ ///
+internal static string strXULrunnerPath
+ {
+ get
+ {
+ return ResourceManager.GetString("strXULrunnerPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Yes.
+ ///
+internal static string strYes
+ {
+ get
+ {
+ return ResourceManager.GetString("strYes", resourceCulture);
+ }
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Language/Language.de.resx b/mRemoteV1/CS/Language/Language.de.resx
new file mode 100644
index 000000000..bcf0cff06
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.de.resx
@@ -0,0 +1,2194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Über
+
+
+ Aktiv
+
+
+ Aktivität
+
+
+ Neue Verbindung
+
+
+ Neuer Ordner
+
+
+ Knoten von XML laden ist fehlgeschlagen!
+
+
+ Knoten von SQL laden ist fehlgeschlagen!
+
+
+ Nur eine Instanz zulassen (mRemoteNG Neustart benötigt)
+
+
+ Immer
+
+
+ Immer verbinden, auch wenn Authentifizierung fehlschlägt
+
+
+ Panel Auswahl Dialog immer anzeigen
+
+
+ Palettenregister immer anzeigen
+
+
+ System Tray Icon immer anzeigen
+
+
+ Später nochmal fragen
+
+
+ Einstellungen jetzt anpassen
+
+
+ Verwende die empfohlenen Einstellungen
+
+
+ {0} kann automatisch nach Updates suchen die neue Funktionen und Bug Fixes enthalten können. Es wird empfohlen, dass Sie {0} erlauben wöchentlich nach Updates zu suchen.
+
+
+ Automatische Update Einstellungen
+
+
+ Aspekt
+
+
+ Automatisch Sitzungs Informationen einholen
+
+
+ Automatisch speichern jede:
+
+
+ Minuten (0 bedeutet deaktiviert)
+
+
+ Verfügbare Version
+
+
+ &Wählen...
+
+
+ &Abbrechen
+
+
+ Ändern
+
+
+ &Schließen
+
+
+ Standard Vererbung
+
+
+ Standard Eigenschaften
+
+
+ Trennen
+
+
+ Symbol
+
+
+ &Importieren
+
+
+ Vererbung
+
+
+ Starte PuTTY
+
+
+ &Neu
+
+
+ &Okay
+
+
+ Eigenschaften
+
+
+ &Scannen
+
+
+ &Halt
+
+
+ Proxy prüfen
+
+
+ Sie können keine Verbindungsdatei importieren.
+Bitte verwenden Sie Datei - Verbindungen laden für normale Verbindungs Dateien!
+
+
+ Die eingegebenen IP Daten sind ungültig, kann den Port Scan nicht starten.
+
+
+ Aussehen
+
+
+ Verbindung
+
+
+ Anmeldedaten
+
+
+ Anzeige
+
+
+ Gateway
+
+
+ Allgemein
+
+
+ Verschiedenes
+
+
+ Protokoll
+
+
+ Umleitung
+
+
+ Diesen Bildschirm bei jedem Start anzeigen
+
+
+ Aktualisieren
+
+
+ Prüfung fehlgeschlagen!
+
+
+ Prüfung erfolgreich!
+
+
+ Die (RDP) Sitzungs Funktion benötigt die Datei eolwtscom.dll. Diese muss korrekt registriert sein.
+Alle mRemoteNG Pakete beinhalten diese Datei, jedoch muss sie wenn Sie eines der nicht-Setup Pakete verwenden manuell registriert werden.
+Öffnen Sie hierzu den Ausführen Dialog (Start - Ausführen) und geben Sie Folgendes ein: regsvr32 "c:\Programme\mRemoteNG\eolwtscom.dll" (Wobei c:\Programme\mRemoteNG\ Ihr mRemoteNG Installations-Pfad ist).
+Wenn Sie noch immer Probleme mit der (RDP) Sitzungs Funktion in mRemoteNG haben, konsultieren Sie bitte das mRemoteNG Forum: http://forum.mremoteng.org/
+
+
+ EOLWTSCOM wurde gefunden und scheint korrekt registriert zu sein.
+
+
+ Um die Gecko Rendering Engine benutzen zu können benötigen Sie XULrunner 1.8.1.x und einen korrekt eingetragenen Pfad in den Optionen.
+Hier können Sie XULrunner 1.8.1.3 herunterladen: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Wenn der Download abgeschlossen ist entpacken Sie das Paket (Der Speicherort ist dabei ihnen überlassen). Als nächstes öffnen Sie (in mRemoteNG) Extras - Optionen - Erweitert und geben Sie den korrekten Pfad im XULrunner Feld an.
+Wenn Sie noch immer Probleme mit der Gecko Engine in mRemote haben, konsultieren Sie bitte das mRemoteNG Forum: http://forum.mremoteng.org/
+
+
+ XULrunner wurde gefunden und scheint korrekt installiert zu sein.
+
+
+ ICA benötigt eine funktionierende XenDesktop Online Plugin Installation und dass die Datei wfica.ocx korrekt registriert ist. Hier können Sie das Plugin herunterladen: http://www.citrix.com/download/
+Wenn sie das XenDesktop Online Plugin installiert haben und noch immer Probleme haben diese Prüfung erfolgreich abzuschließen, versuchen Sie die Datei wfica.ocx manuell zu registrieren.
+Öffnen Sie hierzu den Ausführen Dialog (Start - Ausführen) und geben Sie Folgendes ein: regsvr32 "c:\Programme\Citrix\ICA Client\wfica.ocx" (Wobei c:\Programme\Citrix\ICA Client\ ihr XenDesktop Online Plugin Installations-Pfad ist).
+Wenn Sie noch immer Probleme mit ICA haben, konsultieren sie bitte das mRemoteNG Forum: http://forum.mremoteng.org/
+
+
+ Alle ICA Komponenten wurden gefunden und scheinen korrekt registriert zu sein.
+Citrix ICA Client Control Version {0}
+
+
+ nicht korrekt installiert
+
+
+ Die Protokolle, SSH, Telnet, Rlogin und RAW benötigen PuTTY. PuTTY wird in allen mRemote Paketen mitgeliefert und befindet sich im Installations-Pfad.
+Bitte versichern Sie sich, dass sich die Datei Putty.exe in ihrem mRemote Installations-Pfad befindet (Standard: c:\Programme\mRemoteNG\) oder dass Sie einen korrekten Pfad in den Optionen (Extras - Optionen - Erweitert - Eigener PuTTY Pfad) angegeben haben.
+
+
+ PuTTY wurde gefunden und scheint betriebsbereit zu sein.
+
+
+ Um RDP korrekt betreiben können muss mindestens Remote Desktop Connection (Terminal Services Client) 6.0 installiert sein. Hier können Sie die Software herunterladen: http://support.microsoft.com/kb/951616
+Wenn Sie RDP 6.1 bereits installiert haben und die Prüfung noch immer fehlschlägt, versuchen Sie die Datei mstscax.dll manuell zu registrieren. Öffnen Sie hierzu den Ausführen Dialog (Start - Ausführen) und geben Sie Folgendes ein: regsvr32 "c:\windows\system32\mstscax.dll" (Wobei c:\ Ihr System-Laufwerk ist).
+Wenn Sie noch immer Probleme mit RDP haben, konsultieren Sie bitte das mRemoteNG Forum: http://forum.mremoteng.org/
+
+
+ Alle RDP Komponenten wurden gefunden und scheinen korrekt registriert zu sein.
+Remote Desktop Verbindung Control Version {0}
+
+
+ VNC benötigt die Datei VncSharpNG.dll im mRemoteNG Programm Ordner.
+Bitte stellen Sie sicher, dass Sie die Datei VncSharpNG.dll in Ihrem mRemoteNG Programm Ordner haben (üblicherweise C:\Programme\mRemoteNG\).
+Wenn Sie noch immer Probleme mit VNC haben, konsultieren Sie bitte das mRemoteNG Forum: http://forum.mremoteng.org/
+
+
+ Alle VNC Komponenten wurden gefunden und scheinen korrekt registriert zu sein.
+VncSharpNG Control Version {0}
+
+
+ Automatisch versuchen zu verbinden wenn Verbindung getrennt wird (nur RDP && ICA)
+
+
+ Domäne
+
+
+ Diese Nachricht nicht erneut zeigen.
+
+
+ Vererbung
+
+
+ Passwort
+
+
+ Benutze Authentifizierung
+
+
+ Eigener PuTTY Pfad:
+
+
+ Verbinden wenn bereit
+
+
+ Proxy für automatische Updates verwenden
+
+
+ Benutzername
+
+
+ Auf Beendigung warten
+
+
+ Prüfen
+
+
+ Beim Start auf Updates und Benachrichtigungen prüfen
+
+
+ Jetzt prüfen
+
+
+ Überprüfe die Installation aller Komponenten beim Start
+
+
+ Panel vor Verbindung auswählen
+
+
+ Geschlossene Ports
+
+
+ Alle Ordner schließen
+
+
+ Parameter
+
+
+ Anzeige Name
+
+
+ Dateiname
+
+
+ Hostname/IP
+
+
+ Nachricht
+
+
+ Benutzername
+
+
+ Auf Beendigung warten
+
+
+ Die Kommandozeilen Parameter kontnen nicht ausgewertet werden!
+
+
+ {0} hat festgestellt, dass das Lenovo Auto Scroll Utility auf diesem Computer ausgeführt wird. Dieses Dienstprogramm ist dafür bekannt, dass es Probleme mit {0} verursacht. Es wird empfohlen, dass Sie es deaktivieren oder deinstallieren.
+
+
+ Kompatibilitätsproblem entdeckt
+
+
+ Komponenten Überprüfung
+
+
+ Bild Knopf Ereignis fehlgeschlagen!
+
+
+ Verstecken nicht benötigter Eigenschaften fehlgeschlagen!
+
+
+ Menü Ereignis fehlgeschlagen!
+
+
+ Eigenschaften Grid Objekt Fehler!
+
+
+ Host Status setzen fehlgeschlagen!
+
+
+ Eigenschaften Grid Wert Fehler!
+
+
+ Konfigurationsfenster laden fehlgeschlagen!
+
+
+ Möchten Sie die Verbindung "{0}" schließen?
+
+
+ Sind sie sicher, dass Sie das Panel "{0}" schließen möchten? Alle Verbindungen, die es enthält, werden ebenfalls geschlossen.
+
+
+ Sind Sie sicher dass Sie das extene Programm "{0}" entfernen möchten?
+
+
+ Sind Sie sicher dass Sie die {0} selektierten externen Programme entfernen möchten?
+
+
+ Sind Sie sicher dass Sie die Verbindung "{0}" entfernen möchten?
+
+
+ Sind Sie sicher dass Sie den leeren Ordner "{0}" entfernen möchten?
+
+
+ Sind Sie sicher dass Sie den Ordner "{0}" entfernen möchten? Jeder Ordner und jede Verbindung in diesem Ordner werden ebenfalls gelöscht.
+
+
+ Möchten Sie alle offenen Verbindungen schließen?
+
+
+ Sind Sie sicher das Sie das Panel auf das Standardlayout zurücksetzen wollen?
+
+
+ Verbinden
+
+
+ Im Vollbildmodus verbinden
+
+
+ Verbinde...
+
+
+ Ereignis Verbindung hergestellt
+
+
+ Verbindung zu "{0}" mit "{1}" hergestellt von Benutzer "{2}" (Beschreibung: "{3}"; Benutzer Feld: "{4}")
+
+
+ Verbindung fehlgeschlagen!
+
+
+ Ein Protokoll Ereignis Fehler ist aufgetreten!
+
+
+ Öffnen der Verbindung ist fehlgeschlagen!
+
+
+ Öffnen der Verbindung fehlgeschlagen: Kein Hostname definiert!
+
+
+ RDP Fehler!
+Fehler Code: {0}
+Fehler Beschreibung: {1}
+
+
+ Verbindungen
+
+
+ Setzen der Standard Verbindungsdaten fehlgeschlagen!
+
+
+ Verbindungs Datei Sicherheitskopie konnte nicht erstellt werden!
+
+
+ Verbindungs Datei konnte nicht importiert werden!
+
+
+ Verbindungs Datei "{0}" konnte nicht geladen werden!
+
+
+ Verbindungs Datei "{0}" konnte nicht geladen werden!
+Starte mit neuer Datei.
+
+
+ Verbindungs Datei konnte nicht gespeichert werden!
+
+
+ Verbindungs Datei konnte nicht als "{0}" gespeichert werden!
+
+
+ Mit der Konsolen Sitzung verbinden
+
+
+ Verbinden (mit Optionen)
+
+
+ Verbindung zu {0} mit {1} wurde vom Benutzer {2} getrennt. (Description: " & Prot.InterfaceControl.Info.Description & "; User Field: " & Prot.InterfaceControl.Info.UserField & ")"
+
+
+ Verbindung zu {0} mit {1} wurde vom Benutzer {2} getrennt. (Beschreibung: "{3}"; Benutzer Feld: "{4}")
+
+
+ Ereignis Verbindung beenden
+
+
+ Ereignis Verbindung beenden fehlgeschlagen!
+
+
+ Kann keine neue Verbindungsdatei erstellen!
+
+
+ Das ToolStrip-Steuerelement konnte in FilteredPropertyGrid nicht gefunden werden.
+
+
+ Aktuelle Version
+
+
+ Standard-Aussehen
+
+
+ Erkennen
+
+
+ Keine Verbindung herstellen wenn Authentifizierung fehlschlägt
+
+
+ Doppelklick schließt Tabs
+
+
+ Herunterladen && Installieren
+
+
+ Duplizieren
+
+
+ Wollen Sie ohne Passwort fortfahren?
+
+
+ Bei leeren Benutzername, Passwort oder Domänen Feldern benutze:
+
+
+ 128 Bit
+
+
+ 128 Bit (nur Anmeldung)
+
+
+ 40 Bit
+
+
+ 56 Bit
+
+
+ Einfach
+
+
+ Verbindungsdaten Datei vollständig verschlüsseln
+
+
+ Letzte IP
+
+
+ Letzter Port
+
+
+ AddExternalToolsToToolBar (FrmMain) ist fehlgeschlagen. {0}
+
+
+ AddFolder (UI.Window.Tree) ist fehlgeschlagen. {0}
+
+
+ Die Datenbankversion {0} ist nicht kompatibel mit dieser Version von {1}.
+
+
+ CloneNode (Tree.Node) ist fehlgeschlagen. {0}
+
+
+ Fehler Nummer {0}.
+
+
+ Die Verbindungsliste konnte nicht gespeichert werden.
+
+
+ Entschlüsselung ist gescheitert. {0}
+
+
+ Verschlüsselung fehlgeschlagen. {0}
+
+
+ Die Sicherheitseinstellung von Windows "Systemkryptografie: Verwenden sie FIPS-konformen Algorithmus für Verschlüsselung, Hashing und Signatur" ist aktiviert. Diese Einstellung ist nicht kompatibel mit {0}. Weitere Informationen finden sie im Microsoft Support-Artikel unter http://support.microsoft.com/kb/811833. {0} wird jetzt beendet.
+
+
+ Fehler
+
+
+ Die Verbindungseinstellungen konnten nicht geladen werden.{0}{0}{2}{0}{3}{0}{0}Um Datenverlust zu vermeiden, wird {1} jetzt beendet.
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) ist fehlgeschlagen. {0}
+
+
+ Alle Ordner erweitern
+
+
+ Experimentell
+
+
+ Exportieren
+
+
+ mRemote/mRemoteNG XML exportieren
+
+
+ Externes Programm
+
+
+ Beinhaltet die Symbole von [FAMFAMFAM]
+
+
+ Alle Dateien (*.*)
+
+
+ Application Dateien (*.exe)
+
+
+ mRemote CSV Dateien (*.csv)
+
+
+ mRemote XML Dateien (*.xml)
+
+
+ RDP Dateien (*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV Dateien (*.csv)
+
+
+ Vererbe {0}
+
+
+ Beschreibung des zu vererbenden Elements: {0}
+
+
+ Frei
+
+
+ Vollbild
+
+
+ Allgemein
+
+
+ Verbindungs Daten von SQL laden ist fehlgeschlagen!
+
+
+ Fehler beim Laden des Verbindungseintrags für "{0}" von "{1}". {2}
+
+
+ Automatisches wiederverbinden
+
+
+ Verbindung
+
+
+ Eigenschaften des externen Programmes
+
+
+ Dateien
+
+
+ Host
+
+
+ Verbindung mit HTTP fehlgeschlagen!
+
+
+ Erstellen der HTTP Verbindung fehlgeschlagen!
+
+
+ Fehler beim Ändern des HTTP-Dokumentfensters!
+
+
+ Setzen der HTTP Parameter fehlgeschlagen!
+
+
+ ICA Verbindung fehlgeschlagen!
+
+
+ Einbinden des ICA Plugins fehlgeschlagen!
+
+
+ Setzen der ICA Authenifizierung ist fehlgeschlagen!
+
+
+ Setzen der Fehlerbehandlung fehlgeschlagen!
+
+
+ Setzen der ICA Paramter fehlgeschlagen!
+
+
+ Setzen der Auflösung fehlgschlagen!
+
+
+ Quick connect Registerkarten identifizieren, indem das Präfix "Quick:" benutzt wird
+
+
+ Aus Active Directory importieren
+
+
+ Importieren/Exportieren
+
+
+ mRemote/mRemoteNG XML importieren
+
+
+ Von Port Scan importieren
+
+
+ Aus .RDP Datei(en) importieren
+
+
+ Inaktiv
+
+
+ Informationen
+
+
+ mRemoteNG ist aktuell
+
+
+ Verbindung fehlgeschlagen!
+
+
+ Zerstören des Internen Programmes fehlgeschlagen!
+
+
+ Setzen des Fokus fehlgeschlagen!
+
+
+ Internes Programm Handle: {0}
+
+
+ Beenden des Internen Programmes fehlgeschlagen!
+
+
+ Panel Handle: {0}
+
+
+ Internes Programm Größenanpassung fehlgeschlagen!
+
+
+ --- Internes Programm ---
+
+
+ Internes Programm Titel: {0}
+
+
+ STRG-ALT-ENTF
+
+
+ STRG-ESC
+
+
+ Addresse:
+
+
+ Parameter:
+
+
+ Veränderungsprotokoll:
+
+
+ Beim Schliessen der Verbindungen:
+
+
+ &Direkt Verbinden:
+
+
+ Anzeige Name
+
+
+ Domäne:
+
+
+ Dateiname:
+
+
+ Hostname:
+
+
+ Optionen:
+
+
+ Passwort:
+
+
+ Port:
+
+
+ Portable Edition
+
+
+ Protokoll:
+
+
+ Klicken Sie hier um die PuTTY Sitzung zu konfigurieren:
+
+
+ Maximale Zeit die auf PuTTY und integrierte externe Programme gewartet wird:
+
+
+ Unter der GNU General Public License (GPL) veröffentlicht
+
+
+ Sekunden
+
+
+ Wählen Sie ein Panel aus der Liste oder klicken Sie auf Neu um ein neues zu erstellen. Klickeen Sie OK um fortzufahren.
+
+
+ Serverstatus:
+
+
+ Datenbank:
+
+
+ Datenbank:
+
+
+ Benutzername:
+
+
+ Überprüfen:
+
+
+ Sprache
+
+
+ (Automatisch erkannt)
+
+
+ {0} muss neu gestartet werden, bevor die Sprache aktiv wird.
+
+
+ Laden per SQL fehlgeschlagen!
+
+
+ Laden der XML Datei fehlgeschlagen!
+
+
+ Lokale Datei
+
+
+ Die lokale Datei existiert nicht!
+
+
+ Abmelden
+
+
+ Schreiben des Report.log fehlgeschlagen!
+
+
+ Kann das Report.log nicht im Zielordner speichern!
+
+
+ Benutzt die Magic Bibliothek von [Crownwood Software]
+
+
+ Über
+
+
+ Verbindungs Panel hinzufügen
+
+
+ Ankündigungen
+
+
+ Suche nach Updates
+
+
+ Konfiguration
+
+
+ Verbinden
+
+
+ Verbindungs Panels
+
+
+ Verbindungen
+
+
+ Verbindungen and Konfiguration
+
+
+ Kopieren
+
+
+ STRG-ALT-ENTF
+
+
+ STRG-ESC
+
+
+ Löschen...
+
+
+ Verbindung löschen...
+
+
+ Entfernen
+
+
+ Ordner löschen...
+
+
+ Trennen
+
+
+ Spenden
+
+
+ Duplizieren
+
+
+ Verbindung duplizieren
+
+
+ Ordner duplizieren
+
+
+ Tab klonen
+
+
+ Beenden
+
+
+ Externe Programme
+
+
+ Externe Programme Symbolleiste
+
+
+ &Datei
+
+
+ Vollbild
+
+
+ Vollbild (RDP)
+
+
+ &Hilfe
+
+
+ mRemoteNG Hilfe
+
+
+ Springe zu
+
+
+ Starten
+
+
+ Neue Konfigurations Datei
+
+
+ Hinzufügen
+
+
+ Meldungen
+
+
+ Alle Kopieren
+
+
+ Löschen
+
+
+ Alle Löschen
+
+
+ Konfigurations Datei öffnen...
+
+
+ Optionen
+
+
+ Einfügen
+
+
+ Port-Scan
+
+
+ Direkt Verbinden Symbolleiste
+
+
+ Wiederverbinden
+
+
+ Anzeige aktualisieren (VNC)
+
+
+ Umbenennen
+
+
+ Verbindung umbenennen
+
+
+ Ordner umbenennen
+
+
+ Tab umbenennen
+
+
+ Fehler melden
+
+
+ Layout zurücksetzen
+
+
+ Konfigurations Datei speichern
+
+
+ Konfigurations Datei speichern unter...
+
+
+ Bildschirmschnappschuss
+
+
+ Bildschirmschnappschuss Verwaltung
+
+
+ Tastenkombination senden (VNC)
+
+
+ Sitzungen
+
+
+ Sitzungen and Bildschirmschnappschüsse
+
+
+ &Hilfetext anzeigen
+
+
+ Text anzeigen
+
+
+ SmartSize (RDP/VNC)
+
+
+ SSH Datei Übertragung
+
+
+ Chat starten (VNC)
+
+
+ Unterstützungs Forum
+
+
+ E&xtras
+
+
+ Datei übertragen (SSH)
+
+
+ &Ansicht
+
+
+ Nur Ansicht (VNC)
+
+
+ Webseite
+
+
+ In den System Tray minimieren
+
+
+ Nach unten
+
+
+ Nach oben
+
+
+ meine aktuellen (Windows Anmelde Informationen)
+
+
+ Niemals
+
+
+ Neue Verbindung
+
+
+ Neuer Ordner
+
+
+ Neues Panel
+
+
+ Neue Wurzel
+
+
+ Neuer Titel
+
+
+ Nein
+
+
+ Keine Kompression
+
+
+ Kein externes Programm definiert!
+
+
+ keine
+
+
+ Keine Angabe
+
+
+ Normal
+
+
+ Keine automatische Größenanpassung (SmartSize)
+
+
+ Keine Updates verfügbar
+
+
+ Sie versuchen eine Verbindungs Datei zu laden die mit einer sehr frühen mRemote/mRemoteNG Version erstellt wurde - dies kann zu Fehlern führen.
+Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstellen!
+
+
+ Neue Tabs rechts vom momentan selektierten Tab öffnen
+
+
+ Offene Ports
+
+
+ Aussehen
+
+
+ &Löschen
+
+
+ &Neu
+
+
+ Panel Name
+
+
+ Passwort Schutz
+
+
+ Bitte alle Felder ausfüllen!
+
+
+ Kann das Port Scan Panel nicht laden!
+
+
+ (Diese Einstellungen werden nur gespeichert wenn Sie mRemote XML als Dateiformat auswählen!)
+
+
+ Der Hostname oder die IP zu der eine Verbinung aufgebaut werden soll.
+
+
+ Umschalten aller Vererbungen
+
+
+ Wählen Sie, welche Authentifizierungs-Variante verwendet wird.
+
+
+ Wählen Sie, wie Sie sich am VNC server authentifizieren wollen.
+
+
+ Wählen Sie, ob Bitmap Zwischenspeicherung verwendet werden soll.
+
+
+ Wählen Sie die zu verwendende Farb Qualität.
+
+
+ Wählen Sie die Kompressionsrate, die verwendet werden soll.
+
+
+ Geben Sie hier Ihre Notitzen oder eine Beschreibung des Hosts ein.
+
+
+ Wählen Sie, ob Themen am Remote Host angezeigt werden sollen.
+
+
+ Wählen Sie, ob Hintergrundbilder am Remote Host angezeigt werden sollen.
+
+
+ Geben Sie hier ihre Domäne ein.
+
+
+ Wählen, ob die Desktopgestaltung genutzt werden soll.
+
+
+ Wählen Sie, ob eine Schriftglättung genutzt werden soll oder nicht.
+
+
+ Wählen Sie die zu verwendende Codierung.
+
+
+ Wählen Sie die Verschlüsselungsstärke des Remote Hosts.
+
+
+ Wählen Sie die zu startende externe Applikation.
+
+
+ Wählen Sie eine externe Applikation, die gestartet werden soll nachdem die Verbindung zum Remote Host getrennt wurde.
+
+
+ Wählen Sie eine externe Applikation die gestartet werden soll bevor die Verbindung zum Remote Host aufgebaut wurde.
+
+
+ Das ausgewählte Icon wird bei Verbindung zum Host im Tab angezeigt.
+
+
+ Geben Sie die MAC Adresse des Remote Hosts ein (kann für externe Applikationen verwendet werden).
+
+
+ Dies ist der Name der im Verbindungs Baum angezeigt wird.
+
+
+ Setzt das Panel in dem die Verbindung geöffnet wird.
+
+
+ Geben Sie hier ihr Passwort ein.
+
+
+ Geben Sie den Port ein auf dem das Protokoll auf Verbindungen wartet.
+
+
+ Wählen Sie das Protokoll das verwendet werden soll um eine Verbindung aufzubauen.
+
+
+ Wählen Sie eine PuTTY Sitzung, die bei Verbindung verwendet werden soll.
+
+
+ Gibt den Domänennamen an, der für die Verbindung zum Gateway Server verwendet werden soll.
+
+
+ Gibt den Namen des Remote Desktop Gateway Servers an.
+
+
+ Spezifiziert ob ein Remote Desktop Gateway (RD Gateway) Server verwendet werden soll.
+
+
+ Gibt an on die Anmeldung am Gateway mit den Zugangsdaten für die Verbindung erfolgen sollen oder nicht.
+
+
+ Definiert den Benutzernamen zum Verbinden mit dem Gateway Server.
+
+
+ Wählen Sie, ob ihre lokalen Festplatten im entfernten System angezeigt werden sollen.
+
+
+ Wählen Sie ob Tastenkombinationen wie z.B. Alt-Tab auf das entfernte System umgeleitet werden sollen.
+
+
+ Wählen Sie, ob ihre lokalen Ports wie z.B. COM, Parallel auf dem entfernte System angezeigt werden sollen.
+
+
+ Wählen Sie, ob ihre lokalen Drucker auf dem entfernten System zur Verfügung stehen sollen.
+
+
+ Wählen Sie, ob lokale Smartcards auf dem Remotehost verfügbar sein sollen.
+
+
+ Wählen Sie, wie Töne auf dem entfernten System wiedergegeben werden sollen.
+
+
+ Wählen Sie eine der Rendering Engines die verwendet wird um html darzustellen.
+
+
+ Wählen Sie die Auflösung in welcher die Verbindung geöffnet werden soll.
+
+
+ Wählen Sie den automatischen Anpassungsmodus (SmartSize), der verwendet werden soll.
+
+
+ Zur Konsolen Sitzung des entfernten Hosts verbinden.
+
+
+ Verwenden Sie den Anmeldeinformationen Security Support Provider (CredSSP) für die Authentifizierung, wenn er verfügbar ist.
+
+
+ Dieses Feld ist frei beschreibbar.
+
+
+ Geben Sie hier ihren Benutzernamen ein.
+
+
+ Wählen Sie, ob sie eine Nur-Anzeige (View-Only) Verbindung aufbauen wollen.
+
+
+ Geben Sie die IP des Proxy Servers ein.
+
+
+ Geben Sie Ihr Passwort ein.
+
+
+ Geben Sie den Port des Proxy Servers ein.
+
+
+ Wenn Sie einen Proxy verwenden um auf das entfernte System zugreifen zu können, wählen sie hier den Typ.
+
+
+ Geben Sie Ihren Benutzernamen ein.
+
+
+ Hostname/IP
+
+
+ Alles
+
+
+ Serverauthentifizierung
+
+
+ Authentifizierungs Modus
+
+
+ Bitmaps zwischenspeichern
+
+
+ Farben
+
+
+ Komprimierung
+
+
+ Beschreibung
+
+
+ Themen anzeigen
+
+
+ Hintergrundbild anzeigen
+
+
+ Domäne
+
+
+ Desktopgestaltung
+
+
+ Schriftglättung
+
+
+ Codierung
+
+
+ Verschlüsselungsstärke
+
+
+ Externes Programm
+
+
+ Externes Programm nachher
+
+
+ Externes Programm vorher
+
+
+ Symbol
+
+
+ MAC Adresse
+
+
+ Name
+
+
+ Panel
+
+
+ Passwort
+
+
+ Port
+
+
+ Protokoll
+
+
+ PuTTY Sitzung
+
+
+ Gateway Domäne
+
+
+ Gateway-Hostname
+
+
+ Gateway Passwort
+
+
+ Verwende Gateway
+
+
+ Gateway Anmeldedaten
+
+
+ Gateway Benutzername
+
+
+ Festplatten
+
+
+ Tastenkombinationen
+
+
+ Ports
+
+
+ Drucker
+
+
+ Smartcards
+
+
+ Töne
+
+
+ Rendering-Engine
+
+
+ Auflösung
+
+
+ SmartSize Modus
+
+
+ Verwende Konsole
+
+
+ Verwenden Sie CredSSP
+
+
+ Benutzer Feld
+
+
+ Benutzername
+
+
+ View-Only
+
+
+ Proxy-Adresse
+
+
+ Proxy Passwort
+
+
+ Proxy-Port
+
+
+ Proxy Typ
+
+
+ Proxy Benutzername
+
+
+ Protokollereignis Verbindung getrennnt.
+{0}
+
+
+ Protokollereignis Verbindung trennen fehlgeschlagen.
+{0}
+
+
+ Zu importierendes Protokoll
+
+
+ Proxy Test fehlgeschlagen!
+
+
+ Proxy Test erfolgreich!
+
+
+ Verbindung fehlgeschlagen!
+
+
+ Zerstören von PuTTY fehlgeschlagen!
+
+
+ Setzen des Fokus fehlgeschlagen!
+
+
+ Auslesen der PuTTY Verbindungsliste fehlgeschlagen!
+
+
+ Putty Handle: {0}
+
+
+ Beenden von PuTTY fehlgeschlagen!
+
+
+ Panel Handle: {0}
+
+
+ Ändern der Größe fehlgschlagen!
+
+
+ PuTTY gespeicherte Sitzungen
+
+
+ PuTTY Einstellungen
+
+
+ Anzeigen des PuTTY Konfigurationsfensters fehlgeschlagen!
+
+
+ Konnte PuTTY nicht starten!
+
+
+ --- PuTTY ---
+
+
+ Putty Title: {0}
+
+
+ Direkt: {0}
+
+
+ Direkt verbinden
+
+
+ Hinzufügen zur Direkt Verbindungs Historie fehlgeschlagen!
+
+
+ Direkte Verbindung fehlgeschlagen!
+
+
+ &Warnen wenn Verbindungen beendet werden
+
+
+ Warne mich nur beim B&eenden von mRemoteNG
+
+
+ Nur beim Beenden &mehrerer Verbindungen warnen
+
+
+ Nicht warnen, wenn Verbindungen beendet werden
+
+
+ Rohdaten (RAW)
+
+
+ RDP
+
+
+ 16777216 Farben (24Bit)
+
+
+ 256 Farben (8Bit)
+
+
+ 32768 Farben (15Bit)
+
+
+ 16777216 Farben (32Bit)
+
+
+ 65536 Farben (16Bit)
+
+
+ Hinzufügen der Auflösung fehlgeschlagen!
+
+
+ Hinzufügen der Auflösungen fehlgeschlagen!
+
+
+ Hinzufügen der Sitzung ist fehlgeschlagen!
+
+
+ Schließen der RDP Verbindung fehlgeschlagen!
+
+
+ Öffnen der Verbindung fehlgeschlagen!
+
+
+ Konte das RDP Plugin nicht einbinden, bitte prüfen Sie die mRemoteNG Voraussetzungen.
+
+
+ Cursor blinken abschalten
+
+
+ Cursorschatten deaktivieren
+
+
+ Fensterinhalt beim Ziehen nicht anzeigen
+
+
+ Menü Animationen deaktivieren
+
+
+ Themen deaktivieren
+
+
+ Entferne Hintergrundbild
+
+
+ RDP Verbindung getrennt!
+
+
+ Trennen der Verbindung fehlgeschlagen, versuche zu schließen!
+
+
+ Interner Fehler Code 1.
+
+
+ Interner Fehler Code 2.
+
+
+ Interner Fehler Code 3 - dies ist kein zugelassener Zustand.
+
+
+ Interner Fehler Code 4.
+
+
+ Beim Aufbau der Verbindung ist ein nicht behebbarer Fehler aufgetreten!
+
+
+ Fehler beim Auslesen der Fehlermeldung!
+
+
+ Ein unbekannter schwerer Fehler ist der RDP Verbindung "{0}" aufgetreten!
+
+
+ Kein freier Speicher verfügbar.
+
+
+ Ein unbekannter Fehler ist aufgetreten.
+
+
+ Fenster konnte nicht erstellt werden.
+
+
+ Winsock Initialisierung fehlgeschlagen!
+
+
+ RDP Datei konnte nicht importiert werden!
+
+
+ An Panel anpassen
+
+
+ Setzen des Fokus fehlgeschlagen!
+
+
+ RDP Gateway wird unterstützt.
+
+
+ RDP Gateway wird nicht unterstützt!
+
+
+ Auslesen der RDP Sitzungen fehlgeschlagen!
+
+
+ Öffen der RDP Verbindung fehlgeschlagen!
+
+
+ RDP Verbindungsversuche:
+
+
+ Setzen des RDP Authenifizierungs Levels fehlgeschlagen!
+
+
+ Verwenden der Konsolen Sitzung fehlgeschlagen!
+
+
+ Setzen der Konsolenumschaltung für RDC {0}.
+
+
+ Setzen der RDP Anmeldedaten fehlgeschlagen!
+
+
+ Setzen der RDP Fehlderbehandlungsroutine fehlgeschlagen!
+
+
+ Setzen der RDP Gateway fehlgeschlagen!
+
+
+ Setzen der Performanz Parameter fehlgeschlagen!
+
+
+ Setzen des RDP Ports fehlgeschlagen!
+
+
+ Setzen der RDP Parameter fehlgeschlagen!
+
+
+ Setzen der RDP Weiterleitung fehlgeschlagen!
+
+
+ Setzen der RDP Weiterleitungsschlüssel fehlgeschlagen!
+
+
+ Setzen der Auflösung fehlgeschlagen!
+
+
+ Automatisch skalieren
+
+
+ Hier wiedergeben
+
+
+ Nicht wiedergeben
+
+
+ Auf dem Host wiedergeben
+
+
+ Umschalten in Vollbild Modus fehlgeschlagen!
+
+
+ Umschalten der automatischen Größenanpassung (SmartSize) fehlgeschlagen!
+
+
+ Offene Verbindungen speichern und beim nächsten Start wiederverbinden
+
+
+ Aktualisieren
+
+
+ Entfernte Datei
+
+
+ Alle entfernen
+
+
+ Umbenennen
+
+
+ Rlogin
+
+
+ Speichern
+
+
+ Alle speichern
+
+
+ Wollen sie die aktuelle Verbindungs-Datei speichern bevor eine andere geladen wird?
+
+
+ Verbindungen beim Schließen speichern
+
+
+ Graphics Interchange Format Datei (.gif)|*.gif|Joint Photographic Experts Group Datei (.jpeg)|*.jpeg|Joint Photographic Experts Group Datei (.jpg)|*.jpg|Portable Network Graphics Datei (.png)|*.png
+
+
+ Bildschirm
+
+
+ Bildschirmschnappschuss
+
+
+ Bilschirmschnappschüsse
+
+
+ Suche
+
+
+ Senden an...
+
+
+ Holen der Sitzung im Hintergrund fehlgeschlagen!
+
+
+ Beenden der Sitzung im Hintergrund fehlgeschlagen!
+
+
+ Beim Anlegen einer neuen Verbindung Hostname wie Anzeige Name setzen
+
+
+ Setzen der Hauptformular Texte fehlgeschlagen!
+
+
+ Konnte die Konfiguration nicht sichern oder das Tray Symbol entfernen!
+
+
+ Beschreibungs Tooltips in der Verbindungsliste anzeigen
+
+
+ Vollen Verbindungsdateipfad im Titel anzeigen
+
+
+ Anmeldeinformationen im Tab Titel anzeigen
+
+
+ Protokoll im Tab Titel anzeigen
+
+
+ Ein einzelner Klick auf eine Verbindung öffnet diese
+
+
+ Ein einzelner Klick auf eine geöffnete Verbindung springt zu dieser
+
+
+ Aspekt
+
+
+ verfügbar
+
+
+ Kein SmartSize
+
+
+ Socks 5
+
+
+ Sortieren
+
+
+ Aufsteigend (A-Z)
+
+
+ Absteigend (Z-A)
+
+
+ spezielle Tasten
+
+
+ Für mehr Informationen bitte Hilfeeintrag lesen (Info - Help - Getting started - SQL Configuration)
+
+
+ SQL Server:
+
+
+ SQL Aktualisierungsprüfung beendet und es existiert eine Aktualisierung! Aktualisiere die Verbindungsdaten.
+
+
+ SSH Version 1
+
+
+ SSH Version 2
+
+
+ SSH Übertragung im Hintergrund fehlgeschlagen!
+
+
+ Übertragung erfolgreich!
+
+
+ SSH Abschluss der Übertragung fehlgeschlagen!
+
+
+ SSH-Übertragung fehlgeschlagen.
+
+
+ Anfangs IP
+
+
+ Anfangs Port
+
+
+ Anfang/Ende
+
+
+ Status
+
+
+ Öffne das Fehler && Infos Panel bei:
+
+
+ Erweitert
+
+
+ Aussehen
+
+
+ Tabs && Panele
+
+
+ Aktualisierungen
+
+
+ Telnet
+
+
+ die folgenden:
+
+
+ Config-Panel
+
+
+ Connections Panel
+
+
+ Allgemein
+
+
+ Die Hintergrundfarbe des Config panels.
+
+
+ Die Farbe des Textes im Bedienfeld "Config".
+
+
+ Die Farbe der Rasterlinien im Configpanel
+
+
+ Die Hintergrundfarbe des Bereichs Hilfe des Configpanel.
+
+
+ Die Farbe des Textes auf den Link "Hilfe" des Bereichs Config.
+
+
+ Die Farbe des Textes im Configpanel.
+
+
+ Die Hintergrundfarbe des Fensters Verbindungen.
+
+
+ Die Farbe des Textes im Bereich Verbindungen.
+
+
+ Die Farbe der Strukturlinien im Bereich Verbindungen.
+
+
+ Die Hintergrundfarbe der Menüs.
+
+
+ Die Farbe des Textes in den Menüs.
+
+
+ Die Hintergrundfarbe des Suchfelds.
+
+
+ Die Farbe des Textes in das Suchfeld.
+
+
+ Die Farbe des Textes der Eingabeaufforderung in das Suchfeld.
+
+
+ Die Hintergrundfarbe der Symbolleisten.
+
+
+ Die Farbe des Textes in den Symbolleisten.
+
+
+ Die Hintergrundfarbe des Hauptfensters.
+
+
+ Config-Panel-Hintergrundfarbe
+
+
+ Config-Panel Kategorie Textfarbe
+
+
+ Config-Panel-Grid-Linienfarbe
+
+
+ Config-Panel Hilfe Hintergrundfarbe
+
+
+ Config-Panel Hilfe Textfarbe
+
+
+ Config-Panel-Textfarbe
+
+
+ Verbindungen-Panel-Hintergrund-Farbe
+
+
+ Verbindungen-Panel-Textfarbe
+
+
+ Verbindungen Panel Baumgrenze Farbe
+
+
+ Menü-Hintergrund-Farbe
+
+
+ Menü-Textfarbe
+
+
+ Suchfeld Hintergrundfarbe
+
+
+ Suchfeld Textfarbe
+
+
+ Suchfeld Prompt Textfarbe
+
+
+ Symbolleiste-Hintergrundfarbe
+
+
+ Symbolleiste Textfarbe
+
+
+ Fenster-Hintergrundfarbe
+
+
+ Fehler ({0})
+
+
+ Informationen ({0})
+
+
+ Passwort
+
+
+ Wähle Panel
+
+
+ Warnung ({0})
+
+
+ Übertragen
+
+
+ Übertragung fehlgeschlagen!
+
+
+ Integration versuchen
+
+
+ Typ
+
+
+ Ultra Vnc Repeater
+
+
+ UltraVNC SingleClick Port:
+
+
+ Deaktivieren Sie alle Eigenschaften die nicht gespeichert werden sollen.
+
+
+ Unbenanntes Aussehen
+
+
+ mRemoteNG Update verfügbar!
+
+
+ mRemoteNG kann periodisch auf der mRemoteNG Webseite nach Aktualisierungen und Neuigkeiten suchen.
+
+
+ Abschliessen der Prüfung auf Aktualisierung ist fehlgeschlagen!
+
+
+ Prüfung auf Aktualisierung ist fehlgeschlagen!
+
+
+ mRemoteNG Portable Edition unterstützt derzeit keine automatische Updates.
+
+
+ Löschen der Aktualisierungsdatei ist gehlgeschlagen!
+
+
+ Download fertiggestellt!
+mRemoteNG wird nun geschlossen und die Installation gestartet.
+
+
+ Abschluss des Downloads ist fehlgeschlagen!
+
+
+ Herunterladen der Aktualisierung ist fehlgeschlagen!
+
+
+ Alle {0} Tage
+
+
+ Täglich
+
+
+ Monatlich
+
+
+ Wöchentlich
+
+
+ Starten der Aktualisierung ist fehlgeschlagen!
+
+
+ Anderen Benutzernamen und Passwort verwenden
+
+
+ Nur Fehler && Informations Panel benutzen (Keine Popups)
+
+
+ Benutzer
+
+
+ Selben Benutzer und Passwort verwenden
+
+
+ Verwenden sie eine Smartcard
+
+
+ SQL Server für das Laden && Speichern der Verbindungen verwenden
+
+
+ Version
+
+
+ VNC
+
+
+ Trennen der VNC Verbindung fehlgeschlagen!
+
+
+ Öffnen der VNC Verbindung fehlgeschlagen!
+
+
+ VNC atualisieren des Bildschirminhalts ist fehlgeschlagen!
+
+
+ Senden spezieller Tastenkombinationen ist fehlgeschlagen!
+
+
+ Setzen der Fehlerbehandlungsroutine fehlgeschlagen!
+
+
+ Setzen der VNC Parameter fehlgeschlagen!
+
+
+ Starten des VNC Chat fehlgeschlagen!
+
+
+ Setzen der automatischen Größenanpassung (SmartSize) fehlgeschlagen!
+
+
+ Setzen des nur Ansicht Modus fehlgeschlagen!
+
+
+ Warnung anzeigen wenn Authentifizierung fehlschlägt
+
+
+ Warnungen
+
+
+ Benutzt die DockPanel Suite von [Weifen Luo]
+
+
+ Log File schreiben (mRemoteNG.log)
+
+
+ XULrunner Pfad:
+
+
+ Ja
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.el.resx b/mRemoteV1/CS/Language/Language.el.resx
new file mode 100644
index 000000000..b8496b2d3
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.el.resx
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Σχετικά με
+
+
+ Ενεργό
+
+
+ Δραστηριότητα
+
+
+ Νέα σύνδεση
+
+
+ Νέος φάκελος
+
+
+ AddNodeFromXML απέτυχε!
+
+
+ AddNodesFromSQL απέτυχε!
+
+
+ Επιτρέπετε μόνο ένα μόνο παράδειγμα της εφαρμογής (απαιτείται επανεκκίνηση του mRemoteNG)
+
+
+ Πάντα
+
+
+ Πάντοτε να συνδεθεί, ακόμη και αν ο έλεγχος ταυτότητας αποτυγχάνει
+
+
+ Πάντα Εμφάνιση πίνακα διαλόγου επιλογής κατά το άνοιγμα συνδέσεων
+
+
+ Να εμφανίζονται πάντα γνωστοποίησης περιοχων εικόνας
+
+
+ Ρωτήστε με ξανά αργότερα
+
+
+ Προσαρμογή των ρυθμίσεων τώρα
+
+
+ Χρήση των προτεινόμενων ρυθμίσεων
+
+
+ {0} μπορεί να ελέγχει αυτόματα ενημερώσεις που μπορούν να παρέχουν νέα χαρακτηριστικά και διορθώσεις σφαλμάτων. Συνιστάται να επιτρέψετε {0} να ελέγξει για ενημερώσεις σε εβδομαδιαία βάση.
+
+
+ Ρυθμίσεις αυτόματης ενημέρωσης
+
+
+ Πτυχή
+
+
+ Αυτόματη λήψη πληροφοριών περιόδου
+
+
+ Αυτόματη αποθήκευση κάθε:
+
+
+ Λεπτά (0 σημαίνει απενεργοποιημένο)
+
+
+ Τρέχουσα έκδοση
+
+
+ &Αναζήτηση...
+
+
+ &Ακύρωση
+
+
+ Αλλαγή
+
+
+ &Κλείσιμο
+
+
+ Προεπιλογή κληρονομικότητας
+
+
+ Προεπιλεγμένες ιδιότητες
+
+
+ Αποσύνδεση
+
+
+ Εικονίδιο
+
+
+ &Εισαγωγή
+
+
+ Κληρονομιά
+
+
+ Εκκίνηση του PuTTY
+
+
+ & Νέο
+
+
+ &ΟΚ
+
+
+ Ιδιότητες
+
+
+ &Σάρωση
+
+
+ &Διακοπή
+
+
+ Δοκιμή διακομιστή μεσολάβησης
+
+
+ Δεν μπορείτε να εισαγάγετε ένα κανονικό αρχείο σύνδεσης.
+Παρακαλούμε χρησιμοποιήστε Αρχείο - Συνδέσεις φορτίου για τα κανονικά αρχεία σύνδεσης!
+
+
+ Δεν είναι δυνατή η εκκίνηση της σάρωσης υποδοχων, εσφαλμένη μορφή IP!
+
+
+ Εμφάνιση
+
+
+ Σύνδεση
+
+
+ Πιστοποιήσεις
+
+
+ Οθόνη
+
+
+ Πύλη
+
+
+ Γενική
+
+
+ Διάφορα
+
+
+ Πρωτόκολλο
+
+
+ Ανακατεύθυνση
+
+
+ Πάντα εμφάνιση αυτής της οθόνης κατά την εκκίνηση
+
+
+ Ανανέωση
+
+
+ Ο ελέγχος απέτυχε!
+
+
+ Ο ελεγχος πέτυχε!
+
+
+ Η δυνατότητα (RDP) συνεδρίες προϋποθέτει ότι έχετε μια εγγεγραμμένο αντίγραφο του eolwtscom.dll στο σύστημά σας. mRemoteNG πλοία με αυτό το στοιχείο αλλά θα δεν εγγραφείτε αυτόματα εκτός αν η εκτέλεση του πακέτου εγκατάστασης. Να εγγραφείτε δεν με μη αυτόματο τρόπο αυτό: Ανοίξτε στο τρέχω διάλογος (έναρξη - Run) και πληκτρολογήστε τα παρακάτω: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (όπου c:\Program Files\mRemoteNG\ είναι η διαδρομή προς την εγκατάσταση mRemoteNG). Εάν είστε ακόμα δεν είναι σε θέση να περάσει ο έλεγχος αυτός ή να χρησιμοποιήσετε τη δυνατότητα συνεδρίες (RDP) στο mRemoteNG συμβουλευτείτε το mRemoteNG φόρουμ στο http://forum.mremoteng.org/
+
+
+ Το EOLWTSCOM βρέθηκε και φαίνεται να έχει καταχωρηθεί σωστά.
+
+
+ Για να χρησιμοποιήσετε το μηχανισμό απόδοσης Gecko πρέπει να έχετε XULrunner 1.8.1.x και ο δρόμος για την εγκατάσταση ορίστε στις επιλογές σας. Μπορείτε να κατεβάσετε XULrunner 1.8.1.3 εδώ: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ όταν ολοκληρώσετε τη λήψη κάντε εξαγωγή του πακέτου για την πορεία της επιλογής σας. Στη συνέχεια, στο mRemoteNG πηγαίνετε στο εργαλεία - επιλογές - προηγμένες και πληκτρολογήσει τη σωστή διαδρομή στο πεδίο διαδρομή XULrunner. Εάν είστε ακόμα δεν είναι σε θέση να περάσει ο έλεγχος αυτός ή χρησιμοποιούν την μηχανή Gecko στο mRemoteNG συμβουλευτείτε το mRemoteNG φόρουμ στο http://forum.mremoteng.org/
+
+
+ Το XULrunner βρέθηκε και φαίνεται να έχει εγκατασταθεί σωστά.
+
+
+ ICA απαιτεί ότι είναι εγκατεστημένο το XenDesktop Online Plugin και ότι καταχωρείται η βιβλιοθήκη wfica.ocx. Μπορείτε να κατεβάσετε τον πελάτη εδώ: http://www.citrix.com/download/ αν έχετε το XenDesktop Online Plugin εγκατασταθεί και ο έλεγχος συνεχίσει να αποτυγχάνει, προσπαθήστε να εγγραφείτε wfica.ocx με μη αυτόματο τρόπο. Να κάνει αυτό ανοίγω πάνω στο τρέχω διάλογος (έναρξη - Run) και πληκτρολογήστε τα παρακάτω: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (όπου c:\Program Files\Citrix\ICA Client\ είναι η διαδρομή στην εγκατάσταση XenDesktop Online Plugin). Εάν είστε ακόμα δεν είναι σε θέση να περάσει ο έλεγχος αυτός ή να χρησιμοποιήσετε ICA στο mRemoteNG συμβουλευτείτε το mRemoteNG φόρουμ στο http://forum.mremoteng.org/"
+
+
+ Όλα τα συστατικά ICA βρέθηκαν και φαίνεται να καταχωρηθηκαν σωστά. Πρόγραμμα-πελάτη Citrix ICA ελέγχου έκδοση {0}
+
+
+ δεν έχει εγκατασταθεί σωστά
+
+
+ Σύνδεση σε λειτουργία πλήρους οθόνης
+
+
+ Σύνδεση...
+
+
+ Πρωτόκολλο γεγονός που συνδέεται
+
+
+ Σύνδεση με "{0}" μέσω "{1}" από το χρήστη "{2}" (Περιγραφή: «{3}»? Χρήστη το πεδίο: «{4}")
+
+
+ Η συνδεση απέτυχε!
+
+
+ Πρωτόκολλο ErrorOccured εκδήλωση
+
+
+ Άνοιγμα σύνδεσης απέτυχε!
+
+
+ Δεν μπορεί να ανοίχθει η σύνδεση: Το όνομα του κεντρικού υπολογιστή δεν ειναι καθορισμένο!
+
+
+ RDP λάθος!
+Κωδικός σφάλματος: {0}
+Περιγραφή σφάλματος: {1}
+
+
+ Συνδέσεις
+
+
+ Αδυναμία ορισμού προεπιλεγμένης θύρας!
+
+
+ Δεν ήταν δυνατή η δημιουργία αντιγράφων ασφαλείας των συνδέσεων αρχείου!
+
+
+ Δεν ήταν δυνατή η εισαγωγή συνδέσεων αρχείου!
+
+
+ Το αρχείο συνδέσεων "{0}" δεν μπορεί να φορτωθεί!
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.en-US.resx b/mRemoteV1/CS/Language/Language.en-US.resx
new file mode 100644
index 000000000..273d1b558
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.en-US.resx
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Select the color quality to be used.
+
+
+ Colors
+
+
+ 16777216 Colors (24-bit)
+
+
+ 256 Colors (8-bit)
+
+
+ 32768 Colors (15-bit)
+
+
+ 16777216 Colors (32-bit)
+
+
+ 65536 Colors (16-bit)
+
+
+ The background color of the config panel.
+
+
+ The color of the category text in the config panel.
+
+
+ The color of the grid lines in the config panel
+
+
+ The background color of the help area of the config panel.
+
+
+ The color of the text in the help area of the config panel.
+
+
+ The color of the text in the config panel.
+
+
+ The background color of the connections panel.
+
+
+ The color of the text in the connections panel.
+
+
+ The color of the tree lines in the connections panel.
+
+
+ The background color of the menus.
+
+
+ The color of the text in the menus.
+
+
+ The background color of the search box.
+
+
+ The color of the text in the search box.
+
+
+ The color of the prompt text in the search box.
+
+
+ The background color of the toolbars.
+
+
+ The color of the text in the toolbars.
+
+
+ The background color of the main window.
+
+
+ Config Panel Background Color
+
+
+ Config Panel Category Text Color
+
+
+ Config Panel Grid Line Color
+
+
+ Config Panel Help Background Color
+
+
+ Config Panel Help Text Color
+
+
+ Config Panel Text Color
+
+
+ Connections Panel Background Color
+
+
+ Connections Panel Text Color
+
+
+ Connections Panel Tree Line Color
+
+
+ Menu Background Color
+
+
+ Menu Text Color
+
+
+ Search Box Background Color
+
+
+ Search Box Text Color
+
+
+ Search Box Text Prompt Color
+
+
+ Toolbar Background Color
+
+
+ Toolbar Text Color
+
+
+ Window Background Color
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.es-AR.resx b/mRemoteV1/CS/Language/Language.es-AR.resx
new file mode 100644
index 000000000..74f9d08dc
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.es-AR.resx
@@ -0,0 +1,387 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Activo
+
+
+ Actividad
+
+
+ Propiedades por defecto
+
+
+ Desconectar
+
+
+ Icono
+
+
+ Ejecutar PuTTY
+
+
+ & OK
+
+
+ Propiedades
+
+
+ & Scanear
+
+
+ & Parar
+
+
+ Probar Proxy
+
+
+ Credenciales
+
+
+ Varios
+
+
+ Siempre mostrar esta pantalla al inicio
+
+
+ no está correctamente instalado
+
+
+ El ejecutable de PuTTY se encontró y debería estar listo para usarse.
+
+
+ Todos los componentes RDP se encontraron y parecen estar registrados correctamente. Versión de escritorio remoto {0}
+
+
+ Todos los componentes de VNC se encontraron y parecen estar registrados correctamente.
+VncSharpNG Control {0}
+
+
+ Intentar reconectar automáticamente cuando se desconecte (solo para RDP && ICA)
+
+
+ Dominio
+
+
+ No mostrar este mensaje de nuevo.
+
+
+ Herencia
+
+
+ Contraseña
+
+
+ Este servidor proxy requiere autenticación
+
+
+ Usar ruta de Putty personalizada:
+
+
+ Vuelva a conectarse cuando esté listo
+
+
+ Usar un servidor proxy para conectarse
+
+
+ Usuario
+
+
+ Esperar a Salir
+
+
+ Pruebe nuevamente
+
+
+ Comprobar las actualizaciones y anuncios en el inicio
+
+
+ Compruebe ahora
+
+
+ Verifique la correcta instalación de los componentes en el inicio
+
+
+ Elija el panel antes de conectarse
+
+
+ Puertos Cerrados
+
+
+ Contraer todas las carpetas
+
+
+ Comprobación de componentes
+
+
+ btnIcon_Click falló!
+
+
+ ¿Desea cerrar la conexión, "{0}"?
+
+
+ ¿Está seguro que desea cerrar el panel, "{0}"? Cualquier conexión que contenga el panel también estará cerrada.
+
+
+ ¿Está seguro que desea eliminar la carpeta vacía, "{0}"?
+
+
+ ¿Está seguro que desea eliminar la carpeta "{0}"? También se eliminará cualquier carpetas o conexiones que contiene.
+
+
+ ¿Desea cerrar todas las conexiones abiertas?
+
+
+ ¿Estás seguro que deseas restablecer los paneles a su diseño predeterminado?
+
+
+ Conectar
+
+
+ Conectando...
+
+
+ Evento de protocolo conectado
+
+
+ ¡Error de conexión!
+
+
+ No se pudo abrir la conexión!
+
+
+ No se puede abrir la conexión: ningún nombre de host especificado!
+
+
+ Error de RDP.
+Código de Error: {0}
+Descripción del Error: {1}
+
+
+ Conexiones
+
+
+ No se ha podido establecer el puerto predeterminado!
+
+
+ No se pudo crear copia de seguridad del archivo de conexiones!
+
+
+ No se pudo importar archivo de conexiones!
+
+
+ No se pudo cargar el archivo de conexiones "{0}"!
+
+
+ No se pudo guardar el archivo de conexiones!
+
+
+ No se pudo guardar archivo de conexiones como "{0}"!
+
+
+ Conectar con la sesión de consola
+
+
+ Conectar (con opciones)
+
+
+ Conexión a {0} {1} vía cerrada por usuario {2}.
+
+
+ Conexión a {0} {1} vía cerrada por usuario {2}. (Descripción: "{3}"; Campo de usuario: "{4}")
+
+
+ Evento de conexión cerrada
+
+
+ Evento de cerrar conexión falló!
+
+
+ No se pudo crear el nuevo archivo de conexiones!
+
+
+ Versión instalada
+
+
+ Detectar
+
+
+ No conectar si falla la autenticación
+
+
+ Descargar e instalar
+
+
+ Duplicar
+
+
+ ¿Desea continuar sin contraseña?
+
+
+ Si desea Nombre de usuario, password o dominio vacio use:
+
+
+ 128-bit
+
+
+ 128-bit (iniciar sesión)
+
+
+ Básica
+
+
+ Encriptar completamente el archivo de conexiones
+
+
+ Último IP
+
+
+ Último puerto
+
+
+ BarraAgregarHerramientasExternas (frmMain) falló. {0}
+
+
+ La versión de la base de datos {0} no es compatible con esta versión de {1}.
+
+
+ ClonarModulo (Tree.Node) falló. {0}
+
+
+ Código de Error {0}.
+
+
+ La lista de conexiones no pudo ser guardada.
+
+
+ La decriptación falló. {0}
+
+
+ La encriptación falló. {0}
+
+
+ La configuración de seguridad de Windows, "criptografía de sistema: usar FIPS algoritmos compatibles para codificación, algoritmos hash y firma", está habilitada. Esta configuración no es compatible con {0}. Consulte el artículo de soporte técnico de Microsoft en http://support.microsoft.com/kb/811833 para obtener más información. {0} se cerrará.
+
+
+ Errores
+
+
+ VerificarVersionBasedeDatos (Config.Connections.Save) falló. {0}
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.es.resx b/mRemoteV1/CS/Language/Language.es.resx
new file mode 100644
index 000000000..69549bfd2
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.es.resx
@@ -0,0 +1,2083 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Acerca de
+
+
+ Activo
+
+
+ Actividad
+
+
+ Nueva Conexión
+
+
+ Nueva Carpeta
+
+
+ ¡Adición de Nodo desde XML fallida!
+
+
+ ¡Adición de nodos desde SQL fallida!
+
+
+ Permitir una sola instancia de la aplicación (reinicio de mRemoteNG necesario)
+
+
+ Siempre
+
+
+ Conectar siempre, aunque falle la autentificación
+
+
+ Mostrar siempre el diálogo de selección de panel cuando se abran conexiones
+
+
+ Mostrar las pestañas del panel siempre
+
+
+ Mostrar siempre el Icono de la Bandeja del Sistema
+
+
+ Pregúnteme más adelante
+
+
+ Personalice las opciones ahora
+
+
+ Emplear la opciones recomendadas
+
+
+ {0} puede comprobar automáticamente actualizaciones que aportarán nuevas funcionalidades y correción de errores. Es recomendable que permita a {0} comprobar actualizaciones semanalmente.
+
+
+ Opciones de actualización automática
+
+
+ Aspecto
+
+
+ Obtener información de sesión automáticamente
+
+
+ Autoguardar cada:
+
+
+ Minutos (0 significa deshabilitado)
+
+
+ Versión Disponible
+
+
+ &Ver...
+
+
+ &Cancelar
+
+
+ Cambiar
+
+
+ &Cerra
+
+
+ Herencia por Defecto
+
+
+ Propiedades por Defecto
+
+
+ Desconectar
+
+
+ Icono
+
+
+ &Importar
+
+
+ Herencia
+
+
+ Lanzar PuTTY
+
+
+ &Nuevo
+
+
+ &OK
+
+
+ Propiedades
+
+
+ &Escanear
+
+
+ &Parar
+
+
+ Probar Proxy
+
+
+ No puede importar un archivo de conexión.
+¡Utilice Archivo - Cargar Conexiones para archivos de conexión!
+
+
+ ¡No puede iniciarse el Escáner de Puertos, incorrecto formato IP!
+
+
+ Apariencia
+
+
+ Conexión
+
+
+ Credenciales
+
+
+ Pantalla
+
+
+ Puerta de Enlace
+
+
+ General
+
+
+ Varios
+
+
+ Protocolo
+
+
+ Redirección
+
+
+ Mostrar siempre esta pantalla en el inicio
+
+
+ Actualizar
+
+
+ Comprobación fallida!
+
+
+ Comprobación realizada!
+
+
+ La característica de Sesiones (RDP) necesita que se haya registrado la librería eolwtscom.dll en su sistema.
+mRemoteNG viene con este componente pero no lo registra automáticamente a menos que ejecute el paquete de instalación.
+Para registrarlo manualmente haga ésto: Abra el diálogo de ejecutar (Inicio - Ejecutar) e introduzca lo siguiente: regsvr32 "c:\Archivos de Programa\mRemoteNG\eolwtscom.dll" (donde c:\Archivos de Programa\mRemoteNG\ es la ruta a la instalación de mRemoteNG).
+Si continúa sin funcionar la comprobación ó no puede utilizar Sesiones (RDP) en mRemoteNG, consulte el Foro de mRemoteNG en http://forum.mremoteng.org/
+
+
+ EOLWTSCOM ha sido localizado y parece estar registrado correctamente.
+
+
+ Para emplear el Motor de Renderizado Gecko necesita tener XULrunner 1.8.1.x y configurada en sus opciones la ruta de instalación.
+Puede descargar XULrunner 1.8.1.3 aquí: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Cuando haya concluido la descarga, extraiga el paquete en un directorio de su elección. Entonces, en mRemoteNG vaya a Herramientas - Opciones - Avanzado e introduzca dicha ruta en el campo que indica la instalación de XULrunner.
+Si continúa sin funcionar la comprobación ó no puede utilizar el motor Gecko en mRemoteNG, consulte el Foro de mRemoteNG en http://forum.mremoteng.org/
+
+
+ XULrunner ha sido localizado y parece estar instalado correctamente.
+
+
+ ICA necesita que esté instalado XenDesktop Online Plugin y que la librería wfica.ocx esté registrada. Puede descargar el cliente aquí: http://www.citrix.com/download/
+Si tiene instalado XenDesktop Online Plugin y la comprobación continúa fallando, pruebe a registrar wfica.ocx manualmente.
+Para hacer ésto, abra el diálogo ejecutar (Inicio - Ejecutar) e introduzca lo siguiente: regsvr32 "c:\Archivos de Programa\Citrix\ICA Client\wfica.ocx" (Donde c:\Archivos de Programa\Citrix\ICA Client\ es la ruta a su instalación de XenDesktop Online Plugin).
+Si continúa sin funcionar la comprobación ó no puede utilizar ICA en mRemoteNG, consulte el Foro de mRemoteNG en http://forum.mremoteng.org/
+
+
+ Todos los componentes de ICA han sido localizados y parecen estar registrados correctamente.
+Versión {0} de Citrix ICA Client Control
+
+
+ no instalado adecuadamente
+
+
+ Los protocolos SSH, Telnet, Rlogin y RAW necesitan PuTTY para funcionar. PuTTY viene con cada paquete de mRemoteNG y se encuentra en la ruta de instalación.
+Por favor, asegúrese de que tiene Putty.exe en el directorio de mRemoteNG (por defecto: c:\Archivos de Programa\mRemoteNG) ó que ha especificado una ruta correcta a su ejecutable de PuTTY en las Opciones (Herramientas-Opciones-Avanzado-Ruta personalizada a PuTTY)
+
+
+ El ejecutable de PuTTY ha sido localizado y está listo para usarse.
+
+
+ Para que RDP funcione adecuadamente necesita tener instalada al menos la versión 6.1 de Remote Desktop Connection (Cliente de Servicios de Terminal). Puede descargarlo de la dirección: http://support.microsoft.com/kb/951616. Si tiene instalado RDP 6.1 y la comprobación sigue fallando, intente registrar la librería mstscax.dll manualmente. Para hacerlo, abra el diálogo de ejecutar (Inicio-Ejecutar) e introduzca lo siguiente: regsvr32 "c:\windows\system32\mstscax.dll" (donde c:\ es su unidad de sistema).
+Si continúa teniendo problemas para hacer funcionar RDP, consulte el Foro de mRemoteNG en http://forum.mremoteng.org/
+
+
+ Todos los componentes RDP han sido localizados y parecen registrados adecuadamente.
+Versión de Control {0} de la Conexión de Escritorio Remoto
+
+
+ VNC necesita que VncSharpNG.dll esté situada en la carpeta donde está instalado mRemoteNG.
+Por favor, compruebe que tiene el archivo VncSharpNG.dll en la carpeta de instalación de mRemoteNG (normalmente C:\Archivos de Programa\mRemoteNG\).
+Si continúa sin funcionar la comprobación ó no puede utilizar VNC en mRemoteNG, consulte el Foro de mRemoteNG en http://forum.mremoteng.org/
+
+
+ Todos los componentes VNC han sido localizados y parecen registrados adecuadamente.
+Versión de Control {0} de VNCSharpNG
+
+
+ Tratar de reconectar automáticamente al ser desconectado del servidor (solo RDP && ICA)
+
+
+ Dominio
+
+
+ No mostar este mensaje de nuevo.
+
+
+ Herencia
+
+
+ Contraseña
+
+
+ Este servidor procy requiere autentificación
+
+
+ Usar ruta a PuTTY personalizada:
+
+
+ Reconectar cuando esté listo
+
+
+ Usar servidor proxy para conectar
+
+
+ Nombre de Usuario
+
+
+ Esperar a Salir
+
+
+ Comporbar de nuevo
+
+
+ Comprobar actualizaciones y novedades en el arranque
+
+
+ Comprobar ahora
+
+
+ Comprobar la adecuada instalación de componentes en el arranque
+
+
+ Seleccionar Panel antes de conectar
+
+
+ Puertos Cerrados
+
+
+ Contraer todas las carpetas
+
+
+ Argumentos
+
+
+ Nombre Mostrado
+
+
+ Nombre de Archivo
+
+
+ Nombre del Host/IP
+
+
+ Mensaje
+
+
+ Nombre de Usuario
+
+
+ Esperar a Salir
+
+
+ ¡No se pudieron procesar los argumentos de línea de comandos!
+
+
+ Detectado problema de compatibilidad
+
+
+ Comprobación de Componentes
+
+
+ ¡Error en btnIcon_Click!
+
+
+ ¡Fallo en ShowHideGridItems!
+
+
+ ¡Fallo en IconMenu_Click!
+
+
+ ¡Fallo en el objeto de propiedad de red!
+
+
+ No se pudo definir el estado del host!
+
+
+ ¡Fallo en pGrid_PopertyValueChanged!
+
+
+ Error al Cargar la Interfaz de Configuración de Usuario
+
+
+ Desea cerrar la conexión, "{0}"?
+
+
+ Está seguro de querer cerrar el panel, "{0}"? Cualquier conexión que contenga será también cerrada.
+
+
+ ¿Está seguro de querer borrar la herramienta externa, "{0}"?
+
+
+ ¿Está seguro de querer borrar las {0} herramientas externas seleccionadas?
+
+
+ ¿Está seguro de querer eliminar la conexión, "{0}"?
+
+
+ ¿Está seguro de querer eliminar la carpeta vacía, "{0}"?
+
+
+ ¿Está seguro de querer eliminar la carpeta, "{0}"? Cualquier carpeta o conexión que contenga será también eliminada.
+
+
+ ¿Quiere cerrar todas las conexiones abiertas?
+
+
+ ¿Está seguro de querer resetear los paneles a su configuración inicial?
+
+
+ Conectar
+
+
+ Conectar en modo de pantalla completa
+
+
+ Conectando...
+
+
+ Se lanzó el evento Connected en Protocol
+
+
+ Connexión a "{0}" via "{1}" establecida por el usuario "{2}" (Descripción: "{3}"; Campo de Usuario: "{4}")
+
+
+ ¡Conexión fallida!
+
+
+ Ha ocurrido un error en evento de protocolo
+
+
+ ¡Conexión fallida!
+
+
+ ¡No se pudo establecerse la conexión: No se ha especificado el nombre del host!
+
+
+ ¡Error RDP!
+Código de Error: {0}
+Descripción del Error: {1}
+
+
+ Conexiones
+
+
+ No se pudo definir el puerto por defecto!
+
+
+ ¡No pudo crearse copia de seguridad del archivo de conexiones!
+
+
+ ¡No pudo importarse el archivo de conexiones!
+
+
+ ¡El archivo de conexiones "{0}" no pudo ser cargado!
+
+
+ ¡El archivo de conexiones "{0}" no pudo ser cargado!
+Arrancando con un nuevo archivo de conexiones.
+
+
+ ¡No pudo guardarse el archivo de conexiones!
+
+
+ ¡No pudo guardarse el archivo de conexiones como "{0}"!
+
+
+ Conectar a sesión de consola
+
+
+ Conectar (con Opciones)
+
+
+ Connexión a {0} via {1} cerrada por el usuario {2}.
+
+
+ Connexión a {0} via {1} cerrada por el usuario {2}. (Descripción: "{3}"; Campo de Usuario: "{4}")
+
+
+ Evento de conexión cerrado
+
+
+ ¡Ha fallado el evento Closed en Connection!
+
+
+ ¡No se pudo crear un nuevo archivo de conexiones!
+
+
+ Versión Instalada
+
+
+ Tema por defecto
+
+
+ Detectar
+
+
+ No conectar si la autentificación falla
+
+
+ Doble clic en una pestaña la cierra
+
+
+ Descargar e Instalar
+
+
+ Duplicar
+
+
+ ¿Quiere continuar sin contraseña?
+
+
+ Para campos de Nombre de Usuario, Contraseña y Dominio vacíos usar:
+
+
+ 128-bit
+
+
+ 128-bit (sólo inicio de sesión)
+
+
+ Básico
+
+
+ Cifrar por completo el archivo de conexión
+
+
+ IP Final
+
+
+ Puerto Final
+
+
+ Fallo al AddExternalToolsToToolBar (frmMain). {0}
+
+
+ Añadir Carpeta (UI.Window.Tree) fallida. {0}
+
+
+ La versión de Base de Datos {0} No es compatible con esta versión de {1}.
+
+
+ Clonado de Nodo (Tree.Node) fallido. {0}
+
+
+ Código de error {0}.
+
+
+ La lista de conexiones no ha podido ser grabada.
+
+
+ Descifrado fallido. {0}
+
+
+ Cifrado fallido. {0}
+
+
+ La configuración de Seguridad de Windows, "Criptografia del sistema: Usar Algoritmos compatibles FIPS para Encripción, Hashing y Firma", esta habilitada. Esta configuración es incompatible con {0}.
+
+Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/811833 Para más información.
+
+{0} Se Cerrará.
+
+
+ Errores
+
+
+ No ha podido cargarse el archivo de conexión inicial.{0}{0}{2}{0}{3}{0}{0}Para evitar la pérdida de datos, {1} se cerrará ahora.
+
+
+ Error.{0} en Proceso VerifyDatabaseVersion (Config.Connections.Save)
+
+
+ Expandir todas las carpetas
+
+
+ Experimental
+
+
+ Exportar
+
+
+ Exportar mRemote/mRemoteNG XML
+
+
+ App Externa
+
+
+ Incluye iconos de [FAMFAMFAM]
+
+
+ Todos los archivos (*.*)
+
+
+ Archivos de Aplicación (*.exe)
+
+
+ Archivos CSV de mRemote (*.csv)
+
+
+ Archivos XML de mRemote (*.xml)
+
+
+ Archivos RDP (*.rdp)
+
+
+ Archivos CSV de visionapp Remote Desktop 2008 (*.csv)
+
+
+ Herencia {0}
+
+
+ Descripción de la propiedad heredada: {0}
+
+
+ Gratis
+
+
+ Pantalla Completa
+
+
+ General
+
+
+ Adquisición de Información de la Conexión desde SQL fallida
+
+
+ Ha ocurrido un error mientras se cargaba la conexión de "{0}" desde "{1}". {2}
+
+
+ Reconexión Automática
+
+
+ Conexión
+
+
+ Propiedades de la Herramienta Externa
+
+
+ Archivos
+
+
+ Servidor
+
+
+ ¡Conexión HTTP Fallida!
+
+
+ ¡No se pudo crear una nueva conexión HTTP!
+
+
+ ¡Fallo al cambiar el azulejo del documento HTTP!
+
+
+ ¡Asignación de Propiedades HTTP fallida!
+
+
+ ¡No se pudo crear una nueva conexión ICA!
+
+
+ ¡Fallo en la carga del Plugin ICA!
+
+
+ ¡Asignación de Credenciales ICA fallida!
+
+
+ ¡Asignación de Manejadores de Eventos ICA fallida!
+
+
+ ¡Asignación de Propiedades ICA fallida!
+
+
+ ¡Asignación de Resolución ICA fallida!
+
+
+ Importar desde Directorio Activo
+
+
+ Importar/Exportar
+
+
+ Importar mRemote/mRemoteNG XML
+
+
+ Importar desde el Escáner de Puertos
+
+
+ Importar desde archivo(s) .RDP
+
+
+ Inactivo
+
+
+ Informaciones
+
+
+ mRemoteNG está actualizado
+
+
+ ¡Conexión fallida!
+
+
+ ¡La liberación del proceso Int App ha fallado!
+
+
+ ¡No se pudo centrar el foco en Int App!
+
+
+ Manejar aplicación interna: {0}
+
+
+ ¡Fallo en el proceso de detención de la aplicación interna!
+
+
+ Manejar el panel: {0}
+
+
+ ¡Fallo al redimensionar la aplicación interna!
+
+
+ --- Cosas de la aplicación interna ---
+
+
+ Título Int App: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Dirección:
+
+
+ Argumentos:
+
+
+ Registro de cambios:
+
+
+ Al cerrar las conexiones:
+
+
+ &Conectar:
+
+
+ Nombre Mostrado
+
+
+ Dominio:
+
+
+ Nombre de Archivo:
+
+
+ Nombre del Host:
+
+
+ Opciones:
+
+
+ Contraseña:
+
+
+ Puerto:
+
+
+ Edición Portable
+
+
+ Protocolo:
+
+
+ Para configurar las conexiones PuTTY hacer clic en este botón:
+
+
+ Tiempo de espera Max. para PuTTY && Applicaciones Ext. Integradas:
+
+
+ Publicado bajo la GNU General Public License (GPL)
+
+
+ segundos
+
+
+ Seleccione un panel de la lista o haga clic en Nuevo para añadir uno. Haga clic en OK para continuar.
+
+
+ Estado de Servidor:
+
+
+ Base de Datos:
+
+
+ Base de Datos:
+
+
+ Nombre de Usuario:
+
+
+ Verificar:
+
+
+ Idioma
+
+
+ (Detección Automática)
+
+
+ {0} debe ser reiniciado antes de que los cambios en el idioma tengan efecto.
+
+
+ ¡Carga desde SQL fallida!
+
+
+ ¡Carga de XML fallida!
+
+
+ Archivo local
+
+
+ ¡El archivo local no existe!
+
+
+ Cerrar Sesión
+
+
+ ¡Fallo al escribir al archivo de informe!
+
+
+ No se pudo gravar el informe en el destino.
+
+
+ Emplea la librería Magic de [Crownwood Software]
+
+
+ Acerca de
+
+
+ Agregar Panel de Conexión
+
+
+ Novedades
+
+
+ Comprobar Actualizaciones
+
+
+ Configuración
+
+
+ Conectar
+
+
+ Paneles de Conexión
+
+
+ Conexiones
+
+
+ Conexiones y Configuración
+
+
+ Copiar
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Borrar...
+
+
+ Borrar Conexión...
+
+
+ Borrar Herramienta Externa...
+
+
+ Borrar Carpeta...
+
+
+ Desconectar
+
+
+ Donar
+
+
+ Duplicar
+
+
+ Duplicar Conexión
+
+
+ Duplicar Carpeta
+
+
+ Duplicar Pestaña
+
+
+ Salir
+
+
+ Herramientas Externas
+
+
+ Barra de Herramientas Externas
+
+
+ &Archivo
+
+
+ Pantalla Completa
+
+
+ Pantalla Completa (RDP)
+
+
+ &Ayuda
+
+
+ Ayuda de mRemoteNG
+
+
+ Saltar a
+
+
+ Lanzar Aplicación Externa
+
+
+ Nuevo Archivo de Conexión
+
+
+ Nueva Herramienta Externa
+
+
+ Notificaciones
+
+
+ Copiar todo
+
+
+ Borrar
+
+
+ Borrar todo
+
+
+ Abrir Archivo de Conexión...
+
+
+ Opciones
+
+
+ Pegar
+
+
+ Escanear Puertos
+
+
+ Barra de Conexión Rápida
+
+
+ Reconectar
+
+
+ Refrescar Pantalla (VNC)
+
+
+ Renombrar
+
+
+ Renombrar Conexión
+
+
+ Renombrar Carpeta
+
+
+ Renombrar Pestaña
+
+
+ Informar de un Bug
+
+
+ Resetear distribución de pantalla
+
+
+ Guardar Archivo de Conexión
+
+
+ Guardar Archivo de Conexión como...
+
+
+ Captura de Pantalla
+
+
+ Administrador de Capturas de Pantalla
+
+
+ Enviar Teclas Especiales (VNC)
+
+
+ Sesiones
+
+
+ Sesiones y Capturas de Pantalla
+
+
+ &Mostrar texto de ayuda
+
+
+ Mostar Texto
+
+
+ SmartSize (RDP/VNC)
+
+
+ Tranferencia de Archivos por SSH
+
+
+ Comenzar Chat (VNC)
+
+
+ Foro de Soporte
+
+
+ &Herramientas
+
+
+ Transferir Archivo (SSH)
+
+
+ &Ver
+
+
+ Solo Ver (VNC)
+
+
+ Sitio Web
+
+
+ Minimizar en la bandeja del sistema
+
+
+ Mover abajo
+
+
+ Mover arriba
+
+
+ Mis credenciales actuales (información de inicio de sesión en Windows)
+
+
+ Nunca
+
+
+ Nueva Conexión
+
+
+ Nueva Carpeta
+
+
+ Nuevo Panel
+
+
+ Nueva Raíz
+
+
+ Nuevo Título
+
+
+ No
+
+
+ Sin Compresión
+
+
+ App Externa no especificada.
+
+
+ Ninguno
+
+
+ Ninguno
+
+
+ Normal
+
+
+ Sin SmartSize
+
+
+ Sin actualizaciones dosponibles
+
+
+ Está intentando cargar un archivo de conexión que ha sido creado con una versión muy antigua de mRemote, ésto puede causar un error en tiempo de ejecución.
+¡Si este error se produce, cree un nuevo archivo de conexión!
+
+
+ Abrir nueva pestaña a la derecha de la actualmente seleccionada
+
+
+ Puertos Abiertos
+
+
+ Tema
+
+
+ &Eliminar
+
+
+ &Nuevo
+
+
+ Nombre del Panel
+
+
+ Protegido por Contraseña
+
+
+ Pro favor, complete todos los campos
+
+
+ ¡No se pudo cargar el Panel de Escaneo de Puertos!
+
+
+ (¡Estas propiedades serán guardadas únicamente si selecciona mRemote/mRemoteNG XML como formato de archivo de salida!)
+
+
+ Introduzca el nombre del host o IP con la que quiere conectar.
+
+
+ Cambiar todas las opciones heredadas.
+
+
+ Seleccione el nivel de autentificación que esta conexión debe emplear.
+
+
+ Seleccione cómo quiere autentificar contra el servidor VNC.
+
+
+ Seleccione si quiere cachear bitmap o no.
+
+
+ Seleccione la calidad de color a emplear.
+
+
+ Seleccione el nivel de compresión a emplear.
+
+
+ Introduzca aquí sus notas ó una descripción del host.
+
+
+ Seleccione sí si el tema del host remoto debe ser mostrado.
+
+
+ Seleccione sí si el fondo de escritorio del host remoto debe ser mostrado.
+
+
+ Introduzca su dominio.
+
+
+ Seleccione si emplear composición de escrotorio o no.
+
+
+ Seleccione si emplear suavizado de fuentes o no.
+
+
+ Seleccione el modo de codificación a emplear.
+
+
+ Seleccione la fortaleza de cifrado del host remoto.
+
+
+ Seleccione la herramienta externa a iniciar.
+
+
+ Seleccione la herramienta externa a iniciar tras la desconexión del host remoto.
+
+
+ Seleccione la herramienta externa a iniciar antes de establecer la conexión con el host remoto.
+
+
+ Seleccione el icono que se mostrará cuando conecte con el host.
+
+
+ Introduzca la dirección MAC del host remoto si desea usarlo en una herramienta externa.
+
+
+ Este es el nombre que se mostrará en el árbol de conexiones.
+
+
+ Determina el panel en el que la conexión se abrirá.
+
+
+ Introduzca su contraseña.
+
+
+ Introduzca el puerto por el que escucha el protocolo seleccionado.
+
+
+ Seleccione el protocolo que mRemoteNG debe emplear para conectar con el host.
+
+
+ Seleccione una sesión PuTTY para emplear cuando conecte.
+
+
+ Indica el nombre del dominio que el usuario indica para conectar con el servidor RD Gateway.
+
+
+ Indica el nombre del servidor Gateway de Escritorio Remoto
+
+
+ Indica cuándo usar un servidor Gateway para Escritorio Remoto (RD Gateway).
+
+
+ Indica si iniciar o no sesión en el gateway empleando el mismo usuario y contraseña que en la conexión.
+
+
+ Indica el nombre de usuario empleado para conectar con el servidor de Gateway de Escritorio Remoto.
+
+
+ Seleccione si los discos locales deben ser mostrados en el host remoto.
+
+
+ Seleccione si las combinaciones de teclas (ej. Alt-Tab) deben ser redireccionadas al host remoto.
+
+
+ Seleccione si los puertos locales (ej. com, paralelo) deben ser mostrados en el host remoto.
+
+
+ Seleccione si las impresoras locales deben ser mostradas en el host remoto.
+
+
+ Seleccione si las tarjetas inteligentes deben presentarse a la máquina remota.
+
+
+ Seleccione cómo deberá ser redireccionado el sonido remoto.
+
+
+ Seleccione uno de los motores de renderizado disponibles para mostrar HTML.
+
+
+ Seleccione la resolución o modo en que esta conexión será abierta.
+
+
+ Seleccione el modo SmartSize a emplear.
+
+
+ Conectar a la sesión de consola del host remoto.
+
+
+ Introduzca aquí cualquier información que necesite.
+
+
+ Introduzca su nombre de usuario.
+
+
+ Seleccione "si" si desea establecer una conexión de sólo observación.
+
+
+ Introduzca la dirección del proxy a emplear.
+
+
+ Introduzca su contraseña de autentificación en el proxy.
+
+
+ Introduzca el puerto de escucha del proxy.
+
+
+ Si utiliza un proxy para conexiones VNC, seleccione de qué tipo es.
+
+
+ Introduzca su nombre de usuario de autentificación en el proxy.
+
+
+ Nombre dle host/IP
+
+
+ Todo
+
+
+ Autentificación de servidor
+
+
+ Modo de autentificación
+
+
+ Cache de Bitmaps
+
+
+ Colores
+
+
+ Compresión
+
+
+ Descripción
+
+
+ Mostrar Temas
+
+
+ Mostrar Fondo de Pantalla
+
+
+ Dominio
+
+
+ Composición de Escritorio
+
+
+ Suavizado de Fuentes
+
+
+ Codificación
+
+
+ Fortaleza del Cifrado
+
+
+ Herramienta Externa
+
+
+ Tras la Herramienta Externa
+
+
+ Antes de la Herramienta Externa
+
+
+ Icono
+
+
+ Dirección MAC
+
+
+ Nombre
+
+
+ Panel
+
+
+ Contraseña
+
+
+ Puerto
+
+
+ Protocolo
+
+
+ Sesión PuTTY
+
+
+ Dominio del Gateway
+
+
+ Nombre del Gateway
+
+
+ Contraseña del Gateway para Escritorio Remoto
+
+
+ Usar Gateway
+
+
+ Credenciales del Gateway
+
+
+ Nombre de Usuario para el Gateway
+
+
+ Unidades de Disco
+
+
+ Combinaciones de Teclas
+
+
+ Puertos
+
+
+ Impresoras
+
+
+ Tarjetas Inteligentes
+
+
+ Sonidos
+
+
+ Motor de Renderizado
+
+
+ Resolución
+
+
+ Modo SmartSize
+
+
+ Usar Sesión de Consola
+
+
+ Usar CredSSP
+
+
+ Campo de Usuario
+
+
+ Nombre de Usuario
+
+
+ Sólo Ver
+
+
+ Dirección del Proxy
+
+
+ Contraseña del Proxy
+
+
+ Puerto del Proxy
+
+
+ Tipo de Proxy
+
+
+ Nombre de Usuario del Proxy
+
+
+ Protocol Event Disconnected.
+Mensaje:
+{0}
+
+
+ Protocolo a importar
+
+
+ ¡Test de Proxy fallido!
+
+
+ ¡Test de Proxy correcto!
+
+
+ ¡Conexión fallida!
+
+
+ ¡No se pudo fikar el foco!
+
+
+ ¡Fallo en la carga de las Sesiones de Putty!
+
+
+ Manejar Putty: {0}
+
+
+ ¡Kill del Proceso Putty fallido!
+
+
+ Manejar el panel: {0}
+
+
+ ¡Redimensionamiento de Putty fallido!
+
+
+ Sesiones guardadas de PuTTY
+
+
+ Opciones de PuTTY
+
+
+ ¡Fallo al mostrar el Diálogo de Preferencias de Putty!
+
+
+ ¡Fallo en el arranque de Putty!
+
+
+ --- Cosas de PuTTY ---
+
+
+ Titulo PuTTy: {0}
+
+
+ Conexión Rápida
+
+
+ ¡Fallo agregando Conexión Rápida!
+
+
+ Creación de conexión rápida fallida
+
+
+ &Avisarme al cerrar conexiones
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 Colores (24-bit)
+
+
+ 256 Colores (8-bit)
+
+
+ 32768 Colores (15-bit)
+
+
+ 16777216 Colores (32-bit)
+
+
+ 65536 Colores (16-bit)
+
+
+ ¡Adición de Resolución RDP fallida!
+
+
+ ¡Adición de Resoluciones RDP fallida!
+
+
+ Adición de sesión fallida
+
+
+ ¡Cierre de conexión RDP fallida!
+
+
+ ¡Fallo en la apertura de la conexión!
+
+
+ No se pudo crear el control RDP, por favor verifique los requerimientos de mRemoteNG.
+
+
+ Desactivar Parpadeo del Cursor
+
+
+ Desactivar Sombra del Cursor
+
+
+ Desactivar Mostar Ventana al arrastrar
+
+
+ Desactivar Animaciones de Menús
+
+
+ Desactivar Temas
+
+
+ Desactivar Fondo de Pantalla
+
+
+ ¡RDP desconectado!
+
+
+ ¡Fallo en la desconexión RDP, intentando cerrar!
+
+
+ Código de error interno 1.
+
+
+ Código de error interno 2.
+
+
+ Código de error interno 3. No es un estado válido.
+
+
+ Código de error interno 4.
+
+
+ Ha ocurrido un error irrecuperable durante la conexión del cliente.
+
+
+ Ha ocurrido un error RDP fatal desconocido. Código de error {0}.
+
+
+ Ha ocurrido un error de desbordamiento de memoria.
+
+
+ Ha ocurrido un error desconocido.
+
+
+ Ha ocurrido un error en la creación de la ventana.
+
+
+ Error de inicialización del Winsock.
+
+
+ ¡No pudo importarse el archivo RDP!
+
+
+ Ajustar al panel
+
+
+ !RDP Focus fallido!
+
+
+ RD Gateway soportado.
+
+
+ ¡No está soportada la Gateway RD!
+
+
+ ¡Obtención de sesión fallida!
+
+
+ ¡Apertura de conexión RDP fallida!
+
+
+ Contador de Reconexiones RDP:
+
+
+ ¡RDP Asignación de Nivel de Autenticación fallida!
+
+
+ ¡RDP Uso de Sesión de Consola fallida!
+
+
+ Configurando switch de Consola para RDC {0}.
+
+
+ ¡RDP Asignación de Credenciales fallida!
+
+
+ ¡RDP Asignación de Manejadores de Eventos fallida!
+
+
+ ¡RDP asignar RDGateway fallida!
+
+
+ ¡RDP Asignación de Valores de Rendimiento fallida!
+
+
+ ¡RDP Asignación de Puerto fallida!
+
+
+ ¡RDP Asignación de Propiedades fallida!
+
+
+ ¡Rdp Asignación de Redirección fallida!
+
+
+ ¡Rdp Asignación de Claves de Redirección fallida!
+
+
+ ¡RDP Asignación de Resolución fallida!
+
+
+ Tamaño inteligente
+
+
+ Traer a este equipo
+
+
+ Sin sonido
+
+
+ Mantener en el equipo remoto
+
+
+ ¡RDP fallo en el cambio a Pantalla Completa!
+
+
+ ¡RDP fallo en el cambio a Tamaño Automático!
+
+
+ Reconectar en el arranque sesiones previamente abiertas
+
+
+ Actualziar
+
+
+ Archivo remoto
+
+
+ Eliminar Todo
+
+
+ Renombrar
+
+
+ Rlogin
+
+
+ Guardar
+
+
+ Guardar Todo
+
+
+ ¿Quiere guardar el actual archivo de conexiones antes de cargar otro?
+
+
+ Guardar conexiones al salir
+
+
+ Pantalla
+
+
+ Volcado de pantalla
+
+
+ Volcados de Pantalla
+
+
+ Buscar
+
+
+ Enviar a...
+
+
+ Falla al iniciar sesiones en Fondo
+
+
+ Fallo al detener sesión en Fondo
+
+
+ Usar el nombre del host como nombre a mostrar cuando se creen nuevas conexiones
+
+
+ Fallo en la asignación de texto en el formulario principal
+
+
+ ¡No se pudieron guardar las preferencias o disponer el Icono de la Bandeja del Sistema!
+
+
+ Mostrar la descripción de las tooltips en el arbol de conexiones
+
+
+ Mostrar la ruta completa al archivo de conexión en el título de la ventana
+
+
+ Mostrar información de sesión en los nombres de las pestañas
+
+
+ Mostrar el protocolo en los nombres de las pestañas
+
+
+ Un solo clic en una conexión la abre
+
+
+ Un solo clic en una conexión abierta cambia a ella
+
+
+ Aspecto
+
+
+ Libre
+
+
+ Sin SmartSize
+
+
+ Socks 5
+
+
+ Ordenar
+
+
+ Ascendente (A-Z)
+
+
+ Descendente (Z-A)
+
+
+ Teclas especiales
+
+
+ ¡Por favor, mire en Ayuda - Comenzando - Configuración SQL para más información!
+
+
+ SQL Server:
+
+
+ ¡Finalizada la actualización SQL, existe una actualización disponible! Actualizando conexiones.
+
+
+ SSH versión 1
+
+
+ SSH versión 2
+
+
+ ¡Tranferencia SSH en background fallida!
+
+
+ ¡Transferencia Correcta!
+
+
+ ¡Final de Transferencia SSH (UI.Window.SSHTransfer) fallida!
+
+
+ IP Inicial
+
+
+ Puerto Inicial
+
+
+ Inicio/Salir
+
+
+ Estado
+
+
+ Cambiar al Panel de Notificaciones:
+
+
+ Avanzado
+
+
+ Apariencia
+
+
+ Pestañas && Paneles
+
+
+ Actualizaciones
+
+
+ Telnet
+
+
+ El siguiente:
+
+
+ Panel de configuración
+
+
+ Panel de conexiones
+
+
+ General
+
+
+ El color de fondo del panel de configuración.
+
+
+ Color de fondo del panel de configuración
+
+
+ Color del texto del panel de configuración
+
+
+ Color de fondo del menú
+
+
+ Color del texto del menú
+
+
+ Color de fondo de la caja de búsqueda
+
+
+ Color del texto de la caja de búsqueda
+
+
+ Color de fondo de la barra de herramientas
+
+
+ Color del texto de la barra de herramientas
+
+
+ Color de fondo de la ventana
+
+
+ Error ({0})
+
+
+ Información ({0})
+
+
+ Contraseña
+
+
+ Seleccionar Panel
+
+
+ Alerta ({0})
+
+
+ Transferir
+
+
+ ¡Tranferencia fallida!
+
+
+ Intentar integrar
+
+
+ Tipo
+
+
+ Repetidor de Ultra VNC
+
+
+ Puerto SingleClick de UltraVNC:
+
+
+ ¡Desmarque las propiedades que no quiera que sean guardadas!
+
+
+ Tema sin nombre
+
+
+ Actualización de mRemoteNG disponible
+
+
+ mRemoteNG puede conectar periódicamente con el sitio web de mRemoteNG para comprobar actualizaciones y novedades.
+
+
+ ¡Comprobación de finalización de la actualización fallida!
+
+
+ ¡Comprobación de actualizaciones fallida!
+
+
+ mRemoteNG Portable Edition no soporta por el momento actualizaciones automáticas.
+
+
+ ¡Error borrando el archivo de actualización!
+
+
+ ¡Descarga completada!
+mRemoteNG ahora se cerrará y comenzará la instalación.
+
+
+ ¡Finalización de la descarga fallida!
+
+
+ ¡Descarga de actualización fallida!
+
+
+ Cada {0} días
+
+
+ Diariamente
+
+
+ Mensualmente
+
+
+ Semanalmente
+
+
+ ¡Error en el inicio de la actualización!
+
+
+ Usar otro nombre de usuario y contraseña
+
+
+ Usar sólo el Panel de Notificaciones (sin mensajes emergentes)
+
+
+ Usuario
+
+
+ Usar el mismo nombre de usuario y contraseña
+
+
+ Usar una tarjeta inteligente
+
+
+ Emplear SQL Server para cargar && guardar las conexiones
+
+
+ Versión
+
+
+ VNC
+
+
+ ¡Desconexión VNC fallida!
+
+
+ ¡Fallo abriendo conexiones!
+
+
+ ¡Fallo en el refresco de pantalla de VNC!
+
+
+ ¡Fallo en el envío de teclas especiales VNC!
+
+
+ ¡Asignación de Manejadores de Eventos VNC fallida!
+
+
+ ¡VNC asignación de Propedades fallida!!
+
+
+ ¡Fallo en el arranque del Chat de VNC!
+
+
+ ¡VNC fallo en el cambio a Tamaño Automático!
+
+
+ ¡VNC fallo en el cambio a modo ViewOnly!
+
+
+ Alertarme si la autentificación falla
+
+
+ Alertas
+
+
+ Emplea el DockPanel Suite de [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Escribir archivo de log (mRemoteNG.log)
+
+
+ Ruta a XULrunner:
+
+
+ Sí
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.fr.resx b/mRemoteV1/CS/Language/Language.fr.resx
new file mode 100644
index 000000000..663bf9880
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.fr.resx
@@ -0,0 +1,2173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ A propos
+
+
+ Actif
+
+
+ Activité
+
+
+ Nouvelle connexion
+
+
+ Nouveau dossier
+
+
+ AddNodeFromXML a échoué!
+
+
+ AddNodesFromSQL a échoué!
+
+
+ Autoriser une seule instance de l'application (mRemoteNG redémarrage nécessaire)
+
+
+ Toujours
+
+
+ Toujours se connecter, même si l'authentification échoue
+
+
+ Toujours demander la sélection d'un panneau lors de l'ouverture d'une connexion
+
+
+ Toujours afficher les onglets du panneau
+
+
+ Toujours afficher l'icone dans la zone de notification
+
+
+ Demandez-moi plus tard
+
+
+ Personnalisez les paramètres maintenant
+
+
+ Utiliser les paramètres recommandés
+
+
+ {0} peut vérifier automatiquement les mises à jour qui peuvent contenir de nouvelles fonctionnalités et/ou corrections de bugs. Il est recommandé de laisser {0} vérifier les mises à jour chaque semaine.
+
+
+ Paramètres de mise à jour automatique
+
+
+ Apparence
+
+
+ Obtenir automatiquement les informations de session
+
+
+ Sauvegarde automatique toutes les:
+
+
+ Minutes (0 = désactivé)
+
+
+ Version actuelle
+
+
+ &Parcourir...
+
+
+ &Annuler
+
+
+ Changer
+
+
+ &Fermer
+
+
+ Héritage Par défaut
+
+
+ Propriétés par défaut
+
+
+ Déconnexion
+
+
+ Icône
+
+
+ &Importer
+
+
+ Héritage
+
+
+ Lancement PuTTY
+
+
+ &Nouveau
+
+
+ &OK
+
+
+ Propriétés
+
+
+ &Scanner
+
+
+ &Arreter
+
+
+ Tester le Proxy
+
+
+ Vous ne pouvez pas importer un fichier de connexion normal.
+Veuillez utiliser le menu Fichier - Ouvrir un fichier de connexion pour les fichiers de connexions normaux!
+
+
+ Impossible de démarrer le scan de port, format d'addresse IP incorrecte!
+
+
+ Apparence
+
+
+ Connexion
+
+
+ Identifiants
+
+
+ Affichage
+
+
+ Passerelle
+
+
+ Général
+
+
+ Autre
+
+
+ Protocole
+
+
+ Rediriger
+
+
+ Toujours afficher cet écran au démarrage
+
+
+ Actualiser
+
+
+ Vérifiez échoué!
+
+
+ Verification réussie!
+
+
+ La fonctionnalité de Sessions (RDP) nécessite que vous ayez une copie enregistrée de eolwtscom.dll sur votre système. mRemoteNG est livré avec ce composant mais ne peut pas l'enregistrer automatiquement sauf si vous exécutez le package d'installation. Pour l'enregistrer manuellement : ouvrez la boîte de dialogue Exécuter (Démarrer - Exécuter) et entrez la commande suivante : regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (où c:\Program Files\mRemoteNG\ est le chemin vers votre installation mRemoteNG). Si vous n'êtes toujours pas en mesure de valider ce contrôle ou d'utiliser la fonctionnalité de Sessions (RDP) de mRemoteNG, veuillez consulter le Forum de mRemoteNG sur http://forum.mremoteng.org/
+
+
+ EOLWTSCOM a été trouvé et semble être enregistrés correctement.
+
+
+ Pour utiliser le moteur de rendu Gecko, vous devez avoir XULrunner 1.8.1.x et le chemin d'accès correctement renseigné dans vos Options. Vous pouvez télécharger XULrunner 1.8.1.3 ici : ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ Lorsque vous avez terminé le téléchargement, extraire le package vers le chemin de votre choix. Puis dans mRemoteNG, allez dans Outils - Options - Avancées et entrez le chemin d'accès correct dans "chemin de XULrunner". Si vous n'êtes toujours pas en mesure de passer cette vérification ou d'utiliser le moteur Gecko dans mRemoteNG, veuillez consulter le Forum de mRemoteNG sur http://forum.mremoteng.org/
+
+
+ XULRunner a été trouvé et semble être installé correctement.
+
+
+ ICA requiert l'installation du Plugin XenDesktop Online, ainsi que l'enregistrement de la librairie wfica.ocx. Vous pouvez télécharger le client ici : http://www.citrix.com/download/
+Si le Plugin XenDesktop Online est installé, et que la vérification des composants échoue, essayez d'enregistrer la librairie manuellement.
+Pour cela, ouvrez la fenêtre "Exécuter" (Démarrer - Exécuter), et entrez cette commande : regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (Où c:\Program Files\Citrix\ICA Client\ est le chemin vers votre installation du plugin XenDesktop).
+Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout, consultez le forum de mRemoteNG ici : http://forum.mremoteng.org/
+
+
+ Tous les composants de l'ICA ont été trouvés et semblent être enregistrés correctement. Citrix ICA Client Version Control {0}
+
+
+ pas correctement installé
+
+
+ Le SSH, Telnet, rlogin et protocoles RAW nécessite PuTTY. PuTTY est fourni dans chaque paquet de mRemoteNG et se trouve dans le dossier d'installation. Assurez-vous que votre répertoire mRemoteNG (par défaut: C:\ Program Files\mRemoteNG\) contienne Putty.exe, ou que vous avez spécifié un chemin d'accès valide dans les options (Outils - Options - Avancé - Custom PuTTY chemin d'accès)
+
+
+ L'exécutable PuTTY a été trouvée et devrait être prêt à l'emploi.
+
+
+ Pour que RDP fonctionne correctement, vous devez avoir au moins Remote Desktop Connection (Terminal Services Client) 6.1 installé. Vous pouvez le télécharger ici: http://support.microsoft.com/kb/951616 Si vous avez RDP 6.1 installé et que la vérification échoue, essayez d'enregistrer mstscax.dll manuellement. Pour ce faire, ouvrez la boîte de dialogue Exécuter (Démarrer - Exécuter) et entrer la commande suivante: regsvr32 "c:\ windows\system32\mstscax.dll" (où C:\ est votre lecteur système). Si vous avez encore des difficultés à faire fonctionner RDP veuillez consulter le Forum mRemoteNG: http://forum.mremoteng.org/
+
+
+ Tous les composants RDP ont été trouvés et semblent être enregistrés correctement. Remote Desktop Connection Version Control {0}
+
+
+ VNC nécessite VncSharpNG.dll doit se trouverme dossier de mRemoteNG. Assurez-vous que le fichier VncSharpNG.dll est présent dans le dossier de mRemoteNG (habituellement C:\Program Files\mRemoteNG\). Si la vérification de VNC échoue, veuillez consulter le Forum mRemoteNG: http://forum.mremoteng.org/
+
+
+ Tous les composants VNC ont été trouvés et semblent être enregistrés correctement. Version Control VncSharpNG {0}
+
+
+ Reconnexion automatique en cas de déconnexion du serveur RDP (ICA && seulement)
+
+
+ Domaine
+
+
+ Ne plus afficher ce message.
+
+
+ Héritage
+
+
+ Mot de passe
+
+
+ Ce serveur proxy requiert une authentification
+
+
+ Utilisez chemin personnalisé pour PuTTY:
+
+
+ Se reconnecter une fois prêt
+
+
+ Utiliser un serveur proxy pour se connecter
+
+
+ Nom d'utilisateur
+
+
+ En attente de fermeture
+
+
+ Vérifiez Encore une fois
+
+
+ Vérifier les mises à jour au démarrage
+
+
+ Vérifier maintenant
+
+
+ Vérifiez l'installation correcte des composants au démarrage
+
+
+ Choisissez panneau avant de se connecter
+
+
+ Ports Fermés
+
+
+ Réduire tous les dossiers
+
+
+ Arguments
+
+
+ Nom Affiché
+
+
+ Nom du fichier
+
+
+ Nom d'hôte/IP
+
+
+ Message
+
+
+ Nom d'utilisateur
+
+
+ Attendre avant de quitter
+
+
+ Impossible de convertir les arguments de la ligne de commande !
+
+
+ {0} a détecté que l'utilitaire Lenovo Auto Scroll Utility est executé sur le système. Cet utilitaire est connu pour générer des problèmes avec {0}. Il est recommandé de le désactiver ou de le désinstaller.
+
+
+ Problème de compatibilité détecté
+
+
+ Vérifiez les composants
+
+
+ btnIcon_Click a échoué!
+
+
+ ShowHideGridItems a échoué!
+
+
+ IconMenu_Click a échoué!
+
+
+ Propriété Grid objet a échoué!
+
+
+ SetHostStatus a échoué!
+
+
+ pGrid_PopertyValueChanged a échoué!
+
+
+ Fenêtre de configuration échec du chargement!
+
+
+ Voulez-vous fermer la connexion, "{0}"?
+
+
+ Etes vous sur de vouloir fermer le panneau, "{0}"? Toutes les connexions contenues dans ce panneau seront fermées également.
+
+
+ Etes-vous sûr de vouloir supprimer l'outil externe, "{0}"?
+
+
+ Etes-vous sûr de vouloir supprimer l'outil externe séléctioné :"{0}"?
+
+
+ Etes-vous sûr de vouloir supprimer la connexion, "{0}"?
+
+
+ Etes-vous sûr de vouloir supprimer le dossier vide, "{0}"?
+
+
+ Etes-vous sûr de vouloir supprimer le dossier, "{0}"? Tous les dossiers ou les connexions qu'il contient seront également supprimés.
+
+
+ Voulez-vous de fermer toutes les connexions ouvertes?
+
+
+ Etes-vous sûr de vouloir réinitialiser la position des panneaux ?
+
+
+ Connexion
+
+
+ Se connecter en mode plein écran
+
+
+ Connexion...
+
+
+ Évènement de protocole connecté
+
+
+ Connexion à "{0}"via "{1}"créé par l'utilisateur "{2}"; (Description: "{3}"Champ Utilisateur: "{4}")
+
+
+ Connexion échoué!
+
+
+ Erreur de protocole
+
+
+ L'ouverture de la connexion a échoué!
+
+
+ Impossible d'ouvrir la connexion: Aucun nom d'hôte spécifié!
+
+
+ RDP erreur! Code d'erreur: {0} Description de l'erreur :{1}
+
+
+ Connexions
+
+
+ Impossible de définir le port par défaut!
+
+
+ Impossible de créer le fichier de sauvegarde de connexions!
+
+
+ Impossible d'importer le fichier de connexions!
+
+
+ Connexions fichier "{0}" ne peut être chargé!
+
+
+ Connexions fichier "{0}" ne peut être chargé! A partir de fichiers de nouvelles connexions.
+
+
+ Impossible d'enregistrer fichier de connexions!
+
+
+ Impossible d'enregistrer fichier de connexions sous "{0}"!
+
+
+ Connectez-vous à une session de console
+
+
+ Connexion (avec options)
+
+
+ Connexion à {0} {1} via fermée par l'utilisateur {2}.
+
+
+ Connexion à {0} {1} via fermée par l'utilisateur {2}. (Description: "{3}"; Champ utilisateur: "{4}")
+
+
+ Connexion terminée
+
+
+ Échec de fermeture de la connexion!
+
+
+ Impossible de créer le nouveau fichier de connexions!
+
+
+ Le contrôle ToolStrip est introuvable dans le FilteredPropertyGrid.
+
+
+ Version installée
+
+
+ Thème par défaut
+
+
+ Détecter
+
+
+ Ne pas se connecter si l'authentification échoue
+
+
+ Double cliquez sur l'onglet pour le fermer
+
+
+ Télécharger et installer
+
+
+ Double
+
+
+ Voulez-vous continuer sans mot de passe?
+
+
+ Pour un Login, Mot de passe ou Domaine vide, utiliser :
+
+
+ 128 bits
+
+
+ 128 bits (ouverture de session)
+
+
+ Basique
+
+
+ Crypter complètement le fichier de connexion
+
+
+ IP de fin
+
+
+ Port de fin
+
+
+ Échec de AddExternalToolsToToolBar (frmMain).{0}
+
+
+ Échec d'ajout du dossier (UI.Window.Tree).{0}
+
+
+ La base de données version {0} n'est pas compatible avec cette version de {1}.
+
+
+ Échec de CloneNode (Tree.Node).{0}
+
+
+ Code d'erreur {0}.
+
+
+ La liste de connexion n'as pu être sauvegardée.
+
+
+ Échec du déchiffrement.{0}
+
+
+ Échec du chiffrement.{0}
+
+
+ Les paramètres de sécurité Windows, "Système de cryptographie: Utilise FIPS, algorithmes compatible pour le cryptage, hachage et signature", est activé. Ce paramètre n'est pas compatible avec {0}.
+Consultez l'article du support de Microsoft pour plus d'informations http://support.microsoft.com/kb/811833
+
+{0} va maintenant fermer.
+
+
+ Erreurs
+
+
+ Le fichier de connexion ne peut pas être chargé. {0}{0}{2}{0}{3}{0}{0} Pour éviter la perte de données, {1} va être fermé.
+
+
+ Échec de VerifyDatabaseVersion (Config.Connections.Save). {0}
+
+
+ Développer tous les dossiers
+
+
+ Expérimentale
+
+
+ Exporter
+
+
+ Exporter mRemote / mRemoteNG XML
+
+
+ Application Externe
+
+
+ Comprend les icônes de [FAMFAMFAM]
+
+
+ Tous les fichiers (*.*)
+
+
+ Les dossiers de candidature (*. exe)
+
+
+ Fichiers mRemote CSV (*. csv)
+
+
+ Fichiers mRemote XML (*. xml)
+
+
+ Fichiers RDP (*. rdp)
+
+
+ Fichiers visionapp Remote Desktop 2008 CSV (*. csv)
+
+
+ Hériter {0}
+
+
+ Description de la propriété héritée: {0}
+
+
+ Gratuit
+
+
+ Plein Ecran
+
+
+ Général
+
+
+ L'obtention des informations de connexion à partir de SQL a échoué
+
+
+ Une erreur est survenue pendant le chargement de l'entrée de connexion "{0}" depuis "{1}". {2}
+
+
+ Reconnexion automatique
+
+
+ Connexion
+
+
+ Propriétés de l'outil externe
+
+
+ Fichiers
+
+
+ Hôte
+
+
+ Échec de la connexion HTTP!
+
+
+ Impossible de créer de nouvelles connexions HTTP!
+
+
+ Échec de changement de Tuile du Document HTTP!
+
+
+ Échec de Set HTTP Props !
+
+
+ Impossible de créer une nouvelle connexion ICA!
+
+
+ Le chargement du plugin ICA a échoué!
+
+
+ Échec de ICA SetCredentials !
+
+
+ Échec de ICA Set Event Handlers !
+
+
+ Échec de ICA Set Props !
+
+
+ Échec de ICA Set Resolution !
+
+
+ Identifier les onglets de connexion rapide en ajoutant le préfixe "Rapide."
+
+
+ Importer à partir d'Active Directory
+
+
+ Importer / Exporter
+
+
+ Importer mRemote / mRemoteNG XML
+
+
+ Importer à partir du balayage de ports
+
+
+ Import de fichier. RDP (s)
+
+
+ Inactif
+
+
+ Informations
+
+
+ mRemoteNG est à jour
+
+
+ La connexion a échoué!
+
+
+ Echec de l'arrêt du processus Int App!
+
+
+ Echec du Focus Int App!
+
+
+ Handle Int App: {0}
+
+
+ Echec de l'arrêt forcé du Processus Int App!
+
+
+ Handle Panneau: {0}
+
+
+ Échec du redimensionnement Int App!
+
+
+ --- Éléments IntApp ---
+
+
+ Titre Int App: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-Echap
+
+
+ Adresse:
+
+
+ Arguments :
+
+
+ Historique des changements:
+
+
+ Lors de la fermeture des connexions :
+
+
+ &Connecter:
+
+
+ Nom Affiché
+
+
+ Domaine:
+
+
+ Nom du fichier:
+
+
+ Nom d'hôte:
+
+
+ Options :
+
+
+ Mot de passe:
+
+
+ Port :
+
+
+ Edition Portable
+
+
+ Protocole:
+
+
+ Pour configurer les sessions PuTTY cliquez sur ce bouton:
+
+
+ Temps d'attente maximum pour Putty et les composants externes :
+
+
+ Paru sous la GNU General Public License (GPL)
+
+
+ seconde
+
+
+ Sélectionnez un groupe dans la liste ci-dessous ou cliquez sur Nouveau pour en ajouter un nouveau. Cliquez sur OK pour continuer.
+
+
+ L'état du serveur:
+
+
+ Base de données :
+
+
+ Base de données :
+
+
+ Nom d'utilisateur:
+
+
+ Vérifier:
+
+
+ Langue
+
+
+ (Détection automatique)
+
+
+ {0} doit être redémarré avant que les modifications à la langue prenne effet.
+
+
+ La lecture à partir de SQL a échoué!
+
+
+ Charger à partir du XML a échoué!
+
+
+ Fichier local
+
+
+ Le fichier local n'existe pas!
+
+
+ Déconnexion
+
+
+ Création du fichier de rapport échoué!
+
+
+ Impossible d'enregistrer le rapport à l'emplacement final.
+
+
+ Utilise la bibliothèque Magic [Crownwood Software]
+
+
+ A propos
+
+
+ Ajouter un panneau de connexion
+
+
+ Annonces
+
+
+ Rechercher des mises à jour
+
+
+ Configuration
+
+
+ Connecter
+
+
+ Panneaux de connexion
+
+
+ Connexions
+
+
+ Connexions et configuration
+
+
+ Copier
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Supprimer...
+
+
+ Supprimer la connexion...
+
+
+ Supprimer l'outil externe...
+
+
+ Supprimer le dossier...
+
+
+ Déconnecter
+
+
+ Faire un don
+
+
+ Dupliquer
+
+
+ Dupliquer la connexion
+
+
+ Dupliquer le dossier
+
+
+ Dupliquer l'onglet
+
+
+ Quitter
+
+
+ Outils externes
+
+
+ Barre d'outils externes
+
+
+ &Fichier
+
+
+ Plein écran
+
+
+ Plein écran (RDP)
+
+
+ &Aide
+
+
+ Aide mRemoteNG
+
+
+ Aller à
+
+
+ Lancer l'outil externe
+
+
+ Nouveau fichier de connexion
+
+
+ Nouvel outil externe
+
+
+ Notifications
+
+
+ Tout copier
+
+
+ Supprimer
+
+
+ Supprimer tout
+
+
+ Ouvrir un fichier de connexion...
+
+
+ Options
+
+
+ Coller
+
+
+ Scan de port
+
+
+ Barre de connexion rapide
+
+
+ Reconnecter
+
+
+ Rafraichir l'ecran (VNC)
+
+
+ Renommer
+
+
+ Renommer la connexion
+
+
+ Renommer le dossier
+
+
+ Renommer l'onglet
+
+
+ Signaler un bug
+
+
+ Réinitialisation de la disposition des panneaux
+
+
+ Enregistrer le fichier de connexions
+
+
+ Enregistrer le fichier de connexions sous...
+
+
+ Captures d'écran
+
+
+ Gestionnaire de Capture d'écran
+
+
+ Envoyer les touches spéciales (VNC)
+
+
+ Sessions
+
+
+ Sessions et capture d'ecran
+
+
+ &Afficher le texte d'aide
+
+
+ Afficher le texte
+
+
+ Taille dynamique (RDP/VNC)
+
+
+ Transfert de fichiers SSH
+
+
+ Démarrer Chat (VNC)
+
+
+ Forum du support
+
+
+ &Outils
+
+
+ Transfert de fichiers (SSH)
+
+
+ &Affichage
+
+
+ Voir seulement (VNC)
+
+
+ Site Web
+
+
+ Réduire dans la zone de notification.
+
+
+ Déplacer vers le bas
+
+
+ Déplacer vers le haut
+
+
+ Mes identifiants de connexion actuels (Informations de connexion Windows)
+
+
+ Jamais
+
+
+ Nouvelle connexion
+
+
+ Nouveau dossier
+
+
+ Nouveau Panneau
+
+
+ Nouvelle racine
+
+
+ Nouveau titre
+
+
+ Non
+
+
+ Pas de compression
+
+
+ Pas d'application externe spécifiée.
+
+
+ Aucun
+
+
+ Aucun
+
+
+ Normal
+
+
+ Pas de taille dynamique
+
+
+ Aucune mise à jour disponible
+
+
+ Vous essayez de charger un fichier de connexion qui a été créé avec une version plus ancienne de mRemote, des erreurs internes pourraient survenir.
+Si vous rencontrez une erreur, créez un nouveau fichier de connexion s'il vous plait !
+
+
+ Ouvrir les nouveaux onglets à droite de l'onglet actuellement sélectionné
+
+
+ Ports ouverts
+
+
+ Thème
+
+
+ &Supprimer
+
+
+ &Nouveau
+
+
+ Nom du panneau
+
+
+ Protéger le mot de passe
+
+
+ Merci de remplir tous les champs
+
+
+ Impossible de charger le panneau Scan de port!
+
+
+ (Ces propriétés ne seront enregistrées que si vous sélectionnez mRemote / XML comme format de fichier de sortie!)
+
+
+ Entrez le nom ou l'adresse ip de l'hôte auquel vous souhaitez vous connecter.
+
+
+ Sélectionner toutes les options d'héritage.
+
+
+ Sélectionnez le niveau d'authentification que cette connexion doit utiliser.
+
+
+ Sélectionnez la manière de vous authentifier auprès du serveur VNC.
+
+
+ Indiquez si vous souhaitez utiliser le cache bitmap ou non.
+
+
+ Sélectionnez la qualité couleur à utiliser.
+
+
+ Sélectionnez la valeur de compression à utiliser.
+
+
+ Mettez vos notes ou une description de l'hôte ici.
+
+
+ Choisir oui si le thème de l'hôte distant doit être affiché.
+
+
+ Sélectionnez «oui» si vous voulez afficher le fond d'ecran de l'hôte distant.
+
+
+ Entrez votre nom de domaine.
+
+
+ Choisir d'utiliser la composition du bureau ou non.
+
+
+ Choisir d'utiliser le lissage des polices ou non.
+
+
+ Choisissez l'encodage à utiliser.
+
+
+ Sélectionnez le niveau de chiffrement de l'hôte distant.
+
+
+ Sélectionnez l'outil externe doit être démarré.
+
+
+ Sélectionnez un outil externe pour être lancé après la déconnexion de l'hôte distant.
+
+
+ Sélectionnez un outil externe pour être lancé avant que la connexion à l'hôte distant est établie.
+
+
+ Choisissez une icône qui s'affichera lorsque vous serez connecté à l'hôte.
+
+
+ Entrez l'adresse MAC de l'hôte distant si vous souhaitez l'utiliser dans un outil externe.
+
+
+ Nom affiché dans l'arborescence de connexions.
+
+
+ Panneau dans lequel la connexion sera ouverte.
+
+
+ Entrez votre mot de passe.
+
+
+ Entrez le port d'ecoute du protocole choisit
+
+
+ Choisissez le protocole utilisez par mRemoteNG pour se connecter à l'hôte.
+
+
+ Sélectionnez une session PuTTY à utiliser lors de la connexion.
+
+
+ Spécifie le nom de domaine fourni par l'utilisateur pour se connecter au serveur RD Gateway.
+
+
+ Indiquer le nom d'hôte du serveur Remote Desktop Gateway.
+
+
+ Spécifie quand utiliser un serveur Remote Desktop Gateway (RD Gateway).
+
+
+ Spécifie de se connecter ou non à la passerelle en utilisant les mêmes identifiants que la connexion.
+
+
+ Spécifie le nom de domaine que l'utilisateur fourni pour se connecter au serveur RD Gateway.
+
+
+ Choisissez si les lecteurs de disque locaux doivent être redirigé sur l'hôte distant
+
+
+ Choisissez si les combinaisons de touches (par exemple, Alt-Tab) doit être redirigé vers l'hôte distant.
+
+
+ Choisissez si les ports locaux doivent être redirigé sur l'hôte distant.
+
+
+ Choisissez si les imprimantes locales doivent être redirigé sur l'hôte distant.
+
+
+ Précisez si les cartes à puce doivent être disponibles sur l'hôte distant.
+
+
+ Choisi de quelle manière les sons de l'hôte distant doivent être redirigés.
+
+
+ Choisi quel moteur de rendu disponible sera utilisé pour afficher du HTML.
+
+
+ Choisi la résolution ou le mode pour lesquels la connexion sera ouverte.
+
+
+ Sélectionnez le mode de Taille Intelligente à utiliser.
+
+
+ Connexion à la console de l'hôte distant.
+
+
+ Utilisez les informations d'identification Security Support Provider (CredSSP) pour l'authentification si elle est disponible.
+
+
+ N'hésitez pas à entrer toutes les informations dont vous avez besoin ici.
+
+
+ Entrez votre nom d'utilisateur.
+
+
+ Si vous souhaitez établir une vue uniquement de l'hôte distant, sélectionnez oui.
+
+
+ Entrez l'adresse du proxy à utiliser.
+
+
+ Entrez votre mot de passe pour l'authentification contre le proxy.
+
+
+ Entrez le port d'ecoute du serveur proxy
+
+
+ Si vous utilisez un proxy pour tunneler vos connexions VNC, sélectionnez son type.
+
+
+ Entrez votre nom d'utilisateur pour authentifier sur le proxy.
+
+
+ Nom d'hôte / IP
+
+
+ Tous
+
+
+ Serveur d'authentification
+
+
+ Mode d'authentification
+
+
+ Mettre en cache les bitmaps
+
+
+ Couleurs
+
+
+ Compression
+
+
+ Description
+
+
+ Afficher le Thème
+
+
+ Afficher le Fond d'écran
+
+
+ Domaine
+
+
+ Composition du bureau
+
+
+ Lissage des polices
+
+
+ Encodage
+
+
+ Niveau de cryptage
+
+
+ Outil externe
+
+
+ Outil Externe Après
+
+
+ Outil externe avant
+
+
+ Icône
+
+
+ Adresse MAC
+
+
+ Nom
+
+
+ Panneau
+
+
+ Mot de passe
+
+
+ Port
+
+
+ Protocole
+
+
+ Session PuTTY
+
+
+ Domaine de la Passerelle
+
+
+ Nom d'Hôte de la Passerelle
+
+
+ Mot de passe pour la Passerelle RDP
+
+
+ Utiliser Gateway
+
+
+ Identifiant pour la Passerelle
+
+
+ Nom d'utilisateur pour la Passerelle RDP
+
+
+ Lecteurs de disque
+
+
+ Combinaisons de touches
+
+
+ Ports
+
+
+ Imprimantes
+
+
+ Cartes à puce
+
+
+ Sons
+
+
+ Moteur de rendu
+
+
+ Résolution
+
+
+ Mode SmartSize
+
+
+ Utilisez la session console
+
+
+ Utiliser CredSSP
+
+
+ Champ utilisateur
+
+
+ Nom d'utilisateur
+
+
+ Voir seulement
+
+
+ Adresse proxy
+
+
+ Mot de passe du Proxy
+
+
+ Port du Proxy
+
+
+ Type de proxy
+
+
+ Nom d'utilisateur du Proxy
+
+
+ Évènement de Protocole Déconnecté.
+Message:
+{0}
+
+
+ Échec de Déconnexion du Protocole d’Évènement. {0}
+
+
+ Protocole à importer
+
+
+ Test du proxy a échoué!
+
+
+ Test du Proxy réussi!
+
+
+ La connexion a échoué!
+
+
+ Échec de l'arrêt du processus Putty!
+
+
+ Impossible de définir le focus!
+
+
+ Erreur session Putty !
+
+
+ Handle Putty: {0}
+
+
+ Échec de la fermeture du processus Putty !
+
+
+ Handle Panneau: {0}
+
+
+ Échec du redimensionnement de Putty !
+
+
+ Sessions PuTTY sauvegardées
+
+
+ Paramètres PuTTY
+
+
+ Échec de l'affichage de la fenêtre de paramètres de Putty !
+
+
+ Le lancement de Putty a échoué!
+
+
+ --- Outils PuTTY ---
+
+
+ Titre PuTTY: {0}
+
+
+ Rapide: {0}
+
+
+ Connexion rapide
+
+
+ Échec de l'ajout de connexion rapide !
+
+
+ La connexion rapide à échoué
+
+
+ &M'avertir lors de la fermeture des connexions
+
+
+ M'avertir uniquement lorsque mRemoteNG se f&erme
+
+
+ M'avertir seulement lors de la fermeture de connexions &multiples
+
+
+ &Ne pas m'avertir lors de la fermeture des connexions
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 couleurs (24 bits)
+
+
+ 256 couleurs (8 bits)
+
+
+ 32768 couleurs (15 bits)
+
+
+ 16777216 couleurs (32 bits)
+
+
+ 65536 couleurs (16 bits)
+
+
+ Échec de RDP Add Resolution !
+
+
+ Échec de RDP Add Resolutions !
+
+
+ Échec de l'ajout de session
+
+
+ Fermeture de la connexion RDP échoué!
+
+
+ Échec de l'ouverture de connexion !
+
+
+ Impossible de lancer une connexion RDP, vérifier les prérequis mRemoteNG.
+
+
+ Désactiver le curseur clignotant
+
+
+ Désactiver l'Ombre du pointeur
+
+
+ Désactiver le glissement de fenêtre complet
+
+
+ Désactiver les animations du menu
+
+
+ Désactiver les thèmes
+
+
+ Désactiver papier peint
+
+
+ RDP déconnecté!
+
+
+ Échec de Déconnexion RDP, tentative d'arrêt en cours !
+
+
+ Code d'erreur interne 1.
+
+
+ Code d'erreur interne 2.
+
+
+ Code d'erreur interne 3. Ce n'est pas un état valide.
+
+
+ Code d'erreur interne 4.
+
+
+ Une erreur irrécupérable s'est produite lors de la connexion client.
+
+
+ Échec GetError (FatalErrors)
+
+
+ Une erreur inconnue s'est produite fatale RDP. Le code d'erreur {0}.
+
+
+ Une erreur de mémoire insuffisante s'est produite.
+
+
+ Une erreur inconnue s'est produite.
+
+
+ Une erreur de création de fenêtre a été commise.
+
+
+ Erreur d'initialisation de Winsock.
+
+
+ Impossible d'importer le fichier rdp!
+
+
+ Ajuster au panneau
+
+
+ Échec de RDP Focus !
+
+
+ La passerelle Bureau à distance est prise en charge.
+
+
+ La passerelle Bureau à distance n'est pas prise en charge !
+
+
+ Erreur de session!
+
+
+ Ouverture de la connexion RDP échoué!
+
+
+ Nombre de reconnexions RDP:
+
+
+ Échec de RDP SetAuthenticationLevel !
+
+
+ Échec de RDP SetUseConsoleSession !
+
+
+ Configuration du basculement de console pour RDC {0}.
+
+
+ Échec de RDP SetCredentials !
+
+
+ Échec de RDP SetEventHandlers !
+
+
+ Échec de RDP SetRDGateway !
+
+
+ Échec de RDP SetPerformanceFlags !
+
+
+ Échec de RDP SetPort !
+
+
+ Échec de RDP SetProps !
+
+
+ Échec de Rdp Set Redirection !
+
+
+ Échec de Rdp Set Redirect Keys !
+
+
+ Échec de RDP SetResolution !
+
+
+ Taille intelligente
+
+
+ Apporter à cet ordinateur
+
+
+ Ne pas jouer
+
+
+ Laisser à un ordinateur distant
+
+
+ Échec de RDP ToggleFullscreen !
+
+
+ Échec de RDP ToggleSmartSize !
+
+
+ Reconnecter les sessions ouvertes au démarrage
+
+
+ Actualiser
+
+
+ Fichier distant
+
+
+ Supprimer tout
+
+
+ Renommer
+
+
+ Rlogin
+
+
+ Enregistrer
+
+
+ Enregistrer tout
+
+
+ Voulez-vous enregistrer le fichier actuel connexions avant de charger un autre?
+
+
+ Enregistrer les connexions à la sortie
+
+
+ Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png
+
+
+ Écran
+
+
+ Captures d'écran
+
+
+ Captures d'écran
+
+
+ Rechercher
+
+
+ Envoyer à ...
+
+
+ Erreur de session arrière plan
+
+
+ Fermeture des sessions a échoué.
+
+
+ Utiliser le nom d'hôte comme nom affiché lors de la création ou le renommage de connexions
+
+
+ Échec de définition de texte du formulaire principal
+
+
+ Échec de sauvegarde des paramètres ou de suppression de l'Icône de la Barre des tâches!
+
+
+ Afficher la description des info-bulles dans l'arborescence
+
+
+ Afficher le chemin d'accès complet du fichier de connexions dans le titre de la fenêtre
+
+
+ Afficher les informations de connexion dans le nom des onglets
+
+
+ Afficher le protocoles dans le nom de l'onglet
+
+
+ Un simple clic sur une connexion l'ouvre
+
+
+ Un simple clic sur une connexion ouverte nous renvoie dessus
+
+
+ Apparence
+
+
+ Gratuit
+
+
+ Pas de taille intelligente
+
+
+ Socks 5
+
+
+ Trier
+
+
+ Croissant (AZ)
+
+
+ Décroissant (ZA)
+
+
+ Touches spéciales
+
+
+ Consultez l'aide - Getting started - SQL Configuration pour plus d'informations !
+
+
+ SQL Server
+
+
+ Vérification de la mise à jour SQL terminée, mises à jour disponibles ! Les connexions vont être rafraichies.
+
+
+ SSH version 1
+
+
+ SSH version 2
+
+
+ Le transfert SSH en tâche de fond a échoué!
+
+
+ Transfert réussi!
+
+
+ Échec de SSH Transfer End (UI.Window.SSHTransfer)!
+
+
+ Echec du transfert SSH échoué.
+
+
+ IP de début
+
+
+ Port de début
+
+
+ Démarrer/Quitter
+
+
+ Statut
+
+
+ Se déplacer sur le panneau des Notifications :
+
+
+ Avancée
+
+
+ Apparence
+
+
+ Onglets && Panneaux
+
+
+ Mises à jour
+
+
+ Telnet
+
+
+ Ce qui suit :
+
+
+ Panneau de configuration
+
+
+ Panneau de connexions
+
+
+ Générale
+
+
+ La couleur de fond du panneau de configuration.
+
+
+ La couleur du texte catégorie dans le panneau de configuration.
+
+
+ La couleur du quadrillage dans le panneau de configuration
+
+
+ La couleur de fond de la section d'aide du panneau de configuration.
+
+
+ La couleur du texte dans la section d'aide du panneau de configuration.
+
+
+ La couleur du texte dans le panneau de configuration.
+
+
+ La couleur de fond du panneau des connexions.
+
+
+ La couleur du texte dans le panneau des connexions.
+
+
+ La couleur des lignes d'arborescence dans le panneau des connexions.
+
+
+ La couleur de fond des menus.
+
+
+ La couleur du texte dans les menus.
+
+
+ La couleur de fond de la boîte de recherche.
+
+
+ La couleur du texte dans la zone Rechercher.
+
+
+ La couleur du texte dans la zone de recherche rapide.
+
+
+ La couleur de fond des barres d'outils.
+
+
+ La couleur du texte dans les barres d'outils.
+
+
+ La couleur d'arrière-plan de la fenêtre principale.
+
+
+ Couleur de fond du panneau de configuration
+
+
+ Couleur de texte pour le panneau de configuration
+
+
+ Couleur des ligne de la grille du panneau de configuration
+
+
+ Couleur de Fond de l'Aide du Panneau de Configuration
+
+
+ Couleur du Texte de l'Aide du Panneau de Configuration
+
+
+ Couleur du Texte du Panneau de Configuration
+
+
+ Couleur de Fond du Panneau des Connexions
+
+
+ Couleur du Texte du Panneau de Connexions
+
+
+ Couleur de l'arbre des connections dans le menu
+
+
+ Couleur de Fond du Menu
+
+
+ Couleur de texte du menu
+
+
+ Couleur de fond de la boite de recherche
+
+
+ Couleur du texte de la recherche
+
+
+ Couleur du Texte de la Boîte de Recherche
+
+
+ Couleur de fond de la barre d'outils
+
+
+ Couleur du texte de la barre d'outils
+
+
+ Couleur de fond de la fenêtre
+
+
+ Erreur ({0})
+
+
+ Information ({0})
+
+
+ Mot de passe
+
+
+ Choix du panneau
+
+
+ Avertissement ({0})
+
+
+ Transfert
+
+
+ Échec du transfert!
+
+
+ Essayer d'intégrer
+
+
+ Type
+
+
+ Ultra VNC Repeater
+
+
+ Port UltraVNC SingleClick :
+
+
+ Décochez les propriétés que vous souhaitez ne pas être enregistrer!
+
+
+ Thème sans nom
+
+
+ mRemoteNG nécessite une mise à jour
+
+
+ mRemoteNG peut se connecter périodiquement sur le site mRemoteNG pour vérifier les mises à jour.
+
+
+ La vérification de la fin de mise à jour a échoué !
+
+
+ La vérification des mises à jour a échoué!
+
+
+ Actuellement mRemoteNG édition Portable ne supporte pas la mise à jour automatique.
+
+
+ Erreur de suppression de fichiers mise à jour!
+
+
+ Téléchargement terminé! mRemoteNG va se fermer et l'installation va commencer.
+
+
+ Téléchargement échoué!
+
+
+ Le téléchargement de la mise à jour a échoué!
+
+
+ Chaque {0} jours
+
+
+ Quotidien
+
+
+ Mensuel
+
+
+ Hebdomadaire
+
+
+ Erreur lors du démarrage mise à jour!
+
+
+ Utilisez un autre nom d'utilisateur et mot de passe
+
+
+ Utilisez uniquement panneau Notifications (pas de message popups)
+
+
+ Utilisateur
+
+
+ Utilisez le même nom d'utilisateur et mot de passe
+
+
+ Utiliser une carte à puce
+
+
+ Utilisez SQL Server pour charger && enregistrer les connexions
+
+
+ Version
+
+
+ VNC
+
+
+ VNC déconnection échoué!
+
+
+ Ouverture de connexion a échoué!
+
+
+ Rafraîchissement de l'écran VNC a échoué!
+
+
+ VNC SendSpecialKeys a échoué!
+
+
+ Échec de VNC Set Event Handlers !
+
+
+ Échec de VNC Set Props !
+
+
+ Lancement VNC Chat échoué!
+
+
+ Toggle VNC SmartSize échoué!
+
+
+ Échec de VNC Toggle ViewOnly !
+
+
+ M'avertir si l'authentification échoue
+
+
+ Avertissements
+
+
+ Utilise DockPanel Suite par [Weifen Luo]
+
+
+ Ecrire dans un fichier journal (mRemoteNG.log)
+
+
+ Chemin de XULRunner:
+
+
+ Oui
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.hu.resx b/mRemoteV1/CS/Language/Language.hu.resx
new file mode 100644
index 000000000..d78901436
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.hu.resx
@@ -0,0 +1,438 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Névjegy
+
+
+ Aktív
+
+
+ Tevékenység
+
+
+ Új kapcsolat
+
+
+ Új mappa
+
+
+ Mindig
+
+
+ Kapcsolódj mindig, sikertelen hitelesítés esetén is
+
+
+ Kérdezz rá később
+
+
+ Javasolt beállítások használata
+
+
+ Automatikus frissítés beállításai
+
+
+ Munkamenet információk automatikus megszerzése
+
+
+ Automatikus mentés minden:
+
+
+ Perc (0 - kikapcsolva)
+
+
+ Aktuális verzió
+
+
+ &Böngészés...
+
+
+ &Mégsem
+
+
+ Módosít
+
+
+ Be&zár
+
+
+ Kapcsolat bontása
+
+
+ Ikon
+
+
+ &Improtálás
+
+
+ PuTTY indítása
+
+
+ &Új
+
+
+ &OK
+
+
+ Tulajdonságok
+
+
+ Helytelen IP cím, a port szkennelés nem indítható!
+
+
+ Megjelenés
+
+
+ Kapcsolat
+
+
+ Hitelesítés
+
+
+ Képernyő
+
+
+ Átjáró
+
+
+ Általános
+
+
+ Egyéb
+
+
+ Protokoll
+
+
+ Átirányítás
+
+
+ Az ellenőrzés sikertelen!
+
+
+ Az ellenőrzés sikeres!
+
+
+ Tartomány
+
+
+ Többé ne mutasd ezt az üzenetet.
+
+
+ Fájlnév
+
+
+ Kiszolgálónév/IP cím
+
+
+ Üzenet
+
+
+ Felhasználónév
+
+
+ Nem értelmezhető parancssori argumentum!
+
+
+ Kapcsolódás...
+
+
+ Sikertelen kapcsolódás!
+
+
+ Kapcsolatok
+
+
+ Telepített verzió
+
+
+ Ne kapcsolódj sikertelen hitelesítéskor
+
+
+ Duplaklikk a fülön bezárja azt
+
+
+ Kísérleti
+
+
+ Teljes képernyő
+
+
+ Általános
+
+
+ Fájlok
+
+
+ A HTTP csatlakozás nem sikerült!
+
+
+ Importálás/Exportálás
+
+
+ CTRL-ALT-DEL
+
+
+ CONTROL-ESC
+
+
+ Cím:
+
+
+ Megjelenítendő név
+
+
+ Tartomány:
+
+
+ Fájlnév:
+
+
+ Hosztnév:
+
+
+ Opciók:
+
+
+ Jelszó:
+
+
+ Port:
+
+
+ Hordozható kiadás
+
+
+ Protokoll:
+
+
+ Szerver állapot:
+
+
+ Adatbázis:
+
+
+ Adatbázis:
+
+
+ Felhasználónév:
+
+
+ Ellenőrzés:
+
+
+ Nyelv
+
+
+ (Automatikus észlelés)
+
+
+ Névjegy
+
+
+ Frissítés keresése
+
+
+ Ugrás
+
+
+ Külső eszköz indítása
+
+
+ Új kapcsolatfájl
+
+
+ Új külső eszköz
+
+
+ Értesítések
+
+
+ Kapcsolatfájl megnyitása...
+
+
+ Opciók
+
+
+ Újrakapcsolódás
+
+
+ Átnevezés
+
+
+ Kapcsolat átnevezése
+
+
+ Könyvtár átnevezése
+
+
+ Fül átnevezése
+
+
+ Hibabejelentés
+
+
+ Elrendezés alaphelyzetbe állítása
+
+
+ Kapcsolatfájl mentése
+
+
+ Kapcsolatfájl mentése, mint...
+
+
+ Képernyőmentés
+
+
+ Képernyőmentés kezelő
+
+
+ Munkamenetek
+
+
+ Munkamanetek és képernyőmentések
+
+
+ Honlap
+
+
+ Soha
+
+
+ Új kapcsolat
+
+
+ Új mappa
+
+
+ Új panel
+
+
+ Új gyökérelem
+
+
+ Új cím
+
+
+ Nem
+
+
+ SQL szerver használata a kapcsolatok kezelésére
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.it.resx b/mRemoteV1/CS/Language/Language.it.resx
new file mode 100644
index 000000000..ff8c4d638
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.it.resx
@@ -0,0 +1,2174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Informazioni su
+
+
+ Attivo
+
+
+ Attività
+
+
+ Nuova connessione
+
+
+ Nuova cartella
+
+
+ Operazione AddNodeFromXML fallita!
+
+
+ Operazione AddNodesFromSQL fallita!
+
+
+ Consenti soltanto un'istanza dell'applicazione (richiede il riavvio di mRemoteNG)
+
+
+ Sempre
+
+
+ Connetti sempre, anche se l'autenticazione fallisce
+
+
+ Mostra sempre la finsetra di selezione pannello all'apertura di una connessione
+
+
+ Mostra sempre le schede dei pannelli
+
+
+ Mostra sempre l'icona nell'area delle notifiche
+
+
+ Chiedimelo più tardi
+
+
+ Personalizza le impostazioni adesso
+
+
+ Utilizza le impostazioni raccomandate
+
+
+ {0} può verificare automaticamente la presenza di aggiornamenti che potrebbero fornire nuove funzionalità e risolvere alcuni bug. Si raccomanda di consentire a {0} di controllare gli aggiornamenti una volta alla settimana.
+
+
+ Impostazioni di aggiornamento automatico
+
+
+ Aspetto
+
+
+ Ottieni automaticamente informazioni sulla sessione
+
+
+ Salva automaticamente ogni:
+
+
+ Minuti (0 per disabilitare)
+
+
+ Versione attuale
+
+
+ &Sfoglia...
+
+
+ &Cancella
+
+
+ Cambia
+
+
+ &Chiudi
+
+
+ Ereditarietà predefinita
+
+
+ Proprietà predefinite
+
+
+ Disconnetti
+
+
+ Icona
+
+
+ &Importa
+
+
+ Ereditarietà
+
+
+ Esegui PuTTY
+
+
+ &Nuovo
+
+
+ &OK
+
+
+ Proprietà
+
+
+ &Scansione
+
+
+ &Stop
+
+
+ Verifica le impostazioni del proxy
+
+
+ Non è possibile importare un file delle connessioni normale.
+Per favore usare File -> Carica connessioni per i file delle connessioni normali!
+
+
+ Impossibile eseguire una scansione delle porte, il formato IP non è corretto!
+
+
+ Aspetto
+
+
+ Connessione
+
+
+ Credenziali
+
+
+ Schermo
+
+
+ Gateway
+
+
+ Generale
+
+
+ Altro
+
+
+ Protocollo
+
+
+ Redirezione
+
+
+ Mostra sempre questa schermata all'avvio
+
+
+ Aggiorna
+
+
+ Controllo fallito!
+
+
+ Controllo riuscito!
+
+
+ Per utilizzare le sessioni RDP è necessario avere una copia di eolwtscom.dll registrata nel proprio sistema. mRemoteNG viene distribuito con questo componente ma è in grado di registrarlo automaticamente soltanto eseguendo un setup completo.
+Per effettuare una registrazione manuale, aprire la finestra "Esegui" (WIN+R) ed inserire il testo: regsvr32 "C:\Programmi\mRemoteNG\eolwtscom.dll" (dove C:\Programmi\mRemoteNG\ è il percorso di installazione di mRemoteNG).
+Se il controllo fallisce o risulta impossibile utilizzare le sessioni RDP con mRemoteNG per favore consultare il forum di mRemoteNG all'indirizzo http://forum.mremoteng.org/
+
+
+ EOLWTSCOM è stato rilevato e sembra essere registrato correttamente.
+
+
+ Per utilizzare il motore di rendering Gecko è necessario possedere XULrunner 1.8.1.x ed il percorso di installazione configurato nelle impostazioni. XULrunner 1.8.1.3 può essere scaricato al seguente indirizzo: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Quando il download è terminato, è sufficiente estrarre il pacchetto in una cartella a piacere ed impostare tale percorso sotto Strumenti - Opzioni - Avanzate - Percorso XULrunner.
+Se il controllo fallisce o risulta impossibile utilizzare il motore di rendering Gecko con mRemoteNG, per favore consultare il forum di mRemoteNG all'indirizzo http://forum.mremoteng.org/
+
+
+ XULrunner è stato rilevato e sembra installato correttamente.
+
+
+ ICA richiede che il plugin XenDesktop Online sia installato e che la libreria wfica.ocx sia registrata. Il client è scaricabile all'indirizzo http://www.citrix.com/download/
+Se il plugin XenDesktop Online è installato ma il controllo fallisce, provare a registrare wfica.ocx manualmente. Aprire la finestra "Esegui" (WIN+R) ed inserire il testo: regsvr32 "C:\Programmi\Citrix\ICA Client\wfica.ocx" (dove C:\Programmi\Citrix\ICA Client\ è il percorso di installazione del plugin XenDesktop Online).
+Se il controllo fallisce e risulta impossibile utilizzare ICA con mRemoteNG, per favore consulta il forum di mRemoteNG all'indirizzo http://forum.mremoteng.org/
+
+
+ Tutti i componenti ICA sono stati installati e sembrano registrati correttamente.
+Citrix ICA Client Control versione {0}
+
+
+ non installato correttamente
+
+
+ I protocolli SSH, Relnet, Rlogin e RAW richiedono PuTTY per funzionare. PuTTY è fornito insieme al pacchetto mRemoteNG ed è situato nel percorso di installazione.
+Assicurarsi che Putty.exe sia contenuto nella cartella mRemoteNG (default: C:\Programmi\mRemoteNG\) oppure che il percorso PuTTY specificato nelle opzioni (Strumenti - Opzioni - Avanzate - Percorso PuTTY personalizzato) sia valido.
+
+
+ L'eseguibile PuTTY è stato trovato e dovrebbe essere pronto per l'uso.
+
+
+ Per fare funzionare RDP correttamente è necessario avere installato Remote Desktop Connection (Terminal Services Client) versione 6.1, disponibile all'indirizzo http://support.microsoft.com/kb/951616/it
+Se RDP 6.1 è installato e questo controllo fallisce, tentare di registrare mstscax.dll manualmente. Aprire la schermata "Esegui" (combinazione tasti WIN+R) ed inserire il seguente testo: regsvr32 "C:\Windows\System32\mstscax.dll"
+Se il problema con RDP persiste consultare il forum di mRemoteNG all'indirizzo http://forum.mremoteng.org/
+
+
+ Tutti i componenti RDP sono stati rilevati e sembrano registrati correttamente.
+Remote Desktop Connection Control versione {0}
+
+
+ VNC richiede che VncSharpNG.dll sia presente nella cartella del programma mRemoteNG.
+Per favore assicurarsi che il file VncSharpNG.dll sia presente nella cartella del programma mRemoteNG (solitamente C:\Programmi\mRemoteNG\).
+Se risulta ancora impossibile utilizzare VNC con mRemoteNG, contattare il forum all'indirizzo http://forum.mremoteng.org/
+
+
+ Tutti i componenti VNC sono stati rilevati e sembrano registrati correttamente.
+VncSharpNG Control versione {0}
+
+
+ Prova a riconnettersi automaticamente quando disconnesso (solo RDP ed ICA)
+
+
+ Dominio
+
+
+ Non visualizzare più questo messaggio.
+
+
+ Ereditarietà
+
+
+ Password
+
+
+ Questo proxy richiede l'autenticazione
+
+
+ Utilizza un percorso personalizzato per PuTTY:
+
+
+ Riconnetti quando pronto
+
+
+ Utilizza un proxy per la connessione
+
+
+ Nome utente
+
+
+ Attendi l'uscita
+
+
+ Controlla ancora
+
+
+ Verifica la presenza di aggiornamenti all'avvio
+
+
+ Controlla adesso
+
+
+ Durante l'avvio controlla che i componenti siano installati correttamente
+
+
+ Seleziona il pannello prima della connessione
+
+
+ Porte chiuse
+
+
+ Comprimi tutte le cartelle
+
+
+ Argomenti
+
+
+ Nome visualizzato
+
+
+ Nome del file
+
+
+ Nome host / IP
+
+
+ Messaggio
+
+
+ Nome utente
+
+
+ Attendi l'uscita
+
+
+ Impossibile processare i parametri da linea di comando!
+
+
+ Controllo componenti
+
+
+ btnIcon_Click fallito!
+
+
+ Operazione ShowHideGridItems fallita!
+
+
+ Operazione IconMenu_Click fallita!
+
+
+ Oggetto Property Grid fallito!
+
+
+ Operazione SetHostStatus fallita!
+
+
+ Operazione pGrid_PropertyValueChanged fallita!
+
+
+ Caricamento Config UI fallito!
+
+
+ Vuoi chiudere la connessione "{0}"?
+
+
+ Sei sicuro di voler chiudere il pannello "{0}"? Tutte le connessioni contenute in esso verranno terminate.
+
+
+ Sei sicuro di voler cancellare l'applicazione esterna "{0}"?
+
+
+ Sei sicuro di voler cancellare l'applicazione esterna selezionata {0}?
+
+
+ Sei sicuro di voler cancellare la connessione "{0}"?
+
+
+ Sei sicuro di voler cancellare la cartella vuota "{0}"?
+
+
+ Sei sicuro di voler cancellare la cartella "{0}"? Tutte le sottocartelle e le connessioni contenute in essa verranno eliminate.
+
+
+ Vuoi chiudere tutte le connessioni aperte?
+
+
+ Reimpostare i pannelli secondo la disposizione predefinita?
+
+
+ Connetti
+
+
+ Connetti in modalità a schermo intero
+
+
+ Connessione in corso...
+
+
+ Protocol Event Connected
+
+
+ Connessione a "{0}" attraverso "{1}" stabilita dall'utente "{2}" (Descrizione: "{3}"; Campo utente: "{4}")
+
+
+ Connessione fallita!
+
+
+ Protocol Event ErrorOccured
+
+
+ Apertura della connessione fallita!
+
+
+ Impossibile aprire la connessione: nessun nome host specificato!
+
+
+ Errore RDP!
+Codice: {0}
+Descrizione: {1}
+
+
+ Connessioni
+
+
+ Impossibile impostare la porta predefinita!
+
+
+ Impossibile creare un backup del file delle connessioni!
+
+
+ Impossibile importare il file delle connessioni!
+
+
+ Il file delle connessioni "{0}" non può essere caricato!
+
+
+ Il file delle connessioni "{0}" non può essere caricato!
+Creazione di un nuovo file delle connessioni.
+
+
+ Impossibile salvare il file delle connessioni!
+
+
+ Impossibile salvare il file delle connessioni come "{0}"!
+
+
+ Connetti alla sessione della console
+
+
+ Connetti (con opzioni)
+
+
+ Connessione a {0} attraverso {1} chiusa dall'utente {2}.
+
+
+ Connessione a {0} attraverso {1} chiusa dall'utente {2}. (Descrizione: "{3}"; campo utente: "{4}")
+
+
+ Connection Event Closed
+
+
+ Operazione Connection Event Closed fallita!
+
+
+ Impossibile creare un nuovo file delle connessioni!
+
+
+ Versione installata
+
+
+ Tema predefinito
+
+
+ Rileva
+
+
+ Non connettere in caso di autenticazione fallita
+
+
+ Doppio click per chiudere la tab
+
+
+ Scarica ed installa
+
+
+ Duplica
+
+
+ Vuoi continuare anche in assenza di password?
+
+
+ Quando i campi "Nome utente", "Password" o "Dominio" sono vuoti, utilizza i seguenti:
+
+
+ 128-bit
+
+
+ 128-bit (solo accesso)
+
+
+ Base
+
+
+ Crittografa completamente il file delle connessioni
+
+
+ IP finale
+
+
+ Porta finale
+
+
+ Operazione AddExternalToolsToToolBar (frmMain) fallita. {0}
+
+
+ Operazione AddFolder (UI.Window.Tree) fallita. {0}
+
+
+ La versione del database {0} non è compatibile con questa versione di {1}.
+
+
+ Operazione CloneNode (Tree.Node) fallita. {0}
+
+
+ Codice di errore {0}.
+
+
+ L'elenco delle connessioni non può essere salvato.
+
+
+ Decriptaggio fallito. {0}
+
+
+ Criptaggio fallito. {0}
+
+
+ L'impostazione Windows di sicurezza "Crittografia di sistema: utilizza algoritmi FIPS compatibili per crittografia, hash e firma" è abilitata. Tale impostazione non è compatibile con {0}.
+
+Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per ottenere maggiori informazioni.
+
+{0} sarà chiuso.
+
+
+ Errori
+
+
+ Il file delle connessioni da aprire all'avvio non può essere caricato.{0}{0}{2}{0}{3}{0}{0}Per evitare perdite di dati, {1} sarà immediatamente chiuso.
+
+
+ Verifica della versione del database (Config.Connections.Save) fallita. {0}
+
+
+ Espandi tutte le cartelle
+
+
+ Sperimentale
+
+
+ Esporta
+
+
+ Esporta XML mRemote/mRemoteNG
+
+
+ Appl. est.
+
+
+ Comprende le icone di [FAMFAMFAM]
+
+
+ Tutti i file (*.*)
+
+
+ Applicazioni (*.exe)
+
+
+ File CSV mRemote (*.csv)
+
+
+ File XML mRemote (*.xml)
+
+
+ File RDP (*.rdp)
+
+
+ File CSV di visionapp Remote Desktop 2008 (*.csv)
+
+
+ Eredita {0}
+
+
+ Descrizione delle proprietà ereditate: {0}
+
+
+ Libero
+
+
+ Schermo intero
+
+
+ Generale
+
+
+ Recupero delle informazioni sulla connessione da SQL fallito
+
+
+ Errore durante il caricamento della connessione per "{0}" da "{1}". {2}
+
+
+ Riconnetti automaticamente
+
+
+ Connessione
+
+
+ Proprietà dell'applicazione esterna
+
+
+ File
+
+
+ Host
+
+
+ HTTP Connect fallita!
+
+
+ Impossibile creare una nuova connessione HTTP!
+
+
+ Impostazione delle proprietà HTTP fallita!
+
+
+ Impossibile creare una nuova connessione ICA!
+
+
+ Caricamento del plugin ICA fallito!
+
+
+ ICA SetCredentials fallito!
+
+
+ ICA Set Event Handlers fallito!
+
+
+ ICA Set Props fallito!
+
+
+ ICA Set Resolution fallito!
+
+
+ Aggiungi il prefisso "Quick:" alle schede di connessioni rapide
+
+
+ Importa da Active Directory
+
+
+ Importa/Esporta
+
+
+ Importa XML mRemote/mRemoteNG
+
+
+ Importa da scansione delle porte
+
+
+ Importa da file .RDP
+
+
+ Non attivo
+
+
+ Informazioni
+
+
+ mRemoteNG è aggiornato
+
+
+ Connessione fallita!
+
+
+ Operazione Dispose of Int App Process fallita!
+
+
+ Int App Focus fallito!
+
+
+ Int App handle: {0}
+
+
+ Operazione Killing Int App Process fallita!
+
+
+ Panel handle: {0}
+
+
+ Int App Resize fallito!
+
+
+ --- Roba di IntApp ---
+
+
+ Int App Title: {0}
+
+
+ CTRL-ALT-CANC
+
+
+ CTRL-ESC
+
+
+ Indirizzo:
+
+
+ Argomenti:
+
+
+ Modifiche recenti:
+
+
+ Alla chiusura delle connessioni:
+
+
+ &Connetti:
+
+
+ Nome visualizzato
+
+
+ Dominio:
+
+
+ Nome del file:
+
+
+ Nome host:
+
+
+ Opzioni:
+
+
+ Password:
+
+
+ Porta:
+
+
+ Edizione Portable
+
+
+ Protocollo:
+
+
+ Per configurare le sessioni PuTTY premere questo bottone:
+
+
+ Massimo tempo di attesa per PuTTY ed applicazioni esterne integrate:
+
+
+ Rilasciato sotto la licenza GNU GPL
+
+
+ secondi
+
+
+ Seleziona un pannello dalla lista sottostante o clicca Nuovo per aggiungerne un altro. Clicca OK per continuare.
+
+
+ Stato del server:
+
+
+ Database:
+
+
+ Database:
+
+
+ Nome utente:
+
+
+ Verifica:
+
+
+ Lingua
+
+
+ (rileva automaticamente)
+
+
+ {0} deve essere riavviato prima che le nuove impostazioni della lingua abbiano effetto.
+
+
+ Operazione Load From SQL fallita!
+
+
+ Operazione Load From XML fallita!
+
+
+ File locale
+
+
+ Il file locale non esiste!
+
+
+ Logoff
+
+
+ Scrittura sul file di report fallita!
+
+
+ Impossibile salvare il report nella destinazione.
+
+
+ Utilizza la libreria Magic di [Crownwood Software]
+
+
+ Informazioni su
+
+
+ Aggiungi pannello delle connessioni
+
+
+ Segnalazioni
+
+
+ Verifica la presenza di aggiornamenti
+
+
+ Configurazione
+
+
+ Connetti
+
+
+ Pannelli di connessione
+
+
+ Connessioni
+
+
+ Connessioni e configurazione
+
+
+ Copia
+
+
+ Ctrl-Alt-Canc
+
+
+ Ctrl-Esc
+
+
+ Elimina...
+
+
+ Elimina connessione...
+
+
+ Elimina applicazione esterna...
+
+
+ Elimina cartella...
+
+
+ Disconnetti
+
+
+ Effettua una donazione
+
+
+ Duplica
+
+
+ Duplica connessione
+
+
+ Duplica cartella
+
+
+ Duplica tab
+
+
+ Esci
+
+
+ Applicazioni esterne
+
+
+ Barra delle applicazioni esterne
+
+
+ &File
+
+
+ Schermo intero
+
+
+ Schermo intero (RDP)
+
+
+ &Aiuto
+
+
+ Guida di mRemoteNG
+
+
+ Vai a
+
+
+ Esegui applicazione esterna
+
+
+ Nuovo file delle connessioni
+
+
+ Nuova applicazione esterna
+
+
+ Notifiche
+
+
+ Copia tutto
+
+
+ Elimina
+
+
+ Elimina tutto
+
+
+ Apri file delle connessioni...
+
+
+ Opzioni
+
+
+ Incolla
+
+
+ Scansione delle porte
+
+
+ Barra di connessione rapida
+
+
+ Riconnetti
+
+
+ Aggiorna lo schermo (VNC)
+
+
+ Rinomina
+
+
+ Rinomina connessione
+
+
+ Rinomina cartella
+
+
+ Rinomina tab
+
+
+ Segnala un bug
+
+
+ Reimposta la disposizione
+
+
+ Salva file delle connessioni
+
+
+ Salva file delle connessioni con nome...
+
+
+ Screenshot
+
+
+ Gestore degli screenshot
+
+
+ Invia tasti speciali (VNC)
+
+
+ Sessioni
+
+
+ Sessioni e screenshot
+
+
+ &Mostra testo di aiuto
+
+
+ Mostra testo
+
+
+ SmartSize (RDP/VNC)
+
+
+ Trasferimento file SSH
+
+
+ Avvia chat (VNC)
+
+
+ Forum di supporto
+
+
+ &Strumenti
+
+
+ Trasferisci file (SSH)
+
+
+ &Visualizza
+
+
+ Visualizza soltanto (VNC)
+
+
+ Sito web
+
+
+ Riduci a icona nell'area delle notifiche
+
+
+ Sposta sotto
+
+
+ Sposta sopra
+
+
+ Le mie credenziali (di accesso a Windows)
+
+
+ Mai
+
+
+ Nuova connessione
+
+
+ Nuova cartella
+
+
+ Nuovo pannello
+
+
+ Nuova root
+
+
+ Nuovo titolo
+
+
+ No
+
+
+ Nessuna compressione
+
+
+ Nessuna applicazione esterna specificata.
+
+
+ Nessuna
+
+
+ Nessuno
+
+
+ Normale
+
+
+ Disattiva SmartSize
+
+
+ Nessun aggiornamento disponibile
+
+
+ Se stai tentando di caricare un file delle connessioni creato con una vecchia versione di mRemote, questo potrebbe portare ad un errore durante l'esecuzione. Se succede, per favore crea un nuovo file delle connessioni!
+
+
+ Apri un nuovo tab a destra del tab selezionato
+
+
+ Porte aperte
+
+
+ Tema
+
+
+ Elimina
+
+
+ &Nuovo
+
+
+ Nome del pannello
+
+
+ Proteggi con password
+
+
+ Per favore compila tutti i campi
+
+
+ Impossibile caricare il pannello di scansione delle porte!
+
+
+ (Queste proprietà verranno salvate soltanto se il formato di output è XML mRemote/mRemoteNG!)
+
+
+ Inserisci il nome host o l'IP a cui ti vuoi connettere.
+
+
+ Inverti tutte le opzioni di ereditarietà.
+
+
+ Seleziona quale livello di autenticazione deve essere utilizzato per questa connessione.
+
+
+ Seleziona come effettuare l'autenticazione con il server VNC.
+
+
+ Scegli se utilizzare la cache per i bitmap o meno.
+
+
+ Seleziona la qualità del colore da utilizzare.
+
+
+ Seleziona la quantità di compressione da utilizzare.
+
+
+ Inserisci qui le tue note o una descrizione dell'host.
+
+
+ Scegli "sì" se vuoi che il tema dell'host remoto sia visualizzato.
+
+
+ Scegli "sì" se vuoi che lo sfondo dell'host remoto sia visualizzato.
+
+
+ Inserisci il tuo dominio.
+
+
+ Scegli se usare la composizione del desktop o meno.
+
+
+ Scegli se usare il font smoothing o meno.
+
+
+ Seleziona la modalità di codifica da utilizzare.
+
+
+ Seleziona il livello di crittografia dell'host remoto.
+
+
+ Seleziona l'applicazione esterna da avviare.
+
+
+ Seleziona l'applicazione esterna da avviare dopo la disconnessione dall'host remoto.
+
+
+ Seleziona l'applicazione esterna da avviare prima di stabilire la connessione all'host remoto.
+
+
+ Scegli un'icona da visualizzare quando connesso all'host.
+
+
+ Inserisci l'indirizzo MAC dell'host remoto se vuoi utilizzarlo con un'applicazione esterna.
+
+
+ Questo nome verrà mostrato nell'albero delle connessioni.
+
+
+ Imposta il pannello in cui aprire la connessione.
+
+
+ Inserisci la tua password.
+
+
+ Inserisci la porta sulla quale il protocollo è in ascolto.
+
+
+ Seleziona il protocollo che mRemoteNG deve usare per connettersi all'host.
+
+
+ Seleziona una sessione PuTTY da utilizzare per la connessione.
+
+
+ Indica il nome di dominio che l'utente fornisce per connettersi al server gateway RDP.
+
+
+ Indica il nome host del server gateway RDP.
+
+
+ Indica quando utilizzare il server gateway RDP.
+
+
+ Indica se autenticarsi sul gateway utilizzando le stesse credenziali della connessione.
+
+
+ Indica il nome utente che l'utente fornisce per connettersi al server gateway RDP.
+
+
+ Seleziona se visualizzare i dischi locali sull'host remoto.
+
+
+ Seleziona se le combinazioni di tasti (as es. Alt-Tab) devono essere inviate all'host remoto.
+
+
+ Seleziona se visualizzare le porte locali (ad es. COM1, LPT1) sull'host remoto.
+
+
+ Seleziona se visualizzare le stampanti locali sull'host remoto.
+
+
+ Selezionare se le smart card locali devono essere rese disponibili sull'host remoto.
+
+
+ Seleziona come l'audio remoto deve essere reindirizzato.
+
+
+ Seleziona uno dei motori di rendering da utilizzare per mostrare le pagine HTML.
+
+
+ Scegli la risoluzione o la modalità di apertura della connessione.
+
+
+ Scegli la modalità SmartSize da utilizzare.
+
+
+ Connettiti alla sessione della console dell'host remoto.
+
+
+ Usa Credential Security Support Provider (CredSSP) per l'autenticazione, se disponibile.
+
+
+ Sentiti libero di inserire qui informazioni a piacimento.
+
+
+ Inserisci il tuo nome utente.
+
+
+ Seleziona "sì" se vuoi stabilire una connessione di sola visualizzazione verso l'host.
+
+
+ Inserisci l'indirizzo del proxy da utilizzare.
+
+
+ Inserisci la password per l'autenticazione sul proxy.
+
+
+ Inserisci la porta sulla quale il proxy è in ascolto.
+
+
+ Se utilizzi un proxy per effettuare il tunneling delle connessioni VNC, seleziona la sua tipologia.
+
+
+ Inserire il nome utente per l'autenticazione con il proxy.
+
+
+ Nome host / IP
+
+
+ Tutti
+
+
+ Autenticazione server
+
+
+ Modalità di autenticazione
+
+
+ Memorizza bitmap nella cache
+
+
+ Colori
+
+
+ Compressione
+
+
+ Descrizione
+
+
+ Visualizza temi
+
+
+ Visualizza sfondo
+
+
+ Dominio
+
+
+ Composizione del desktop
+
+
+ Font smoothing
+
+
+ Codifica
+
+
+ Livello di crittografia
+
+
+ Applicazione esterna
+
+
+ Applicazione esterna dopo
+
+
+ Applicazione esterna prima
+
+
+ Icona
+
+
+ Indirizzo MAC
+
+
+ Nome
+
+
+ Pannello
+
+
+ Password
+
+
+ Porta
+
+
+ Protocollo
+
+
+ Sessione PuTTY
+
+
+ Dominio del gateway
+
+
+ Nome host del gateway
+
+
+ Password del gateway desktop remoto
+
+
+ Utilizza gateway
+
+
+ Credenziali del gateway
+
+
+ Nome utente del gateway
+
+
+ Unità disco
+
+
+ Combinazioni di tasti
+
+
+ Porte
+
+
+ Stampanti
+
+
+ Smart card
+
+
+ Audio
+
+
+ Motore di rendering
+
+
+ Risoluzione
+
+
+ Modalità SmartSize
+
+
+ Utilizza la sessione della console
+
+
+ Usa CredSSP
+
+
+ Campo utente
+
+
+ Nome utente
+
+
+ Visualizza soltanto
+
+
+ Indirizzo del proxy
+
+
+ Password del proxy
+
+
+ Porta del proxy
+
+
+ Tipo del proxy
+
+
+ Nome utente del proxy
+
+
+ Protocol Event Disconnected.
+Messaggio:
+{0}
+
+
+ Protocol Event Disconnected fallito.
+{0}
+
+
+ Protocollo da importare
+
+
+ Test del proxy fallito!
+
+
+ Test del proxy riuscito!
+
+
+ Connessione fallita!
+
+
+ Operazione Dispose of PuTTY process fallita!
+
+
+ Impossibile impostare il focus!
+
+
+ Get PuTTY Sessions fallito!
+
+
+ PuTTY Handle: {0}
+
+
+ Operazione Killing Putty Process fallita!
+
+
+ Panel Handle: {0}
+
+
+ Operazione Putty Resize fallita!
+
+
+ Impostazioni PuTTY
+
+
+ Operazione Show PuTTY Settings Dialog fallita!
+
+
+ Avvio di PuTTY fallito!
+
+
+ --- Roba di PuTTY ---
+
+
+ PuTTY Title: {0}
+
+
+ Rapido: {0}
+
+
+ Connessione rapida
+
+
+ Operazione Quick Connect Add fallita!
+
+
+ Operazione Creating Quick Connect fallita
+
+
+ &Avvisami alla chiusura delle connessioni
+
+
+ Avvisami soltanto all'&uscita da mRemoteNG
+
+
+ Avvisami soltanto alla chiusura di &più connessioni
+
+
+ &Non avvisarmi alla chiusura delle connessioni
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 colori (24-bit)
+
+
+ 256 colori (8-bit)
+
+
+ 32768 colori (15-bit)
+
+
+ 16777216 colori (32-bit)
+
+
+ 65536 colori (16-bit)
+
+
+ Operazione RDP Add Resolution fallita!
+
+
+ Operazione RDP Add Resolutions fallita!
+
+
+ Operazione Add Session fallita
+
+
+ Operazione Close RDP Connection fallita!
+
+
+ Operazione Opening Connection fallita!
+
+
+ Impossibile creare il controllo RDP, per favore controlla i requisiti di mRemoteNG.
+
+
+ Disattiva il lampeggio del cursore
+
+
+ Disattiva l'ombra del cursore
+
+
+ Disattiva il trascinamento finestra intera
+
+
+ Disattiva le animazioni dei menu
+
+
+ Disattiva i temi
+
+
+ Disattiva lo sfondo
+
+
+ RDP disconnesso!
+
+
+ Disconnessione RDP fallita, tentativo di chiusura in corso!
+
+
+ Codice di errore interno 1.
+
+
+ Codice di errore interno 2.
+
+
+ Codice di errore interno 3. Questo stato non è valido.
+
+
+ Codice di errore interno 4.
+
+
+ Si è verificato un errore irreversibile durante la connessione del client.
+
+
+ GetError fallito (FatalErrors)
+
+
+ Si è verificato un errore RDP fatale. Codice dell'errore {0}.
+
+
+ Si è verificato un errore di memoria esaurita.
+
+
+ Si è verificato un errore sconosciuto.
+
+
+ Si è verificato un errore di creazione della finestra.
+
+
+ Errore di inizializzazione WinSock.
+
+
+ Impossibile importare il file RDP!
+
+
+ Adatta al pannello
+
+
+ RDP Focus fallito!
+
+
+ Il gateway RDP è supportato.
+
+
+ Il gateway RDP non è supportato!
+
+
+ Operazione GetSessions fallita!
+
+
+ Operazione Open RDP Connection fallita!
+
+
+ Contatore riconnessioni RDP:
+
+
+ RDP SetAuthenticationLevel fallito!
+
+
+ RDP SetUseConsoleSession fallito!
+
+
+ Impostazione del cambio console per RDC {0}.
+
+
+ RDP SetCredentials fallito!
+
+
+ RDP SetEventHandlers fallito!
+
+
+ RDP SetRDGateway fallito!
+
+
+ RDP SetPerformanceFlags fallito!
+
+
+ RDP SetPort fallito!
+
+
+ RDP SetProps fallito!
+
+
+ RDP SetRedirection fallito!
+
+
+ RDP SetRedirectKeys fallito!
+
+
+ RDP SetResolution fallito!
+
+
+ SmartSize
+
+
+ Portare su questo computer
+
+
+ Non riprodurre
+
+
+ Lasciare sul computer remoto
+
+
+ RDP ToggleFullscreen fallito!
+
+
+ RDP ToggleSmartSize fallito!
+
+
+ All'avvio, riconnetti alle sessioni precentemente aperte
+
+
+ Aggiorna
+
+
+ File remoto
+
+
+ Rimuovi tutto
+
+
+ Rinomina
+
+
+ Rlogin
+
+
+ Salva
+
+
+ Salva tutto
+
+
+ Vuoi salvare il file delle connessioni corrente prima di caricarne un altro?
+
+
+ Salva le connessioni all'uscita
+
+
+ File Graphics Interchange Format (.gif)|*.gif|File Joint Photographic Experts Group (.jpeg)|*.jpeg|File Joint Photographic Experts Group (.jpg)|*.jpg|File Portable Network Graphics (.png)|*.png
+
+
+ Schermo
+
+
+ Screenshot
+
+
+ Screenshot
+
+
+ Cerca
+
+
+ Invia a...
+
+
+ Get Sessions Background fallito
+
+
+ Kill Session Background fallito
+
+
+ Imposta il nome host come il nome visualizzato durante la creazione o la modifica delle connessioni
+
+
+ Operazione Setting main form text fallita
+
+
+ Impossibile salvare le impostazioni o eliminare l'icona nella barra di sistema!
+
+
+ Mostra suggerimenti descrittivi nell'albero delle connessioni
+
+
+ Mostra il percorso completo del file delle connessioni nel titolo della finestra
+
+
+ Mostra le informazioni di accesso sul nome dei tab
+
+
+ Mostra i protocolli sul nome dei tab
+
+
+ Singolo click sulla connessione per aprirla
+
+
+ Singolo click sulla connessione aperta per passare ad essa
+
+
+ Aspetto
+
+
+ Libero
+
+
+ Disattiva SmartSize
+
+
+ SOCKS 5
+
+
+ Ordina
+
+
+ Ascendente (A-Z)
+
+
+ Discendente (Z-A)
+
+
+ Tasti speciali
+
+
+ Per maggiori informazioni si prega di visualizzare Aiuto -> Per incominciare -> Configurazione SQL
+
+
+ Server SQL
+
+
+ Il controllo aggiornamenti SQL è terminato, c'è un aggiornamento disponibile! Le connessioni verranno aggiornate.
+
+
+ SSH versione 1
+
+
+ SSH versione 2
+
+
+ Trasferimento SSH in background fallito!
+
+
+ Trasferimento completato!
+
+
+ SSH Transfer End (UI.Window.SSHTransfer) fallito!
+
+
+ IP iniziale
+
+
+ Porta iniziale
+
+
+ Avvio/Uscita
+
+
+ Stato
+
+
+ Passa al pannello delle notifiche quando:
+
+
+ Avanzate
+
+
+ Aspetto
+
+
+ Tab e pannelli
+
+
+ Aggiornamenti
+
+
+ Telnet
+
+
+ Il seguente:
+
+
+ Pannello configurazione
+
+
+ Pannello connessioni
+
+
+ Generale
+
+
+ Colore di sfondo del pannello configurazione.
+
+
+ Colore della categoria nel pannello configurazione.
+
+
+ Colore delle linee griglia nel pannello configurazione
+
+
+ Colore di sfondo nell'area aiuto del pannello configurazione.
+
+
+ Colore del testo nell'area aiuto del pannello configurazione.
+
+
+ Colore del testo nel pannello configurazione.
+
+
+ Colore di sfondo nel pannello connessioni.
+
+
+ Colore del testo nel pannello connessioni.
+
+
+ Colore delle linee di alberatura nel pannello connessioni.
+
+
+ Colore di sfondo dei menu.
+
+
+ Colore del testo nei menu.
+
+
+ Colore di sfondo della casella di ricerca.
+
+
+ Colore del testo nella casella di ricerca.
+
+
+ Colore del prompt nella casella di ricerca.
+
+
+ Colore di sfondo delle barre degli strumenti.
+
+
+ Colore del testo nelle barre degli strumenti.
+
+
+ Colore di sfondo della finestra principale.
+
+
+ Colore sfondo pannello configurazione
+
+
+ Colore categoria pannello configurazione
+
+
+ Colore linee griglia pannello configurazione
+
+
+ Colore sfondo aiuto pannello configurazione
+
+
+ Colore testo aiuto pannello configurazione
+
+
+ Colore testo pannello configurazione
+
+
+ Colore sfondo pannello connessioni
+
+
+ Colore testo pannello connessioni
+
+
+ Colore linee alberatura pannello connessioni
+
+
+ Colore sfondo menu
+
+
+ Colore testo menu
+
+
+ Colore sfondo casella ricerca
+
+
+ Colore testo casella ricerca
+
+
+ Colore prompt casella ricerca
+
+
+ Colore sfondo barra strumenti
+
+
+ Colore testo barra strumenti
+
+
+ Colore sfondo finestra
+
+
+ Errore ({0})
+
+
+ Informazione ({0})
+
+
+ Password
+
+
+ Seleziona pannello
+
+
+ Attenzione ({0})
+
+
+ Trasferimento
+
+
+ Trasferimento fallito!
+
+
+ Prova ad integrare
+
+
+ Tipo
+
+
+ UltraVNC Repeater
+
+
+ Porta UltraVNC SingleClick:
+
+
+ Deseleziona le proprietà che non vuoi salvare!
+
+
+ Tema senza nome
+
+
+ mRemoteNG richiede un aggiornamento
+
+
+ mRemoteNG è in grado di connettersi periodicamente al sito web per controllare la presenza di aggiornamenti o comunicati.
+
+
+ Completamento del controllo aggiornamenti fallito!
+
+
+ Controllo aggiornamenti fallito!
+
+
+ L'edizione portable di mRemoteNG attualmente non supporta gli aggiornamenti automatici.
+
+
+ Errore durante l'eliminazione dei file di aggiornamento!
+
+
+ Scaricamento completato!
+mRemoteNG verrà chiuso e l'installazione avrà inizio.
+
+
+ Completamento del download fallito!
+
+
+ Aggiornamento del download fallito!
+
+
+ Ogni {0} giorni
+
+
+ Giornalmente
+
+
+ Mensilmente
+
+
+ Settimanalmente
+
+
+ Errore nell'avvio dell'aggiornamento!
+
+
+ Utilizza nome utente e password differenti
+
+
+ Utilizza soltanto il pannello delle notifiche (nessun messaggio popup)
+
+
+ Utente
+
+
+ Utilizza gli stessi nome utente e password
+
+
+ Utilizza una smart card
+
+
+ Utilizza il server SQL per caricare e salvare le connessioni
+
+
+ Versione
+
+
+ VNC
+
+
+ Disconnessione VNC fallita!
+
+
+ Apertura della connessione fallita!
+
+
+ Aggiornamento dello schermo VNC fallito!
+
+
+ Invio di tasti speciali VNC fallito!
+
+
+ Impostazione gestore eventi VNC fallito!
+
+
+ Impostazione proprietà VNC fallita!
+
+
+ Avvio della chat VNC fallito!
+
+
+ Cambiamento SmartSize VNC fallito!
+
+
+ Cambiamento ViewOnly VNC fallito!
+
+
+ Avvisami se l'autenticazione fallisce
+
+
+ Avvisi
+
+
+ Utilizza la suite DockPanel di [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Scrivi nel file di log (mRemoteNG.log)
+
+
+ Percorso XULrunner:
+
+
+ Sì
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.nb-NO.resx b/mRemoteV1/CS/Language/Language.nb-NO.resx
new file mode 100644
index 000000000..19f4f1344
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.nb-NO.resx
@@ -0,0 +1,2192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Om
+
+
+ Aktiv
+
+
+ Aktivitet
+
+
+ Ny tilkobling
+
+
+ Ny mappe
+
+
+ AddNodeFromXML mislyktes!
+
+
+ AddNodesFromSQL mislyktes!
+
+
+ Tillat bare én instans av programmet (omstart av mRemoteNG påkrevd)
+
+
+ Alltid
+
+
+ Alltid koble til, selv om autentisering feiler
+
+
+ Alltid vis panelvalgdialog når tilkoblinger åpnes
+
+
+ Alltid vis panelfaner
+
+
+ Alltid vis ikon i notisfeltet
+
+
+ Spør meg igjen senere
+
+
+ Tilpass innstillingene nå
+
+
+ Bruk de anbefalte innstillingene
+
+
+ {0} kan automatisk se etter oppdateringer som kan tilby ny funksjonalitet og feilrettinger. Det er anbefalt at du lar {0} se etter oppdateringer ukentlig.
+
+
+ Innstillinger for automatiske oppdateringer
+
+
+ Aspekt
+
+
+ Hent sesjonsinformasjon automatisk
+
+
+ Lagre automatisk hvert:
+
+
+ minutt (0 betyr deaktivert)
+
+
+ Gjeldende versjon
+
+
+ &Bla gjennom...
+
+
+ &Avbryt
+
+
+ Endre
+
+
+ &Lukk
+
+
+ Standard arv
+
+
+ Standardegenskaper
+
+
+ Koble fra
+
+
+ Ikon
+
+
+ &Importer
+
+
+ Arv
+
+
+ Start PuTTY
+
+
+ &Ny
+
+
+ &OK
+
+
+ Egenskaper
+
+
+ &Søk
+
+
+ &Stopp
+
+
+ Test proxy
+
+
+ Du kan ikke importere en vanlig tilkoblingsfil.
+Vennligst bruk Fil - Last inn tilkoblinger for vanlige tilkoblingsfiler!
+
+
+ Kan ikke starte portskanning, feil IP-format!
+
+
+ Utseende
+
+
+ Tilkobling
+
+
+ Legitimasjon
+
+
+ Skjerm
+
+
+ Gateway
+
+
+ Generelt
+
+
+ Diverse
+
+
+ Protokoll
+
+
+ Omdiriger
+
+
+ Alltid vis denne skjermen ved oppstart
+
+
+ Oppdater
+
+
+ Sjekk mislyktes!
+
+
+ Sjekk lyktes!
+
+
+ (RDP) økter-funksjonen krever at du har en registrert kopi av eolwtscom.dll på systemet.
+mRemoteNG leveres med denne komponenten, men vil ikke automatisk registrere det med mindre du kjører installasjonsprogrammet.
+For å registrere det manuelt gjør dette: Åpne Kjør-dialogboksen (Start - Kjør) og skriv inn følgende: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (der c:\Program Files\mRemoteNG\ er banen til din mRemoteNG-installasjon).
+Hvis du fortsatt ikke passerer denne kontrollen eller bruke (RDP) økter-funksjonene i mRemoteNG kan du konsultere mRemoteNG-forumet på http://forum.mremoteng.org/
+
+
+ EOLWTSCOM ble funnet, og synes å være korrekt registrert.
+
+
+ For å bruke Gecko-renderingsmotoren må du ha XULrunner 1.8.1.x installert og stien til installasjonen angitt i Alternativer.
+Du kan laste ned XULrunner 1.8.1.3 herfra: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Når nedlastingen er ferdig, pakk den ut til et passende sted. I mRemoteNG, gå til Verktøy - Alternativer - Avansert og skriv inn korrekt sti i XULrunner-stifeltet.
+Hvis du fremdeles ikke passerer denne kontrollen eller brukre Gecko-renderingsmotoren i mRemoteNG, vennligst konsulter mRemoteNG-forumet på http://forum.mremoteng.org/
+
+
+ XULrunner ble funnet å ser ut til å være korrekt installert.
+
+
+ ICA krever at XenDesktop Online Plugin er installert og at wfica.ocx-biblioteket er registrert. Du kan laste ned klienten herfra: http://www.citrix.com/download/
+Hvis du har XenDesktop Online Pluginen installert og kontrollen fremdeles feiler, kan du forsøke å registrere wfica.ocx manuelt.
+For å gjøre dette, åpne Kjør-dialogboksen (Start - Kjør) og skriv inn følgende: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (der c:\Program Files\Citrix\ICA Client\ er stien til XenDesktop Online Plugin-installasjonen).
+Hvis du fremdeles ikke passerer kontrollen eller bruke ICA i mRemoteNG, vennligst konsulter mRemoteNG-forumet på http://forum.mremoteng.org/
+
+
+ Alle ICA-komponenter ble funnet, og ser ut til å være korrekt registrert.
+Citrix ICA Client Control Version {0}
+
+
+ ikke korrekt installert
+
+
+ SSH-, Telnet-, Rlogin- og RAW-protokollene trenger PuTTY for å fungere. PuTTY kommer med hver mRemoteNG-pakke, og ligger i installasjonsstien.
+Vennligst kontroller at du enten har putty.exe i mRemoteNG-mappen (standard: C:\Program Files\mRemoteNG\) eller at du har angitt en gyldig sti til putty.exe i Alternativer (Verktøy - Alternativer - Avansert - Egendefinert bane til PuTTY)
+
+
+ PuTTY ble funnet og er klar til bruk.
+
+
+ For at RDP skal fungere korrekt må du som et minimum ha Remote Desktop Connection (Terminal Services Client) 6.1 installert. Denne kan lastes ned herfra: http://support.microsoft.com/kb/951616
+Hvis du har RDP 6.1 installert og kontrollen fremdeles feiler, kan du prøve å registrere mstscax.dll manuelt. For å gjøre dette, åpne Kjør-dialogboksen (Start - Kjør) og skriv inn følgende: regsvr32 "c:\windows\system32\mstscax.dll" (der c:\ er systemdisken).
+Hvis du fremdeles har problemer med å få RDP til å fungere, vennligst konsulter mRemoteNG-forumet på http://forum.mremoteng.org/
+
+
+ Alle RDP-komponenter ble funnet og ser ut til å være korrekt registrert.
+Remote Desktop Connection Control Version {0}
+
+
+ VNC krever at VncSharpNG.dll finnes i mappen mRemoteNG er installert i.
+Vennligst kontroller at du har VncSharpNG.dll i installasjonsmappen til mRemoteNG (vanligvis C:\Program Files\mRemoteNG\).
+Hvis du ikke passerer kontrollen eller ikke får brukt VNC i mRemoteNG, vennligst konsulter mRemoteNG-forumet på http://forum.mremoteng.org/
+
+
+ Alle VNC-komponenter ble funnet og ser ut til å være korrekt registrert.
+VncSharpNG Control Version {0}
+
+
+ Forsøk å automatisk koble til på nytt ved frakobling fra server (kun RDP && ICA)
+
+
+ Domene
+
+
+ Ikke vis denne meldingen igjen.
+
+
+ Arv
+
+
+ Passord
+
+
+ Denne proxyserveren krever autentisering
+
+
+ Bruk egendefinert sti til PuTTY:
+
+
+ Koble til på nytt når klar
+
+
+ Bruk proxyserver for tilkobling
+
+
+ Brukernavn
+
+
+ Vent på avslutning
+
+
+ Sjekk igjen
+
+
+ Se etter oppdateringer og kunngjøringer ved oppstart
+
+
+ Sjekk nå
+
+
+ Sjekk for korrekt installasjon av komponenter ved oppstart
+
+
+ Velg panel før tilkobling
+
+
+ Lukkede porter
+
+
+ Slå sammen alle mapper
+
+
+ Argumenter
+
+
+ Visningsnavn
+
+
+ Filnavn
+
+
+ Vertsnavn/IP-adresse
+
+
+ Melding
+
+
+ Brukernavn
+
+
+ Vent på avslutning
+
+
+ Kunne ikke tolke kommandolinjeargumenter!
+
+
+ {0} har oppdaget at Lenovo Auto Scroll-verktøyet kjører på dette systemet. Dette verktøyet er kjent for å forårsake problemer med {0}. Det anbefales at du deaktiverer eller avinstallerer dette programmet.
+
+
+ Kompatibilitetsproblem oppdaget
+
+
+ Komponentkontroll
+
+
+ btnIcon_Click mislyktes!
+
+
+ ShowHideGridItems mislyktes!
+
+
+ IconMenu_Click mislyktes!
+
+
+ Property Grid-objekt mislyktes!
+
+
+ SetHostStatus mislyktes!
+
+
+ pGrid_PopertyValueChanged mislyktes!
+
+
+ Innlasting av Konfigurasjonsgrensesnitt mislyktes!
+
+
+ Ønsker du å avslutte tilkoblingen "{0}"?
+
+
+ Er du sikker på at du ønsker å lukke panelet "{0}"? Alle tilkoblinger den inneholder vil også bli lukket.
+
+
+ Er du sikker på at du ønsker å slette det eksterne verktøyet "{0}"?
+
+
+ Er du sikker på at du ønsker å slette de {0} valgte eksterne verktøyene?
+
+
+ Er du sikker på at du ønsker å slette tilkoblingen "{0}"?
+
+
+ Er du sikker på at du ønsker å slette den tomme mappen "{0}"?
+
+
+ Er du sikker på at du ønsker å slette mappen "{0}"? Alle undermapper eller tilkoblinger den inneholder vil også bli slettet.
+
+
+ Ønsker du å avslutte alle åpne tilkoblinger?
+
+
+ Er du sikker på at du ønsker å tilbakestille alle paneler til standardoppsett?
+
+
+ Koble til
+
+
+ Koble til i fullskjermmodus
+
+
+ Kobler til...
+
+
+ Protokollhendelse tilkoblet
+
+
+ Tilkobling til "{0}" via "{1}" etablert av bruker "{2}" (Beskrivelse: "{3}"; Brukerfelt "{4}")
+
+
+ Tilkobling mislyktes!
+
+
+ Protokollhendelse ErrorOccured
+
+
+ Åpning av tilkobling mislyktes!
+
+
+ Kan ikke åpne forbindelse: Vertsnavn ikke angitt!
+
+
+ RDP-feil!
+Feilkode: {0}
+Feilbeskrivelse: {1}
+
+
+ Tilkoblinger
+
+
+ Kunne ikke angi standardport!
+
+
+ Kunne ikke opprette sikkerhetskopi av tilkoblingsfilen!
+
+
+ Kunne ikke importere tilkoblingsfilen!
+
+
+ Tilkoblingsfilen "{0}" kunne ikke lastes inn!
+
+
+ Tilkoblingsfilen "{0}" kunne ikke lastes inn!
+Starter med ny tilkoblingsfil.
+
+
+ Kunne ikke lagre tilkoblingsfilen!
+
+
+ Kunne ikke lagre tilkoblingsfilen som "{0}"!
+
+
+ Koble til konsolløkt
+
+
+ Koble til (med alternativer)
+
+
+ Tilkobling til {0} via {1} ble avsluttet av bruker {2}.
+
+
+ Tilkobling til {0} via {1} avsluttet av bruker {2}. (Beskrivelse: "{3}"; Brukerfelt: "{4}")
+
+
+ Tilkoblingshendelse avsluttet
+
+
+ Tilkoblingshendelse avsluttet feilet!
+
+
+ Kunne ikke opprette ny tilkoblingsfil!
+
+
+ Fant ikke ToolStrip-kontroll i FilteredPropertyGrid.
+
+
+ Installert versjon
+
+
+ Standardtema
+
+
+ Oppdag
+
+
+ Ikke koble til dersom godkjenning mislykkes
+
+
+ Dobbeltklikk på fanen lukker den
+
+
+ Last ned og installer
+
+
+ Duplikat
+
+
+ Ønsker du å fortsette uten passord?
+
+
+ For tomt brukernavn, passord eller domenefelt, bruk:
+
+
+ 128-biters
+
+
+ 128-biters (kun pålogging)
+
+
+ Grunnleggende
+
+
+ Krypter tilkoblingsfil fullstendig
+
+
+ Siste IP
+
+
+ Siste port
+
+
+ AddExternalToolsToToolBar (frmMain) mislyktes. {0}
+
+
+ AddFolder (UI.Window.Tree) mislyktes. {0}
+
+
+ Databaseversjonen {0} er ikke kompatibel med denne versjonen av {1}.
+
+
+ CloneNode (Tree.Node) mislyktes. {0}
+
+
+ Feilkode {0}.
+
+
+ Tilkoblingslisten kan ikke lagres.
+
+
+ Dekryptering mislyktes. {0}
+
+
+ Kryptering mislyktes. {0}
+
+
+ Innstillingen for Windows-sikkerhet, "Systemkryptografi: Bruk FIPS-kompatible algoritmer til kryptering, nummerering og signering", er aktivert. Denne innstillingen er ikke kompatibel med {0}.
+
+Se Microsoft Support-artikkelen på http://support.microsoft.com/kb/811833 for mer informasjon.
+
+{0} vil bli avsluttet.
+
+
+ Feil
+
+
+ Kan ikke laste inn oppstartstilkoblingsfilen.{0}{0}{2}{0}{3}{0}{0}For å hindre tap av data, avsluttes {1} nå.
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) mislyktes. {0}
+
+
+ Utvid alle mapper
+
+
+ Eksperimentell
+
+
+ Eksporter
+
+
+ Eksporter mRemote/mRemoteNG XML
+
+
+ Ekstern applikasjon
+
+
+ Inkluderer ikoner av [FAMFAMFAM]
+
+
+ Alle filer (*.*)
+
+
+ Programfiler (*.exe)
+
+
+ mRemote CSV-filer (*.csv)
+
+
+ mRemote XML-filer (*.xml)
+
+
+ RDP-filer (*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV-filer (*.csv)
+
+
+ Arve {0}
+
+
+ Beskrivelse av arvet egenskap: {0}
+
+
+ Fri
+
+
+ Fullskjerm
+
+
+ Generelt
+
+
+ Henting av tilkoblingsinformasjon fra SQL mislyktes
+
+
+ Det oppstod en feil under innlasting av tilkoblingsoppføring for "{0}" fra "{1}". {2}
+
+
+ Koble til på nytt automatisk
+
+
+ Tilkobling
+
+
+ Egenskaper for eksterne verktøy
+
+
+ Filer
+
+
+ Vert
+
+
+ HTTP-tilkobling mislyktes!
+
+
+ Kunne ikke opprette ny HTTP-tilkobling!
+
+
+ Endring av HTTP-dokumentflate mislyktes!
+
+
+ Angi HTTP-egenskaper mislyktes!
+
+
+ Kunne ikke opprette ny ICA-tilkobling!
+
+
+ Innlasting av ICA Plugin mislyktes!
+
+
+ ICA SetCredentials mislyktes!
+
+
+ ICA Set Event Handlers mislyktes!
+
+
+ ICA Set Props mislyktes!
+
+
+ ICA Set Resolution mislyktes!
+
+
+ Identifisere hurtigkoblingsfaner ved prefikset "Hurtig:"
+
+
+ Importer fra Active Directory
+
+
+ Import/eksport
+
+
+ Importere mRemote/mRemoteNG XML
+
+
+ Import fra Port Scan
+
+
+ Importer fra .RDP-fil(er)
+
+
+ Inaktiv
+
+
+ Informasjon
+
+
+ mRemoteNG er oppdatert
+
+
+ Tilkobling mislyktes!
+
+
+ Forkasting av Int App-prosess mislyktes!
+
+
+ Int App-fokus mislyktes!
+
+
+ Int App Handle: {0}
+
+
+ Tvungen avslutning av Int App-prosess mislyktes!
+
+
+ Panel Handle: {0}
+
+
+ Int App Resize mislyktes!
+
+
+ --- IntApp-ting ---
+
+
+ Int App-tittel: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Adresse:
+
+
+ Argumenter:
+
+
+ Endringslogg:
+
+
+ Ved lukking av tilkoblinger:
+
+
+ &Koble til:
+
+
+ Visningsnavn
+
+
+ Domene:
+
+
+ Filnavn:
+
+
+ Vertsnavn:
+
+
+ Alternativer:
+
+
+ Passord:
+
+
+ Port:
+
+
+ Portable Edition
+
+
+ Protokoll:
+
+
+ Klikk denne knappen for å konfigurere PuTTY-sesjoner:
+
+
+ Maksimal ventetid for PuTTY og integrerte verktøy:
+
+
+ Utgitt under GNU General Public License (GPL)
+
+
+ sekunder
+
+
+ Velg et panel fra listen under eller klikk Ny for å legge til en ny. Klikk OK for å fortsette.
+
+
+ Serverstatus:
+
+
+ Database:
+
+
+ Database:
+
+
+ Brukernavn:
+
+
+ Bekreft:
+
+
+ Språk
+
+
+ (Oppdag automatisk)
+
+
+ {0} må startes på nytt for at endringer i språkinnstillinger skal tre i kraft.
+
+
+ Innlasting fra SQL mislyktes!
+
+
+ Innlasting fra XML mislyktes!
+
+
+ Lokal fil
+
+
+ Lokal fil eksisterer ikke!
+
+
+ Logg av
+
+
+ Skriving til rapportfil mislyktes!
+
+
+ Kunne ikke lagre rapport til endelig plassering.
+
+
+ Bruker Magic-biblioteket av [Crownwood Software]
+
+
+ Om
+
+
+ Legg til tilkoblingspanel
+
+
+ Kunngjøringer
+
+
+ Se etter oppdateringer
+
+
+ Oppsett
+
+
+ Koble til
+
+
+ Tilkoblingspaneler
+
+
+ Tilkoblinger
+
+
+ Tilkoblinger og oppsett
+
+
+ Kopier
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Slett...
+
+
+ Slett tilkobling...
+
+
+ Slett eksternt verktøy...
+
+
+ Slett mappe...
+
+
+ Koble fra
+
+
+ Donér
+
+
+ Duplikat
+
+
+ Duplisér tilkobling
+
+
+ Kopier mappe
+
+
+ Kopier fane
+
+
+ Avslutt
+
+
+ Eksterne verktøy
+
+
+ Eksterne verktøy-verktøylinje
+
+
+ &Fil
+
+
+ Fullskjerm
+
+
+ Fullskjerm (RDP)
+
+
+ &Hjelp
+
+
+ mRemoteNG-hjelp
+
+
+ Hopp til
+
+
+ Kjør eksternt verktøy
+
+
+ Ny tilkoblingsfil
+
+
+ Nytt eksternt verktøy
+
+
+ Varslinger
+
+
+ Kopier alle
+
+
+ Slett
+
+
+ Slett alle
+
+
+ Åpne tilkoblingsfil...
+
+
+ Alternativer
+
+
+ Lim inn
+
+
+ Portskanning
+
+
+ Hurtigtilkoblingsverktøylinje
+
+
+ Koble til på nytt
+
+
+ Oppdater skjerm (VNC)
+
+
+ Gi nytt navn
+
+
+ Gi nytt navn til tilkobling
+
+
+ Gi nytt navn til mappe
+
+
+ Gi nytt navn til fane
+
+
+ Rapporter en feil
+
+
+ Tilbakestill oppsett
+
+
+ Lagre tilkoblingsfil
+
+
+ Lagre tilkoblingsfilen som...
+
+
+ Skjermbilde
+
+
+ Skjermbildeadminstrator
+
+
+ Send spesialtastekombinasjoner (VNC)
+
+
+ Sesjoner
+
+
+ Sesjoner og skjermbilder
+
+
+ &Vis hjelpetekst
+
+
+ Vis tekst
+
+
+ SmartSize (RDP/VNC)
+
+
+ SSH-filoverføring
+
+
+ Start chat (VNC)
+
+
+ Forum for brukerstøtte
+
+
+ &Verktøy
+
+
+ Overfør fil (SSH)
+
+
+ &Vis
+
+
+ Kun visning (VNC)
+
+
+ Nettsted
+
+
+ Minimer til notisområde
+
+
+ Flytt ned
+
+
+ Flytt opp
+
+
+ Min gjeldende legitimasjon (Windows-påloggingsinformasjon)
+
+
+ Aldri
+
+
+ Ny tilkobling
+
+
+ Ny mappe
+
+
+ Nytt panel
+
+
+ Nytt rotnivå
+
+
+ Ny tittel
+
+
+ Nei
+
+
+ Ingen komprimering
+
+
+ Ingen ekstern applikasjon spesifisert.
+
+
+ Ingen
+
+
+ Ingen
+
+
+ Normal
+
+
+ Ingen SmartSize
+
+
+ Ingen oppdateringer tilgjengelig
+
+
+ Du prøver å laste inn en tilkoblingsfil opprettet i en veldig tidlig versjon av mRemote. Dette kan føre til kjørefeil. Hvis du støter på en slik feil, vennligst opprett en ny tilkoblingsfil!
+
+
+ Åpne ny fane til høyre for aktiv fane
+
+
+ Åpne porter
+
+
+ Tema
+
+
+ &Slett
+
+
+ &Ny
+
+
+ Panelnavn
+
+
+ Passordbeskyttelse
+
+
+ Vennligst fyll inn alle felt
+
+
+ Kunne ikke laste inn PortScan-panelet!
+
+
+ (Disse egenskapene vil bare lagres dersom du velger mRemote/mRemoteNG XML som format for målfilen!)
+
+
+ Angi vertsnavnet eller IP-adressen du ønsker å koble til.
+
+
+ Veksle alle alternativer for arv.
+
+
+ Velg hvilket autentiseringsnivå denne tilkoblingen skal bruke.
+
+
+ Velg hvordan du ønsker å autentisere deg mot VNC-serveren.
+
+
+ Velg om du vil bruke hurtigbufring av punktgrafikk eller ikke.
+
+
+ Velg hvilken fargekvalitet som skal brukes.
+
+
+ Velg kompresjonsverdien som skal brukes.
+
+
+ Skriv inn notater eller en beskrivelse for verten her.
+
+
+ Velg ja hvis den eksterne vertens tema skal vises.
+
+
+ Velg ja hvis den eksterne vertens bakgrunnsbilde skal vises.
+
+
+ Skriv inn domenenavn.
+
+
+ Velg om du vil bruke skrivebordskomposisjon eller ikke.
+
+
+ Velg om du vil bruke skriftutjevning eller ikke.
+
+
+ Velg hvilken tekstkodingsmodus som skal brukes.
+
+
+ Velg krypteringsstyrke for den eksterne verten.
+
+
+ Velg det eksterne verktøyet som skal startes.
+
+
+ Velg et eksternt verktøy som skal startes etter frakobling fra den eksterne verten.
+
+
+ Velg et eksternt verktøy som skal startes før tilkoblingen til den eksterne verten er opprettet.
+
+
+ Velg et ikon som skal vises når man er tilkoblet verten.
+
+
+ Angi MAC-adressen til den eksterne verten dersom du ønsker å bruke denne i et eksternt verktøy.
+
+
+ Dette er navnet som vises i tilkoblingstreet.
+
+
+ Angir panelet tilkoblingen vil åpnes i.
+
+
+ Skriv inn ditt passord.
+
+
+ Angi porten den valgte protokollen lytter på.
+
+
+ Velg protokollen mRemoteNG skal bruke for å koble til verten.
+
+
+ Velg en PuTTY-sesjon som skal brukes ved tilkobling.
+
+
+ Angir navnet på domenet som brukeren oppgir for å koble til RD Gateway-serveren.
+
+
+ Angir vertsnavnet til Remote Desktop Gateway-serveren.
+
+
+ Angir når en server for eksternt skrivebord (ES-Gateway) skal brukes.
+
+
+ Angir om pålogging til gatewayen skal skje med det samme brukernavnet og passordet som tilkoblingen eller ikke.
+
+
+ Angir brukernavnet som brukeren oppgir for å koble til RD Gateway-serveren.
+
+
+ Velg om lokale diskstasjoner skal vises på den eksterne verten.
+
+
+ Velg om tastekombinasjoner (f.eks. Alt-Tab) skal omadresseres til den eksterne verten.
+
+
+ Velg om lokale porter (dvs. com, parallell) skal vises på den eksterne verten.
+
+
+ Velg om lokale skrivere skal vises på den eksterne verten.
+
+
+ Velg om lokale smart-kort skal være tilgjengelig på den eksterne verten.
+
+
+ Velg hvordan ekstern lyd skal omadresseres.
+
+
+ Velg en av de tilgjengelige renderingsmotorene som skal brukes til å vise HTML.
+
+
+ Velg oppløsning eller modus denne tilkoblingen skal åpnes i.
+
+
+ Velg SmartSize-modus som skal brukes.
+
+
+ Koble til konsolløkten på den eksterne verten.
+
+
+ Bruk Credential Security Support Provider (CredSSP) for godkjenning hvis den er tilgjengelig.
+
+
+ Skriv inn informasjon du trenger her.
+
+
+ Skriv inn ditt brukernavn.
+
+
+ Velg Ja hvis du vil opprette en kun-visning-tilkobling til verten.
+
+
+ Angi proxy-adressen som skal brukes.
+
+
+ Skriv inn passordet for autentisering mot proxy.
+
+
+ Angi porten proxy-serveren lytter på.
+
+
+ Hvis du bruker en proxy til å tunnelere VNC-tilkoblinger, velg hvilken type proxy det er.
+
+
+ Skriv inn ditt brukernavn for godkjenning mot proxy.
+
+
+ Vertsnavn/IP-adresse
+
+
+ Alle
+
+
+ Server-godkjenning
+
+
+ Godkjenningsmodus
+
+
+ Hurtigbufring av punktgrafikk
+
+
+ Farger
+
+
+ Komprimering
+
+
+ Beskrivelse
+
+
+ Visningstemaer
+
+
+ Vis bakgrunnbilde
+
+
+ Domene
+
+
+ Skrivebordskomposisjon
+
+
+ Skriftutjevning
+
+
+ Tekstkoding
+
+
+ Krypteringsnivå
+
+
+ Eksternt verktøy
+
+
+ Eksternt verktøy etter
+
+
+ Eksternt verktøy før
+
+
+ Ikon
+
+
+ MAC-adresse
+
+
+ Navn
+
+
+ Panel
+
+
+ Passord
+
+
+ Port
+
+
+ Protokoll
+
+
+ PuTTY-sesjon
+
+
+ Gateway-domene
+
+
+ Gateway-vertsnavn
+
+
+ Gateway for eksternt skrivebord-passord
+
+
+ Bruk gateway
+
+
+ Legitimasjon for gateway
+
+
+ Gateway-brukernavn
+
+
+ Diskstasjoner
+
+
+ Tastekombinasjoner
+
+
+ Porter
+
+
+ Skrivere
+
+
+ Smartkort
+
+
+ Lyder
+
+
+ Renderingsmotor
+
+
+ Oppløsning
+
+
+ SmartSize-modus
+
+
+ Bruk konsolløkt
+
+
+ Bruk CredSSP
+
+
+ Brukerfelt
+
+
+ Brukernavn
+
+
+ Kun visning
+
+
+ Proxy-adresse
+
+
+ Proxy-passord
+
+
+ Proxy-port
+
+
+ Proxy-type
+
+
+ Proxy-brukernavn
+
+
+ Protokollhendelse frakoblet.
+Melding:
+{0}
+
+
+ Protokollhendelse Frakoblet mislyktes.
+{0}
+
+
+ Protokoll å importere
+
+
+ Proxy-test mislyktes!
+
+
+ Proxy-test var vellykket!
+
+
+ Tilkobling mislyktes!
+
+
+ Avslutning av PuTTY-prosessen mislyktes!
+
+
+ Kunne ikke sette fokus!
+
+
+ Henting av PuTTY-sesjoner mislyktes!
+
+
+ Putty Handle: {0}
+
+
+ Avslutning av PuTTY-prosess mislyktes!
+
+
+ Panel Handle: {0}
+
+
+ Endring av størrelse på PuTTY-vindu mislyktes!
+
+
+ PuTTY lagrede sesjoner
+
+
+ PuTTY-innstillinger
+
+
+ Vis dialog for PuTTY-innstillinger mislyktes!
+
+
+ Start av PuTTY mislyktes!
+
+
+ --- PuTTY-ting ---
+
+
+ PuTTY-tittel: {0}
+
+
+ Hurtig: {0}
+
+
+ Hurtigtilkobling
+
+
+ Kunne ikke legge til hurtigtilkobling!
+
+
+ Oppretting av hurtigtilkobling mislyktes
+
+
+ &Advar meg når tilkoblinger lukkes
+
+
+ Advar meg bare ved a&vslutning av mRemoteNG
+
+
+ Advar meg bare ved lukking av &mange tilkoblinger samtidig
+
+
+ &Ikke advar meg når tilkoblinger lukkes
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 farger (24-biters)
+
+
+ 256 farger (8-biters)
+
+
+ 32768 farger (15-biters)
+
+
+ 16777216 farger (32-biters)
+
+
+ 65536 farger (16-biters)
+
+
+ RDP Legg til oppløsning mislyktes!
+
+
+ RDP Legg til oppløsninger mislyktes!
+
+
+ Legg til sesjon mislyktes
+
+
+ Lukk RDP-tilkobling mislyktes!
+
+
+ Åpning av tilkobling mislyktes!
+
+
+ Kunne ikke opprette RDP-kontroll, vennligst kontroller mRemoteNGs systemkrav.
+
+
+ Deaktiver blinkende markør
+
+
+ Deaktiver markørskygge
+
+
+ Deaktiver fullvindudragning
+
+
+ Deaktiver menyanimasjoner
+
+
+ Deaktiver temaer
+
+
+ Deaktiver bakgrunnsbilde
+
+
+ RDP frakoblet!
+
+
+ RDP-frakobling mislyktes, forsøker å lukke!
+
+
+ Intern feilkode 1.
+
+
+ Intern feilkode 2.
+
+
+ Intern feilkode 3. Dette er ikke en gyldig tilstand.
+
+
+ Intern feilkode 4.
+
+
+ Det oppstod en uopprettelig feil under klienttilkoblingen.
+
+
+ GetError mislyktes (FatalErrors)
+
+
+ Det oppstod en ukjent, uopprettelig RDP-feil. Feilkode {0}.
+
+
+ Det oppstod en ut-av-minne-feil.
+
+
+ En ukjent feil har oppstått.
+
+
+ En vindusopprettingsfeil har oppstått.
+
+
+ Feil ved initialisering av Winsock.
+
+
+ Kunne ikke importere RDP-fil!
+
+
+ Tilpass til panel
+
+
+ RDP-fokus mislyktes!
+
+
+ RD Gateway støttes.
+
+
+ RD Gateway støttes ikke!
+
+
+ GetSessions mislyktes!
+
+
+ Åpne RDP-tilkobling mislyktes!
+
+
+ Antall RDP gjentilkoblingsforsøk:
+
+
+ RDP SetAuthenticationLevel mislyktes!
+
+
+ RDP SetUseConsoleSession mislyktes!
+
+
+ Angir konsollvalg for RDC {0}.
+
+
+ RDP SetCredentials mislyktes!
+
+
+ RDP SetEventHandlers mislyktes!
+
+
+ RDP SetRDGateway mislyktes!
+
+
+ RDP SetPerformanceFlags mislyktes!
+
+
+ RDP SetPort mislyktes!
+
+
+ RDP SetProps mislyktes!
+
+
+ RDP Set Redirection mislyktes!
+
+
+ RDP Set Redirect Keys mislyktes!
+
+
+ RDP SetResolution mislyktes!
+
+
+ SmartSize
+
+
+ Hent til denne datamaskinen
+
+
+ Ikke spill av
+
+
+ La være på ekstern datamaskin
+
+
+ RDP ToggleFullscreen mislyktes!
+
+
+ RDP ToggleSmartSize mislyktes!
+
+
+ Koble til tidligere åpnede økter ved oppstart
+
+
+ Oppdater
+
+
+ Ekstern fil
+
+
+ Fjern alle
+
+
+ Omdøp
+
+
+ Rlogin
+
+
+ Lagre
+
+
+ Lagre alle
+
+
+ Vil du lagre den gjeldende tilkoblingsfilen før du laster inn en annen?
+
+
+ Lagre tilkoblinger ved avslutning
+
+
+ Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png
+
+
+ Skjerm
+
+
+ Skjermbilde
+
+
+ Skjermbilder
+
+
+ Søk
+
+
+ Send til...
+
+
+ Get Sessions Background mislyktes
+
+
+ Avslutning av Session Background mislyktes
+
+
+ Angi vertsnavnet som visningsnavn når du oppretter eller gir nytt navn til tilkoblinger
+
+
+ Angivelse av hovedskjematekst mislyktes
+
+
+ Kunne ikke lagre innstillinger eller fjerne SysTray-ikon!
+
+
+ Vis verktøystips i tilkoblingstreet
+
+
+ Vis full sti til tilkoblingsfilen i vindustittel
+
+
+ Vis påloggingsinformasjon i fanenavn
+
+
+ Vis protokoller i fanenavn
+
+
+ Enkeltklikk på tilkoblinger åpner den
+
+
+ Enkeltklikk på en åpnet tilkobling bytter til valgt tilkobling
+
+
+ Aspekt
+
+
+ Fri
+
+
+ Ingen SmartSize
+
+
+ Socks 5
+
+
+ Sorter
+
+
+ Stigende (A-Z)
+
+
+ Synkende (Z-A)
+
+
+ Spesialtastekombinasjoner
+
+
+ Vennligst se Hjelp - Komme i gang - SQL-konfigurasjon for mer informasjon!
+
+
+ SQL Server
+
+
+ SQL Update-sjekken er ferdig, og det er en oppdatering tilgjengelig! Oppdaterer tilkoblinger...
+
+
+ SSH versjon 1
+
+
+ SSH versjon 2
+
+
+ SSH-bakgrunnsoverføring mislyktes!
+
+
+ Overføring er vellykket!
+
+
+ SSH Transfer End (UI.Window.SSHTransfer) mislyktes!
+
+
+ SSH-overføringen mislyktes.
+
+
+ Start IP-adresse
+
+
+ Start-port
+
+
+ Oppstart/Avslutning
+
+
+ Status
+
+
+ Bytte til varslingspanelet på:
+
+
+ Avansert
+
+
+ Utseende
+
+
+ Faner && paneler
+
+
+ Oppdateringer
+
+
+ Telnet
+
+
+ Følgende:
+
+
+ Oppsettspanel
+
+
+ Tilkoblingspanel
+
+
+ Generelt
+
+
+ Bakgrunnsfargen på oppsettspanelet.
+
+
+ Fargen på kategoritekst i oppsettspanelet.
+
+
+ Fargen på linjene i rutenettet i oppsettspanelet
+
+
+ Bakgrunnsfargen på hjelp-området i oppsettspanelet.
+
+
+ Fargen på teksten i hjelp-området i oppsettspanelet.
+
+
+ Fargen på teksten i oppsettspanelet.
+
+
+ Bakgrunnsfargen på tilkoblingspanelet.
+
+
+ Fargen på teksten i tilkoblingspanelet.
+
+
+ Fargen på trelinjene i tilkoblingspanelet.
+
+
+ Bakgrunnsfargen på menyene.
+
+
+ Fargen på teksten i menyene.
+
+
+ Bakgrunnsfargen på søkeboksen.
+
+
+ Fargen på teksten i søkeboksen.
+
+
+ Fargen på ledeteksten i søkeboksen.
+
+
+ Bakgrunnsfargen på verktøylinjene.
+
+
+ Fargen på teksten i verktøylinjene.
+
+
+ Bakgrunnsfarge i hovedvinduet.
+
+
+ Bakgrunnsfarge for oppsettspanelet
+
+
+ Tekstfarge for oppsettspanel-kategori
+
+
+ Rutenettfarge for oppsettspanelet
+
+
+ Bakgrunnsfarge for oppsettspanel-hjelp
+
+
+ Tekstfarge for oppsettspanel-hjelp
+
+
+ Tekstfarge for oppsettspanelet
+
+
+ Bakgrunnsfarge for tilkoblingspanelet
+
+
+ Tekstfarge for tilkoblingspanelet
+
+
+ Farge på trelinjene i tilkoblingspanelet
+
+
+ Bakgrunnsfarge på menyene
+
+
+ Tekstfarge for menytekst
+
+
+ Bakgrunnsfarge for søkeboksen
+
+
+ Tekstfarge for søkeboksen
+
+
+ Tekstfarge for spørsmål fra søkeboksen
+
+
+ Bakgrunnsfarge for verktøylinjen
+
+
+ Tekstfarge for verktøylinjen
+
+
+ Bakgrunnsfarge for vinduet
+
+
+ Feil ({0})
+
+
+ Informasjon ({0})
+
+
+ Passord
+
+
+ Velg panel
+
+
+ Advarsel ({0})
+
+
+ Overfør
+
+
+ Overføringen mislyktes!
+
+
+ Prøv å integrere
+
+
+ Type
+
+
+ Ultra VNC Repeater
+
+
+ UltraVNC SingleClick port:
+
+
+ Fjern avkryssingen for egenskapene du ikke ønsker å lagre!
+
+
+ Tema uten navn
+
+
+ mRemoteNG krever en oppdatering
+
+
+ mRemoteNG kan med jevne mellomrom koble til mRemoteNG-webområdet for å se etter oppdateringer og produktkunngjøringer.
+
+
+ Fullføring av sjekk for oppdatering mislyktes!
+
+
+ Sjekk for oppdatering mislyktes!
+
+
+ mRemoteNG Portable Edition støtter for øyeblikket ikke automatiske oppdateringer.
+
+
+ Feil ved sletting av oppdateringsfilen!
+
+
+ Nedlastingen er fullført!
+mRemoteNG vil nå avslutte og starte installasjonen.
+
+
+ Nedlasting fullført mislyktes!
+
+
+ Last ned oppdatering mislyktes!
+
+
+ Hver {0} dag
+
+
+ Daglig
+
+
+ Månedlig
+
+
+ Ukentlig
+
+
+ Feil ved start av oppdatering!
+
+
+ Bruk et annet brukernavn og/eller passord
+
+
+ Bruk bare varslingspanelet (ingen popup-meldingsbokser)
+
+
+ Bruker
+
+
+ Bruk samme brukernavn og passord
+
+
+ Bruk et smartkort
+
+
+ Bruk SQL Server for å laste inn && lagre tilkoblinger
+
+
+ Versjon
+
+
+ VNC
+
+
+ VNC-frakobling mislyktes!
+
+
+ Åpne tilkobling mislyktes!
+
+
+ Oppfrisking av skjermen i VNC mislyktes!
+
+
+ VNC SendSpecialKeys mislyktes!
+
+
+ VNC Set Event behandlingsrutiner mislyktes!
+
+
+ VNC Set Props-handling mislyktes!
+
+
+ VNC Start Chat mislyktes!
+
+
+ VNC Vis/Skjul SmartSize mislyktes!
+
+
+ VNC Vis/Skjul ViewOnly mislyktes!
+
+
+ Advar meg hvis autentisering mislykkes
+
+
+ Advarsler
+
+
+ Bruker DockPanel Suite av [Weifen Luo]
+
+
+ Skriv loggfil (mRemoteNG.log)
+
+
+ XULrunner filsti:
+
+
+ Ja
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.nl.resx b/mRemoteV1/CS/Language/Language.nl.resx
new file mode 100644
index 000000000..5a79187e8
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.nl.resx
@@ -0,0 +1,2193 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Over
+
+
+ Actief
+
+
+ Activiteit
+
+
+ Nieuwe Connectie
+
+
+ Nieuwe map
+
+
+ AddNodeFromXML mislukt!
+
+
+ Knooppunten toevoegen van XML mislukt!
+
+
+ Laat slechts één exemplaar van de applicatie toe (mRemoteNG herstart vereist)
+
+
+ Altijd
+
+
+ Altijd verbinding maken, zelfs als verificatie mislukt
+
+
+ Altijd Paneel dialoogvenster tonen bij het openen van verbindingen
+
+
+ Altijd tabbladen tonen
+
+
+ Altijd het icoon in het systeemvak tonen
+
+
+ Later opnieuw vragen
+
+
+ Pas nu de instellingen aan
+
+
+ Gebruik de aanbevolen instellingen
+
+
+ {0} kan automatisch controleren op updates die kunnen zorgen voor nieuwe functionaliteit en bugfixes. Het is aanbevolen dat u {0} toestaat om wekelijks te controleren voor updates.
+
+
+ Automatisch bijwerken instellingen
+
+
+ Verhouding
+
+
+ Automatisch ophalen sessie informatie
+
+
+ Automatisch opslaan elke:
+
+
+ Minuten (0 betekent uitgeschakeld)
+
+
+ Huidige Versie
+
+
+ &Bladeren...
+
+
+ &Annuleren
+
+
+ Wijzig
+
+
+ &Sluiten
+
+
+ Standaard Successierechten
+
+
+ Standaard Eigenschappen
+
+
+ Verbreek verbinding
+
+
+ Icoon
+
+
+ &Importeer
+
+
+ Successierecht
+
+
+ PuTTY Starten
+
+
+ &Nieuw
+
+
+ &OK
+
+
+ Eigenschapen
+
+
+ &Scan
+
+
+ &Stop
+
+
+ Test Proxy
+
+
+ U kunt geen normale connectie bestand importeren.
+Gebruik dan Bestand - Laad Connecties voor normale connectie bestanden!
+
+
+ Kan Poort Scan niet starten, onjuist IP formaat!
+
+
+ Uiterlijk
+
+
+ Connectie
+
+
+ Kenmerken
+
+
+ Scherm
+
+
+ Gateway
+
+
+ Algemeen
+
+
+ Diversen
+
+
+ Protocol
+
+
+ Verwijzing
+
+
+ Altijd dit scherm laten zien bij opstarten
+
+
+ Vernieuwen
+
+
+ Controle mislukt!
+
+
+ Controle geslaagd!
+
+
+ De (RDP) Sessies optie vereist dat u een geregistreerde versie van eolwtscom.dll op uw systeem heeft.
+mRemoteNG neemt dit onderdeel automatisch mee bij instalatie, maar zal niet automatisch registreren al u handmatig heeft geïnstalleerd, tenzij u het installatieprogramma opnieuw uitvoert.
+Om handmatig te registreren : Open het dialoogvenster Uitvoeren (Start - Uitvoeren) en typ het volgende: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (Waar c:\Program Files\mRemoteNG\ het pad is naar uw mRemoteNG installatie).
+Als u nog steeds niet in staat bent om de langs check te komen gebruik dan ICA in mRemoteNG of raadpleeg mRemoteNG Forum op http://forum.mremoteng.org/
+
+
+ EOLWTSCOM werd gevonden en lijkt correct te zijn geïnstalleerd.
+
+
+ Voor het gebruik van de Gecko Rendering Engine heb je XULrunner 1.8.1.x nodig en correcte pad naar de installatiemap welke onder Opties kunnen worden ingesteld.
+U kunt XULrunner 1.8.1.3 vanaf deze locatie downloaden: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Wanneer de download van het pakket is voltooid kunt u deze uitpakken naar een willekeurige locatie. Ga daarna vervolgens in mRemoteNG naar Extra - Opties - Geavanceerd en voer het juiste pad in naar de uitgepakte XULrunner bestanden.
+Als u nog steeds niet in staat bent om de langs check te komen gebruik dan de Gecko Engine in mRemoteNG of raadpleeg mRemoteNG Forum op http://forum.mremoteng.org/
+
+
+ XULrunner werd gevonden en lijkt correct te zijn geïnstalleerd.
+
+
+ ICA vereist dat de XenDesktop Online Plugin is geïnstalleerd is en dat de wfica.ocx bibliotheek is geregistreerd. U kunt de cliënt van deze locatie downloaden: http://www.citrix.com/download/
+Als u de XenDesktop Online Plugin heeft geïnstalleerd en de check nog niet lukt, probeer dan om handmatig wfica.ocx te registreren
+Om dit uit te voeren opent u het dialoogvenster Uitvoeren (Start - Uitvoeren) en typ het volgende: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (Waarbij c:\Program Files\Citrix\ICA Client\ het pad is naar uw XenDesktop Online Plugin installatie).
+Als u nog steeds niet in staat bent om de langs check te komen gebruik dan ICA in mRemoteNG of raadpleeg mRemoteNG Forum op http://forum.mremoteng.org/
+
+
+ Alle ICA componenten werden gevonden en lijken correct te zijn geregistreerd.
+Citrix ICA Versie {0}
+
+
+ Niet correct geïnstalleerd
+
+
+ De SSH, Telnet, Rlogin en RAW protocollen zijn nodig PuTTY om te laten functioneren. PuTTY wordt standaard geleverd bij de mRemoteNG installatie en bevind zich in het installatiepad.
+Zorg ervoor dat u ofwel de Putty.exe in uw mRemoteNG directory staat(standaard: c:\Program Files\mRemoteNG\) of een geldig pad heeft opgegeven naar het PuTTY programmabestand onder Opties (Extra - Opties - Geavanceerd - Aangepast PuTTY pad)
+
+
+ Het programmabestand PuTTY werd gevonden en is klaar voor gebruik
+
+
+ Om RDP goed te laten werken moet je minimaal Verbinding met extern bureaublad (Terminal Services Client) 6.1 geïnstalleerd te hebben. U kunt het hier downloaden: http://support.microsoft.com/kb/951616
+Als u RDP 6.1 heeft geïnstalleerd en de check nog niet lukt, probeer dan om handmatig mstscax.dll te registreren. Om dit uit te voeren opent u het dialoogvenster Uitvoeren (Start - Uitvoeren) en typ het volgende: regsvr32 "c:\windows\system32\mstscax.dll" (Waarbij c: \ je systeem schijf is).
+Als u nog steeds niet in staat bent om de langs check te komen voor RDP raadpleeg mRemoteNG Forum op http://forum.mremoteng.org/
+
+
+ Alle RDP componenten werden gevonden en lijken correct te zijn geregistreerd.
+Verbinding met extern bureaublad Versie {0}
+
+
+ VNC vereist dat VncSharpNG.dll in de mRemoteNG installatiemap is geplaatst.
+Zorg ervoor dat u VncSharpNG.dll bestand in de mRemoteNG installatiemap wordt geplaatst (standaard C:\Program Files\mRemoteNG\).
+Als u nog steeds niet in staat bent om de langs check te komen gebruik dan VNC in mRemoteNG of raadpleeg mRemoteNG Forum op http://forum.mremoteng.org/
+
+
+ Alle VNC componenten werden gevonden en lijken correct te zijn geregistreerd.
+VncSharpNG Versie {0}
+
+
+ Automatisch proberen opnieuw te verbinden wanneer de verbinding is verbroken van de server (RDP && ICA Alleen)
+
+
+ Domein
+
+
+ Toon dit bericht niet opnieuw.
+
+
+ Successierecht
+
+
+ Wachtwoord
+
+
+ Deze proxy server vereist authenticatie
+
+
+ Gebruik aangepaste PuTTY pad:
+
+
+ Opnieuw verbinden zodra gereed
+
+
+ Gebruik een proxy server om verbinding te maken
+
+
+ Gebruikersnaam
+
+
+ Wachten Voor Afsluiten
+
+
+ Controleer opnieuw
+
+
+ Controleren op updates en aankondigingen bij het opstarten
+
+
+ Controleer nu
+
+
+ Controleer de juiste installatie van onderdelen bij het opstarten
+
+
+ Sluit paneel voordat er verbinding wordt gemaakt
+
+
+ Gesloten Poorten
+
+
+ Klap alle mappen in
+
+
+ Argumenten
+
+
+ Weergave naam
+
+
+ Bestandsnaam
+
+
+ Hostnaam/IP
+
+
+ Bericht
+
+
+ Gebruikersnaam
+
+
+ Wachten Voor Afsluiten
+
+
+ Kan opdrachtprompt argumenten niet parsen!
+
+
+ {0} heeft de Lenovo Auto Scroll Utility op het systeem ontdekt. Deze utility staat bekend om problemen met {0}. Het wordt aangeraden om het uit te schakelen of te deïnstalleren.
+
+
+ Compatibiliteits probleem ontdekt
+
+
+ Controle Componenten
+
+
+ btnIcon_Click mislukt!
+
+
+ ShowHideGridItems mislukt!
+
+
+ IconMenu_Click mislukt!
+
+
+ Eigenschap Grid object mislukt!
+
+
+ Instellen Host Status mislukt!
+
+
+ pGrid_PopertyValueChanged mislukt!
+
+
+ Configuratie UI laden mislukt!
+
+
+ Wilt u de verbinding sluiten, "{0}"?
+
+
+ Weet u zeker dat u het paneel wilt sluiten, "{0}"? Alle connecties zullen dan ook worden gesloten.
+
+
+ Weet u het zeker dat u de geselecteerde externe applicatie wilt verwijderen, "{0}"?
+
+
+ Weet u het zeker dat u de {0} geselecteerde externe applicaties wilt verwijderen?
+
+
+ Weet u het zeker dat u de connectie wilt verwijderen, "{0}"?
+
+
+ Weet u het zeker dat u de lege map wilt verwijderen, "{0}"?
+
+
+ Weet u het zeker dat u de map wilt verwijderen, "{0}"? Alle mappen of connecties daaronder zullen ook worden verwijderd.
+
+
+ Wilt u alle geopende verbindingen sluiten?
+
+
+ Weet u het zeker dat u de panelen weer op hun standaard lay-out wilt terugzetten?
+
+
+ Verbind
+
+
+ Verbinden in volledig scherm modus
+
+
+ Bezig met verbinding maken...
+
+
+ Protocol Gebeurtenis Verbonden
+
+
+ Verbinding naar "{0}" via "{1}" tot stand gebracht door gebruiker "{2}" (Omschrijving: "{3}"; Gebruiker Veld: "{4}")
+
+
+ Connectie mislukt!
+
+
+ Protocol Gebeurtenis Fout Opgetreden
+
+
+ Openen van verbinding mislukt!
+
+
+ Kan verbinding niet openen: Geen hostnaam opgegeven!
+
+
+ RDP Foutmelding!
+Fout Code: {0}
+Foutomschrijving: {1}
+
+
+ Connecties
+
+
+ Kan geen standaard poort instellen!
+
+
+ Kan geen back-up maken van Connectie bestand!
+
+
+ Kan Connectie bestand niet importeren!
+
+
+ Connectie bestand "{0}" kon niet worden geladen!
+
+
+ Connectie bestand "{0}" kon niet worden geladen!
+Beginnen met nieuwe Connectie bestand.
+
+
+ Kan connectie bestand niet opslaan!
+
+
+ Kan connectie bestand niet opslaan als "{0}"!
+
+
+ Verbinding maken met console sessie
+
+
+ Verbinden (met opties)
+
+
+ Verbinding naar {0} via {1} gesloten door gebruiker {2}.
+
+
+ Verbinding naar {0} via {1} gesloten door gebruiker {2}. (Omschrijving: "{3}"; Gebruiker Veld: "{4}")
+
+
+ Connectie gebeurtenis gesloten
+
+
+ Connectie gebeurtenis gesloten mislukt!
+
+
+ Kon geen nieuwe connectie bestand aanmaken!
+
+
+ Kan geen ToolStrip vinden in FilteredPropertyGrid.
+
+
+ Geïnstalleerde versie
+
+
+ Standaard thema
+
+
+ Detecteer
+
+
+ Geen verbinding maken als verificatie mislukt
+
+
+ Dubbel klik op het tabblad om te sluiten
+
+
+ Downloaden en installeren
+
+
+ Duplicaat
+
+
+ Wilt u doorgaan met zonder wachtwoord op te geven?
+
+
+ Voor lege gebruikersnaam, wachtwoord of domein velden gebruiken:
+
+
+ 128-bit
+
+
+ 128-bit (aanmelding alleen)
+
+
+ Basis
+
+
+ Volledig versleutelen connection bestand
+
+
+ Eind IP
+
+
+ Eind Poort
+
+
+ AddExternalToolsToToolBar (frmMain) is mislukt. {0}
+
+
+ Map toevoegen (UI.Window.Tree) is mislukt. {0}
+
+
+ De database versie {0} is niet compatibel met deze versie van {1}.
+
+
+ Kloon Node (Tree.Node) is mislukt. {0}
+
+
+ Fout code {0}.
+
+
+ De connectie lijst kan niet worden opgeslagen..
+
+
+ Decryptie is mislukt. {0}
+
+
+ Encryptie is mislukt. {0}
+
+
+ De beveiligingsinstelling voor Windows, "Systeemcryptografie: gebruik FIPS-compatibele algoritmes voor codering, hashing en ondertekening", is ingeschakeld. Deze instelling is niet compatibel met {0}.
+
+Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor meer informatie.
+
+{0} wordt nu gesloten.
+
+
+ Foutmeldingen
+
+
+ Het verbindingsopstartbestand kon niet worden geladen. {0}{0}{2}{0}{3}{0}{0} Om dataverlies te voorkomen zal {1} nu worden afgesloten.
+
+
+ Controleer Database Versie (Config.Connections.Save) is mislukt. {0}
+
+
+ Vouw alle mappen uit
+
+
+ Experimenteel
+
+
+ Exporteer
+
+
+ Exporteer mRemote/mRemoteNG XML
+
+
+ Externe Applicatie
+
+
+ Inclusief iconen door [FAMFAMFAM]
+
+
+ Alle Bestanden(*.*)
+
+
+ Applicatie Bestanden (*.exe)
+
+
+ mRemote CSV Bestanden (*.csv)
+
+
+ mRemote XML Bestanden (*.xml)
+
+
+ RDP Bestanden (*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV Bestanden (*.csv)
+
+
+ Erven {0}
+
+
+ Omschrijving van de erfelijke eigenschap: {0}
+
+
+ Gratis
+
+
+ Volledig Scherm
+
+
+ Algemeen
+
+
+ Ophalen Connectie Informatie van SQL mislukt
+
+
+ Een fout is opgetreden tijdens het laden van de verbinding voor "{0}" van "{1}". {2}
+
+
+ Automatisch opnieuw verbinden
+
+
+ Verbinding
+
+
+ Externe Applicatie Eigenschappen
+
+
+ Bestanden
+
+
+ Host
+
+
+ HTTP verbinding mislukt!
+
+
+ Kon geen nieuwe HTTP verbinding aanmaken!
+
+
+ Verandering van HTTP document tegel niet gelukt!
+
+
+ Instellen HTTP Eigenschappen mislukt!
+
+
+ Kan geen nieuwe ICA Connectie aanmaken!
+
+
+ Laden ICA Plugin mislukt!
+
+
+ ICA instellen kenmerken mislukt!
+
+
+ ICA Instellen gebeurtenis handeling mislukt!
+
+
+ ICA Instellen Eigenschappen mislukt!
+
+
+ ICA Instellen Resolutie mislukt!
+
+
+ Vindt de Snel aansluit tabs met het voorzetsel "Quick"
+
+
+ Importeer van Active Directory
+
+
+ Importeer/Exporteer
+
+
+ Importeer mRemote/mRemoteNG XML
+
+
+ Importeer van Poort Scan
+
+
+ Importeer van .RDP bestand(en)
+
+
+ Inactief
+
+
+ Informatie
+
+
+ mRemoteNG is voorzien van de meest actuele versie
+
+
+ Verbinding mislukt!
+
+
+ Sluiten Interne Applicatie mislukt!
+
+
+ Interne Applicatie Focus mislukt!
+
+
+ Interne Applicatie Handeling: {0}
+
+
+ Beëindigen Interne Applicatie Proces mislukt!
+
+
+ Paneel Handeling: {0}
+
+
+ Interne Applicatie Formaat Wijzigen mislukt!
+
+
+ --- Interne Applicatie Spulen ---
+
+
+ Interne Applicatie naam: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Adres:
+
+
+ Argumenten:
+
+
+ Veranderingen:
+
+
+ Bij het sluiten van connecties:
+
+
+ &Verbind:
+
+
+ Weergavenaam
+
+
+ Domein:
+
+
+ Bestandsnaam:
+
+
+ Hostnaam:
+
+
+ Opties:
+
+
+ Wachtwoord:
+
+
+ Poort:
+
+
+ Mobiele Editie
+
+
+ Protocol:
+
+
+ Om PuTTY Sessies te configureren klik op deze knop:
+
+
+ Max. PuTTY && Geïntegreerde Ext. Applicatie wachttijd:
+
+
+ Vrijgegeven onder de GNU General Public License (GPL)
+
+
+ seconden
+
+
+ Selecteer een paneel uit de onderstaande lijst of klik op Nieuw om een nieuwe toe te voegen. Klik op OK om verder te gaan.
+
+
+ Server Status:
+
+
+ Database:
+
+
+ Database:
+
+
+ Gebruikersnaam:
+
+
+ Verifiëren:
+
+
+ Taal
+
+
+ (Automatisch detecteren)
+
+
+ {0} moet opnieuw worden opgestart voordat de wijzigingen van de taal actief zullen worden.
+
+
+ Laden van SQL mislukt!
+
+
+ Laden van XML mislukt!
+
+
+ Lokaal bestand
+
+
+ Lokaal bestand bestaat niet!
+
+
+ Afmelden
+
+
+ Schrijven naar log bestand mislukt!
+
+
+ Kon log bestand niet opslaan naar definitieve locatie.
+
+
+ Maakt gebruik van de Magic bibliotheek door [Crownwood Software]
+
+
+ Over
+
+
+ Voeg Connectie Paneel toe
+
+
+ Aankondigingen
+
+
+ Controleer voor beschikbare Updates
+
+
+ Configuratie
+
+
+ Verbinden
+
+
+ Connectie Panelen
+
+
+ Verbindingen
+
+
+ Verbindingen en Configuratie
+
+
+ Kopiëren
+
+
+ Ctrl-Alt-Del
+
+
+ CTRL-Esc
+
+
+ Verwijder...
+
+
+ Verwijder Connectie...
+
+
+ Verwijder Externe Applicatie...
+
+
+ Verwijder Map...
+
+
+ Verbreek verbinding
+
+
+ Doneer
+
+
+ Dupliceer
+
+
+ Dupliceer Connectie
+
+
+ Dupliceer Map
+
+
+ Dupliceer Tab
+
+
+ Suiten
+
+
+ Externe Applicaties
+
+
+ Externe Applicaties menubalk
+
+
+ &Bestand
+
+
+ Volledig Scherm
+
+
+ Volledig Scherm (RDP)
+
+
+ &Help
+
+
+ mRemoteNG Help
+
+
+ Ga naar
+
+
+ Start Externe Applicatie
+
+
+ Nieuwe Connectie Bestand
+
+
+ Nieuwe Externe Applicatie
+
+
+ Notificaties
+
+
+ Kopieër alles
+
+
+ Verwijder
+
+
+ Verwijder alles
+
+
+ Open Connectie Bestand...
+
+
+ Opties
+
+
+ Plakken
+
+
+ Poort Scan
+
+
+ Quick Connect menubalk
+
+
+ Opnieuw verbinden
+
+
+ Vernieuw Scherm (VNC)
+
+
+ Hernoem
+
+
+ Hernoem Connectie
+
+
+ Naam map wijzigen
+
+
+ Hernoem Tab
+
+
+ Meld een bug
+
+
+ Herstel lay-out
+
+
+ Opslaan Connectie bestand
+
+
+ Opslaan Connectie bestand Als...
+
+
+ Schermafbeelding
+
+
+ Screenshot beheerder
+
+
+ Stuur Speciale toetsencombinatie (VNC)
+
+
+ Sessies
+
+
+ Sessies en Screenshots
+
+
+ &Laat hulp zien
+
+
+ Toon tekst
+
+
+ SmartSize (RDP/VNC)
+
+
+ SSH Bestandsoverdracht
+
+
+ Start Chat (VNC)
+
+
+ Ondersteunings Forum
+
+
+ &Extra
+
+
+ Bestandsoverdracht (SSH)
+
+
+ &Beeld
+
+
+ Alleen bekijken (VNC)
+
+
+ Website
+
+
+ Minimaliseer naar het systeemvak
+
+
+ Omlaag
+
+
+ Omhoog
+
+
+ Mijn huidige gegevens (Windows login-informatie)
+
+
+ Nooit
+
+
+ Nieuwe Connectie
+
+
+ Nieuwe Map
+
+
+ Nieuw Paneel
+
+
+ Nieuwe Root
+
+
+ Naamloos
+
+
+ Nee
+
+
+ Geen Compressie
+
+
+ Geen externe applicatie opgegeven.
+
+
+ Geen
+
+
+ Geen
+
+
+ Normaal
+
+
+ Geen SmartSize
+
+
+ Geen update beschikbaar
+
+
+ U probeert een verbindings bestand te openen dat is gemaakt met behulp van een zeer vroege versie van mRemote dit kan resulteren in een vastlopende applicatie.
+Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!
+
+
+ Open een nieuw tabblad aan de rechterkant van het geselecteerde tabblad
+
+
+ Open Poorten
+
+
+ Thema
+
+
+ &Verwijder
+
+
+ &Nieuw
+
+
+ Paneel Naam
+
+
+ Beveiligen met een wachtwoord
+
+
+ Vul alstublieft alle velden in
+
+
+ Poortscan paneel kon niet worden geladen
+
+
+ (Deze eigenschappen worden alleen opgeslagen als u mRemote/mRemoteNG XML als output bestand formaat selecteert!)
+
+
+ Geef de hostnaam of IP adres op waarmee u verbinding wilt maken
+
+
+ Schakelen alle successierechten opties.
+
+
+ Selecteer welke authenticatie niveau deze verbinding moet gebruiken.
+
+
+ Selecteer hoe u wilt authenticeren naar de VNC-server.
+
+
+ Geef aan of u bitmap caching wel of niet wil gebruiken.
+
+
+ Selecteer de kleurkwaliteit welke moet worden gebruikt.
+
+
+ Selecteer de compressie waarde welke moet worden gebruikt.
+
+
+ Zet hier uw notities of een omschrijving van de desbetreffende host
+
+
+ Selecteer of het Bureaubladachtergrond wel of niet moet worden gebruikt.
+
+
+ Selecteer of het Bureaubladachtergrond wel of niet moet worden gebruikt.
+
+
+ Voer de domeinnaam in.
+
+
+ Bureaubladsamenstellingen wel of niet inschakelen
+
+
+ Lettertypen wel of niet vloeiend maken
+
+
+ Selecteer de codering modus welke moet worden gebruikt.
+
+
+ Selecteer de codering sterkte van de externe host.
+
+
+ Selecteer een externe applicatie welke gestart moet worden.
+
+
+ Selecteer een externe applicatie welke gestart moet worden nadat de verbinding met de externe host is verbroken
+
+
+ Selecteer een externe applicatie welke gestart moet worden voordat de verbinding met de externe host tot stand word gebracht.
+
+
+ Kies een pictogram dat wordt weergegeven wanneer verbinding wordt gemaakt met de host.
+
+
+ Voer het MAC-adres van de externe host in, indien u wenst te gebruiken in een externe applicatie.
+
+
+ Dit is de naam die wordt weergegeven in de opgeslagen verbindingen
+
+
+ Stel het paneel in waarin de verbinding wordt geopend.
+
+
+ Voer uw wachtwoord in.
+
+
+ Voer de poortnummer in waar het geselecteerde protocol op luistert.
+
+
+ Kies het protocol dat mRemoteNG moet gebruiken om verbinding te maken met de host.
+
+
+ Selecteer een PuTTY sessie welke wordt gebruikt bij het verbinden.
+
+
+ Hiermee geeft u de domeinnaam op die een gebruiker geeft om verbinding te maken naar de RD-gateway-server.
+
+
+ Hiermee geeft u de hostnaam van de Remote Desktop-gatewayserver op.
+
+
+ Specificeert wanneer een Remote Desktop Gateway (RD-gateway-server) gebruikt moet worden.
+
+
+ Geeft aan of niet aan te melden bij de gateway met dezelfde gebruikersnaam en wachtwoord van de aansluiting.
+
+
+ Hiermee geeft u de gebruikersnaam op waarmee een gebruiker verbinding kan maken met de RD-gateway-server.
+
+
+ Selecteer of lokale schijfstations op de externe host moeten worden weergegeven.
+
+
+ Selecteer of toetscombinaties (b.v. Alt-Tab) moeten worden doorgestuurd naar de externe host.
+
+
+ Selecteer of lokale poorten (v.b. com, parallel) dienen te worden getoond op de externe host.
+
+
+ Selecteer of lokale printers getoond moeten worden op de externe host.
+
+
+ Selecteer of lokale smartcards beschikbaar moeten zijn op de externe host.
+
+
+ Selecteer hoe externe geluiden moeten worden doorgestuurd.
+
+
+ Selecteer een van de beschikbare rendering engines die zullen worden gebruikt om de HTML-weergave weer te geven.
+
+
+ Kies de resolutie of de modus waarin deze verbinding zal worden opgezet
+
+
+ Selecteer de SmartSize modus welke moet worden gebruikt.
+
+
+ Verbinding maken met de console sessie van de remote host.
+
+
+ Gebruik, indien beschikbaar, de Credential Security Support Provider (CredSSP) voor authenticatie.
+
+
+ Voel je vrij om alle informatie die u nodig heeft hier in te voeren.
+
+
+ Voer uw gebruikersnaam in.
+
+
+ Als je een alleen kijken connectie wilt opzetten naar de desbetreffende host selecteer dan ja.
+
+
+ Voer het Proxy adres in welke wordt gebruikt.
+
+
+ Voer uw wachtwoord in voor authenticatie van de proxy server.
+
+
+ Voer de poortnummer van de proxy server in waarop deze luistert.
+
+
+ Indien er gebruik van een proxy server wordt gemaakt om VNC connecties te tunnelen selecteer dan welke type.
+
+
+ Voer uw gebruikersnaam in voor authenticatie van de proxy server.
+
+
+ Hostnaam/IP
+
+
+ Alle
+
+
+ Server Authenticatie
+
+
+ Authenticatie Modus
+
+
+ Cache Bitmapafbeeldingen
+
+
+ Kleuren
+
+
+ Compressie
+
+
+ Omschrijving
+
+
+ Thema's weergeven
+
+
+ Bureaubladachtergrond
+
+
+ Domein
+
+
+ Samenstelling bureaublad
+
+
+ Lettertype vloeiend maken
+
+
+ Codering
+
+
+ Coderingsniveau
+
+
+ Externe Applicatie
+
+
+ Externe Applicatie Na
+
+
+ Externe Applicatie voordat
+
+
+ Icoon
+
+
+ MAC Adres
+
+
+ Naam
+
+
+ Paneel
+
+
+ Wachtwoord
+
+
+ Poort
+
+
+ Protocol
+
+
+ PuTTY Sessie
+
+
+ Gateway Domein
+
+
+ Gateway Hostnaam
+
+
+ Extern Bureaublad Gateway Wachtwoord
+
+
+ Gebruik Gateway
+
+
+ Gateway Gegevens
+
+
+ Gateway Gebruikersnaam
+
+
+ Harde Schijven
+
+
+ Toetsencombinaties
+
+
+ Poorten
+
+
+ Printers
+
+
+ Smartcards
+
+
+ Geluiden
+
+
+ Rendering Engine
+
+
+ Resolutie
+
+
+ SmartSize Modus
+
+
+ Gebruik consolesessie
+
+
+ Gebruik CredSSP
+
+
+ Gebruiker veld
+
+
+ Gebruikersnaam
+
+
+ Alleen bekijken
+
+
+ Proxy Adres
+
+
+ Proxy Wachtwoord
+
+
+ Proxy Poort
+
+
+ Proxy-type
+
+
+ Proxy Gebruikersnaam
+
+
+ Protocol Event Verbinding Verbreken.
+Bericht:
+{0}
+
+
+ Protocol Event verbinding verbreken mislukt.
+{0}
+
+
+ Protocol om te importeren
+
+
+ Proxy test mislukt!
+
+
+ Proxy test geslaagd!
+
+
+ Verbinding mislukt!
+
+
+ Sluiten PuTTy proces mislukt!
+
+
+ Kan de focus niet verkrijgen!
+
+
+ Ophalen Putty Sessies mislukt!
+
+
+ PuTTy Handeling: {0}
+
+
+ Beëindigen Putty Proces mislukt!
+
+
+ Paneel Handeling: {0}
+
+
+ PuTTy Formaat Wijzigen Mislukt!
+
+
+ PuTTY opgeslagen sessies
+
+
+ PuTTY Instellingen
+
+
+ Toon PuTTY Instellingen mislukt!
+
+
+ Putty Starten mislukt!
+
+
+ --- PuTTY Spullen ---
+
+
+ PuTTY Titel: {0}
+
+
+ Snel: {0}
+
+
+ Snel verbinden
+
+
+ Snelle Connectie toevoegen mislukt!
+
+
+ Het aanmaken van een snelle connectie is mislukt
+
+
+ &Waarschuw bij het sluiten van connecties
+
+
+ &xWaarschuw alleen bij het sluiten van mRemoteNG
+
+
+ Waarschuw alleen bij het sluiten van &meerdere connecties
+
+
+ Waarschuw &niet bij het sluiten van connecties
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 Kleuren (24-bit)
+
+
+ 256 Kleuren (8-bit)
+
+
+ 32768 Kleuren (15-bit)
+
+
+ 16777216 Kleuren (32-bit)
+
+
+ 65536 Kleuren (16-bit)
+
+
+ RDP Resolutie toevoegen mislukt!
+
+
+ RDP Resoluties toevoegen mislukt!
+
+
+ Sessie aanmaken mislukt
+
+
+ Sluiten RDP verbinding is mislukt!
+
+
+ Openen van verbinding mislukt!
+
+
+ Kan geen RDP controle aanmaken, controleer mRemoteNG systeemeisen.
+
+
+ Cursor Knipperen Uitschakelen
+
+
+ Cursor Schaduw Uitschakelen
+
+
+ Slepen van volledig venster uitschakelen
+
+
+ Menu Animaties Uitschakelen
+
+
+ Thema's Uitschakelen
+
+
+ Bureaubladachtergrond Uitschakelen
+
+
+ RDP verbinding verboken!
+
+
+ RDP verbreken mislukt, probeer te sluiten!
+
+
+ Interne fout code 1.
+
+
+ Interne fout code 2.
+
+
+ Interne fout code 3. Dit is geen geldige status.
+
+
+ Interne fout code 4.
+
+
+ Een onherstelbare fout opgetreden tijdens de client-verbinding.
+
+
+ Ophalen foutmelding mislukt (fatale foutmelding)
+
+
+ Een onbekende fatale RDP fout opgetreden. Foutcode {0}.
+
+
+ Een out-of-memory fout is opgetreden.
+
+
+ Er is een onbekende fout opgetreden.
+
+
+ Een venster-creatie fout opgetreden.
+
+
+ Winsock initialisatie fout.
+
+
+ Kan RDP-bestand niet importeren!
+
+
+ Pas aan paneel aan
+
+
+ RDP Focus mislukt!
+
+
+ RD Gateway is ondersteund.
+
+
+ RD Gateway is niet ondersteund!
+
+
+ Instellen sessies mislukt!
+
+
+ Openen RDP verbinding mislukt!
+
+
+ RDP aantal malen opnieuw proberen te verbinden:
+
+
+ RDP instelling verificatie niveau mislukt!
+
+
+ RDP instelling Console sessie mislukt!
+
+
+ Instelling console wisselen voor RDC {0}.
+
+
+ RDP instellen kenmerken mislukt!
+
+
+ RDP instellen gebeurtenis afhandeling mislukt!
+
+
+ RDP instellen RDGateway mislukt!
+
+
+ RDP instellen prestatie vinkjes mislukt!
+
+
+ RDP instellen poort mislukt!
+
+
+ RDP instellen eigenschappen mislukt!
+
+
+ RDP instellen omleiding mislukt!
+
+
+ RDP instellen Redirect toetsen mislukt!
+
+
+ RDP instellen resolutie mislukt!
+
+
+ Smart Size
+
+
+ Afspelen op deze computer
+
+
+ Niet afspelen
+
+
+ Afspelen op externe computer
+
+
+ RDP wisselen volledig scherm mislukt!
+
+
+ RDP wisselen SmartSize mislukt!
+
+
+ Opnieuw verbinding maken met eerder geopende sessies bij het opstarten
+
+
+ Vernieuwen
+
+
+ Extern bestand
+
+
+ Alles verwijderen
+
+
+ Hernoemen
+
+
+ Rlogin
+
+
+ Opslaan
+
+
+ Alles opslaan
+
+
+ Wil je de huidige verbindingen opslaan voordat er een andere wordt geopend?
+
+
+ Sla verbindingen op bij afsluiten
+
+
+ Graphics Interchange Format bestand (.gif)|*.gif|Joint Photographic Experts Group bestand (.jpeg)|*.jpeg|Joint Photographic Experts Group bestand (.jpg)|*.jpg|Portable Network Graphics bestand (.png)|*.png
+
+
+ Scherm
+
+
+ Schermafbeelding
+
+
+ Schermafbeeldingen
+
+
+ Zoek
+
+
+ Verstuur naar...
+
+
+ Ophalen van sessies van achtergrond mislukt
+
+
+ Achtergrond Sessie beëindigen mislukt
+
+
+ Stel hostnaam zoals weergegeven naam in bij het maken van nieuwe verbindingen
+
+
+ Instelling hoofdformulier tekst mislukt
+
+
+ Kon de instellingen niet opslaan of taakbalk pictogram verwijderen!
+
+
+ Toon beschrijving tooltips in connectie's
+
+
+ Toon volledige verbindingsbestandspad in het venster titel
+
+
+ Toon login-informatie op het tabblad
+
+
+ Toon protocollen op het tabblad
+
+
+ Enkele klik om verbinding te openen
+
+
+ Enkele klik om naar geopende verbinding om te schakelen
+
+
+ Verhouding
+
+
+ Vrij
+
+
+ Geen SmartSize
+
+
+ Socks 5
+
+
+ Sorteer
+
+
+ Oplopend (A-Z)
+
+
+ Aflopend (Z-A)
+
+
+ Speciale toetsen
+
+
+ Zie Help - Aan de slag - SQL Configuratie voor meer informatie!
+
+
+ SQL Server:
+
+
+ SQL update check voltooid er is een update beschikbaar! De verbindingen worden vernieuwd.
+
+
+ SSH versie 1
+
+
+ SSH versie 2
+
+
+ SSH achtergrond overdracht mislukt!
+
+
+ Overdracht succesvol!
+
+
+ SSH Overdracht (UI.Window.SSHTransfer) mislukt!
+
+
+ SSH overdracht heeft gefaald.
+
+
+ Start IP
+
+
+ Start Poort
+
+
+ Opstarten/Afsluiten
+
+
+ Status
+
+
+ Schakel Notificatiepaneel in:
+
+
+ Geavanceerd
+
+
+ Uiterlijk
+
+
+ Tabbladen && Panelen
+
+
+ Updates
+
+
+ Telnet
+
+
+ De volgende:
+
+
+ Configuratie paneel
+
+
+ Connectie paneel
+
+
+ Algemeen
+
+
+ De achtergrondkleur van het configuratie paneel.
+
+
+ De kleur van de categorie tekst in het configuratie paneel.
+
+
+ De kleur van de gridlijnen in het configuratiepaneel
+
+
+ De achtergrondkleur van de helptekst in het configuratiepaneel.
+
+
+ De tekst kleur ven de help in het configurateipaneel.
+
+
+ De tekstkleur van het configuratiepaneel.
+
+
+ De achtergrondkleur van het connectie paneel.
+
+
+ De tekstkleur van het connectie paneel.
+
+
+ De boomstructuur lijnen kleur in het connectie paneel.
+
+
+ De achtergrondkleur van de menu's.
+
+
+ De tekstkleur in de menu's.
+
+
+ De achtergrondkleur van de zoekboks.
+
+
+ De tekstkleur in de zoekboks.
+
+
+ De prompttekst kleur in de zoekboks.
+
+
+ De achtergrondkleur van de gereedschapsbalk.
+
+
+ De tekstkleur in de gereedschapsbalk.
+
+
+ De achtergrondkleur van het hoofdwindow.
+
+
+ Achtergrondkleur configuratiepaneel
+
+
+ Categorie tekst kleur in het configuratiepaneel
+
+
+ Lijnenkleur in het configuratiepaneel
+
+
+ Help achtergrondkleur van het configuratiepaneel
+
+
+ Help tekstkleur van het configuratiepaneel
+
+
+ Configuratiepaneel tekstkleur
+
+
+ Achtergrondkleur connectie paneel
+
+
+ Tekstkleur connectiepaneel
+
+
+ Boomstructuur lijnen kleur connectiepaneel
+
+
+ Menu achtergrondkleur
+
+
+ Tekstkleur menu
+
+
+ Achtergrondkleur zoekboks
+
+
+ Tekstkleur zoekboks
+
+
+ Prompt tekstkleur zoekboks
+
+
+ Achtergrondkleur gereedschapsbalk
+
+
+ Tekstkleur gereedschapskleur
+
+
+ Achtergrondkleur window
+
+
+ Fout ({0})
+
+
+ Informatie ({0})
+
+
+ Wachtwoord
+
+
+ Selecteer Paneel
+
+
+ Waarschuwing ({0})
+
+
+ Overdracht
+
+
+ Overdracht mislukt!
+
+
+ Probeer te integreren
+
+
+ Type
+
+
+ UltraVNC Repeater
+
+
+ Ultra VNC Enkele Klik Poort:
+
+
+ Verwijder het vinkje bij eigenschappen die u niet wil opslaan!
+
+
+ Thema zonder naam
+
+
+ Er is een update voor mRemoteNG beschikbaar
+
+
+ mRemoteNG kan periodiek verbinding maken met de mRemoteNG website om te controleren op updates en product aankondigingen.
+
+
+ Check voor de update voltooiing is mislukt!
+
+
+ Controleren op update mislukt!
+
+
+ mRemoteNG Portable Edition ondersteunt momenteel geen automatische updates.
+
+
+ Fout bij verwijderen van update-bestand!
+
+
+ Download voltooid!
+mRemoteNG zal nu worden gesloten en beginnen met de installatie.
+
+
+ Download complete mislukt!
+
+
+ Download Update mislukt!
+
+
+ Elke {0} dag(en)
+
+
+ Dagelijks
+
+
+ Maandelijks
+
+
+ Wekelijks
+
+
+ Fout bij het starten van update!
+
+
+ Gebruik een andere gebruikersnaam en wachtwoord
+
+
+ Gebruik alleen meldingenvenster (geen meldingsbox popups)
+
+
+ Gebruiker
+
+
+ Gebruik dezelfde gebruikersnaam en wachtwoord
+
+
+ Gebruik een SmartCard
+
+
+ Gebruik SQL Server om te connecties te laden en op te slaan
+
+
+ Versie
+
+
+ VNC
+
+
+ VNC Sluiten connectie mislukt!
+
+
+ Openen van verbinding mislukt!
+
+
+ VNC Vernieuwen scherm mislukt!
+
+
+ VNC Stuur speciale toetsen mislukt!
+
+
+ VNC Instellen gebeurtenis handeling mislukt!
+
+
+ VNC Eigenschappen instellen mislukt!
+
+
+ VNC Start Chat Mislukt!
+
+
+ VNC Wisselen Formaat wijzigen mislukt!
+
+
+ VNC Wisselen ViewOnly mislukt!
+
+
+ Waarschuw als verificatie is mislukt
+
+
+ Waarschuwingen
+
+
+ Maakt gebruik van de DockPanel Suite van [Weifen Luo]
+
+
+ Schrijf log bestand (mRemoteNG.log)
+
+
+ XULrunner pad:
+
+
+ Ja
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.pl.resx b/mRemoteV1/CS/Language/Language.pl.resx
new file mode 100644
index 000000000..fd835a410
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.pl.resx
@@ -0,0 +1,1905 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ O programie
+
+
+ Aktywny
+
+
+ Aktywność
+
+
+ Nowe połączenie
+
+
+ Nowy folder
+
+
+ Wykonanie fukcji AddNodeFromXML nie powiodło się!
+
+
+ Wykonanie fukcji AddNodesFromSQL nie powiodło się!
+
+
+ Pozwól uruchomić tylko jedną kopię programu (wymaga restartu mRemoteNG)
+
+
+ Zawsze
+
+
+ Łącz zawsze, nawet jeśli uwierzytelnianie się nie powiedzie
+
+
+ Pozwól wybrać panel przed każdym połączeniem
+
+
+ Zawsze pokazuj zakładki paneli
+
+
+ Zawsze pokazuj ikonę w obszarze powiadomień
+
+
+ Zapytaj mnie znów później
+
+
+ Dostosuj ustawienia
+
+
+ Użyj zalecanych ustawień
+
+
+ {0} może automaczycznie sprawdzać aktualizacje które mogą zawierać nowe funkcjonalności oraz poprawki błędów. Zaleca się, aby zezwolnić {0} na sprawdzanie aktualizacji co tydzień.
+
+
+ Ustawienia automatycznej aktualizacji
+
+
+ Propocjonalnie
+
+
+ Automatycznie pobierz informacje o sesji
+
+
+ Automatyczny zapis co:
+
+
+ Minuty (0 oznacza wyłączony)
+
+
+ Aktualna wersja
+
+
+ &Wybierz...
+
+
+ &Anuluj
+
+
+ Zmiana
+
+
+ &Zamknij
+
+
+ Dziedziczenie domyślne
+
+
+ Ustawienia domyślne
+
+
+ Rozłącz
+
+
+ Ikona
+
+
+ &Import
+
+
+ Dziedziczenie
+
+
+ Uruchom PuTTY
+
+
+ &Nowy
+
+
+ &OK
+
+
+ Ustawienia
+
+
+ &Skanuj
+
+
+ &Stop
+
+
+ Testuj Proxy
+
+
+ Nie można zaimportować zwykłego pliku połączenia.
+Proszę użyć opcji Plik - Wgraj Połączenia aby wgrać zwykłe pliki połączenia!
+
+
+ Nie można rozpocząć skanowania portów - niewłaściwy format adresu IP!
+
+
+ Wygląd
+
+
+ Połączenie
+
+
+ Dane uwierzytelniające
+
+
+ Wyświetl
+
+
+ Brama
+
+
+ Ogólny
+
+
+ Pozostałe
+
+
+ Protokół
+
+
+ Przekierowanie
+
+
+ Zawsze pokazuj ten ekran przy starcie
+
+
+ Odświerz
+
+
+ Sprawdzenie nie powiodło się!
+
+
+ Sprawdzenie powiodło się!
+
+
+ Funkcja sesji (RDP) wymaga, abyś miał zarejestrowaną w systemie bibliotekę eolwtscom.dll.
+mRemoteNG dystrybuowany jest z tym komponentem, ale nie jest automatycznie rejestrowany dopóki nie uruchomisz instalatora. Aby zarejestrować ten plik ręcznie wykonaj: otwórz "Uruchom" (Start - Uruchom) i wprowadź komendę: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (gdzie c:\Program Files\mRemoteNG\ jest ścieżką instalacyjną mRemoteNG).
+Jeśli nadal nie można sprawdzić lub użyć fukcji Sesji (RDP) skonsultuj to na Forum mRemoteNG na stronie http://forum.mremoteng.org/
+
+
+ EOLWTSCOM został znaleziony i wydaje się być poprawnie zarejestrowany.
+
+
+ Aby użyć Gecko Rendering Engine, musisz mieć XULrunner 1.8.1.x oraz podać ścieżkę instalacji w opcjach. XULrunner 1.8.1.3 możesz pobrać ze ftp: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ Po zakończeniu pobierania wypakuj pakiet do właściwego katalogu. Następnie w mRemoteNG przejdź do menu Narzędzia - Opcje - Zaawansowane i wprowadź poprawną ścieżkę w polu Ścieżka XULrunner. Jeśli to nadal nie pomogło prosimy o kontakt na mRemoteNG Forum na stronie http://forum.mremoteng.org/
+
+
+ XULrunner został znaleziony i wydaje się być zainstalowany prawidłowo.
+
+
+ ICA wymaga zainstalowania wtyczki Online XenDesktop, i aby była zarejestrowana biblioteka wfica.ocx. Możesz pobrać klienta tutaj: http://www.citrix.com/download/ Jeżeli masz zainstalowany Plugin Online XenDesktop a nadal nie działa, spróbuj ręcznie zarejestrować bibliotekę wfica.ocx. Aby to zrobić wybierz polecenie Uruchom (Start - Uruchom) i wprowadź w linii komend: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (gdzie c:\Program Files\Citrix\ICA Client\ jest ścieżką instalacji XenDesktop Online Plugin). Jeśli nadal nie można użyć ICA w mRemoteNG prosimy o kontakt mRemoteNG Forum na http://forum.mremoteng.org/
+
+
+ Wszystkie składniki ICA zostały znalezione i wydają się być poprawnie zarejestrowane.
+Wersja klienta Citrix ICA {0}
+
+
+ nie jest zainstalowany prawidłowo
+
+
+ SSH, Telnet, Rlogin i protokołów RAW używają programu PuTTY. PuTTY zawarty jest pakiecie mRemoteNG i znajduje się w ścieżce instalacji programu.
+Proszę upewnić się, że albo masz Putty.exe w katalogu mRemoteNG (domyślnie: c:\Program Files\mRemoteNG\) lub że podałeś prawidłową ścieżkę do narzędzia PuTTY w opcjach programu(Narzędzia - Opcje - zaawansowane - ścieżka programu PuTTY)
+
+
+ Aplikacja PuTTY została odnaleziona i powinna być gotowa do użytku.
+
+
+ Aby połączenia RDP działały poprawnie trzeba mieć zainstalowane Podłączanie Pulpitu Zdalnego (Klient Usług Terminalowych) w wersji 6.1. Można go pobrać ze strony: http://support.microsoft.com/kb/951616. Jeśli RDP 6.1 jest już zainstalowany i nadal nie działają połączenia RDP, spróbuj ręcznie zarejestrować plik mstscax.dll. Aby zarejestrować plik wybierz Uruchom (Start - Uruchom) i wprowadź w linii polecń: regsvr32 "c:\windows\system32\mstscax.dll" (gdzie c:\ jest dyskiem systemowym). Jeśli nadal masz problemy z połączeniem RDP skonsultuj się z mRemoteNG Forum na http://forum.mremoteng.org/
+
+
+ Wszystkie składniki RDP zostały znalezione i wydają się być poprawnie zarejestrowane. Wersja Podłączanie Pulpitu Zdalnego {0}
+
+
+ VNC wymaga, aby biblioteka VncSharpNG.dll znajdowała się w folderze instalacji mRemoteNG. Upewnij się, że masz plik VncSharpNG.dll w folderze aplikacji mRemoteNG (domyślnie C:\Program Files\mRemoteNG\). Jeśli nadal nie można użyć VNC w mRemoteNG prosimy o kontakt mRemoteNG Forum na http://forum.mremoteng.org/
+
+
+ Wszystkie składniki VNC zostały znalezione i wydają się być poprawnie zarejestrowane. Wersja VncSharpNG {0}
+
+
+ Automatycznie połącz ponownie jeśli nastąpi odłączenie od serwera (tylko RDP && ICA)
+
+
+ Domena
+
+
+ Nie pokazuj więcej tej informacji.
+
+
+ Dziedziczenie
+
+
+ Hasło
+
+
+ Ten serwer proxy wymaga uwierzytelnienia
+
+
+ Użyj niestandardowej ścieżki PuTTY:
+
+
+ Połącz ponownie, gdy gotowy
+
+
+ Użyj serwera proxy do połączenia
+
+
+ Użytkownik
+
+
+ Czekaj na wyjście
+
+
+ Sprawdź ponownie
+
+
+ Sprawdź aktualizacje i powiadomienia podczas startu
+
+
+ Sprawdź teraz
+
+
+ Sprawdź poprawność zainstalowanych komponentów podczas startu
+
+
+ Przed połączeniem wybierz panel
+
+
+ Porty zamknięte
+
+
+ Zwiń wszystkie foldery
+
+
+ Argumenty
+
+
+ Nazwa wyświetlana
+
+
+ Nazwa pliku
+
+
+ Nazwa hosta/IP
+
+
+ Wiadomość
+
+
+ Użytkownik
+
+
+ Czekaj na wyjście
+
+
+ Nie można przeanalizować argumentów wejściowych!
+
+
+ {0} wykrył, że w systemie działa Lenovo Auto Scroll Utility. To narzędzie jest znane jako przyczyna problemów z {0}. Zaleca się, wyłączyć lub odinstalować ten program.
+
+
+ Wykryto problem z kompatybilnością
+
+
+ Sprawdzenie komponentów
+
+
+ Wykonanie btnIcon_Click nie powiodło się!
+
+
+ Wykonanie ShowHideGridItems nie powiodło się!
+
+
+ Wykonanie IconMenu_Click nie powiodło się!
+
+
+ Wykonanie SetHostStatus nie powiodło się!
+
+
+ Wykonanie pGrid_PopertyValueChanged nie powiodło się!
+
+
+ Czy chcesz zamknąć połączenie, "{0}"?
+
+
+ Czy na pewno chcesz zamknąć panel, "{0}"? Wszystkie połączenia, które zawiera również zostaną zamknięte.
+
+
+ Czy na pewno chcesz usunąć zewnętrzne narzędzie, "{0}"?
+
+
+ Czy na pewno chcesz usunąć {0} wybranych narzędzi zewnętrznych?
+
+
+ Czy jesteś pewien, że chcesz usunąć połączenie, "{0}"?
+
+
+ Czy jesteś pewien, że chcesz usunąć pusty folder, "{0}"?
+
+
+ Czy jesteś pewien, że chcesz usunąć folder, "{0}"? Wszystkie foldery oraz połączenia które zawiera także zostaną usunięte.
+
+
+ Czy chcesz zamknąć wszystkie otwarte połączenia?
+
+
+ Czy jesteś pewien, że chcesz powrócić z ustawieniami paneli do ich domyślego wyglądu?
+
+
+ Połącz
+
+
+ Połącz w trybie pełnego ekranu
+
+
+ Łączenie...
+
+
+ Połączenie "{0}" przez "{1}" ustanowione przez użytkownika "{2}" (Opis: "{3}"; Pole użytkownika: {4})
+
+
+ Połączenie nie powiodło się!
+
+
+ Otwarcie połączenia nie powiodło się!
+
+
+ Nie można otworzyć połączenia: nie określono nazwy hosta!
+
+
+ Błąd RDP!
+Kod błędu: {0}
+Opis błędu: {1}
+
+
+ Połączenia
+
+
+ Nie można ustawić domyślnego portu!
+
+
+ Nie można utworzyć kopii zapasowej pliku połączeń!
+
+
+ Nie można zaimportować pliku połączeń!
+
+
+ Nie można załadować pliku połączeń "{0}"!
+
+
+ Nie można załadować pliku połączeń "{0}"!
+Załadowano nowy plik połączeń.
+
+
+ Nie można zapisać pliku połączeń!
+
+
+ Nie można zapisać pliku połączeń jako "{0}"!
+
+
+ Połącz się z sesją konsoli
+
+
+ Połącz (z opcjami)
+
+
+ Połączenie do {0} za pomocą {1} zostało zamknięte przez użytkownika {2}.
+
+
+ Połączenie do {0} przez {1} zostało zamknięte przez użytkownika {2}. (Opis: "{3}"; Pole użytkownika: "{4}")
+
+
+ Nie można utworzyć nowego pliku połączeń!
+
+
+ Nie można odnaleźć ToolStrip w FilteredPropertyGrid.
+
+
+ Zainstalowana wersja
+
+
+ Domyślny motyw
+
+
+ Wykryj
+
+
+ Nie łącz, jeśli uwierzytelnianie nie powiedzie się
+
+
+ Dwukrotne kliknięcie na karcie, zamyka ją
+
+
+ Ściągnij i zainstaluj
+
+
+ Duplikuj
+
+
+ Czy chcesz kontynuować bez hasła?
+
+
+ Dla pustej nazwy pola użytkownika, hasła lub domeny użyj:
+
+
+ 128-bit
+
+
+ 128-bit (tylko logowanie)
+
+
+ Podstawowe
+
+
+ Całkowicie szyfruj plik połączeń
+
+
+ Końcowe IP
+
+
+ Port końcowy
+
+
+ Wykonanie AddExternalToolsToToolBar (frmMain) nie powiodło się. {0}
+
+
+ Wykonanie AddFolder (UI.Window.Tree) nie powiodło się. {0}
+
+
+ Wersja bazy danych {0} nie jest zgodna z wersją {1}.
+
+
+ Wykonanie CloneNode (Tree.Node) nie powiodło się. {0}
+
+
+ Kod błędu {0}.
+
+
+ Nie można zapisać listy połączeń.
+
+
+ Odszyfrowywanie nie powiodło się. {0}
+
+
+ Szyfrowywanie nie powiodło się. {0}
+
+
+ Błędy
+
+
+ Nie można załadować pliku startowego połączenia.{0}{0}{2}{0}{3}{0}{0}Aby zapobiec utracie danych, {1} zakończy teraz działanie.
+
+
+ Wykonanie VerifyDatabaseVersion (Config.Connections.Save) nie powiodło się. {0}
+
+
+ Rozwiń wszystkie foldery
+
+
+ Eksperymentalny
+
+
+ Eksport
+
+
+ Eksport mRemote/mRemoteNG XML
+
+
+ Aplikacja zewnętrzna
+
+
+ Zawiera ikony ze strony [FAMFAMFAM]
+
+
+ Wszystkie pliki (*.*)
+
+
+ Pliki programów (*.exe)
+
+
+ Pliki CSV mRemote (*.csv)
+
+
+ Pliki XML mRemote (*.xml)
+
+
+ Pliki RDP (*.rdp)
+
+
+ Pliki CSV visionapp Remote Desktop 2008 (*.csv)
+
+
+ Dziedzicz {0}
+
+
+ Wolne
+
+
+ Pełen ekran
+
+
+ Ogólne
+
+
+ Pobranie danych połączenia z SQL nie powiodło się
+
+
+ Wystąpił błąd podczas ładowania wpisu połączenia dla "{0}" z "{1}". {2}
+
+
+ Połącz automatycznie
+
+
+ Połączenie
+
+
+ Właściwości zewnętrznego narzędzia
+
+
+ Pliki
+
+
+ Host
+
+
+ Błąd połączenia HTTP!
+
+
+ Nie można utworzyć nowego połączenia HTTP!
+
+
+ Zmiana tytułu dokumentu HTTP nie powiodła się!
+
+
+ Konfiguracja ustawień HTTP nie powiodła się!
+
+
+ Nie można utworzyć nowego połączenia ICA!
+
+
+ Ładowanie wtyczki ICA nie powiodło się!
+
+
+ Wykonanie ICA SetCredentials nie powiodło się!
+
+
+ Importów z Active Directory
+
+
+ Importuj/Eksportuj
+
+
+ Import mRemote/mRemoteNG XML
+
+
+ Import z Port Scan
+
+
+ Import z plików .RDP
+
+
+ Bezczynny
+
+
+ Informacje
+
+
+ mRemoteNG jest w najnowszej wersji
+
+
+ Połączenie nieudane
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Adres:
+
+
+ Argumenty:
+
+
+ Historia wersji:
+
+
+ Przy zamykaniu połączeń:
+
+
+ &Połącz
+
+
+ Widoczna nazwa
+
+
+ Domena:
+
+
+ Nazwa pliku:
+
+
+ Nazwa hosta:
+
+
+ Opcje:
+
+
+ Hasło:
+
+
+ Nr portu:
+
+
+ Wersja przenośna.
+
+
+ Protokół
+
+
+ Aby skonfigurować sesje PuTTY kliknij ten przycisk:
+
+
+ Wydane na licencji GNU General Public License (GPL)
+
+
+ sekund
+
+
+ Wybierz panel z poniższej listy lub kliknij przycisk Nowy, aby dodać nowy. Aby kontynuować, kliknij przycisk OK.
+
+
+ Status serwera:
+
+
+ Baza danych:
+
+
+ Baza danych:
+
+
+ Użytkownik:
+
+
+ Sprawdź:
+
+
+ Język
+
+
+ (Wykryj automatycznie)
+
+
+ {0} musi być ponownie uruchomiony aby zmiany języka zaczęły obowiązywać.
+
+
+ Import z SQL nie powiódł się!
+
+
+ Import z XML nie powiódł się!
+
+
+ Plik lokalny
+
+
+ Plik lokalny nie istnieje!
+
+
+ Wyloguj
+
+
+ Zapis raportu nie powiódł się!
+
+
+ Nie można zapisać raportu do docelowej lokalizacji.
+
+
+ Program korzysta z bibliotek "Magic library" [Crownwood Software]
+
+
+ O programie
+
+
+ Dodaj panel połączenia
+
+
+ Powiadomienia
+
+
+ Sprawdź aktualizacje
+
+
+ Konfiguracja
+
+
+ Połącz
+
+
+ Panele połączeń
+
+
+ Połączenia
+
+
+ Połączenia i konfiguracja
+
+
+ Kopiuj
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Usuń...
+
+
+ Usuń połączenie...
+
+
+ Skazuj zewnętrzne narzędzie...
+
+
+ Usuń folder...
+
+
+ Rozłącz
+
+
+ Darowizna
+
+
+ Duplikuj
+
+
+ Duplikuj połączenie
+
+
+ Duplikuj folder
+
+
+ Duplikuj zakładkę
+
+
+ Wyjście
+
+
+ Narzędzia zewnętrzne
+
+
+ Pasek narzędzi zewnętrznych
+
+
+ &Plik
+
+
+ Pełen ekran
+
+
+ Pełen ekran (RDP)
+
+
+ &Pomoc
+
+
+ Pomoc mRemoteNG
+
+
+ Idz do
+
+
+ Uruchom narzędzie zewnętrzne
+
+
+ Nowy plik połączeń
+
+
+ Nowe narzędzie zewnętrzne
+
+
+ Powiadomienia
+
+
+ Kopiuj wszystko
+
+
+ Usuń
+
+
+ Usuń wszystko
+
+
+ Otwórz plik połączenia...
+
+
+ Opcje
+
+
+ Wklej
+
+
+ Skaner portów
+
+
+ Pasek szybkiego połączenia
+
+
+ Połącz ponownie
+
+
+ Odśwież ekran (VNC)
+
+
+ Zmień nazwę
+
+
+ Zmień nazwę połączenia
+
+
+ Zmień nazwę folderu
+
+
+ Zmień nazwę zakładki
+
+
+ Zgłoś błąd
+
+
+ Zapisz plik połączeń
+
+
+ Zapisz plik połączeń jako ...
+
+
+ Zrzut ekranu
+
+
+ Menager zrzutów ekranów
+
+
+ Wyślij klawisze specjalne (VNC)
+
+
+ Sesje
+
+
+ Sesje i zrzuty ekranów
+
+
+ &Pokaż tekst pomocy
+
+
+ Pokarz tekst
+
+
+ Dopasuj (RDP/VNC)
+
+
+ Transfer plików poprzez SSH
+
+
+ Zacznij Chat (VNC)
+
+
+ Forum pomocy
+
+
+ &Narzędzia
+
+
+ Transfer pliku (SSH)
+
+
+ &Widok
+
+
+ Tylko pogląd (VNC)
+
+
+ Strona WWW
+
+
+ Minimalizuj do obszaru powiadomień
+
+
+ Idź w dół
+
+
+ Idź w górę
+
+
+ Nigdy
+
+
+ Nowe połączenie
+
+
+ Nowy folder
+
+
+ Nowy panel
+
+
+ Nowe drzewo
+
+
+ Nowy tytuł
+
+
+ Nie
+
+
+ Bez kompresji
+
+
+ Nie wskazano zewnętrznej aplikacji.
+
+
+ Żaden
+
+
+ Żaden
+
+
+ Normalny
+
+
+ Wyłącz dopasowanie
+
+
+ Brak aktualizacji
+
+
+ Próbujesz załadować plik połączenia, który utworzono przy użyciu bardzo wczesnej wersji mRemote - to może spowodować poważne błędy działania programu. Jeśli napotkasz na taki błąd, należy utworzyć nowy plik połączenia!
+
+
+ Otwórz nową zakładkę na prawo od aktualnie zaznaczonej
+
+
+ Porty otwarte
+
+
+ Motyw
+
+
+ &Usuń
+
+
+ &Nowy
+
+
+ Nazwa panelu
+
+
+ Wypełnij wszystkie pola
+
+
+ Nie można załadować panelu skanowania portów!
+
+
+ (Te właściwości zostaną zapisane tylko gdy wybierzesz wyjściowy format pliku jako mRemote/mRemoteNG XML!)
+
+
+ Wpisz nazwę hosta lub IP, do którego chcesz się połączyć.
+
+
+ Wybierz sposób uwierzytelnienia serwera VNC.
+
+
+ Wybierz czy bitmapy mają być przechowywane w pamięci podręcznej czy nie.
+
+
+ Wybierz jaką jakość kolorów używać.
+
+
+ Wybierz jaką wartość kompresji użyć.
+
+
+ Wybierz "Tak" jeśli motyw ma być wyświetlany na zdalnym komputerze.
+
+
+ Podaj domenę.
+
+
+ Wpisz swoje hasło.
+
+
+ Wybierz, czy lokalne dyski powinny być dostępne na zdalnym hoście.
+
+
+ Wybierz, czy kombinacje klawiszy (np. Alt-Tab) powinny być przekierowane do komputera zdalnego.
+
+
+ Wybierz, czy lokalne karty inteligentne powinny być dostępne na zdalnym hoście.
+
+
+ Wybierz jak dźwięk z zdalnego komputera powinien być przekierowany.
+
+
+ Wybierz jeden z silników renderowania, który będzie używany do wyświetlania stron HTML.
+
+
+ Wybierz rozdzielczość lub tryb, w którym otworzy się połączenie.
+
+
+ Wybierz typ dopasowania jaki ma być użyty.
+
+
+ Połącz z sesją konsoli hosta zdalnego.
+
+
+ Tu możesz wpisać wszelkie informacje jakich potrzebujesz.
+
+
+ Nazwa użytkownika.
+
+
+ Jeśli chcesz nawiązać połączenie tylko do podglądu, wybierz Tak.
+
+
+ Wprowadź jaki adres serwera proxy będzie używany.
+
+
+ Wprowadź hasło uwierzytelniania poprzez proxy.
+
+
+ Wpisz numer portu na którym nasłuchuje proxy.
+
+
+ Jeśli do połączenia z VNC korzystasz z serwera proxy, wybierz typ typ tunerowania.
+
+
+ Wprowadź nazwę użytkownika dla uwierzytelniania poprzez proxy.
+
+
+ Nazwa hosta/IP
+
+
+ Wszystkie
+
+
+ Autentykacja serwera
+
+
+ Tryb autentykacji
+
+
+ Przechowuj bitmapy w pamięci podręcznej
+
+
+ Kolory
+
+
+ Kompresja
+
+
+ Opis
+
+
+ Wyświetlaj motywy
+
+
+ Wyświetl tapetę
+
+
+ Domena
+
+
+ Kompozycja pulpitu
+
+
+ Wygładzenie czcionki
+
+
+ Kodowanie
+
+
+ Siła szyfrowania
+
+
+ Zewnętrzne narzędzie
+
+
+ Zewnętrzne narzędzie po
+
+
+ Zewnętrzne narzędzie przed
+
+
+ Ikona
+
+
+ Adres MAC
+
+
+ Nazwa
+
+
+ Panel
+
+
+ Hasło
+
+
+ Port
+
+
+ Protokół
+
+
+ Sesja PuTTY
+
+
+ Domena bramy
+
+
+ Nazwa hosta bramy
+
+
+ Hasło bramy zdalnego pulpitu
+
+
+ Użyj bramy
+
+
+ Poświadczenia bramy
+
+
+ Użytkownik bramy
+
+
+ Dyski
+
+
+ Kombinacja klawiszy
+
+
+ Porty
+
+
+ Drukarki
+
+
+ Karty inteligentne
+
+
+ Dźwięki
+
+
+ Silnik renderujący
+
+
+ Rozdzielczość
+
+
+ Tryb dopasowania
+
+
+ Użyj konsoli sesji
+
+
+ Użyj CredSSP
+
+
+ Pole użytkownika
+
+
+ Użytkownik
+
+
+ Tylko podgląd
+
+
+ Adres proxy
+
+
+ Hasło proxy
+
+
+ Port proxy
+
+
+ Typ proxy
+
+
+ Użytkownik proxy
+
+
+ Protokół do zaimportowania
+
+
+ Test proxy nie powiódł się!
+
+
+ Test proxy powiódł się!
+
+
+ Nieudane połączenie!
+
+
+ Nie można ustawić ostrości!
+
+
+ Nie uzyskano sesji Putty!
+
+
+ Zamknięcie procesu Putty nie powiodło się!
+
+
+ Zmiana rozmiaru Putty nie powiodła się!
+
+
+ Ustawienia PuTTY
+
+
+ Nie udało się uruchomić Putty!
+
+
+ Szybkie połączenie
+
+
+ &Ostrzegaj przed zamknięciem połączenia
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 Kolorów (24-bir)
+
+
+ 256 Kolorów (8-bit)
+
+
+ 32768 Kolorów (15-bit)
+
+
+ 16777216 Kolorów (32-bit)
+
+
+ 65536 Kolorów (16-bit)
+
+
+ Nie dodano rozdzielczości RDP!
+
+
+ Nie dodano rozdzielczości RDP!
+
+
+ Nie dodano sesji
+
+
+ Nie udało się zamknąć połączenia RDP!
+
+
+ Nie udało się nawiązać połączenia!
+
+
+ Wyłącz miganie kursora
+
+
+ Wyłącz cień kursora
+
+
+ Wyłącz animacje menu
+
+
+ Wyłącz tematy
+
+
+ Wyłącz tapetę
+
+
+ Rozłączono RDP!
+
+
+ Nie udało sie rozłączyć RDP, spróbuj zamknąć!
+
+
+ Wewnętrzny kod błędu 1.
+
+
+ Wewnętrzny kod błędu 2.
+
+
+ Błąd wewnętrzny: kod 3. To nie tak miało być...
+
+
+ Wewnętrzny kod błędu 4.
+
+
+ Błąd pobrania kodu błędu (FatalErrors)
+
+
+ Inicjalizacja Winsock nie powiodła się.
+
+
+ Nie można zaimportować pliku rdp!
+
+
+ Dostosuj do panelu
+
+
+ Brama zdalnego pulpitu jest wspierana.
+
+
+ Brama zdalnego pulpitu nie jest wspierana!
+
+
+ Wykonanie GetSessions nie powiodło się!
+
+
+ Nawiązanie połączenia RDP nie powiodło się!
+
+
+ Liczba ponownych połączeń RDP:
+
+
+ Wykonanie RDP SetAuthenticationLevel nie powiodło się!
+
+
+ Wykonanie RDP SetUseConsoleSession nie powiodło się!
+
+
+ Wykonanie RDP SetCredentials nie powiodło się!
+
+
+ Wykonanie RDP SetEventHandlers nie powiodło się!
+
+
+ Wykonanie RDP SetRDGateway nie powiodło się!
+
+
+ Wykonanie RDP SetPerformanceFlags nie powiodło się!
+
+
+ Wykonanie RDP SetPort nie powiodło się!
+
+
+ Wykonanie RDP SetProps nie powiodło się!
+
+
+ Wykonanie RDP SetResolution nie powiodło się!
+
+
+ Dopasuj rozmiar
+
+
+ Przenieś na ten komputer
+
+
+ Nie odtwarzaj
+
+
+ Zostaw na komputerze zdalnym
+
+
+ Wykonanie RDP ToggleFullscreen nie powiodło się!
+
+
+ Wykonanie RDP ToggleSmartSize nie powiodło się!
+
+
+ Przy otwarciu programu podłącz ostatnio otwarte połączenia
+
+
+ Odświerz
+
+
+ Plik zdalny
+
+
+ Usuń wszystkie
+
+
+ Zmień nazwę
+
+
+ Rlogin
+
+
+ Zapisz
+
+
+ Zapisz wszystkie
+
+
+ Czy chcesz zapisać bieżący plik połączeń przed załadowaniem kolejnego?
+
+
+ Zapisz połączenia przy wyjściu
+
+
+ GIF(.gif)|*.gif|JPEG(.jpeg)|*.jpeg|JPEG(.jpg)|*.jpg|PNG(.png)|*.png
+
+
+ Ekran
+
+
+ Zrzut ekranu
+
+
+ Zrzuty ekranów
+
+
+ Szukaj
+
+
+ Wyślij do...
+
+
+ Wyświetlenie tła sesji nie powiodło się
+
+
+ Usunięcie tła sesji nie powiodło się
+
+
+ Ustaw nawę hosta taką samą jak wyświetlaną nazwę gdy tworzysz lub zmieniasz nazwę połączeń
+
+
+ Pokaż opisy podpowiedzi w drzewie połączenia
+
+
+ Pokaż pełną ścieżkę pliku połączenia w tytule okna
+
+
+ Pokaż informacje logowania na zakładce nazwy
+
+
+ Pokaż nazwy protokołów na zakładkach
+
+
+ Pojedyncze kliknięcie na połączeniu otwiera je
+
+
+ Pojedyncze klikniknięcie na otwarym połączeniu przełącza na nie
+
+
+ Propocjonalnie
+
+
+ Dowolnie
+
+
+ Wyłącz dopasowanie ekranu
+
+
+ Socks 5
+
+
+ Sortuj
+
+
+ Rosnąco (A-Z)
+
+
+ Malejąco (Z-A)
+
+
+ Znaki specjalne
+
+
+ Aby więcej się dowiedzieć sprawdź w systemie pomocy: Rozpocznij Pracę - Konfiguracja SQL.
+
+
+ Serwer SQL:
+
+
+ Sprawdzenie aktualizacji SQL zakończone - jest dostępna nowa aktualizacja. Zamierzam odświeżyć połączenia.
+
+
+ SSH wersja 1
+
+
+ SSH wersja 2
+
+
+ Transfer SSH w tle nie powiódł się!
+
+
+ Transfer zakończony sukcesem!
+
+
+ Transfer SSH nie powiódł się.
+
+
+ Początkowe IP
+
+
+ Port początkowy
+
+
+ Uruchomienie/Wyjście
+
+
+ Stan
+
+
+ Zaawansowane
+
+
+ Wygląd
+
+
+ Aktualizacje
+
+
+ Telnet
+
+
+ Panel konfiguracji
+
+
+ Panel połączeń
+
+
+ Ogólne
+
+
+ Kolor tła panelu konfiguracji.
+
+
+ Kolor tekstu kategorii w panelu konfiguracji.
+
+
+ Kolor linii siatki w panelu konfiguracji
+
+
+ Kolor tła obszaru pomocy w panelu konfiguracji.
+
+
+ Kolor tekstu w obszarze pomocy w panelu konfiguracji.
+
+
+ Kolor tekstu w panelu konfiguracji.
+
+
+ Kolor tła panelu konfiguracji.
+
+
+ Kolor tekstu w panelu konfiguracji.
+
+
+ Kolor linii drzewa w panelu konfiguracji.
+
+
+ Kolor tła menu.
+
+
+ Kolor tekstu menu.
+
+
+ Kolor tła pola wyszukiwania.
+
+
+ Kolor tekstu w polu wyszukiwania.
+
+
+ Kolor tekstu zachęty w polu wyszukiwania.
+
+
+ Kolor tła pasków narzędzi.
+
+
+ Kolor tekstu w paskach narzędzi.
+
+
+ Kolor tła okna głównego.
+
+
+ Kolor tła panelu konfiguracji
+
+
+ Kolor tekstu kategori panelu konfiguracji
+
+
+ Kolor linii siatki panelu konfiguracji
+
+
+ Kolor tła pomocy panelu konfiguracji
+
+
+ Kolor tekstu pomocy panelu konfiguracji
+
+
+ Kolor tekstu panelu konfiguracji
+
+
+ Kolor tła panelu konfiguracji
+
+
+ Kolor tekstu panelu konfiguracji
+
+
+ Kolor linii drzewa panelu konfiguracji
+
+
+ Kolor tła menu
+
+
+ Kolor tekstu menu
+
+
+ Kolor tła pola wyszukiwania
+
+
+ Kolor tekstu w polu wyszukiwania
+
+
+ Kolor tekstu zachęty z polu wyszukiwania
+
+
+ Kolor tła paska narzędzi
+
+
+ Kolor tekstu paska narzędzi
+
+
+ Kolor tła okna
+
+
+ Błąd ({0})
+
+
+ Informacja ({0})
+
+
+ Hasło
+
+
+ Wybierz panel
+
+
+ Ostrzeżenie ({0})
+
+
+ Transfer
+
+
+ Transfer nieudany!
+
+
+ Spróbuj zintegrować
+
+
+ Typ
+
+
+ Ultra VNC Repeater
+
+
+ Nienazwany motyw
+
+
+ mRemoteNG wymaga aktualizacji
+
+
+ mRemoteNG może okresowo łączyć się do strony mRemoteNG, aby sprawdzić dostępność aktualizacji i zapowiedzi produktów.
+
+
+ Sprawdzenie aktualizacji nie powiodło się!
+
+
+ Sprawdzanie aktualizacji nie powiodło się!
+
+
+ mRemoteNG Portable Edition nie obsługuje obecnie automatycznych aktualizacji.
+
+
+ Błąd usuwania pliku aktualizacji!
+
+
+ Pobranie zakończone!
+mRemoteNG zostanie teraz zamknięty i rozpocznie instalację.
+
+
+ Pobieranie nie powiodło się!
+
+
+ Pobieranie aktualizacji nie powiodło się!
+
+
+ Co {0} dni
+
+
+ Codziennie
+
+
+ Miesięcznie
+
+
+ Tygodniowo
+
+
+ Nie udało się uruchomić aktualizacji!
+
+
+ Użyj innego loginu użytkownika i hasła
+
+
+ Używaj tylko panelu powiadomień (okienka z komunikatami nie pojawią się więcej)
+
+
+ Użytkownik
+
+
+ Użyj tego samego użytkownika i hasła
+
+
+ Użyj karty inteligentnej
+
+
+ Użyj serwera SQL aby przechowywać konfigurację połączeń
+
+
+ Wersja
+
+
+ VNC
+
+
+ Odłączenie VNC nie powiodło się!
+
+
+ Otwarcie połączenia nie powiodło się!
+
+
+ Odświeżenie ekranu VNC nie powiodło się!
+
+
+ VNC SendSpecialKeys nie powiodło się!
+
+
+ Uruchomienie czatu VNC nie powiodło się!
+
+
+ Ostrzegaj, jeśli uwierzytelnianie nie powiedzie się
+
+
+ Ostrzeżenia
+
+
+ Zapisz plik logu (mRemoteNG.log)
+
+
+ Ścieżka XULrunner:
+
+
+ Tak
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.pt-BR.resx b/mRemoteV1/CS/Language/Language.pt-BR.resx
new file mode 100644
index 000000000..dbb758776
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.pt-BR.resx
@@ -0,0 +1,490 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Sobre
+
+
+ Ativo
+
+
+ Atividade
+
+
+ Nova conexão
+
+
+ Nova pasta
+
+
+ AddNodeFromXML falhou!
+
+
+ AddNodesFromSQL falhou!
+
+
+ Permitir apenas uma única instância do aplicativo (É necessário reiniciar o mRemoteNG)
+
+
+ Sempre
+
+
+ Conectar sempre, mesmo se a autenticação falhar
+
+
+ Sempre mostrar a caixa de diálogo de seleção de painel ao abrir conexões
+
+
+ Sempre mostrar ícone da área de notificação
+
+
+ Me pergunte novamente mais tarde
+
+
+ Personalizar as configurações agora
+
+
+ Usar as configurações recomendadas
+
+
+ {0} pode verificar automaticamente as atualizações que podem fornecer novas funcionalidades e correções de bugs. É recomendável que você permita {0} verificar atualizações semanais.
+
+
+ Configurações de atualização automática
+
+
+ Aspecto
+
+
+ Obter automaticamente informações de sessão
+
+
+ Salvar automaticamente a cada:
+
+
+ Minutos (0 significa desativado)
+
+
+ Versão atual
+
+
+ & Procurar...
+
+
+ & Cancelar
+
+
+ Alterar
+
+
+ & Fechar
+
+
+ Herança padrão
+
+
+ Propriedades padrões
+
+
+ Desconectar
+
+
+ Ícone
+
+
+ & Importar
+
+
+ Herança
+
+
+ Executar o PuTTY
+
+
+ & Novo
+
+
+ & OK
+
+
+ Propriedades
+
+
+ & Scanear
+
+
+ & Parar
+
+
+ Testar Proxy
+
+
+ Você não pode importar um arquivo de conexão normal. Por favor, use Arquivo - Carregar Conexões para os arquivos de conexão normal!
+
+
+ Não é possível iniciar a varredura de portas, formato IP incorreto!
+
+
+ Aparência
+
+
+ Conexão
+
+
+ Credenciais
+
+
+ Mostrar
+
+
+ Gateway
+
+
+ Geral
+
+
+ Diversos
+
+
+ Protocolo
+
+
+ Redirecionar
+
+
+ Sempre mostrar esta tela na inicialização
+
+
+ Atualizar
+
+
+ Falha na verificação!
+
+
+ Verificação com sucesso!
+
+
+ O recurso de sessões (RDP) requer que você tenha uma cópia registrada do eolwtscom.dll no seu sistema.
+mRemoteNG vem com este componente mas não o registra automaticamente a menos que você instale o pacote.
+Para registrá-lo manualmente faça isso: Abra a caixa de diálogo Executar (Iniciar - Executar) e digite o seguinte: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (onde c:\Program Files\mRemoteNG\ é o caminho para a instalação de mRemoteNG).
+Se você ainda não conseguir passar por esta verificação ou não conseguir usar o recurso de sessões (RDP) no mRemoteNG, por favor, consulte o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ EOLWTSCOM foi encontrada e parece ser registrado corretamente.
+
+
+ Para usar o motor de renderização Gecko, você precisa ter o XULrunner 1.8.1.x e o caminho para a instalação do conjunto em suas opções.
+Você pode baixar o XULrunner 1.8.1.3 em: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Quando terminar de baixar o pacote, extraia o pacote para um caminho de sua escolha.
+Em seguida, emtre no mRemoteNG e vá em ferramentas - opções - avançadas e digite o caminho correto no campo caminho XULrunner.
+Se ainda não conseguir passar esta verificação ou usar o motor Gecko em mRemoteNG por favor consultar o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ XULrunner foi encontrado e aparenta estar instalado corretamente.
+
+
+ ICA requer que o XenDesktop Online Plugin esteja instalado e a biblioteca wfica.ocs registrada. Você pode baixar o cliente aqui: http://www.citrix.com/download/
+Se você tiver o Plugin Online XenDesktop instalado e a verificação ainda falhar, tente registrar manualmente o wfica.ocx
+Para fazer isso abra a caixa de diálogo Executar (Iniciar - Executar) e digite o seguinte: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (onde c:\Program Files\Citrix\ICA Client\ é o caminho para a instalação do Plugin Online do XenDesktop).
+Se você ainda não puder passar por esta verificação ou usar ICA em mRemoteNG, por favor, consulte o fórum de mRemoteNG no http://forum.mremoteng.org/"
+
+
+ Todos os componentes de ICA, foram encontrados e parecem ser registrado corretamente. Citrix ICA cliente controle versão {0}
+
+
+ não instalado corretamente
+
+
+ O SSH, Telnet, Rlogin e protocolos RAW precisam PuTTY para trabalhar. PuTTY vem com cada pacote de mRemoteNG e está localizado no caminho de instalação.
+Por favor, certifique-se de que você tem o Putty.exe em seu diretório mRemoteNG (padrão: c:\Program Files\mRemoteNG\) ou que você tenha especificado um caminho válido para seu executável PuTTY nas opções (ferramentas - opções - avançadas - caminho personalizado PuTTY)
+
+
+ O executável PuTTY foi encontrado e está pronto para usar.
+
+
+ Domínio
+
+
+ Não mostre esta mensagem novamente.
+
+
+ Herança
+
+
+ Senha
+
+
+ Este servidor proxy requer autenticação
+
+
+ Use o caminho personalizado para o PuTTY:
+
+
+ Reconectar quando estiver pronto
+
+
+ Usar um servidor proxy para se conectar
+
+
+ Nome de usuário
+
+
+ Esperar para sair
+
+
+ Verificar novamente
+
+
+ Verificar se há atualizações e anúncios na inicialização
+
+
+ Verificar agora
+
+
+ Portas fechadas
+
+
+ Recolher todas as pastas
+
+
+ Argumentos
+
+
+ Nome de exibição
+
+
+ Nome do arquivo
+
+
+ HostName/IP
+
+
+ Mensagem
+
+
+ Nome de usuário
+
+
+ Esperar para sair
+
+
+ Validação de componentes
+
+
+ btnIcon_Click falhou!
+
+
+ ShowHideGridItems falhou!
+
+
+ IconMenu_Click falhou!
+
+
+ Propriedade do Objeto de grade falhou!
+
+
+ SetHostStatus falhou!
+
+
+ pGrid_PopertyValueChanged falhou!
+
+
+ Config UI carregamento falhou!
+
+
+ Você quer fechar a conexão, "{0}"?
+
+
+ Tem certeza que deseja fechar o painel, "{0}"? Todas as ligações ativas serão fechadas.
+
+
+ Tem certeza que deseja excluir a ferramenta externa, "{0}"?
+
+
+ Tem certeza que deseja excluir as ferramentas externas {0} selecionadas?
+
+
+ Tem certeza que deseja excluir a ligação, "{0}"?
+
+
+ Tem certeza que deseja excluir a pasta vazia, "{0}"?
+
+
+ Tem certeza que deseja excluir a pasta, "{0}"? Pastas ou ligações que ele contém também serão excluídas.
+
+
+ Você quer fechar todas as conexões abertas?
+
+
+ Tem certeza de que deseja redefinir os painéis para o layout padrão?
+
+
+ Conectar-se
+
+
+ Se conectar em modo fullscreen
+
+
+ Conectando...
+
+
+ Protocolo evento conectado
+
+
+ Conexão para "{0}" via "{1}" estabelecido pelo usuário "{2}" (Descrição: "{3}"; Campo usuário: "{4}")
+
+
+ Conexão falhou!
+
+
+ Erro no evento de protocolo
+
+
+ Abrir conexão falhou!
+
+
+ Não é possível abrir a conexão: nenhum nome de host especificado!
+
+
+ Erro RDP!
+Código de erro: {0}
+Descrição do erro: {1}
+
+
+ Conexões
+
+
+ Impossível definir porta padrão!
+
+
+ Não foi possível criar o backup do arquivo de conexões!
+
+
+ Falha na importação do arquivo de conexões!
+
+
+ Arquivo de conexões "{0}" não pôde ser carregado!
+
+
+ Arquivo de conexões "{0}" não pôde ser carregado! Começando com o novo arquivo de conexões.
+
+
+ Não consegui salvar o arquivo de conexões!
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.pt.resx b/mRemoteV1/CS/Language/Language.pt.resx
new file mode 100644
index 000000000..4f7597137
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.pt.resx
@@ -0,0 +1,2126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Sobre
+
+
+ Ativo
+
+
+ Atividade
+
+
+ Nova ligação
+
+
+ Nova pasta
+
+
+ AddNodeFromXML falhou!
+
+
+ AddNodesFromSQL falhou!
+
+
+ Permitir apenas uma instância da aplicação (obriga a reiniciar o mRemoteNG)
+
+
+ Sempre
+
+
+ Ligar sempre, mesmo se a autenticação falhar
+
+
+ Mostrar sempre a caixa de diálogo de seleção do painel ao abrir ligações
+
+
+ Sempre Mostrar painel abas
+
+
+ Mostrar sempre o ícone da área de notificação
+
+
+ Perguntar mais tarde
+
+
+ Personalizar as configurações agora
+
+
+ Usar as definições recomendadas
+
+
+ {0} pode verificar automaticamente as atualizações que podem fornecer novas funcionalidades e correções de bugs. É recomendável que você permita {0} verificar atualizações semanais.
+
+
+ Configurações de atualização automática
+
+
+ Aspeto
+
+
+ Obter automaticamente informações de sessão
+
+
+ Auto salvar a cada:
+
+
+ Minutos (0 significa desativado)
+
+
+ Versão atual
+
+
+ &Procurar...
+
+
+ &Cancelar
+
+
+ Alterar
+
+
+ &Fechar
+
+
+ Herança padrão
+
+
+ Propriedades padrão
+
+
+ Desligar
+
+
+ Ícone
+
+
+ &Importação
+
+
+ Herança
+
+
+ Executar o PuTTY
+
+
+ &Novo
+
+
+ &OK
+
+
+ Propriedades
+
+
+ &Pesquisar
+
+
+ &Parar
+
+
+ Testar Proxy
+
+
+ Não pode importar um arquivo de ligação normal. Por favor, vá a Arquivo - Ligações para ficheiros de ligação normais!
+
+
+ Não é possível iniciar a procura de portas, formato de IP incorreto!
+
+
+ Aparência
+
+
+ Ligação
+
+
+ Credenciais
+
+
+ Ecrã
+
+
+ Gateway
+
+
+ Geral
+
+
+ Diversos
+
+
+ Protocolo
+
+
+ Redirecionar
+
+
+ Mostrar sempre esta informação no arranque
+
+
+ Refrescar
+
+
+ Falha na verificação!
+
+
+ Verificação com sucesso!
+
+
+ O recurso de sessões (RDP) requer que você tenha uma cópia registada do eolwtscom.dll no seu sistema. mRemoteNG vem com este componente mas não o regista automaticamente a menos que você instale o pacote. Para registá-lo manualmente deve executar: abrir a caixa de diálogo Executar (Iniciar - Executar) e digite o seguinte: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (onde c:\Program Files\mRemoteNG\ é o caminho para a instalação de mRemoteNG). Se você ainda não passar passar esta verificação ou não consegue usar o recurso de sessões (RDP) no mRemoteNG, por favor, consulte o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ EOLWTSCOM foi encontrada e aparenta estar registada corretamente.
+
+
+ Para usar o motor de renderização Gecko, você precisará ter o XULrunner 1.8.1.x e o caminho configurado nas opções. Você pode baixar o XULrunner 1.8.1.3 em: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ quando terminar de descarregar, extraia o pacote para um caminho de sua escolha. Em seguida, em mRemoteNG vá em ferramentas - opções - avançadas e digite o caminho correto no campo caminho XULrunner. Se você ainda não pode executar esta seleção ou usar o motor Gecko em mRemoteNG, por favor, consulte o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ XULrunner foi encontrado e aparenta estar instalado corretamente.
+
+
+ ICA requer que o XenDesktop Online Plugin esteja instalado e a biblioteca wfica registrada. Você pode baixar o cliente aqui: http://www.citrix.com/download/ se você tiver o Plugin Online XenDesktop instalado e a verificação ainda falhar, tente registrar manualmente o wfica. Para fazer isso abra a caixa de diálogo Executar (Iniciar - Executar) e digite o seguinte: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (onde c:\Program Files\Citrix\ICA Client\ é o caminho para a instalação do Plugin Online do XenDesktop). Se você ainda não pode passar essa verificação ou usar ICA em mRemoteNG, por favor, consulte o fórum de mRemoteNG no http://forum.mremoteng.org/"
+
+
+ Todos os componentes de ICA, foram encontrados e parecem ser registrado corretamente. Citrix ICA cliente controle versão {0}
+
+
+ não instalado corretamente
+
+
+ O SSH, Telnet, Rlogin e protocolos crus precisam PuTTY para trabalhar. PuTTY vem com cada pacote de mRemoteNG e situa-se no caminho de instalação. Por favor, certifique-se de que ou você tem o Putty.exe no diretório mRemoteNG (padrão: c:\Program Files\mRemoteNG\) ou que você especificou um caminho válido para seu executável PuTTY nas opções (ferramentas - opções - avançadas - caminho personalizado PuTTY)
+
+
+ O executável PuTTY foi encontrado e está pronto para usar.
+
+
+ Para que o RDP funcione corretamente é necessário ter pelo menos o Remote Desktop Connection (Terminal Services Client) 6.1 instalado. Pode obtê-lo aqui: http://support.microsoft.com/kb/951616 se tiver RDP 6.1 instalado e a verificação ainda falhar, tente registrar manualmente o mstscax.dll. Para fazer isso abra a caixa de diálogo Executar (Iniciar - Executar) e digite o seguinte: regsvr32 "c:\windows\system32\mstscax.dll" (onde c:\ é sua unidade do sistema). Se você ainda tiver problemas para obter o RDP para trabalhar por favor consulte o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ Todos os componentes RDP foram encontrados e parecem estar registrados corretamente. RDP versão {0}
+
+
+ O VNC requer VncSharpNG.dll estar localizado na pasta do aplicativo mRemoteNG. Por favor, certifique-se de que você tem o arquivo VncSharpNG.dll na pasta do aplicativo mRemoteNG (geralmente, C:\Program Files\mRemoteNG\). Se você ainda não pode efetuar essa verificação ou usar o VNC em mRemoteNG por favor consulte o fórum de mRemoteNG em http://forum.mremoteng.org/
+
+
+ Todos os componentes do VNC foram encontrados e parecem estar registrados corretamente. VncSharpNG versão {0}
+
+
+ Tentar reconectar automaticamente quando desconectado do servidor (RDP && ICA somente)
+
+
+ Domínio
+
+
+ Não mostrar esta mensagem novamente.
+
+
+ Herança
+
+
+ Senha
+
+
+ Este servidor proxy requer autenticação
+
+
+ Usar caminho personalizado PuTTY:
+
+
+ Voltar a ligar quando estiver pronto
+
+
+ Usar um servidor proxy para se ligar
+
+
+ Nome de utilizador
+
+
+ Esperar para sair
+
+
+ Verifique novamente
+
+
+ Verificar se há atualizações e anúncios no arranque
+
+
+ Verificar agora
+
+
+ Verificar a correta instalação de componentes na inicialização
+
+
+ Escolher painel antes de ligar
+
+
+ Portas fechadas
+
+
+ Recolher todas as pastas
+
+
+ Argumentos
+
+
+ Nome a exibir
+
+
+ Nome do arquivo
+
+
+ HostName/IP
+
+
+ Mensagem
+
+
+ Nome de utilizador
+
+
+ Esperar para sair
+
+
+ Impossível processar argumentos da linha de comando!
+
+
+ Validação de componentes
+
+
+ btnIcon_Click falhou!
+
+
+ ShowHideGridItems falhou!
+
+
+ IconMenu_Click falhou!
+
+
+ Propriedade do Objeto de grade falhou!
+
+
+ SetHostStatus falhou!
+
+
+ pGrid_PopertyValueChanged falhou!
+
+
+ Config UI carregamento falhado!
+
+
+ Pretende fechar a ligação, "{0}"?
+
+
+ Tem certeza que deseja fechar o painel, "{0}"? Todas as ligações ativas serão fechadas.
+
+
+ Tem certeza que deseja excluir a ferramenta externa, "{0}"?
+
+
+ Tem certeza que deseja excluir as ferramentas externas {0} selecionadas?
+
+
+ Tem certeza que deseja excluir a ligação, "{0}"?
+
+
+ Tem certeza que deseja excluir a pasta vazia, "{0}"?
+
+
+ Tem certeza que deseja excluir a pasta, "{0}"? Pastas ou ligações que ele contém também serão excluídas.
+
+
+ Pretende fechar todas as ligações abertas?
+
+
+ Tem certeza de que deseja redefinir os painéis para seu layout padrão?
+
+
+ Ligar
+
+
+ Ligar em modo de tela cheia
+
+
+ A ligar...
+
+
+ Protocolo ligado
+
+
+ ligação como "{0}" via "{1}" estabelecido pelo utilizador "{2}" (Descrição: "{3}"; Campo de utilizador: "{4}")
+
+
+ Ligação falhada!
+
+
+ Erro no evento de protocolo
+
+
+ A abrir ligação falhada!
+
+
+ Não é possível abrir a ligação: Nome host não especificado!
+
+
+ Erro RDP!
+Código de erro: {0}
+Descrição do erro: {1}
+
+
+ Ligações
+
+
+ Impossível definir porta padrão!
+
+
+ Não foi possível criar backup de arquivo de ligações!
+
+
+ Falha na importação do arquivo de ligações!
+
+
+ Arquivo de ligações "{0}" não pôde ser carregado!
+
+
+ Arquivo de ligações "{0}" não pôde ser carregado! A iniciar com o novo arquivo de ligações.
+
+
+ Não foi possível salvar o arquivo de ligações!
+
+
+ Impossível salvar arquivo de ligações como "{0}"!
+
+
+ Ligar em modo consola
+
+
+ Ligar (com opções)
+
+
+ Ligação para {0} por {1} fechada pelo utilizador {2}.
+
+
+ Ligação para {0} por {1} fechada pelo utilizador {2}. (Descrição: "{3}"; Campo utilizador: "{4}")
+
+
+ Evento de ligação fechado
+
+
+ Evento de fecho de ligação falhou!
+
+
+ Impossível criar novo arquivo de ligações!
+
+
+ Não foi possível encontrar o controlo ToolStrip em FilteredPropertyGrid.
+
+
+ Versão instalada
+
+
+ Tema padrão
+
+
+ Detetar
+
+
+ Não ligar se a autenticação falhar
+
+
+ Duplo clique no guia para fechar
+
+
+ Obter e instalar
+
+
+ Duplicar
+
+
+ Continuar sem senha?
+
+
+ Para Nome de utilizador, senha ou domínio vazios, usar:
+
+
+ 128-bit
+
+
+ 128-bit (apenas em início de sessão)
+
+
+ Básico
+
+
+ Encriptar todo o arquivo de ligações
+
+
+ IP final
+
+
+ Porta final
+
+
+ AddExternalToolsToToolBar (frmMain) falhou. {0}
+
+
+ AddFolder (interface do usuário.Falha de Window.Tree). {0}
+
+
+ A versão de banse de dados {0} não é compatível com esta versão do {1}.
+
+
+ CloneNode (Tree.Node) falhou. {0}
+
+
+ Código de erro {0}.
+
+
+ Impossível salvar lista de ligação.
+
+
+ Falha de descriptografia. {0}
+
+
+ Falha de descriptografia. {0}
+
+
+ A configuração de segurança do Windows, "criptografia de sistema: usar FIPS compatível com algoritmos para criptografia, hash e assinatura", está habilitado. Essa configuração não é compatível com {0}. Consulte o artigo do Microsoft Support em http://support.microsoft.com/kb/811833 para obter mais informações. {0} agora vai ser fechado.
+
+
+ Erros
+
+
+ O arquivo de inicialização de ligação não pôde ser carregado.{0}{0}{2}{0}{3}{0}{0}A fim de evitar perda de dados, {1} vai sair agora.
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) falhou. {0}
+
+
+ Expandir todas as pastas
+
+
+ Experimental
+
+
+ Exportar
+
+
+ Exportação XML do mRemote/mRemoteNG
+
+
+ Ext. App
+
+
+ Inclui ícones de [FAMFAMFAM]
+
+
+ Todos os arquivos (*.*)
+
+
+ Arquivos de aplicação (*.exe)
+
+
+ mRemote arquivos CSV (.csv)
+
+
+ mRemote arquivos XML (*.XML)
+
+
+ Arquivos RDP (*.rdp)
+
+
+ visionapp Remote Desktop 2008 de arquivos CSV (.csv)
+
+
+ Herdar {0}
+
+
+ Descrição das propriedades herdadas: {0}
+
+
+ Libertar
+
+
+ Ecrã completo
+
+
+ Geral
+
+
+ Obter informações de falhas de ligação SQL
+
+
+ Ocorreu um erro ao carregar a entrada de ligação para "{0}" de "{1}". {2}
+
+
+ Ligação automática
+
+
+ Ligação
+
+
+ Propriedades de ferramentas externas
+
+
+ Arquivos
+
+
+ Host
+
+
+ HTTP Falhou a ligação!
+
+
+ Impossível criar nova ligação HTTP!
+
+
+ Alteração da aba HTTP falhou!
+
+
+ Falhou configuração de props HTTP!
+
+
+ Impossível criar nova ligação ICA!
+
+
+ Falha ao carregar o Plugin ICA!
+
+
+ Falha ICA SetCredentials!
+
+
+ Manipuladores de evento conjunto ICA falharam!
+
+
+ Configuração de props ICA falhou!
+
+
+ Configuração de resolução ICA falhou!
+
+
+ Identificar guias de ligação rápida, adicionando o prefixo "rápido:"
+
+
+ Importar do Active Directory
+
+
+ Importação/exportação
+
+
+ Importar XML mRemote/mRemoteNG
+
+
+ Importar de Port Scan
+
+
+ Importar de ficheiros .RDP
+
+
+ Inativo
+
+
+ Informações
+
+
+ O mRemoteNG está atualizado
+
+
+ Falha na ligação!
+
+
+ Libertação do Int App falhou!
+
+
+ Foco Int App falhou!
+
+
+ Int App Handle: {0}
+
+
+ Processo de matar Int App falhou!
+
+
+ Painel Handle: {0}
+
+
+ Redimensionamento do Int App falhou!
+
+
+ ---Coisas IntApp--
+
+
+ Int App título: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Endereço:
+
+
+ Argumentos:
+
+
+ Log de alterações:
+
+
+ Ao fechar ligações:
+
+
+ &Ligar:
+
+
+ Nome a exibir
+
+
+ Domínio:
+
+
+ Nome do arquivo:
+
+
+ Hostname:
+
+
+ Opções:
+
+
+ Senha:
+
+
+ Porta:
+
+
+ Edição portátil
+
+
+ Protocolo:
+
+
+ Para configurar as sessões PuTTY clique neste botão:
+
+
+ Máxima tempo de espera para PuTTY e ferramentas externas integradas:
+
+
+ Lançado sob a GNU General Public License (GPL)
+
+
+ segundos
+
+
+ Selecione um painel na lista abaixo ou clique em Novo para adicionar um novo. Clique em OK para continuar.
+
+
+ Estado do servidor:
+
+
+ Banco de dados:
+
+
+ Banco de dados:
+
+
+ Nome de utilizador:
+
+
+ Verificar:
+
+
+ Língua
+
+
+ (Detectar automaticamente)
+
+
+ {0} deve ser reiniciado antes que alterações à língua entrem em vigor.
+
+
+ Falhou carregamento do SQL!
+
+
+ Falhou carregamento do XML!
+
+
+ Arquivo local
+
+
+ Arquivo local inexistente!
+
+
+ Desligar
+
+
+ Falha de escrita no arquivo de relatório!
+
+
+ Impossível salvar relatório no destino final.
+
+
+ Usa a biblioteca mágica [Crownwood Software]
+
+
+ Sobre
+
+
+ Adicionar o Painel de Ligação
+
+
+ Anúncios
+
+
+ Verificar se há atualizações
+
+
+ Config
+
+
+ Ligar
+
+
+ Painéis de ligações
+
+
+ Ligações
+
+
+ Configurações e ligações
+
+
+ Copiar
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Excluir...
+
+
+ Excluir a conexão...
+
+
+ Excluir ferramenta externa...
+
+
+ Excluir a pasta...
+
+
+ Desligar
+
+
+ Doar
+
+
+ Duplicar
+
+
+ Duplicar ligação
+
+
+ Duplicar pasta
+
+
+ Duplicar Aba
+
+
+ Sair
+
+
+ Ferramenta externa
+
+
+ Barra de ferramentas externas
+
+
+ &Arquivo
+
+
+ Ecrã completo
+
+
+ Ecrã completo (RDP)
+
+
+ &Ajuda
+
+
+ Ajuda mRemoteNG
+
+
+ Ir para
+
+
+ Executar Ferramenta Externa
+
+
+ Novo arquivo de ligações
+
+
+ Nova ferramenta externa
+
+
+ Notificações
+
+
+ Copie todos
+
+
+ Excluir
+
+
+ Apagar tudo
+
+
+ Abrir arquivo de ligações...
+
+
+ Opções
+
+
+ Colar
+
+
+ Varrer portas
+
+
+ Barra de ferramentas simples
+
+
+ Ligar novamente
+
+
+ Atualizar ecrã (VNC)
+
+
+ Renomear
+
+
+ Renomear ligação
+
+
+ Renomear pasta
+
+
+ Renomear aba
+
+
+ Relatar um erro
+
+
+ Repôr o layout
+
+
+ Salvar arquivo de ligações
+
+
+ Salvar arquivo de ligações, como...
+
+
+ Fotografia do ecrã
+
+
+ Gestor de fotografias de ecrã
+
+
+ Enviar teclas especiais (VNC)
+
+
+ Sessões
+
+
+ Sessões e Cópias de ecrã
+
+
+ Visualizar texto
+
+
+ SmartSize (RDP/VNC)
+
+
+ Transferência de Ficheiro SSH
+
+
+ Iniciar chat (VNC)
+
+
+ Fórum de suporte
+
+
+ &Ferramentas
+
+
+ Transferência de arquivo (SSH)
+
+
+ &Vista
+
+
+ Somente ver (VNC)
+
+
+ Sítio
+
+
+ Minimizar para área de notificação
+
+
+ Mover para baixo
+
+
+ Mover para cima
+
+
+ Minhas atuais credenciais (informações de logon do Windows)
+
+
+ Nunca
+
+
+ Nova ligação
+
+
+ Nova pasta
+
+
+ Novo painel
+
+
+ Nova raiz
+
+
+ Novo título
+
+
+ Não
+
+
+ Sem compactação
+
+
+ Nenhuma App externa especificada.
+
+
+ Nenhum
+
+
+ Nenhum
+
+
+ Normal
+
+
+ Não SmartSize
+
+
+ Nenhuma atualização disponível
+
+
+ Você está a tentar carregar um arquivo de ligações que foi criado usando uma versão muito inicial do mRemote, isso poderia resultar erro de execução. Se o erro acontecer, crie um novo arquivo de ligações!
+
+
+ Abrir nova aba à direita da guia selecionada
+
+
+ Portas abertas
+
+
+ Tema
+
+
+ &Excluir
+
+
+ &Novo
+
+
+ Nome do painel
+
+
+ Proteger com senha
+
+
+ Por favor, preencha todos os campos
+
+
+ Impossível carregar o painel PortScan!
+
+
+ (Essas propriedades somente serão salvas se você selecionar mRemote/mRemoteNG XML como formato de arquivo de saída!)
+
+
+ Digite o nome do host ou o ip onde pretende ligar-se.
+
+
+ Alterne todas as opções de herança.
+
+
+ Selecione o nível de autenticação a usar nesta ligação.
+
+
+ Selecione como se deseja autenticar no servidor VNC.
+
+
+ Selecione se deseja usar a cache bitmap ou não.
+
+
+ Selecione a qualidade de cor a ser usada.
+
+
+ Selecione o valor de compressão a ser usado.
+
+
+ Colocar suas anotações ou descrição para o host aqui.
+
+
+ Selecione Sim se o tema do host remoto deve ser exibido.
+
+
+ Selecione Sim se o papel de parede do host remoto deve ser exibido.
+
+
+ Digite o seu domínio.
+
+
+ Selecione se deseja usar a composição de área de trabalho ou não.
+
+
+ Selecione se deseja utilizar a suavização de fonte ou não.
+
+
+ Selecione o modo de codificação a ser usado.
+
+
+ Selecione a força da criptografia do host remoto.
+
+
+ Selecione a ferramenta externa a ser iniciada.
+
+
+ Selecione uma ferramenta externa a ser iniciada após desligar do host remoto.
+
+
+ Selecione uma ferramenta externa para ser iniciado antes de estabelecida a ligação com o host remoto.
+
+
+ Escolha um ícone que será exibido quando ligado ao host.
+
+
+ Se você deseja usá-lo em uma ferramenta externa, digite o endereço MAC do host remoto.
+
+
+ Este é o nome que será exibido na árvore de ligações.
+
+
+ Define o painel em que a ligação será aberta.
+
+
+ Digite sua senha.
+
+
+ Insira a porta que o protocolo estará a escutar.
+
+
+ Escolha protocolo o mRemoteNG deve usar para se ligar ao host.
+
+
+ Selecione uma sessão PuTTY para ser usada na ligação.
+
+
+ Especifica o nome de domínio que um utilizador fornece para conectar para o servidor Gateway RD.
+
+
+ Especifica o nome do host do servidor Gateway de área de trabalho remota.
+
+
+ Especifica quando usar um servidor de Gateway de Desktop remoto (RD Gateway).
+
+
+ Especifica se para se identificar o gateway usa o mesmo nome de utilizador e senha.
+
+
+ Especifica o nome de domínio que um utilizador fornece para ligar para o servidor Gateway RD.
+
+
+ Selecione se as unidades de disco locais deve ser mostradas no host remoto.
+
+
+ Selecione se as combinações de teclas (por exemplo, Alt-Tab) devem ser redirecionadas para o host remoto.
+
+
+ Selecione se as portas locais (isto é. com, paralela) devem ser mostradas no host remoto.
+
+
+ Selecione se impressoras locais devem ser mostradas no host remoto.
+
+
+ Selecione se Smart Cards locais devem estar disponíveis no host remoto.
+
+
+ Selecione como o som remoto deve ser redirecionado.
+
+
+ Selecione um dos mecanismos de renderização disponíveis que serão usados para exibir o HTML.
+
+
+ Escolha a resolução ou o modo em que esta ligação será aberta.
+
+
+ Selecione o modo de SmartSize a ser usado.
+
+
+ ligar-se à sessão consola do host remoto.
+
+
+ Use o Credential Security Support Provider (CredSSP) para autenticação, se ele estiver disponível.
+
+
+ Insira qualquer informação que necessite aqui.
+
+
+ Digite seu nome de utilizador.
+
+
+ Se você deseja estabelecer uma ligação única de exibição para o host, selecione Sim.
+
+
+ Digite o endereço de proxy a ser usado.
+
+
+ Digite a sua senha para autenticar no proxy.
+
+
+ Digite a porta que do servidor proxy escuta.
+
+
+ Se você usar um proxy para ligações de VNC do túnel, selecione qual é o tipo.
+
+
+ Digite seu nome de utilizador para se autenticar no proxy.
+
+
+ HostName/IP
+
+
+ Todos
+
+
+ Autenticação de servidor
+
+
+ Modo de autenticação
+
+
+ Cache Bitmaps
+
+
+ Cores
+
+
+ Compressão
+
+
+ Descrição
+
+
+ Temas de ecrã
+
+
+ Papel de parede do ecrã
+
+
+ Domínio
+
+
+ Composição do desktop
+
+
+ Suavização de fonte
+
+
+ Codificação
+
+
+ Força de Criptografia
+
+
+ Ferramenta externa
+
+
+ Ferramenta externa após
+
+
+ Ferramenta externa antes
+
+
+ Ícone
+
+
+ Endereço MAC
+
+
+ Nome
+
+
+ Painel
+
+
+ Senha
+
+
+ Porta
+
+
+ Protocolo
+
+
+ Sessão de puTTY
+
+
+ Domínio da gateway
+
+
+ Nome do host gateway
+
+
+ Senha de Gateway de área de trabalho remota
+
+
+ Usar o Gateway
+
+
+ Credenciais de gateway
+
+
+ Nome de utilizador do gateway
+
+
+ Unidades de disco
+
+
+ Combinações de teclas
+
+
+ Portas
+
+
+ Impressoras
+
+
+ Smart Cards
+
+
+ Sons
+
+
+ Motor de renderização
+
+
+ Resolução
+
+
+ Modo de SmartSize
+
+
+ Use a sessão de Consola
+
+
+ Utilize o CredSSP
+
+
+ Campo de utilizador
+
+
+ Nome de utilizador
+
+
+ Somente ver
+
+
+ Endereço proxy
+
+
+ Senha proxy
+
+
+ Porta proxy
+
+
+ Tipo de proxy
+
+
+ Nome de utilizador proxy
+
+
+ Evento de protocolo desconectado. Menssagem: {0}
+
+
+ Evento do Protocolo de desconexão falhou. {0}
+
+
+ Protocolo para importar
+
+
+ Falha no teste de proxy!
+
+
+ Teste de proxy bem sucedido!
+
+
+ Falha na ligação!
+
+
+ Libertação do processo PuTTY falhado!
+
+
+ Impossível definir foco!
+
+
+ Falha na obtenção de sessões Putty!
+
+
+ Putty handle: {0}
+
+
+ Falha em fechar o processo Putty!
+
+
+ Painel Handle: {0}
+
+
+ Falha no redimensionamento Putty!
+
+
+ Configurações do puTTY
+
+
+ Mostrar caixa de diálogo de configurações PuTTY na falha!
+
+
+ Início do putty falhou!
+
+
+ --Coisas PuTTY--
+
+
+ Título PuTTY: {0}
+
+
+ Rápido: {0}
+
+
+ Ligação rápida
+
+
+ Falha a adicionar ligação rápida!
+
+
+ Criação ligação rápida falhou
+
+
+ &Avisar-me quando fechar ligações
+
+
+ Avisar-me apenas ao &sair do mRemoteNG
+
+
+ Avisar-me somente ao fechar ligações múltiplas
+
+
+ &Não avisar ao fechar ligações
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 Cores (32 bits)
+
+
+ 256 Cores (8 bits)
+
+
+ 32768 Cores (15 bits)
+
+
+ 16777216 Cores (32 bits)
+
+
+ 65536 Cores (16 bits)
+
+
+ RDP falhou adicionar resolução!
+
+
+ RDP falhou adicionar resoluções!
+
+
+ Falha em Adicionar sessão
+
+
+ Falha no fecho de ligação RDP!
+
+
+ Falha a abrir ligação!
+
+
+ Impossível criar controlo RDP, por favor verifique os requisitos mRemoteNG.
+
+
+ Desativar o piscar do Cursor
+
+
+ Desativar a sombra do o Cursor
+
+
+ Desativar o arrastar completo da janela
+
+
+ Desabilitar as animações do Menu
+
+
+ Desativar temas
+
+
+ Desativar papel de parede
+
+
+ RDP desligado!
+
+
+ RDP falhou desligar, tentando fechar!
+
+
+ Código de erro interno 1.
+
+
+ Código de erro interno 2.
+
+
+ Código de erro interno 3. Este não é um estado válido.
+
+
+ Código de erro interno 4.
+
+
+ Erro irrecuperável durante a ligação ao cliente.
+
+
+ GetError falhou (FatalErrors)
+
+
+ Ocorreu um erro fatal e desconhecido de RDP. Código de erro {0}.
+
+
+ Ocorreu um erro de falta de memória.
+
+
+ Ocorreu um erro desconhecido.
+
+
+ Ocorreu um erro de criação da janela.
+
+
+ Erro de inicialização Winsock.
+
+
+ Impossível importar ficheiro RDP!
+
+
+ Ajustar ao painel
+
+
+ Foco de RDP falhou!
+
+
+ RD Gateway suportado.
+
+
+ Gateway de RD não suportado!
+
+
+ GetSessions falhou!
+
+
+ Falha a abrir ligação RDP!
+
+
+ Contador de re-ligação RDP:
+
+
+ Falha no RDP SetAuthenticationLevel!
+
+
+ Falha no RDP SetUseConsoleSession!
+
+
+ Configuração do Interruptor de Console para RDC {0}.
+
+
+ Falha no RDP SetCredentials!
+
+
+ Falha no RDP SetEventHandlers!
+
+
+ Falha no RDP SetRDGateway!
+
+
+ Falha no RDP SetPerformanceFlags!
+
+
+ Falha no RDP SetPort!
+
+
+ Falha no RDP SetProps!
+
+
+ Redirecionamento RDP falhou!
+
+
+ Configuração de teclas de redirecionamento RDP falhou!
+
+
+ RDP SetResolution falhou!
+
+
+ Tamanho inteligente
+
+
+ Trazer para este computador
+
+
+ Não executar
+
+
+ Deixar no computador remoto
+
+
+ RDP ToggleFullscreen falhou!
+
+
+ RDP ToggleSmartSize falhou!
+
+
+ Reconectar as sessões anteriormente abertas na inicialização
+
+
+ Refrescar
+
+
+ Arquivo remoto
+
+
+ Remover todos
+
+
+ Renomear
+
+
+ Rlogin
+
+
+ Salvar
+
+
+ Salvar tudo
+
+
+ Você deseja salvar o arquivo atual de ligações antes de carregar outro?
+
+
+ Salvar as ligações à saída
+
+
+ Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png
+
+
+ Ecrã
+
+
+ Imagem do ecrã
+
+
+ Imagens do ecrã
+
+
+ Pesquisa
+
+
+ Enviar para...
+
+
+ Obter sessões em fundo falhou
+
+
+ Matar sessão de fundo falhou
+
+
+ Definir o hostname como nome quando criar ou renomear as ligações
+
+
+ Configuração de texto de formulário principal falhou
+
+
+ Impossível salvar configurações ou libertar o ícone SysTray!
+
+
+ Mostrar dicas de ferramentas de descrição na árvore de ligação
+
+
+ Mostrar o caminho do arquivo completo de ligações no título da janela
+
+
+ Mostrar informações de logon no nome da guia
+
+
+ Mostrar protocolos no nome da guia
+
+
+ Clique simples abre ligação
+
+
+ Clique simples em ligação aberta alterna
+
+
+ Aspeto
+
+
+ Libertar
+
+
+ Sem SmartSize
+
+
+ Stocks 5
+
+
+ Ordenar
+
+
+ Crescente (A-Z)
+
+
+ Decrescente (Z-A)
+
+
+ Teclas especiais
+
+
+ Para mais informação consulte ajuda - Introdução - configuração de SQL!
+
+
+ SQL Server
+
+
+ Seleção SQL terminada. Existe uma atualização disponível! Indo para atualizar ligações.
+
+
+ SSH versão 1
+
+
+ SSH versão 2
+
+
+ SSH falha de transferência de plano de fundo!
+
+
+ Transferência bem sucedida!
+
+
+ SSH transferência final (interface do usuário.Window.SSHTransfer) falhou!
+
+
+ IP de início
+
+
+ Porta de início
+
+
+ Iniciar/Sair
+
+
+ Estado
+
+
+ Trocar para o painel de notificações:
+
+
+ Avançado
+
+
+ Aparência
+
+
+ Abas && painéis
+
+
+ Atualizações
+
+
+ Telnet
+
+
+ A seguir:
+
+
+ Painel de configuração
+
+
+ Painel de ligações
+
+
+ Geral
+
+
+ A cor de fundo do painel de configuração.
+
+
+ A cor do texto no painel de configuração de categoria.
+
+
+ A cor das linhas de grade do painel de configuração
+
+
+ A cor de fundo da área de ajuda do painel de configuração.
+
+
+ A cor do texto na área de ajuda do painel de configuração.
+
+
+ A cor do texto no painel de configuração.
+
+
+ A cor de fundo do painel de ligações.
+
+
+ A cor do texto no painel de ligações.
+
+
+ A cor das linhas de árvore no painel de ligações.
+
+
+ A cor de fundo dos menus.
+
+
+ A cor do texto nos menus.
+
+
+ A cor de fundo da caixa de pesquisa.
+
+
+ A cor do texto na caixa de pesquisa.
+
+
+ A cor do texto na caixa de pesquisa rápida.
+
+
+ A cor de fundo das barras de ferramentas.
+
+
+ A cor do texto em barras de ferramentas.
+
+
+ A cor de fundo da janela principal.
+
+
+ Cor de fundo do painel de configuração
+
+
+ Cor do texto da categoria do Painel de configuração
+
+
+ Cor de linha de grade do painel de configuração
+
+
+ Cor de fundo do painel de configuração ajuda
+
+
+ Cor do texto do painel de configuração ajuda
+
+
+ Cor do texto do painel de configuração
+
+
+ Cor de fundo de painel de ligações
+
+
+ Cor de texto de painel de ligações
+
+
+ Cor linha da da árvore do painel de ligações
+
+
+ Erro ({0})
+
+
+ Informações ({0})
+
+
+ Senha
+
+
+ Selecione o painel
+
+
+ Aviso ({0})
+
+
+ Transferência
+
+
+ Transferência falhada!
+
+
+ Tentar integrar
+
+
+ Tipo
+
+
+ Repetidor Ultra VNC
+
+
+ Porta UltraVNC SingleClick:
+
+
+ Desmarcar as propriedades que não deseja salvar!
+
+
+ Tema sem nome
+
+
+ mRemoteNG requer uma atualização
+
+
+ mRemoteNG periodicamente pode se ligar ao site mRemoteNG para verificar se há atualizações e anúncios de produtos.
+
+
+ Seleção de atualização falhou!
+
+
+ Verificação de atualização falhou!
+
+
+ mRemoteNG Portable Edition não suporta atualizações automaticas.
+
+
+ Erro a apagar ficheiro de atualização!
+
+
+ Download completo! mRemoteNG agora irá parar e começar com a instalação.
+
+
+ Falha no download!
+
+
+ Download de atualização falhado!
+
+
+ Em cada {0} dias
+
+
+ Diário
+
+
+ Mensal
+
+
+ Semanal
+
+
+ Impossível iniciar atualização!
+
+
+ Usar um nome diferente de utilizador e senha
+
+
+ Usar somente o painel de notificações (sem janelas messagebox)
+
+
+ Utilizador
+
+
+ Use o mesmo nome de utilizador e senha
+
+
+ Usar um smart card
+
+
+ Usar o SQL Server para carregar && salvar as ligações
+
+
+ Versão
+
+
+ VNC
+
+
+ Falhou a desconexão VNC!
+
+
+ Falha a abrir ligação!
+
+
+ Falha de atualização de ecrã VNC!
+
+
+ VNC SendSpecialKeys falhou!
+
+
+ Falhou configuração de eventos VNC!
+
+
+ Falhou configuração Props VNC!
+
+
+ Falhou o início de chat VNC!
+
+
+ VNC Toggle SmartSize falhou!
+
+
+ VNC Toggle ViewOnly falhou!
+
+
+ Avisar-me se a autenticação falhar
+
+
+ Avisos
+
+
+ Usa o DockPanel Suite por [Weifen Luo]
+
+
+ Gravar o arquivo de log (mRemoteNG.log)
+
+
+ Caminho XULrunner:
+
+
+ Sim
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.resx b/mRemoteV1/CS/Language/Language.resx
new file mode 100644
index 000000000..c9c780827
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.resx
@@ -0,0 +1,2381 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ About
+
+
+ Active
+
+
+ Active Directory
+
+
+ Activity
+
+
+ New Connection
+
+
+ New folder
+
+
+ AddNodeFromXML failed!
+
+
+ AddNodesFromSQL failed!
+
+
+ Allow only a single instance of the application (mRemoteNG restart required)
+
+
+ Always
+
+
+ Always connect, even if authentication fails
+
+
+ Always show panel selection dialog when opening connections
+
+
+ Always show panel tabs
+
+
+ Always show notification area icon
+
+
+ Ask me again later
+
+
+ Customize the settings now
+
+
+ Use the recommended settings
+
+
+ {0} can automatically check for updates that may provide new features and bug fixes. It is recommended that you allow {0} to check for updates weekly.
+
+
+ Automatic update settings
+
+
+ Aspect
+
+
+ Automatically get session information
+
+
+ Auto save every:
+
+
+ Minutes (0 means disabled)
+
+
+ Latest version
+
+
+ &Browse...
+
+
+ &Cancel
+
+
+ Change
+
+
+ &Close
+
+
+ Default Inheritance
+
+
+ Default Properties
+
+
+ Disconnect
+
+
+ Icon
+
+
+ &Import
+
+
+ Inheritance
+
+
+ &Launch
+
+
+ Launch PuTTY
+
+
+ &New
+
+
+ &OK
+
+
+ Properties
+
+
+ &Scan
+
+
+ &Stop
+
+
+ Test Proxy
+
+
+ You cannot import a normal connection file.
+Please use File - Load Connections for normal connection files!
+
+
+ Cannot start Port Scan, incorrect IP format!
+
+
+ Appearance
+
+
+ Connection
+
+
+ Credentials
+
+
+ Display
+
+
+ Gateway
+
+
+ General
+
+
+ Miscellaneous
+
+
+ Protocol
+
+
+ Redirect
+
+
+ Always show this screen at startup
+
+
+ Refresh
+
+
+ Check failed!
+
+
+ Check succeeded!
+
+
+ The (RDP) Sessions feature requires that you have a copy of eolwtscom.dll registered on your system.
+mRemoteNG ships with this component but it is not registered automatically if you do not use the mRemoteNG Installer.
+To register it manually, run the following command from an elevated command prompt: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (where C:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
+If this check still fails or you are unable to use the (RDP) Sessions feature, please consult the mRemoteNG Forum at http://forum.mremoteng.org/.
+
+
+ EOLWTSCOM was found and seems to be registered properly.
+
+
+ To use the Gecko Rendering Engine you need to have XULrunner 1.8.1.x and the path to the installation set in your Options.
+You can download XULrunner 1.8.1.3 here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+When you are finished downloading extract the package to a path of your choice. Then in mRemoteNG go to Tools - Options - Advanced and enter the correct path in the XULrunner path field.
+If you are still not able to pass this check or use the Gecko Engine in mRemoteNG please consult the mRemoteNG Forum at http://forum.mremoteng.org/
+
+
+ XULrunner was found and seems to be installed properly.
+
+
+ ICA requires that the XenDesktop Online Plugin is installed and that the wfica.ocx library is registered. You can download the client here: http://www.citrix.com/download/
+If you have the XenDesktop Online Plugin installed and the check still fails, try to register wfica.ocx manually.
+To do this open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (Where c:\Program Files\Citrix\ICA Client\ is the path to your XenDesktop Online Plugin installation).
+If you are still not able to pass this check or use ICA in mRemoteNG please consult the mRemoteNG Forum at http://forum.mremoteng.org/"
+
+
+ All ICA components were found and seem to be registered properly.
+Citrix ICA Client Control Version {0}
+
+
+ not installed properly
+
+
+ The SSH, Telnet, Rlogin and RAW protocols need PuTTY to work. PuTTY comes with every mRemoteNG package and is located in the installation path.
+Please make sure that either you have the Putty.exe in your mRemoteNG directory (default: c:\Program Files\mRemoteNG\) or that you specified a valid path to your PuTTY executable in the Options (Tools - Options - Advanced - Custom PuTTY path)
+
+
+ The PuTTY executable was found and should be ready to use.
+
+
+ For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services) Client 6.0 installed. You can download it here: http://support.microsoft.com/kb/925876
+If this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/.
+
+
+ All RDP components were found and seem to be registered properly.
+Remote Desktop Connection Control Version {0}
+
+
+ VNC requires VncSharpNG.dll to be located in your mRemoteNG application folder.
+Please make sure that you have the VncSharpNG.dll file in your mRemoteNG application folder (usually C:\Program Files\mRemoteNG\).
+If you are still not able to pass this check or use VNC in mRemoteNG please consult the mRemoteNG Forum at http://forum.mremoteng.org/
+
+
+ All VNC components were found and seem to be registered properly.
+VncSharpNG Control Version {0}
+
+
+ Automatically try to reconnect when disconnected from server (RDP && ICA only)
+
+
+ Domain
+
+
+ Do not show this message again.
+
+
+ Inheritance
+
+
+ Password
+
+
+ This proxy server requires authentication
+
+
+ Use custom PuTTY path:
+
+
+ Reconnect when ready
+
+
+ Use a proxy server to connect
+
+
+ Username
+
+
+ Wait for exit
+
+
+ Check Again
+
+
+ Check for updates and announcements at startup
+
+
+ Check now
+
+
+ Check proper installation of components at startup
+
+
+ Choose panel before connecting
+
+
+ Closed Ports
+
+
+ Collapse all folders
+
+
+ Arguments
+
+
+ Display Name
+
+
+ Filename
+
+
+ Hostname/IP
+
+
+ Message
+
+
+ Username
+
+
+ Wait For Exit
+
+
+ E&xit {0}
+
+
+ Couldn't parse command line args!
+
+
+ &Open a connection file
+
+
+ &Try again
+
+
+ {0} has detected the Lenovo Auto Scroll Utility running on this system. This utility is known to cause problems with {0}. It is recommended that you disable or uninstall it.
+
+
+ Compatibility problem detected
+
+
+ Components Check
+
+
+ btnIcon_Click failed!
+
+
+ ShowHideGridItems failed!
+
+
+ IconMenu_Click failed!
+
+
+ Property Grid object failed!
+
+
+ SetHostStatus failed!
+
+
+ pGrid_PopertyValueChanged failed!
+
+
+ Config UI load failed!
+
+
+ Do you want to close the connection, "{0}"?
+
+
+ Are you sure you want to close the panel, "{0}"? Any connections that it contains will also be closed.
+
+
+ Are you sure you want to delete the external tool, "{0}"?
+
+
+ Are you sure you want to delete the {0} selected external tools?
+
+
+ Are you sure you want to delete the connection, "{0}"?
+
+
+ Are you sure you want to delete the empty folder, "{0}"?
+
+
+ Are you sure you want to delete the folder, "{0}"? Any folders or connections that it contains will also be deleted.
+
+
+ Do you want to close all open connections?
+
+
+ Are you sure you want to reset the panels to their default layout?
+
+
+ Connect
+
+
+ Connect in fullscreen mode
+
+
+ Connecting...
+
+
+ Protocol Event Connected
+
+
+ Connection to "{0}" via "{1}" established by user "{2}" (Description: "{3}"; User Field: "{4}")
+
+
+ Conenction failed!
+
+
+ Protocol Event ErrorOccured
+
+
+ Opening connection failed!
+
+
+ Cannot open connection: No hostname specified!
+
+
+ RDP error!
+Error Code: {0}
+Error Description: {1}
+
+
+ Connections
+
+
+ Couldn't set default port!
+
+
+ Couldn't create backup of connections file!
+
+
+ Couldn't import connections file!
+
+
+ Connections file "{0}" could not be loaded!
+
+
+ Connections file "{0}" could not be loaded!
+Starting with new connections file.
+
+
+ Couldn't save connections file!
+
+
+ Couldn't save connections file as "{0}"!
+
+
+ Connect without credentials
+
+
+ Connect to console session
+
+
+ Connect (with options)
+
+
+ Connection to {0} via {1} closed by user {2}.
+
+
+ Connection to {0} via {1} closed by user {2}. (Description: "{3}"; User Field: "{4}")
+
+
+ Connection Event Closed
+
+
+ Connection Event Closed failed!
+
+
+ Couldn't create new connections file!
+
+
+ Could not find ToolStrip control in FilteredPropertyGrid.
+
+
+ Installed version
+
+
+ Default Theme
+
+
+ Detect
+
+
+ Don't connect to console session
+
+
+ Don't connect if authentication fails
+
+
+ Double click on tab closes it
+
+
+ Download and Install
+
+
+ Duplicate
+
+
+ Do you want to continue with no password?
+
+
+ For empty Username, Password or Domain fields use:
+
+
+ 128-bit
+
+
+ 128-bit (logon only)
+
+
+ 40-bit
+
+
+ 56-bit
+
+
+ Basic
+
+
+ Completely encrypt connection file
+
+
+ End IP
+
+
+ End Port
+
+
+ AddExternalToolsToToolBar (frmMain) failed. {0}
+
+
+ AddFolder (UI.Window.Tree) failed. {0}
+
+
+ The database version {0} is not compatible with this version of {1}.
+
+
+ CloneNode (Tree.Node) failed . {0}
+
+
+ Error code {0}.
+
+
+ The connection list could not be saved.
+
+
+ PuTTY could not be launched.
+
+
+ Decryption failed. {0}
+
+
+ Encryption failed. {0}
+
+
+ The Windows security setting, "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing", is enabled. This setting is not compatible with {0}.
+
+See the Microsoft Support article at http://support.microsoft.com/kb/811833 for more information.
+
+{0} will now close.
+
+
+ Errors
+
+
+ The startup connection file could not be loaded.{0}{0}{2}{0}{3}{0}{0}In order to prevent data loss, {1} will now exit.
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) failed. {0}
+
+
+ Expand all folders
+
+
+ Experimental
+
+
+ Export
+
+
+ Export everything
+
+
+ Export File
+
+
+ Export Items
+
+
+ Export mRemote/mRemoteNG XML
+
+
+ Export Properties
+
+
+ Export the currently selected connection
+
+
+ Export the currently selected folder
+
+
+ &Export to File...
+
+
+ Ext. App
+
+
+ New External Tool
+
+
+ Includes icons by [FAMFAMFAM]
+
+
+ http://www.famfamfam.com/
+
+
+ File &Format:
+
+
+ All Files (*.*)
+
+
+ All importable files
+
+
+ Application Files (*.exe)
+
+
+ mRemote CSV Files (*.csv)
+
+
+ mRemote XML Files (*.xml)
+
+
+ PuTTY Connection Manager files
+
+
+ Remote Desktop Connection Manager files (*.rdg)
+
+
+ RDP Files (*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV Files (*.csv)
+
+
+ Inherit {0}
+
+
+ Description of inherited property: {0}
+
+
+ Free
+
+
+ Fullscreen
+
+
+ General
+
+
+ Get Connection Info From SQL failed
+
+
+ An error occured while loading the connection entry for "{0}" from "{1}". {2}
+
+
+ Automatic Reconnect
+
+
+ Connection
+
+
+ External Tool Properties
+
+
+ Files
+
+
+ Host
+
+
+ HTTP
+
+
+ HTTP Connect Failed!
+
+
+ Couldn't create new HTTP Connection!
+
+
+ Changing HTTP Document Tile Failed!
+
+
+ Gecko (Firefox)
+
+
+ Internet Explorer
+
+
+ HTTPS
+
+
+ Set HTTP Props failed!
+
+
+ ICA
+
+
+ Couldn't create new ICA Connection!
+
+
+ Loading ICA Plugin failed!
+
+
+ ICA SetCredentials failed!
+
+
+ ICA Set Event Handlers Failed!
+
+
+ ICA Set Props Failed!
+
+
+ ICA Set Resolution Failed!
+
+
+ Identify quick connect tabs by adding the prefix "Quick:"
+
+
+ Import from Active Directory
+
+
+ Import/Export
+
+
+ An error occurred while importing the file, "{0}".
+
+
+ Import failed
+
+
+ Import from &File...
+
+
+ Under the root{0}{1}|Under the selected folder{0}{2}
+
+
+ Where would you like the imported items to be placed?
+
+
+ Import location
+
+
+ &Import
+
+
+ Import mRemote/mRemoteNG XML
+
+
+ Import from Port Scan
+
+
+ Import from .RDP file(s)
+
+
+ Inactive
+
+
+ Informations
+
+
+ mRemoteNG is up to date
+
+
+ Connection failed!
+
+
+ Dispose of Int App process failed!
+
+
+ Int App Focus Failed!
+
+
+ Int App Handle: {0}
+
+
+ Killing Int App Process failed!
+
+
+ Panel Handle: {0}
+
+
+ Int App Resize failed!
+
+
+ --- IntApp Stuff ---
+
+
+ Int App Title: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Address:
+
+
+ Arguments:
+
+
+ Change Log:
+
+
+ When closing connections:
+
+
+ &Connect:
+
+
+ Display Name
+
+
+ Domain:
+
+
+ Filename:
+
+
+ Hostname:
+
+
+ Options:
+
+
+ Password:
+
+
+ Port:
+
+
+ Portable Edition
+
+
+ Protocol:
+
+
+ To configure PuTTY sessions click this button:
+
+
+ Maximum PuTTY and integrated external tools wait time:
+
+
+ Released under the GNU General Public License (GPL)
+
+
+ seconds
+
+
+ Select a panel from the list below or click New to add a new one. Click OK to continue.
+
+
+ Server Status:
+
+
+ Database:
+
+
+ Database:
+
+
+ Username:
+
+
+ Verify:
+
+
+ Language
+
+
+ (Automatically Detect)
+
+
+ {0} must be restarted before changes to the language will take effect.
+
+
+ Load from SQL failed
+
+
+ The connection information could not be loaded from the SQL server.
+
+
+ Load From XML failed!
+
+
+ Local file
+
+
+ Local file does not exist!
+
+
+ Logoff
+
+
+ Writing to report file failed!
+
+
+ Couldn't save report to final location.
+
+
+ Uses the Magic library by [Crownwood Software]
+
+
+ http://www.dotnetmagic.com/
+
+
+ About
+
+
+ Add Connection Panel
+
+
+ Announcements
+
+
+ Check for Updates
+
+
+ Config
+
+
+ Connect
+
+
+ Connection Panels
+
+
+ Connections
+
+
+ Connections and Config
+
+
+ Copy
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Delete...
+
+
+ Delete Connection...
+
+
+ Delete External Tool...
+
+
+ Delete Folder...
+
+
+ Disconnect
+
+
+ Donate
+
+
+ Duplicate
+
+
+ Duplicate Connection
+
+
+ Duplicate Folder
+
+
+ Duplicate Tab
+
+
+ Exit
+
+
+ External Tools
+
+
+ External Tools Toolbar
+
+
+ &File
+
+
+ Full Screen
+
+
+ Full Screen (RDP)
+
+
+ &Help
+
+
+ mRemoteNG Help
+
+
+ Jump To
+
+
+ Launch External Tool
+
+
+ New Connection File
+
+
+ New External Tool
+
+
+ Notifications
+
+
+ Copy All
+
+
+ Delete
+
+
+ Delete All
+
+
+ Open Connection File...
+
+
+ Options
+
+
+ Paste
+
+
+ Port Scan
+
+
+ Quick Connect Toolbar
+
+
+ Reconnect
+
+
+ Refresh Screen (VNC)
+
+
+ Rename
+
+
+ Rename Connection
+
+
+ Rename Folder
+
+
+ Rename Tab
+
+
+ Report a Bug
+
+
+ Reset layout
+
+
+ Save Connection File
+
+
+ Save Connection File As...
+
+
+ Screenshot
+
+
+ Screenshot Manager
+
+
+ Send Special Keys (VNC)
+
+
+ Retrieve
+
+
+ Sessions
+
+
+ Sessions and Screenshots
+
+
+ &Show Help Text
+
+
+ Show Text
+
+
+ SmartSize (RDP/VNC)
+
+
+ SSH File Transfer
+
+
+ Start Chat (VNC)
+
+
+ Support Forum
+
+
+ &Tools
+
+
+ Transfer File (SSH)
+
+
+ &View
+
+
+ View Only (VNC)
+
+
+ Website
+
+
+ Minimize to notification area
+
+
+ Move down
+
+
+ Move up
+
+
+ mRemoteNG CSV
+
+
+ mRemoteNG XML
+
+
+ My current credentials (Windows logon information)
+
+
+ Never
+
+
+ New Connection
+
+
+ New Folder
+
+
+ New Panel
+
+
+ New Root
+
+
+ New Title
+
+
+ No
+
+
+ No Compression
+
+
+ No Ext. App specified.
+
+
+ None
+
+
+ None
+
+
+ Normal
+
+
+ No SmartSize
+
+
+ No update available
+
+
+ You are trying to load a connection file that was created using an very early version of mRemote, this could result in an runtime error.
+If you run into such an error, please create a new connection file!
+
+
+ Open new tab to the right of the currently selected tab
+
+
+ Open Ports
+
+
+ &Delete
+
+
+ &New
+
+
+ &Reset to Default
+
+
+ Reset &All to Default
+
+
+ Tabs
+
+
+ Next Tab
+
+
+ Previous Tab
+
+
+ Modify Shortcut
+
+
+ Keyboard Shortcuts
+
+
+ Testing...
+
+
+ Keyboard
+
+
+ Theme
+
+
+ &Delete
+
+
+ &New
+
+
+ Panel Name
+
+
+ Password protect
+
+
+ Both passwords must match.
+
+
+ The password must be at least 3 characters long.
+
+
+ Please fill all fields
+
+
+ Port scan complete.
+
+
+ Couldn't load PortScan panel!
+
+
+ (These properties will only be saved if you select mRemote/mRemoteNG XML as output file format!)
+
+
+ Enter the hostname or ip you want to connect to.
+
+
+ Toggle all inheritance options.
+
+
+ Select which authentication level this connection should use.
+
+
+ Select how you want to authenticate against the VNC server.
+
+
+ Select whether to automatically resize the connection when the window is resized or when fullscreen mode is toggled. Requires RDC 8.0 or higher.
+
+
+ Select whether to use bitmap caching or not.
+
+
+ Select the colour quality to be used.
+
+
+ Select the compression value to be used.
+
+
+ Put your notes or a description for the host here.
+
+
+ Select yes if the theme of the remote host should be displayed.
+
+
+ Select yes if the wallpaper of the remote host should be displayed.
+
+
+ Enter your domain.
+
+
+ Select whether to use desktop composition or not.
+
+
+ Select whether to use font smoothing or not.
+
+
+ Select the encoding mode to be used.
+
+
+ Select the encryption strength of the remote host.
+
+
+ Select the external tool to be started.
+
+
+ Select a external tool to be started after the disconnection to the remote host.
+
+
+ Select a external tool to be started before the connection to the remote host is established.
+
+
+ Choose a icon that will be displayed when connected to the host.
+
+
+ Specifies the load balancing information for use by load balancing routers to choose the best server.
+
+
+ Enter the MAC address of the remote host if you wish to use it in an external tool.
+
+
+ This is the name that will be displayed in the connections tree.
+
+
+ Sets the panel in which the connection will open.
+
+
+ Enter your password.
+
+
+ Enter the port the selected protocol is listening on.
+
+
+ Choose the protocol mRemoteNG should use to connect to the host.
+
+
+ Select a PuTTY session to be used when connecting.
+
+
+ Specifies the domain name that a user provides to connect to the RD Gateway server.
+
+
+ Specifies the host name of the Remote Desktop Gateway server.
+
+
+ Specifies when to use a Remote Desktop Gateway (RD Gateway) server.
+
+
+ Specifies whether or not to log on to the gateway using the same username and password as the connection.
+
+
+ Specifies the user name that a user provides to connect to the RD Gateway server.
+
+
+ Select whether local disk drives should be shown on the remote host.
+
+
+ Select whether key combinations (e.g. Alt-Tab) should be redirected to the remote host.
+
+
+ Select whether local ports (ie. com, parallel) should be shown on the remote host.
+
+
+ Select whether local printers should be shown on the remote host.
+
+
+ Select whether local smart cards should be available on the remote host.
+
+
+ Select how remote sound should be redirected.
+
+
+ Select one of the available rendering engines that will be used to display HTML.
+
+
+ Choose the resolution or mode this connection will open in.
+
+
+ Select the SmartSize mode to be used.
+
+
+ Connect to the console session of the remote host.
+
+
+ Use the Credential Security Support Provider (CredSSP) for authentication if it is available.
+
+
+ Feel free to enter any information you need here.
+
+
+ Enter your username.
+
+
+ If you want to establish a view only connection to the host select yes.
+
+
+ Enter the proxy address to be used.
+
+
+ Enter your password for authenticating against the proxy.
+
+
+ Enter the port the proxy server listens on.
+
+
+ If you use a proxy to tunnel VNC connections, select which type it is.
+
+
+ Enter your username for authenticating against the proxy.
+
+
+ Hostname/IP
+
+
+ All
+
+
+ Server Authentication
+
+
+ Authentication Mode
+
+
+ Automatic Resize
+
+
+ Cache Bitmaps
+
+
+ Colours
+
+
+ Compression
+
+
+ Description
+
+
+ Display Themes
+
+
+ Display Wallpaper
+
+
+ Domain
+
+
+ Desktop Composition
+
+
+ Font Smoothing
+
+
+ Encoding
+
+
+ Encryption Strength
+
+
+ External Tool
+
+
+ External Tool After
+
+
+ External Tool Before
+
+
+ Icon
+
+
+ Load Balance Info
+
+
+ MAC Address
+
+
+ Name
+
+
+ Panel
+
+
+ Password
+
+
+ Port
+
+
+ Protocol
+
+
+ PuTTY Session
+
+
+ Gateway Domain
+
+
+ Gateway Hostname
+
+
+ Remote Desktop Gateway Password
+
+
+ Use Gateway
+
+
+ Gateway Credentials
+
+
+ Gateway Username
+
+
+ Disk Drives
+
+
+ Key Combinations
+
+
+ Ports
+
+
+ Printers
+
+
+ Smart Cards
+
+
+ Sounds
+
+
+ Rendering Engine
+
+
+ Resolution
+
+
+ SmartSize Mode
+
+
+ Use Console Session
+
+
+ Use CredSSP
+
+
+ User Field
+
+
+ Username
+
+
+ View Only
+
+
+ Proxy Address
+
+
+ Proxy Password
+
+
+ Proxy Port
+
+
+ Proxy Type
+
+
+ Proxy Username
+
+
+ Protocol Event Disconnected.
+Message:
+{0}
+
+
+ Protocol Event Disconnected failed.
+{0}
+
+
+ Protocol to import
+
+
+ Proxy test failed!
+
+
+ Proxy test succeeded!
+
+
+ Connection failed!
+
+
+ Dispose of Putty process failed!
+
+
+ Couldn't set focus!
+
+
+ Get Putty Sessions Failed!
+
+
+ Putty Handle: {0}
+
+
+ Killing Putty Process failed!
+
+
+ Panel Handle: {0}
+
+
+ Putty Resize Failed!
+
+
+ PuTTY Saved Sessions
+
+
+ PuTTY Session Settings
+
+
+ PuTTY Settings
+
+
+ Show PuTTY Settings Dialog failed!
+
+
+ Putty Start Failed!
+
+
+ --- PuTTY Stuff ---
+
+
+ PuTTY Title: {0}
+
+
+ Quick: {0}
+
+
+ Quick Connect
+
+
+ Quick Connect Add Failed!
+
+
+ Creating quick connect failed
+
+
+ &Warn me when closing connections
+
+
+ Warn me only when e&xiting mRemoteNG
+
+
+ Warn me only when closing &multiple connections
+
+
+ Do ¬ warn me when closing connections
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 Colours (24-bit)
+
+
+ 256 Colours (8-bit)
+
+
+ 32768 Colours (15-bit)
+
+
+ 16777216 Colours (32-bit)
+
+
+ 65536 Colours (16-bit)
+
+
+ RDP Add Resolution failed!
+
+
+ RDP Add Resolutions failed!
+
+
+ Add Session failed
+
+
+ Close RDP Connection failed!
+
+
+ Opening connection failed!
+
+
+ Couldn't create RDP control, please check mRemoteNG requirements.
+
+
+ Disable Cursor blinking
+
+
+ Disable Cursor Shadow
+
+
+ Disable Full Window drag
+
+
+ Disable Menu Animations
+
+
+ Disable Themes
+
+
+ Disable Wallpaper
+
+
+ RDP disconnected!
+
+
+ RDP Disconnect failed, trying to close!
+
+
+ Internal error code 1.
+
+
+ Internal error code 2.
+
+
+ Internal error code 3. This is not a valid state.
+
+
+ Internal error code 4.
+
+
+ An unrecoverable error has occurred during client connection.
+
+
+ GetError failed (FatalErrors)
+
+
+ An unknown fatal RDP error has occurred. Error code {0}.
+
+
+ An out-of-memory error has occurred.
+
+
+ An unknown error has occurred.
+
+
+ A window-creation error has occurred.
+
+
+ Winsock initialization error.
+
+
+ Couldn't import rdp file!
+
+
+ Fit To Panel
+
+
+ RDP Focus failed!
+
+
+ RD Gateway is supported.
+
+
+ RD Gateway is not supported!
+
+
+ GetSessions failed!
+
+
+ Open RDP Connection failed!
+
+
+ RDP reconnection count:
+
+
+ RDP SetAuthenticationLevel failed!
+
+
+ RDP SetUseConsoleSession failed!
+
+
+ Setting Console switch for RDC {0}.
+
+
+ RDP SetCredentials failed!
+
+
+ RDP SetEventHandlers failed!
+
+
+ RDP SetRDGateway failed!
+
+
+ RDP SetPerformanceFlags failed!
+
+
+ RDP SetPort failed!
+
+
+ RDP SetProps failed!
+
+
+ Rdp Set Redirection Failed!
+
+
+ Rdp Set Redirect Keys Failed!
+
+
+ RDP SetResolution failed!
+
+
+ Smart Size
+
+
+ Bring to this computer
+
+
+ Do not play
+
+
+ Leave at remote computer
+
+
+ RDP ToggleFullscreen failed!
+
+
+ RDP ToggleSmartSize failed!
+
+
+ Reconnect to previously opened sessions on startup
+
+
+ Refresh
+
+
+ Remote file
+
+
+ Remove All
+
+
+ Rename
+
+
+ Rlogin
+
+
+ Save
+
+
+ Save All
+
+
+ Do you want to save the current connections file before loading another?
+
+
+ Save connections on exit
+
+
+ Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png
+
+
+ Screen
+
+
+ Screenshot
+
+
+ Screenshots
+
+
+ Search
+
+
+ Send To...
+
+
+ Get Sessions Background failed
+
+
+ Kill Session Background failed
+
+
+ Set hostname like display name when creating or renaming connections
+
+
+ Setting main form text failed
+
+
+ Couldn't save settings or dispose SysTray Icon!
+
+
+ Show description tooltips in connection tree
+
+
+ Show full connections file path in window title
+
+
+ Show logon information on tab names
+
+
+ Show protocols on tab names
+
+
+ Single click on connection opens it
+
+
+ Single click on opened connection switches to it
+
+
+ Aspect
+
+
+ Free
+
+
+ No SmartSize
+
+
+ Socks 5
+
+
+ Sort
+
+
+ Ascending (A-Z)
+
+
+ Descending (Z-A)
+
+
+ Special Keys
+
+
+ Please see Help - Getting started - SQL Configuration for more Info!
+
+
+ SQL Server
+
+
+ SQL Update check finished and there is an update available! Going to refresh connections.
+
+
+ SSH version 1
+
+
+ SSH version 2
+
+
+ SSH background transfer failed!
+
+
+ Transfer successful!
+
+
+ SSH Transfer End (UI.Window.SSHTransfer) failed!
+
+
+ SSH transfer failed.
+
+
+ Start IP
+
+
+ Start Port
+
+
+ Startup/Exit
+
+
+ Status
+
+
+ Switch to Notifications panel on:
+
+
+ Advanced
+
+
+ Appearance
+
+
+ Tabs && Panels
+
+
+ Updates
+
+
+ Telnet
+
+
+ The following:
+
+
+ Config Panel
+
+
+ Connections Panel
+
+
+ General
+
+
+ The background colour of the config panel.
+
+
+ The colour of the category text in the config panel.
+
+
+ The colour of the grid lines in the config panel
+
+
+ The background colour of the help area of the config panel.
+
+
+ The colour of the text in the help area of the config panel.
+
+
+ The colour of the text in the config panel.
+
+
+ The background colour of the connections panel.
+
+
+ The colour of the text in the connections panel.
+
+
+ The colour of the tree lines in the connections panel.
+
+
+ The background colour of the menus.
+
+
+ The colour of the text in the menus.
+
+
+ The background colour of the search box.
+
+
+ The colour of the text in the search box.
+
+
+ The colour of the prompt text in the search box.
+
+
+ The background colour of the toolbars.
+
+
+ The colour of the text in the toolbars.
+
+
+ The background colour of the main window.
+
+
+ Config Panel Background Colour
+
+
+ Config Panel Category Text Colour
+
+
+ Config Panel Grid Line Colour
+
+
+ Config Panel Help Background Colour
+
+
+ Config Panel Help Text Colour
+
+
+ Config Panel Text Colour
+
+
+ Connections Panel Background Colour
+
+
+ Connections Panel Text Colour
+
+
+ Connections Panel Tree Line Colour
+
+
+ Menu Background Colour
+
+
+ Menu Text Colour
+
+
+ Search Box Background Colour
+
+
+ Search Box Text Colour
+
+
+ Search Box Text Prompt Colour
+
+
+ Toolbar Background Colour
+
+
+ Toolbar Text Colour
+
+
+ Window Background Colour
+
+
+ Error ({0})
+
+
+ Information ({0})
+
+
+ Password
+
+
+ Password for {0}
+
+
+ Select Panel
+
+
+ Warning ({0})
+
+
+ Transfer
+
+
+ Transfer failed!
+
+
+ Try to integrate
+
+
+ Type
+
+
+ Ultra VNC Repeater
+
+
+ UltraVNC SingleClick port:
+
+
+ Uncheck the properties you want not to be saved!
+
+
+ Unnamed Theme
+
+
+ mRemoteNG requires an update
+
+
+ mRemoteNG can periodically connect to the mRemoteNG website to check for updates and product announcements.
+
+
+ The update information could not be downloaded.
+
+
+ Check failed
+
+
+ Checking for updates...
+
+
+ mRemoteNG Portable Edition does not currently support automatic updates.
+
+
+ Download complete!
+mRemoteNG will now quit and begin with the installation.
+
+
+ The update could not be downloaded.
+
+
+ The update download could not be initiated.
+
+
+ Every {0} days
+
+
+ Daily
+
+
+ Monthly
+
+
+ Weekly
+
+
+ The announcement information could not be downloaded.
+
+
+ The change log could not be downloaded.
+
+
+ Use a different username and password
+
+
+ Use only Notifications panel (no messagebox popups)
+
+
+ User
+
+
+ Use the same username and password
+
+
+ Use a smart card
+
+
+ Use SQL Server to load && save connections
+
+
+ Version
+
+
+ visionapp Remote Desktop 2008 CSV
+
+
+ VNC
+
+
+ VNC disconnect failed!
+
+
+ Opening connection failed!
+
+
+ VNC Refresh Screen Failed!
+
+
+ VNC SendSpecialKeys failed!
+
+
+ VNC Set Event Handlers failed!
+
+
+ VNC Set Props Failed!
+
+
+ VNC Start Chat Failed!
+
+
+ VNC Toggle SmartSize Failed!
+
+
+ VNC Toggle ViewOnly Failed!
+
+
+ Warn me if authentication fails
+
+
+ Warnings
+
+
+ Uses the DockPanel Suite by [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Write log file (mRemoteNG.log)
+
+
+ XULrunner path:
+
+
+ Yes
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.ru.resx b/mRemoteV1/CS/Language/Language.ru.resx
new file mode 100644
index 000000000..f381c1c19
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.ru.resx
@@ -0,0 +1,2202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ О программе
+
+
+ Активно
+
+
+ Активность
+
+
+ Новое подключение
+
+
+ Новая папка
+
+
+ AddNodeFromXML не удалось!
+
+
+ AddNodesFromSQL не удалось!
+
+
+ Разрешить только один экземпляр приложения (требуется перезапуск)
+
+
+ Всегда
+
+
+ Подключаться, даже если не прошел проверку
+
+
+ Всегда показывать диалог выбора панели при открытии подключения
+
+
+ Всегда показывать панель закладок
+
+
+ Всегда показывать значок в системном трее
+
+
+ Спросить позже
+
+
+ Настроить параметры сейчас
+
+
+ Использовать рекомендуемые параметры
+
+
+ {0} автоматически проверяет наличие обновлений с новыми возможностями и исправлениями ошибок. Рекомендуется разрешить {0} еженедельную проверку обновлений.
+
+
+ Параметры автоматического обновления
+
+
+ Вид
+
+
+ Автоматически получать информацию о сессии
+
+
+ Автосохранение каждые:
+
+
+ минут (0 означает отключено)
+
+
+ Текущая версия
+
+
+ &Обзор ...
+
+
+ &Отменить
+
+
+ Измененить
+
+
+ &Закрыть
+
+
+ Наследовать по умолчанию
+
+
+ Свойства по умолчанию
+
+
+ Отключиться
+
+
+ Значок
+
+
+ &Импорт
+
+
+ Наследование
+
+
+ Запуск PuTTY
+
+
+ &Новая
+
+
+ &ОК
+
+
+ Свойства
+
+
+ &Сканировать
+
+
+ &Стоп
+
+
+ Проверка прокси
+
+
+ Вы не можете импортировать обычный файл подключения.
+Для обычных файлов подключений используйте Файл - Открыть подключение!
+
+
+ Не удается запустить сканирование портов, неверный формат IP!
+
+
+ Внешний вид
+
+
+ Подключение
+
+
+ Учетные данные
+
+
+ Вид
+
+
+ Шлюз
+
+
+ Общие
+
+
+ Разное
+
+
+ Протокол
+
+
+ Локальные ресурсы
+
+
+ Всегда показывать это окно при запуске
+
+
+ Обновление
+
+
+ Ошибка проверки!
+
+
+ Успешно проверено!
+
+
+ Для (RDP) сессий должна быть зарегистрирована в системе eolwtscom.dll.
+ mRemoteNG загрузится с этим компонентом, но не зарегистрирует его автоматически.
+ Чтобы зарегистрировать его вручную: Откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (где C:\Program Files\mRemoteNG\ это путь к установленному mRemoteNG).
+ Если у вас все же не получается зарегистрировать компонент для RDP - обратитесь на форум mRemoteNG http://forum.mremoteng.org/
+
+
+ EOLWTSCOM был найден и зарегистрирован.
+
+
+ Для использования движка Gecko у Вас должен быть установлен XULRunner 1.8.1.x
+ Вы можете скачать XULRunner 1.8.1.3 здесь: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+ После загрузки извлеките пакет в любую папку. Потом в mRemoteNG перейдите в меню Инструменты - Опции - Дополнительно и введите правильный путь в поле Путь XULRunner.
+ Если у вас ничего не получилось обратитесь на форум mRemoteNG http://forum.mremoteng.org/
+
+
+ XULRunner был найден и установлен правильно.
+
+
+ ICA требуется установленный XenDesktop Online Plugin и зарегистрированная библиотека wfica.ocx. Вы можете скачать клиент здесь: http://www.citrix.com/download/
+ Если у вас есть установленный XenDesktop Online Plugin и ничего не работает, попробуйте зарегистрировать wfica.ocx вручную.
+ Для этого откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Program Files\Citrix\ICA Client\wfica.ocx" (где C:\Program Files\Citrix \ICA Client\ это путь к XenDesktop Online Plugin).
+ Если у вас все же не работает ICA в mRemoteNG обратитесь на форум mRemoteNG http://forum.mremoteng.org/ "
+
+
+ Все компоненты ICA были найдены и зарегистрированы.
+ Citrix ICA Client Control версии {0}
+
+
+ установлен неправильно
+
+
+ SSH, Telnet, Rlogin и RAW протоколам нужен для работы PuTTY. PuTTY поставляется с каждым mRemoteNG и находится в папке с программой.
+ Убедитесь, что putty.exe есть в папке с mRemoteNG (по умолчанию: C:\Program Files\mRemoteNG\), или что вы указали правильный путь к исполняемому файлу PuTTY в Инструменты - Опции - Дополнительно - Путь к PuTTY)
+
+
+ Испольняемый файл PuTTY найден и готов к использованию.
+
+
+ Для правильной работы RDP необходимо иметь установленный Remote Desktop Connection (Terminal Services Client) 6.1. Вы можете получить его здесь: http://support.microsoft.com/kb/951616
+ Если у вас есть установленный RDP 6.1 и подключиться не удается, попробуйте зарегистрироваться mstscax.dll вручную. Для этого откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Windows\system32\mstscax.dll" (где C:\ваш системный диск).
+ Если у вас возникли проблемы при работе с RDP обратитесь на форум mRemoteNGhttp://forum.mremoteng.org/
+
+
+ Все RDP компоненты были найдены и зарегистрированы.
+ Remote Desktop Connection, Control Version {0}
+
+
+ VNC требуется VncSharpNG.dll который находится в папке с mRemoteNG.
+ Убедитесь, что у вас есть VncSharpNG.dll в папке mRemoteNG (обычно C:\Program Files\mRemoteNG\).
+ Если у вас все же не работает VNC в mRemoteNG обратитесь на форум mRemoteNGhttp://forum.mremoteng.org/
+
+
+ Все VNC компоненты были найдены и зарегистрированы.
+ VncSharpNG Control Version {0}
+
+
+ Автоматически пытаться восстановить связь при отключении от сервера (только RDP и ICA)
+
+
+ Домен
+
+
+ Больше не показывать это сообщение.
+
+
+ Наследование
+
+
+ Пароль
+
+
+ Требуется авторизация
+
+
+ Использовать собственный путь к PuTTY:
+
+
+ Переподключиться, когда будет готово
+
+
+ Использовать прокси-сервер
+
+
+ Пользователь
+
+
+ Ждать выхода
+
+
+ Проверить
+
+
+ Проверять наличие обновлений при запуске
+
+
+ Проверить
+
+
+ При запуске проверять правильность установки компонентов
+
+
+ Выбрать панель перед подключением
+
+
+ Закрытые порты
+
+
+ Свернуть все папки
+
+
+ Аргументы
+
+
+ Отображаемое имя
+
+
+ Имя файла
+
+
+ Имя хоста/IP
+
+
+ Сообщение
+
+
+ Пользователь
+
+
+ Ждать выхода
+
+
+ Невозможно разобрать аргументы командной строки!
+
+
+ {0} обнаружено что на этой системе работает утилита Lenovo Auto Scroll. Известно, что эта утилита вызвает проблемы с {0}. Рекомендуется отключить или удалить ее.
+
+
+ Обнаружена проблема совместимости
+
+
+ Проверка компонентов
+
+
+ Ошибка btnIcon_Click!
+
+
+ Ошибка ShowHideGridItems!
+
+
+ Ошибка IconMenu_Click!
+
+
+ Ошибка свойства Grid opject!
+
+
+ Ошибка SetHostStatus!
+
+
+ Ошибка pGrid_PopertyValueChanged!
+
+
+ Ошибка загрузки Config UI!
+
+
+ Хотите закрыть подключение, "{0}"?
+
+
+ Хотите закрыть панель "{0}"? Все ее подключения также будут закрыты.
+
+
+ Хотите удалить внешний инструмент, "{0}"?
+
+
+ Хотите удалить {0} выбранные внешние инструменты?
+
+
+ Хотите удалить подключение, "{0}"?
+
+
+ Хотите удалить пустую папку, "{0}"?
+
+
+ Хотите удалить папку "{0}"? Любые папки или подключения, которые она содержит также будут удалены.
+
+
+ Хотите закрыть все открытые подключения?
+
+
+ Вы действительно хотите сбросить панели в настройки по умолчанию?
+
+
+ Подключиться
+
+
+ Подключение в полноэкранном режиме
+
+
+ Подключение...
+
+
+ Журнал подключений
+
+
+ Подключение к системе "{0}" через "{1}" созданого пользователя "{2}" (Описание: "{3}"; Пользователь: "{4}")
+
+
+ Подключиться не удалось!
+
+
+ Журнал событий ErrorOccured
+
+
+ Открыть подключение не удалась!
+
+
+ Невозможно открыть подключение: имя хоста не указано!
+
+
+ Ошибка RDP!
+Код ошибки: {0}
+Описание ошибки: {1}
+
+
+ Подключения
+
+
+ Не удается установить порт по умолчанию!
+
+
+ Не удалось создать резервную копию файла подключений!
+
+
+ Не удалось импортировать подключения в файл!
+
+
+ Файл подключений "{0}" невозможно загрузить!
+
+
+ Файл подключений "{0}" невозможно загрузить!
+Создайте новый файл подключений.
+
+
+ Невозможно сохранить файл подключений!
+
+
+ Невозможно сохранить файл в качестве подключения "{0}"!
+
+
+ Подключение к сеансу пользователя (Сеанс консоли)
+
+
+ Подключение (с параметрами)
+
+
+ Подключение к {0} по {1} закрыто пользователем {2}.
+
+
+ Подключение к {0} по {1} закрыто пользователем {2}. (Описание: "{3}"; Пользователь: "{4}")
+
+
+ Подключение закрыто
+
+
+ Подключение закрыть не удалось!
+
+
+ Не удается создать новый файл подключений!
+
+
+ Не удалось найти элемент управления ToolStrip в FilteredPropertyGrid.
+
+
+ Установленная версия
+
+
+ Тема по умолчанию
+
+
+ Обнаружение
+
+
+ Не подключать без проверки
+
+
+ Двойной щелчок для закрытия вкладки
+
+
+ Загрузка и установка
+
+
+ Дублировать
+
+
+ Хотите продолжить без пароля?
+
+
+ Использовать пустое имя пользователя пароль или домен:
+
+
+ 128-бит
+
+
+ 128-бит (только при входе)
+
+
+ 40-бит
+
+
+ 56-бит
+
+
+ Основное
+
+
+ Шифровать файл подключения
+
+
+ Конечный IP
+
+
+ Конечн. порт
+
+
+ Ошибка добавления внешнего приложения на Панель (frmMain). {0}
+
+
+ Ошибка AddFolder (UI.Window.Tree). {0}
+
+
+ Версия базы данных {0} не совместима с этой версией {1}.
+
+
+ Ошибка CloneNode (Tree.Node). {0}
+
+
+ Код ошибки {0}.
+
+
+ Невозможно сохранить список подключений.
+
+
+ Не удалось расшифровать. {0}
+
+
+ Не удалось зашифровать. {0}
+
+
+ Настройки системы безопасности Windows: "Использование системной криптографии FIPS-совместимых алгоритмов шифрования, хеширования и подписывания», включено. Эта установка не совместима с {0}.
+
+См. статью Microsoft Support на http://support.microsoft.com/kb/811833 для получения дополнительной информации.
+
+{0} будет закрыто.
+
+
+ Ошибки
+
+
+ Ошибка загрузки файла соединения.{0}{0}{2}{0}{3}{0}{0}Для предотвращения потери данных, {1} будет выполнен выход.
+
+
+ Ошибка VerifyDatabaseVersion (Config.Connections.Save). {0}
+
+
+ Раскрыть все папки
+
+
+ Экспериментально
+
+
+ Экспорт
+
+
+ Экспорт mRemote / mRemoteNG XML
+
+
+ Внешнее Приложение
+
+
+ Использованы значки [FAMFAMFAM]
+
+
+ Все файлы (*.*)
+
+
+ Файлы приложений (*. EXE)
+
+
+ mRemote CSV-файлы (*. CSV)
+
+
+ mRemote XML-файлы (*. XML)
+
+
+ RDP-файлы (*. RDP)
+
+
+ visionapp Remote Desktop 2008 CSV-файлы (*. CSV)
+
+
+ Наследовать {0}
+
+
+ Описание наследованного свойства: {0}
+
+
+ Free
+
+
+ Во весь экран
+
+
+ Главная
+
+
+ Получить информацию о подключении из SQL не удалось
+
+
+ Ошибка при загрузке подключения "{0}" на "{1}". {2}
+
+
+ Автопереподключение
+
+
+ Соединение
+
+
+ Свройства внешнего инструмента
+
+
+ Файлы
+
+
+ Хост
+
+
+ Ошибка HTTP подключения!
+
+
+ Не удается создать новое подключение HTTP!
+
+
+ Изменение HTTP документа не удалось!
+
+
+ Не удалось задать параметры HTTP!
+
+
+ Не удается создать новое подключение ICA!
+
+
+ Не удалось загрузить ICA-плагин!
+
+
+ Ошибка установки учетных данных ICA!
+
+
+ Не удалось установить обработчик событий ICA!
+
+
+ Не удалось задать параметры ICA!
+
+
+ Ошибка установки разрешений ICA!
+
+
+ Определить вкладки быстрых подключений, добавляя префикс «Quick:»
+
+
+ Импорт из Active Directory
+
+
+ Импорт / Экспорт
+
+
+ Импорт mRemote / mRemoteNG XML
+
+
+ Импорт из просканированных портов
+
+
+ Импорт из. RDP-файла (ов)
+
+
+ Неактивный
+
+
+ Информация
+
+
+ mRemoteNG в актуальном состоянии
+
+
+ Подключение не удалось!
+
+
+ Не удалось завершить процесс внутреннего приложения!
+
+
+ Внутренний инструмент: Ошибка получения фокуса!
+
+
+ Обработчик Внутр. инструментов: {0}
+
+
+ Не удалось завершить процесс внутреннего приложения!
+
+
+ Панель обработчика событий: {0}
+
+
+ Внутренний инструмент: Ошибка изменения размера!
+
+
+ --- Внутреннее приложение ---
+
+
+ Заголовок внешнего инструмента: {0}
+
+
+ CTRL+ALT+DEL
+
+
+ CTRL-ESC
+
+
+ Адрес:
+
+
+ Аргументы:
+
+
+ История версий:
+
+
+ При закрытии подключений:
+
+
+ &Подключение:
+
+
+ Отображаемое имя
+
+
+ Домен:
+
+
+ Имя файла:
+
+
+ Имя хоста:
+
+
+ Опции:
+
+
+ Пароль:
+
+
+ Порт:
+
+
+ Portable Edition
+
+
+ Протокол:
+
+
+ Нажмите на эту кнопку для настройки сессий PuTTY:
+
+
+ Max. PuTTY && Integrated Ext. Apps wait time:
+
+
+ Выпущено под лицензией GNU General Public License (GPL)
+
+
+ сек
+
+
+ Выберите панель из списка или нажмите кнопку Новая, чтобы создать новую. Нажмите кнопку OK, чтобы продолжить.
+
+
+ Состояние сервера:
+
+
+ База данных:
+
+
+ База данных:
+
+
+ Пользователь:
+
+
+ Проверка:
+
+
+ Язык
+
+
+ (Автоопределение)
+
+
+ {0} необходимо перезапустить, чтобы изменения языка вступили в силу.
+
+
+ Загрузить из SQL не удалось!
+
+
+ Загрузить из XML не удалось!
+
+
+ Локал. файл
+
+
+ Локальный файл не существует!
+
+
+ Выход
+
+
+ Записать в файл отчета не удалось!
+
+
+ Невозможно сохранить отчет в папке назначения.
+
+
+ Использовано Magic library от [Crownwood Software]
+
+
+ О программе
+
+
+ Добавить Панель подключения
+
+
+ Сообщения
+
+
+ Проверка наличия обновлений
+
+
+ Конфигурация
+
+
+ Подключаться
+
+
+ Панель подключений
+
+
+ Подключения
+
+
+ Подключения и конфигурация
+
+
+ Копировать
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Удалить...
+
+
+ Удалить подключение ...
+
+
+ Удалить Внешний инструмент...
+
+
+ Удалить папку...
+
+
+ Отключить
+
+
+ Помочь проекту
+
+
+ Дублировать
+
+
+ Дубликат подключения
+
+
+ Дублировать папку
+
+
+ Дублировать вкладку
+
+
+ Выход
+
+
+ Внешние инструменты
+
+
+ Внешние инструменты
+
+
+ &Файл
+
+
+ Во весь экран
+
+
+ Во весь экран (RDP)
+
+
+ &Справка
+
+
+ Справка mRemoteNG
+
+
+ Перейти к...
+
+
+ Запуск внешних инструментов
+
+
+ Новый файл подключения
+
+
+ Новый внешний инструмент
+
+
+ Уведомления
+
+
+ Скопировать все
+
+
+ Удалить
+
+
+ Удалить все
+
+
+ Открыть файл подключения...
+
+
+ Опции
+
+
+ Вставить
+
+
+ Сканер портов
+
+
+ Панель Быстрое подключение
+
+
+ Переподключение
+
+
+ Обновить экран (VNC)
+
+
+ Переименовать
+
+
+ Переименовать подключение
+
+
+ Переименовать папку
+
+
+ Переименовать закладку
+
+
+ Сообщить об ошибке
+
+
+ Сброс
+
+
+ Сохранить подключение
+
+
+ Сохранить подключение как...
+
+
+ Скриншот
+
+
+ Менеджер скриншотов
+
+
+ Отправить спец. клавиши (VNC)
+
+
+ Сессии
+
+
+ Сессии и скриншоты
+
+
+ Показать текст справки
+
+
+ Показать текст
+
+
+ SmartSize (RDP / VNC)
+
+
+ Передача файлов по SSH
+
+
+ Начать чат (VNC)
+
+
+ Форум поддержки
+
+
+ &Инструменты
+
+
+ Передача файлов (SSH)
+
+
+ &Вид
+
+
+ Просмотр (VNC)
+
+
+ Веб-сайт
+
+
+ Минимизировать в системный трей
+
+
+ Вниз
+
+
+ Вверх
+
+
+ Мои текущие учетные данные (Windows учетные данные)
+
+
+ Никогда
+
+
+ Новое подключение
+
+
+ Новая папка
+
+
+ Новая панель
+
+
+ Новый корень
+
+
+ Новое название
+
+
+ Нет
+
+
+ Без сжатия
+
+
+ Не указано внешнее приложение.
+
+
+ Нет
+
+
+ Нет
+
+
+ Нормальный
+
+
+ SmartSize недоступен
+
+
+ Нет доступных обновлений
+
+
+ Вы пытаетесь загрузить файл подключения, созданного с помощью очень ранней версии mRemote, это может привести к ошибке выполнения.
+Пожалуйста, создайте новый файл подключения!
+
+
+ Открытие новой вкладки справа от выбранной вкладки
+
+
+ Открытые порты
+
+
+ Тема
+
+
+ Удалить
+
+
+ Новая
+
+
+ Название группы
+
+
+ Защита паролем
+
+
+ Пожалуйста, заполните все поля
+
+
+ Не удалось загрузить панель Сканера портов!
+
+
+ (Эти свойства будут сохранены только если вы выберете mRemote/mRemoteNG XML в качестве выходного формата файлов!)
+
+
+ Введите имя хоста или IP к которому вы хотите подключиться.
+
+
+ Переключить все наследуемые параметры.
+
+
+ Выберите используемый уровень авторизации.
+
+
+ Выберите способ авторизации на сервере VNC.
+
+
+ Выберите использовать или нет, кэширование графики.
+
+
+ Выберите качество цвета, которое будет использоваться.
+
+
+ Выберите значение сжатия, которое будет использоваться.
+
+
+ Введите здесь заметки или описания для подключения.
+
+
+ Выберите Да, если хотите использовать тему Рабочего стола на удаленном хоста.
+
+
+ Выберите Да, если хотите использовать обои Рабочего стола на удаленном хосте.
+
+
+ Введите имя домена.
+
+
+ Использование композиции Рабочего стола на удаленном хосте.
+
+
+ Использование сглаживания шрифтов.
+
+
+ Режим кодирования.
+
+
+ Шифрование на удаленном хосте.
+
+
+ Внешний инструмент, который нужно запустить.
+
+
+ Внешний инструмент, который нужно запустить на удаленном компьютере после отключения.
+
+
+ Внешний инструмент, который нужно запустить на удаленном компьютере до подключения.
+
+
+ Значок, который будет отображаться при подключении к хосту.
+
+
+ Введите МАС-адрес удаленного хоста, если вы хотите использовать его во внешнем инструменте.
+
+
+ Это имя, которое будет отображаться в дереве подключений.
+
+
+ Устанавить панель, в которой будет открыто подключение.
+
+
+ Введите пароль.
+
+
+ Введите порт выбранного протокола.
+
+
+ Выберите протокол, который должен использоваться для подключения.
+
+
+ Выберите сессию PuTTY, которая будет использоваться при подключении.
+
+
+ Определите доменное имя, для подключения к шлюзу Служб терминалов
+
+
+ Определите имя хоста шлюза Служб терминалов.
+
+
+ Укажите, когда использовать шлюз Служб терминалов.
+
+
+ Укажите, следует ли войти на шлюз, использующий то же имя пользователя и пароль подключения.
+
+
+ Укажите имя пользователя, которому разрешено подключаться к шлюзу Служб терминалов.
+
+
+ Укажите, будут ли доступны локальные диски на удаленном хосте.
+
+
+ Укажите, будут ли перенаправлены локальные комбинации клавиш (например, Alt-Tab) на удаленный хост.
+
+
+ Укажите, будут ли доступны локальные порты (т.е. COM, LPT) на удаленном хосте.
+
+
+ Укажите, будут ли локальные принтеры доступны на удаленном хосте.
+
+
+ Укажите, будут ли локальные смарт-карты доступны на удаленном хосте.
+
+
+ Укажите, будет ли перенаправлен удаленный звук на локальный компьютер.
+
+
+ Выберите один из доступных движков рендеринга, который будет использоваться для отображения HTML.
+
+
+ Выберите разрешение экрана в дюймах или режим отображения для этого подключения
+
+
+ Выберите SmartSize.
+
+
+ Подключение к текущему сеансу удаленного пользователя.
+
+
+ Использовать поставщика поддержки безопасности (CredSSP) для проверки подлинности учетных данных, если он доступен.
+
+
+ Введите любую информацию.
+
+
+ Введите имя пользователя.
+
+
+ Если вы хотите установить режим Просмотра - выберите Да.
+
+
+ Введите адрес прокси-сервера.
+
+
+ Введите пароль для авторизации на прокси-сервере.
+
+
+ Введите порт прокси-сервера.
+
+
+ Если вы используете прокси для туннелирования VNC подключений, выберите тип туннелирования.
+
+
+ Введите имя пользователя для авторизации на прокси-сервере.
+
+
+ Имя хоста / IP
+
+
+ Все
+
+
+ Авторизация
+
+
+ Режим авторизации
+
+
+ Кэш графики
+
+
+ Цвета
+
+
+ Сжатие
+
+
+ Описание
+
+
+ Показать темы
+
+
+ Показать обои
+
+
+ Домен
+
+
+ Композиция рабочего стола
+
+
+ Шрифты
+
+
+ Кодирование
+
+
+ Шифрование
+
+
+ Внешний инструмент
+
+
+ Внеш. Инстр. После
+
+
+ Внеш. Инстр. До
+
+
+ Значок
+
+
+ MAC-адрес
+
+
+ Имя
+
+
+ Имя вкладки
+
+
+ Пароль
+
+
+ Порт
+
+
+ Протокол
+
+
+ Сессии PuTTY
+
+
+ Шлюз Домена
+
+
+ Хост Шлюза
+
+
+ Пароль шлюза Служб терминалов
+
+
+ Шлюз
+
+
+ Учетные данные шлюза
+
+
+ Имя пользователя шлюза
+
+
+ Диски
+
+
+ Комбинации клавиш
+
+
+ Порты
+
+
+ Принтеры
+
+
+ Смарт-карты
+
+
+ Звуки
+
+
+ Рендеринг
+
+
+ Размер экрана
+
+
+ SmartSize режим
+
+
+ Сеанс консоли
+
+
+ Использовать проверку подлинности CredSSP
+
+
+ Дополнительно
+
+
+ Пользователь
+
+
+ Только Просмотр
+
+
+ Адрес прокси
+
+
+ Пароль Прокси
+
+
+ Порт Прокси
+
+
+ Тип Прокси
+
+
+ Пользователь Прокси
+
+
+ Протокол событий Отключен.
+Сообщение:
+{0}
+
+
+ Протокол событий Отключение не удалось.
+{0}
+
+
+ Протокол импорта
+
+
+ Проверка прокси - неудачна!
+
+
+ Проверка Прокси - удачна!
+
+
+ Подключение не удалось!
+
+
+ Завершить Putty - не удалось!
+
+
+ Не удается установить фокус!
+
+
+ Получить сессию Putty не удалось!
+
+
+ Обработчик Putty: {0}
+
+
+ Убить процесс Putty не удалось!
+
+
+ Панель обработчиков: {0}
+
+
+ Ошибка изменения размера окна Putty!
+
+
+ Сохраненные сессии PuTTY
+
+
+ Настройки PuTTY
+
+
+ Показать настройки PuTTY не удалось!
+
+
+ Не удалось запустить Putty!
+
+
+ --- PuTTY ---
+
+
+ Заголовок PuTTY: {0}
+
+
+ Быстрое: {0}
+
+
+ Быстрое подключение
+
+
+ Ошибка добавления Быстрого подключения!
+
+
+ Созданить быстрое подключение не удалось
+
+
+ Предупреждать при закрытии подключений
+
+
+ Предупреждать меня только при выходе из mRemoteNG
+
+
+ Предупреждать меня только при закрытии нескольких подключений
+
+
+ Не предупреждать при закрытии подключений
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 цв. (24-бит)
+
+
+ 256 цв. (8-бит)
+
+
+ 32768 цв. (15-бит)
+
+
+ 16777216 цв. (32-бит)
+
+
+ 65536 цв. (16-бит)
+
+
+ RDP Добавить разрешение не удалось!
+
+
+ RDP Добавить разрешение не удалось!
+
+
+ Добавить сессию не удалось
+
+
+ Закрыть подключение RDP не удалось!
+
+
+ Открытие подключения не удалась!
+
+
+ Не удается создать RDP подключение, пожалуйста, проверьте настройки mRemoteNG.
+
+
+ Отключить мигание курсора
+
+
+ Отключить тень курсора
+
+
+ Отключить отображение окна при перетаскивании
+
+
+ Отключить Анимацию
+
+
+ Отключить Темы
+
+
+ Отключить обои Рабочего стола
+
+
+ RDP отключен!
+
+
+ RDP не удалось отключить, попробуйте закрыть его!
+
+
+ Внутренняя ошибка: код 1.
+
+
+ Внутренняя ошибка: код 2.
+
+
+ Внутренняя ошибка: код 3. Это недопустимый режим.
+
+
+ Внутренняя ошибка: код 4.
+
+
+ Произошла неисправимая ошибка во время подключения клиента.
+
+
+ Невозможно получить GetError (Критическая ошибка)
+
+
+ Произошла неизвестная критическая ошибка RDP. Код ошибки {0}.
+
+
+ Произошла ошибка из-за нехватки памяти.
+
+
+ Неизвестная ошибка.
+
+
+ При создании окна произошла ошибка.
+
+
+ Ошибка инициализации Winsock.
+
+
+ Не удалось импортировать RDP файл!
+
+
+ В окне
+
+
+ RDP: Ошибка получения фокуса!
+
+
+ Шлюз Служб терминалов поддерживается.
+
+
+ Шлюз Служб терминалов не поддерживается!
+
+
+ Ошибка сессии!
+
+
+ Открыть подключение RDP не удалось!
+
+
+ К-ство переподключений RDP:
+
+
+ RDP: Установить уровень проверки подлинности не удалась!
+
+
+ RDP: Не удалось использовать консольную сессию!
+
+
+ Настройка переключения консолей для RDC {0}.
+
+
+ Ошибка установки учетных данных RDP!
+
+
+ Ошибка RDP SetEventHandlers!
+
+
+ Ошибка установки шлюза RDP!
+
+
+ Ошибка RDP SetPerformanceFlags!
+
+
+ Не удалось задать порт RDP!
+
+
+ Не удалось задать параметры RDP!
+
+
+ Установить перенаправление в RDP не удалось!
+
+
+ Установить перенаправление клавиш в RDP не удалось!
+
+
+ Ошибка установки разрешения RDP!
+
+
+ Smart Size
+
+
+ Передать на этот компьютер
+
+
+ Не воспроизводить
+
+
+ Оставить на удаленном компьютере
+
+
+ Не удалось переключить RDP в режим Fullscreen!
+
+
+ Не удалось переключить RDP в режим SmartSize!
+
+
+ При запуске подключаться к предыдущим сессиям
+
+
+ Обновление
+
+
+ Удаленн. файл
+
+
+ Удалить все
+
+
+ Переименовать
+
+
+ Rlogin
+
+
+ Сохранить
+
+
+ Сохранить все
+
+
+ Перед загрузкой нового подключения, хотите сохранить текущий файл подключения?
+
+
+ Сохранять подключения при выходе
+
+
+ Файл Graphics Interchange Format (GIF.) | *. GIF | Файл Joint Photographic Experts Group (JPEG.) | *. JPEG | Файл Joint Photographic Experts Group (JPG.) | *. JPG | Файл Portable Network Graphics (PNG). | *. PNG
+
+
+ Экран
+
+
+ Скриншот
+
+
+ Скриншоты
+
+
+ Поиск
+
+
+ Отправить...
+
+
+ Получить фоновую сессию не удалось
+
+
+ Завершение фоновой сессии не удалось
+
+
+ Установить имя хоста, как отображаемое имя при создании новых подключений
+
+
+ Настройка основной текстовой формы не удалось
+
+
+ Не удалось сохранить настройки, или разместить значок в системном трее!
+
+
+ Показывать подсказки в дереве подключений
+
+
+ Показывать в заголовке окна полный путь к файлу подключений
+
+
+ Показать сведения о входе в названии вкладок
+
+
+ Показывать протокол в названии вкладок
+
+
+ Один клик по подключению для его открытия
+
+
+ Один клик по открытому подключению переключается на него
+
+
+ Вид
+
+
+ Free
+
+
+ SmartSize недоступен
+
+
+ Socks 5
+
+
+ Сортировать
+
+
+ По возрастанию (A-Z)
+
+
+ По убыванию (Z-A)
+
+
+ Специальные клавиши
+
+
+ Для дополнительной информации см. справку - Начало работы - конфигурация SQL!
+
+
+ SQL Server:
+
+
+ Доступно обновление для SQL! Обновите подключения.
+
+
+ SSH version 1
+
+
+ SSH version 2
+
+
+ Фоновая передача по SSH - не удалась!
+
+
+ Передано успешо!
+
+
+ Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!
+
+
+ SSH ошибка передачи.
+
+
+ Начальный IP
+
+
+ Начальн. порт
+
+
+ Запуск / Выход
+
+
+ Статус
+
+
+ Переключится на панель уведомлений:
+
+
+ Дополнительно
+
+
+ Внешний вид
+
+
+ Вкладки и панели
+
+
+ Обновления
+
+
+ Telnet
+
+
+ Установить вручную:
+
+
+ Конфигурация
+
+
+ Подключения
+
+
+ Общие
+
+
+ Цвет фона панели конфигурации.
+
+
+ Цвет текста категории на панели конфигурации.
+
+
+ Цвет линий сетки на панели конфигурации
+
+
+ Цвет фона области справки панели конфигурации.
+
+
+ Цвет текста в области справки панели конфигурации.
+
+
+ Цвет текста в панели конфигурации.
+
+
+ Цвет фона панели подключений.
+
+
+ Цвет текста в панели подключений.
+
+
+ Цвет линий дерева на панели подключений.
+
+
+ Цвет фона меню.
+
+
+ Цвет текста в меню.
+
+
+ Цвет фона поля поиска.
+
+
+ Цвет текста в поле поиска.
+
+
+ Цвет текста подсказки в поле поиска.
+
+
+ Цвет фона панели инструментов.
+
+
+ Цвет текста в панели инструментов.
+
+
+ Цвет фона главного окна.
+
+
+ Цвет фона панели конфигурации
+
+
+ Цвет текста категории панели конфигурации
+
+
+ Цвет линий сетки панели конфигурации
+
+
+ Цвет фона справки панели конфигурации
+
+
+ Цвет текста справки панели конфигурации
+
+
+ Цвет текста панели конфигурации
+
+
+ Цвет фона панели подключений
+
+
+ Цвет текста панели подключений
+
+
+ Цвет линий дерева панели подключений
+
+
+ Цвет фона меню
+
+
+ Цвет текста меню
+
+
+ Цвет фона поля поиска
+
+
+ Цвет текста поля поиска
+
+
+ Цвет текста подсказки поля поиска
+
+
+ Цвет фона панели инструментов
+
+
+ Цвет текста панели инструментов
+
+
+ Цвет фона окна
+
+
+ Ошибка ({0})
+
+
+ Информация ({0})
+
+
+ Пароль
+
+
+ Выбор Панели
+
+
+ Предупреждение ({0})
+
+
+ Передача
+
+
+ Передача не удалась!
+
+
+ Интеграция
+
+
+ Тип
+
+
+ Ultra VNC Repeater
+
+
+ Порт UltraVNC SingleClick:
+
+
+ Снимите свойства, которые не хотите сохранять!
+
+
+ Безымянный тема
+
+
+ Требуется обновление mRemoteNG
+
+
+ mRemoteNG может периодически подключаться к сайту mRemoteNG для проверки наличия обновлений.
+
+
+ Не удалось завершить проверку обновлений!
+
+
+ Не удалось проверить наличие обновлений!
+
+
+ mRemoteNG Portable Edition не поддерживает автообновление.
+
+
+ Ошибка при удалении файла обновления!
+
+
+ Загрузка завершена!
+mRemoteNG сейчас прекратит работу и начнет процесс установки обновлений.
+
+
+ Не удалось завершить загрузку!
+
+
+ Не удалось скачать обновление!
+
+
+ Каждые {0} дн.
+
+
+ Ежедневно
+
+
+ Ежемесячно
+
+
+ Еженедельно
+
+
+ Ошибка при запуске обновления!
+
+
+ Использовать другое имя пользователя и пароль
+
+
+ Использовать только панель уведомлений (без всплывающих подсказок)
+
+
+ Пользователь
+
+
+ Использовать те же имя пользователя и пароль
+
+
+ Использовать смарт-карты
+
+
+ Использовать SQL Server для загрузки и сохранения подключений
+
+
+ Версия
+
+
+ VNC
+
+
+ Не удалось отключить VNC!
+
+
+ Не удалось открыть подключение!
+
+
+ Не удалось обновить экран VNC!
+
+
+ Не удалось послать VNC спец. клавиши!
+
+
+ Не удалось установить обработчик событий VNC!
+
+
+ Не удалось задать параметры VNC!
+
+
+ Не удалось начать VNC-чат!
+
+
+ Не удалось переключить VNC в SmartSize!
+
+
+ Не удалось переключить VNC в режим Просмотра!
+
+
+ Предупреждать, если не прошел проверку
+
+
+ Предупреждения
+
+
+ Использовано DockPanel Suite от [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Запись в лог-файл (mRemoteNG.log)
+
+
+ Путь XULRunner:
+
+
+ Да
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.uk.resx b/mRemoteV1/CS/Language/Language.uk.resx
new file mode 100644
index 000000000..f76c91d7c
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.uk.resx
@@ -0,0 +1,2004 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Про програму
+
+
+ Активно
+
+
+ Активність
+
+
+ Нове з'єднання
+
+
+ Нова папка
+
+
+ AddNodeFromXML не вдалося!
+
+
+ AddNodesFromSQL не вдалося!
+
+
+ Дозволити лише один екземпляр програми (необхіден перезапуск)
+
+
+ Завжди
+
+
+ Підключатися, навіть якщо не пройшов перевірку
+
+
+ Завжди показувати діалог вибору панелі при відкритті з'єднання
+
+
+ Завжди показувати значок в системному треї
+
+
+ Запитати пізніше
+
+
+ Налаштувати параметри зараз
+
+
+ Використовувати рекомендовані параметри
+
+
+ {0} автоматично перевіряє наявність оновлень з новими можливостями і виправленнями помилок. Рекомендується дозволити {0} щотижневу перевірку оновлень.
+
+
+ Параметри автоматичного оновлення
+
+
+ Вигляд
+
+
+ Автоматично отримувати інформацію про сесію
+
+
+ Автозбереження кожні:
+
+
+ хвилин (0 означає вимкнено)
+
+
+ Поточна версія
+
+
+ &Огляд ...
+
+
+ &Відмова
+
+
+ Змінити
+
+
+ &Закрити
+
+
+ Успадковувати по замовчуванню
+
+
+ Властивості по замовчуванню
+
+
+ Від'єднатися
+
+
+ Значок
+
+
+ &Імпорт
+
+
+ Успадковування
+
+
+ Запуск PuTTY
+
+
+ &Нова
+
+
+ &ОК
+
+
+ Властивості
+
+
+ &Сканувати
+
+
+ &Стоп
+
+
+ Перевірка проксі
+
+
+ Ви не можете імпортувати звичайний файл з'єднання.
+Для звичайних файлів з'єднань використовуйте Файл - Відкрити з'єднання!
+
+
+ Не вдається запустити сканування портів, невірний формат IP!
+
+
+ Зовнішній вигляд
+
+
+ З'єднання
+
+
+ Облікові дані
+
+
+ Вигляд
+
+
+ Шлюз
+
+
+ Основна
+
+
+ Різне
+
+
+ Протокол
+
+
+ Локальні ресурси
+
+
+ Завжди показувати це вікно при запуску
+
+
+ Оновлення
+
+
+ Помилка перевірки!
+
+
+ Успішно перевірено!
+
+
+ Для (RDP) сесій повинна бути зареєстрована в системі eolwtscom.dll.
+mRemoteNG завантажиться з цим компонентом, але не зареєструє його автоматично.
+Щоб зареєструвати його вручну: Відкрийте (Пуск - Виконати) і введіть наступну команду: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (де C:\Program Files\mRemoteNG \ це шлях до встановленого mRemoteNG).
+Якщо у вас все ж не виходить зареєструвати компонент для RDP - зверніться на форум mRemoteNG http://forum.mremoteng.org/
+
+
+ EOLWTSCOM знайдено і зареєстровано.
+
+
+ Для використання Gecko у Вас має бути встановлений XULRunner 1.8.1.x
+Ви можете завантажити XULRunner 1.8.1.3 тут: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Після завантаження вийміть пакет у будь-яку папку. Потім у mRemoteNG перейдіть в меню Інструменти - Опції - Додатково і введіть правильний шлях у полі Шлях XULRunner.
+Якщо у вас нічого не вийшло зверніться на форум mRemoteNG http://forum.mremoteng.org/
+
+
+ XULRunner було знайдено і встановлено правильно.
+
+
+ ICA потрібний встановлений XenDesktop Online Plugin і зареєстрована бібліотека wfica.ocx. Ви можете завантажити клієнт тут: http://www.citrix.com/download/
+Якщо у вас є встановлений XenDesktop Online Plugin і нічого не працює, спробуйте зареєструвати wfica.ocx вручну.
+Для цього відкрийте (Пуск - Виконати) і введіть наступну команду: regsvr32 "C:\Program Files\Citrix\ICA Client\wfica.ocx" (де C:\Program Files\Citrix ICA Client\ це шлях до XenDesktop Online Plugin).
+Якщо у вас все таки не працює ICA в mRemoteNG зверніться на форум mRemoteNG http://forum.mremoteng.org/ "
+
+
+ Всі компоненти ICA були знайдені і зареєстровані.
+Citrix ICA Client Control версії {0}
+
+
+ встановлений неправильно
+
+
+ SSH, Telnet, Rlogin і RAW протоколам потрібен для роботи PuTTY. PuTTY поставляється з кожним mRemoteNG і знаходиться в папці з програмою.
+Переконайтеся, що putty.exe є в папці з mRemoteNG (за замовчунням: C:\Program Files mRemoteNG\), або що ви вказали правильний шлях до виконуваного файлу PuTTY в Інструменти - Опції - Додатково - Шлях до PuTTY)
+
+
+ Виконуваний файл PuTTY знайдений і готовий до використання.
+
+
+ Для правильної роботи RDP необхідно мати встановлений Remote Desktop Connection (Terminal Services Client) 6.1. Ви можете отримати його тут: http://support.microsoft.com/kb/951616
+Якщо у вас є встановлений RDP 6.1 і підключитися не вдається, спробуйте зареєструватися mstscax.dll вручну. Для цього відкрийте (Пуск - Виконати) і введіть наступну команду: regsvr32 "C:\Windows\system32\mstscax.dll" (де C: \ - ваш системний диск).
+Якщо у вас виникли проблеми при роботі з RDP зверніться на форум mRemoteNGhttp: / / forum.mremoteng.org /
+
+
+ Всі RDP компоненти були знайдені і зареєстровані.
+Remote Desktop Connection, Control Version {0}
+
+
+ VNC требуется VncSharpNG.dll который находится в папке с mRemoteNG.
+ Убедитесь, что у вас есть VncSharpNG.dll в папке mRemoteNG (обычно C:\Program Files\mRemoteNG\).
+ Если у вас все же не работает VNC в mRemoteNG обратитесь на форум mRemoteNGhttp://forum.mremoteng.org/
+
+
+ Всі VNC компоненти були знайдені і зареєстровані.
+VncSharpNG Control Version {0}
+
+
+ Автоматично намагатися відновити зв'язок при відключенні від сервера (тільки RDP і ICA)
+
+
+ Домен
+
+
+ Більше не показувати це повідомлення.
+
+
+ Успадковування
+
+
+ Пароль
+
+
+ Потрібна авторизація
+
+
+ Використовувати власний шлях до PuTTY:
+
+
+ Перепідключитися, коли буде готово
+
+
+ Використовувати проксі-сервер
+
+
+ Користувач
+
+
+ Чекати виходу
+
+
+ Перевірити
+
+
+ Перевіряти наявність оновлень при запуску
+
+
+ Перевірити
+
+
+ При запуску перевіряти правильність встановлення компонентів
+
+
+ Вибрати панель перед з'єднанням
+
+
+ Закриті порти
+
+
+ Згорнути всі папки
+
+
+ Аргументи
+
+
+ Коротке ім'я
+
+
+ Файл
+
+
+ Ім'я хосту/IP
+
+
+ Повідомлення
+
+
+ Користувач
+
+
+ Чекати виходу
+
+
+ Неможливо розібрати аргументи командного рядка!
+
+
+ Перевірка компонентів
+
+
+ Помилка btnIcon_Click!
+
+
+ Помилка ShowHideGridItems!
+
+
+ Помилка IconMenu_Click!
+
+
+ Помилка властивостей Grid object!
+
+
+ Помилка отримання статусу Хоста!
+
+
+ Помилка pGrid_PopertyValueChanged!
+
+
+ Помилка завантаження Config UI!
+
+
+ Хочете закрити з'єднання, "{0}"?
+
+
+ Хочете закрити панель "{0}"? Всі її з'єднання також будуть закриті.
+
+
+ Хочете видалити зовнішній інструмент, "{0}"?
+
+
+ Хочете видалити {0} вибрані зовнішні інструменти?
+
+
+ Хочете видалити з'єднання, "{0}"?
+
+
+ Хочете видалити порожню папку, "{0}"?
+
+
+ Хочете видалити папку "{0}"? Будь-які папки або з'єднання, які вона містить також будуть видалені.
+
+
+ Хочете закрити всі відкриті з'єднання?
+
+
+ Ви дійсно хочете скинути панелі в налаштування по замовчуванню?
+
+
+ З'єднатися
+
+
+ З'єднання в повноекранному режимі
+
+
+ З'єднання...
+
+
+ Журнал з'єднань
+
+
+ Підключення до системи "{0}" через "{1}" створеного користувача "{2}" (Опис: "{3}"; Користувач: "{4}")
+
+
+ З'єднатися не вдалося!
+
+
+ Журнал подій ErrorOccured
+
+
+ Відкрити з'єднання не вдалася!
+
+
+ Неможливо відкрити з'єднання: ім'я хоста не вказано!
+
+
+ Помилка RDP!
+Код помилки: {0}
+Опис помилки: {1}
+
+
+ З'єднання
+
+
+ Не вдається встановити порт по замовчуванню!
+
+
+ Не вдалося створити резервну копію файлу з'єднань!
+
+
+ Не вдалося імпортувати з'єднання в файл!
+
+
+ Файл з'єднань "{0}" неможливо завантажити!
+
+
+ Файл з'єднань "{0}" неможливо завантажити!
+Створіть новий файл з'єднань.
+
+
+ Неможливо зберегти файл з'єднань!
+
+
+ Неможливо зберегти файл як з'єднання "{0}"!
+
+
+ З'єднання з сеансом користувача (Сеанс консолі)
+
+
+ З'єднання(з параметрами)
+
+
+ З'єднання до {0} по {1} закрито користувачем {2}.
+
+
+ З'єднання до {0} по {1} закрито користувачем {2}. (Опис: "{3}"; Користувач: "{4}")
+
+
+ З'єднання закрито
+
+
+ З'єднання закрити не вдалося!
+
+
+ Не вдається створити новий файл з'єднань!
+
+
+ Встановлена версія
+
+
+ Виявлення
+
+
+ Не з'єднувати без перевірки
+
+
+ Подвійний клік для закриття вкладки
+
+
+ Завантаження і встановлення
+
+
+ Дублювати
+
+
+ Бажаєте продовжити без пароля?
+
+
+ Використовувати пусте ім'я користувача, пароль або домен:
+
+
+ 128-біт
+
+
+ 128-біт (тільки при вході)
+
+
+ 40-біт
+
+
+ 56-біт
+
+
+ Основне
+
+
+ Шифрувати файл з'єднання
+
+
+ Кінцевий IP
+
+
+ Кінц. порт
+
+
+ Помилка додавання на Панель зовнішнього інструменту (frmMain). {0}
+
+
+ Помилка AddFolder (UI.Window.Tree). {0}
+
+
+ Версія бази даних {0} не сумісна з цією версією {1}.
+
+
+ CloneNode (Tree.Node) failed. {0}
+
+
+ Код помилки {0}.
+
+
+ Неможливо зберегти список з'єднань.
+
+
+ Не вдалося розшифрувати. {0}
+
+
+ Не вдалося зашифрувати. {0}
+
+
+ Налаштування системи безпеки Windows: "Використання системної криптографії FIPS-сумісних алгоритмів шифрування, хешування та підписування», включено. Це налаштування не сумісне з {0}.
+
+Див. статтю Microsoft Support на http://support.microsoft.com/kb/811833 для отримання додаткової інформації.
+
+{0} буде закрито.
+
+
+ Помилки
+
+
+ Файл з'єднання не може бути завантажений. {0}{0}{2}{0}{3}{0}{0} Для того, щоб запобігти втраті даних, {1} буде здійснено вихід.
+
+
+ Помилка VerifyDatabaseVersion (Config.Connections.Save). {0}
+
+
+ Розкрити всі папки
+
+
+ Експериментально
+
+
+ Експорт
+
+
+ Експорт mRemote / mRemoteNG XML
+
+
+ Зовн. Інструмент
+
+
+ Використано значки [FAMFAMFAM]
+
+
+ Всі файли (*.*)
+
+
+ Файли додатків (*. EXE)
+
+
+ mRemote CSV-файли (*. CSV)
+
+
+ mRemote XML-файли (*. XML)
+
+
+ RDP-файли (*. RDP)
+
+
+ visionapp Remote Desktop 2008 CSV-файли (*. CSV)
+
+
+ Успадковувати {0}
+
+
+ Опис успадкованої властивості: {0}
+
+
+ Free
+
+
+ На весь екран
+
+
+ Головна
+
+
+ Отримати інформацію про з'єднання з SQL не вдалося
+
+
+ Помилка при завантаженні з'єднання "{0}" на "{1}". {2}
+
+
+ Автоперепідключення
+
+
+ З'єднання
+
+
+ Властивості зовнішніх інструментів
+
+
+ Файли
+
+
+ Хост
+
+
+ Помилка HTTP з'єднання!
+
+
+ Не вдається створити нове з'єднання HTTP!
+
+
+ Не вдалося задати параметри HTTP!
+
+
+ Не вдається створити нове з'єднання ICA!
+
+
+ Не вдалося завантажити ICA-плагін!
+
+
+ Помилка встановлення облікових даних ICA!
+
+
+ Не вдалося встановити оброблювач подій ICA!
+
+
+ Не вдалося задати параметри ICA!
+
+
+ Помилка встановлення дозволів ICA!
+
+
+ Імпорт з Active Directory
+
+
+ Імпорт / Експорт
+
+
+ Імпорт mRemote / mRemoteNG XML
+
+
+ Імпорт з просканованих портів
+
+
+ Імпорт з. RDP-файл (ів)
+
+
+ Неактивний
+
+
+ Інформація
+
+
+ mRemoteNG в актуальному стані
+
+
+ З'єднання не вдалося!
+
+
+ Зовнішній інструмент: Помилка отримання фокусу!
+
+
+ Оброблювач подій Зовн. інструментів: {0}
+
+
+ Не вдалося завершити процес зовнішнього інструменту!
+
+
+ Панель Оброблювача: {0}
+
+
+ Зовнішній інструмент: Помилка зміни розміру!
+
+
+ Заголовок зовнішнього інструменту: {0}
+
+
+ CTRL + ALT + DEL
+
+
+ CTRL-ESC
+
+
+ Адреса:
+
+
+ Аргументи:
+
+
+ Історія версій:
+
+
+ &З'єднання:
+
+
+ Коротке ім'я
+
+
+ Домен:
+
+
+ Файл:
+
+
+ Ім'я хосту:
+
+
+ Опції:
+
+
+ Пароль:
+
+
+ Порт:
+
+
+ Портативна версія
+
+
+ Протокол:
+
+
+ Натисніть на цю кнопку для налаштування сесій PuTTY:
+
+
+ Max. PuTTY & & Integrated Ext. Apps wait time:
+
+
+ Випущено під ліцензією GNU General Public License (GPL)
+
+
+ сек
+
+
+ Виберіть панель зі списку або натисніть кнопку Нова, щоб створити нову.
+
+
+ Стан сервера:
+
+
+ База даних:
+
+
+ База даних:
+
+
+ Користувач:
+
+
+ Перевірка:
+
+
+ Мова
+
+
+ (Автовизначення)
+
+
+ {0} необхідно перезапустити, щоб налаштування мови вступили в силу.
+
+
+ Завантажити з SQL не вдалося!
+
+
+ Завантажити з XML не вдалося!
+
+
+ Локал. файл
+
+
+ Локальний файл не існує!
+
+
+ Вихід
+
+
+ Записати у файл звіту не вдалося!
+
+
+ Неможливо зберегти звіт в папці призначення.
+
+
+ Використано Magic library від [Crownwood Software]
+
+
+ Про програму
+
+
+ Додати Панель з'єднання
+
+
+ Повідомлення
+
+
+ Перевірка наявності оновлень
+
+
+ Конфігурація
+
+
+ З'єдуватися
+
+
+ Панель з'єднань
+
+
+ З'єднання
+
+
+ З'єднання та конфігурація
+
+
+ Копіювати
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Видалити...
+
+
+ Удалить подключение ...
+
+
+ Видалити Зовнішній інструмент...
+
+
+ Видалити папку...
+
+
+ Вимкнути
+
+
+ Допомогти проекту
+
+
+ Дублювати
+
+
+ Дублікат з'єднання
+
+
+ Дублювати папку
+
+
+ Дублювати вкладку
+
+
+ Вихід
+
+
+ Зовнішні інструменти
+
+
+ Зовнішні інструменти
+
+
+ &Файл
+
+
+ На весь екран
+
+
+ На весь екран (RDP)
+
+
+ &Довідка
+
+
+ Довідка mRemoteNG
+
+
+ Перейти до ..
+
+
+ Запуск зовнішніх інструментів
+
+
+ Новий файл з'єднання
+
+
+ Новий зовнішній інструмент
+
+
+ Повідомлення
+
+
+ Відкрити файл з'єднання...
+
+
+ Опції
+
+
+ Вставити
+
+
+ Сканер портів
+
+
+ Панель Швидке з'єднання
+
+
+ Повторне з'эднання
+
+
+ Оновити екран (VNC)
+
+
+ Перейменувати
+
+
+ Перейменувати з'єднання
+
+
+ Перейменувати папку
+
+
+ Перейменувати закладку
+
+
+ Повідомити про помилку
+
+
+ Скинути налаштування
+
+
+ Зберегти з'єднання
+
+
+ Сохранить подключение как...
+
+
+ Скріншот
+
+
+ Менеджер скріншотів
+
+
+ Надіслати спец. клавіші (VNC)
+
+
+ Сесії
+
+
+ Сесії та скріншоти
+
+
+ Показати текст
+
+
+ SmartSize (RDP / VNC)
+
+
+ Передача файлів по SSH
+
+
+ Почати чат (VNC)
+
+
+ Форум підтримки
+
+
+ &Інструменти
+
+
+ Передача файлів (SSH)
+
+
+ &Вигляд
+
+
+ Перегляд (VNC)
+
+
+ Веб-сайт
+
+
+ Мінімізувати в системний трей
+
+
+ Вниз
+
+
+ Вгору
+
+
+ Мої поточні облікові дані (Windows облікові дані)
+
+
+ Ніколи
+
+
+ Нове з'єднання
+
+
+ Нова папка
+
+
+ Нова панель
+
+
+ новий кореневої
+
+
+ Нова назва
+
+
+ Ні
+
+
+ Без стискання
+
+
+ Не вказано зовнішній інструмент
+
+
+ Ні
+
+
+ Ні
+
+
+ Нормальний
+
+
+ Немає доступних оновлень
+
+
+ Ви намагаєтеся завантажити файл з'єднання, що створено за допомогою дуже ранніх версій mRemote, це може призвести до помилки виконання.
+Будь ласка, створіть новий файл з'єднання!
+
+
+ Відкриття нової вкладки праворуч від вибраної вкладки
+
+
+ Відкриті порти
+
+
+ Тема
+
+
+ Назва групи
+
+
+ Захист паролем
+
+
+ Будь ласка, заповніть всі поля
+
+
+ Не удалось загрузить панель Сканера портов!
+
+
+ (Ці властивості будуть збережені тільки якщо ви виберете mRemote / mRemoteNG XML як вихідний формат файлів!)
+
+
+ Введіть ім'я хосту або IP до якого ви хочете підключитися.
+
+
+ Переключить все наследуемые параметры.
+
+
+ Оберіть рівень авторизації.
+
+
+ Виберіть спосіб авторизації на сервері VNC.
+
+
+ Виберіть використовувати чи ні, кешування графіки.
+
+
+ Виберіть якість кольору, яка буде використовуватися.
+
+
+ Виберіть значення стискання, яке буде використовуватися.
+
+
+ Введіть тут примітки чи опис для з'єднання.
+
+
+ Виберіть Так, якщо хочете використовувати тему Робочого столу на віддаленому хості.
+
+
+ Виберіть Так, якщо хочете використовувати шпалери Робочого столу на віддаленому хості.
+
+
+ Введіть ім'я домену.
+
+
+ Використання композиції Робочого столу на віддаленому хості.
+
+
+ Використання згладжування шрифтів.
+
+
+ Режим кодування.
+
+
+ Шифрування на віддаленому хості.
+
+
+ Зовнішній інструмент, який потрібно запустити.
+
+
+ Внешний инструмент, который нужно запустить на удаленном компьютере после отключения.
+
+
+ Зовнішній інструмент, який потрібно запустити на віддаленому комп'ютері до з'єднання.
+
+
+ Значок, який буде відображатися при з'єднанні до хосту.
+
+
+ Введіть МАС-адресу віддаленого хосту, якщо ви хочете використовувати його в зовнішньому інструменті.
+
+
+ Це ім'я, яке буде відображатися в дереві з'єднань.
+
+
+ Встанавити панель, в якій буде відкрито з'єднання.
+
+
+ Введіть пароль.
+
+
+ Введіть порт обраного протоколу.
+
+
+ Виберіть протокол, який повинен використовуватися для з'єднання.
+
+
+ Виберіть сесію PuTTY, яка буде використовуватися при з'єднанні.
+
+
+ Визначте доменне ім'я, для з'єднання до шлюзу Служб терміналів
+
+
+ Визначте ім'я хосту шлюзу Служб терміналів.
+
+
+ Вкажіть, коли використовувати шлюз Служб терміналів.
+
+
+ Вкажіть, чи слід увійти на шлюз, який використовує те ж саме ім'я користувача та пароль з'єднання.
+
+
+ Вкажіть ім'я користувача, якому дозволено підключатися до шлюзу Служб терміналів.
+
+
+ Вкажіть, чи будуть доступні локальні диски на віддаленому хості.
+
+
+ Вкажіть, чи будуть перенаправлені локальні комбінації клавіш (наприклад, Alt-Tab) на віддалений хост.
+
+
+ Вкажіть, чи будуть доступні локальні порти (тобто COM, LPT) на віддаленому хості.
+
+
+ Вкажіть, чи будуть локальні принтери доступні на віддаленому хості.
+
+
+ Вкажіть, чи будуть локальні смарт-карти доступні на віддаленому хості.
+
+
+ Укажите, будет ли перенаправлен удаленный звук на локальный компьютер.
+
+
+ Выберите один из доступных движков рендеринга, который будет использоваться для отображения HTML.
+
+
+ Виберіть роздільність екрану в дюймах або режим відображення для цього з'єднання
+
+
+ Виберіть SmartSize.
+
+
+ З'єднання до поточного сеансу віддаленого користувача.
+
+
+ Введіть будь-яку інформацію.
+
+
+ Введіть ім'я користувача.
+
+
+ Якщо ви хочете встановити режим Перегляду - виберіть Так.
+
+
+ Введіть адресу проксі-сервера.
+
+
+ Введіть пароль для авторизації на проксі-сервері.
+
+
+ Введіть порт проксі-сервера.
+
+
+ Якщо ви використовуєте проксі для тунелювання VNC з'єднань, виберіть тип тунелювання.
+
+
+ Введіть ім'я користувача для авторизації на проксі-сервері.
+
+
+ Ім'я хосту / IP
+
+
+ Все
+
+
+ Авторизація
+
+
+ Режим авторизації
+
+
+ Кеш графіки
+
+
+ Кольори
+
+
+ Стискання
+
+
+ Опис
+
+
+ Показати теми
+
+
+ Показати шпалери
+
+
+ Домен
+
+
+ Композиція робочого столу
+
+
+ Шрифти
+
+
+ Кодування
+
+
+ Шифрування
+
+
+ Зовнішній інструмент
+
+
+ Зовн. Інстр. Після
+
+
+ Зовн. Інстр. До
+
+
+ Значок
+
+
+ MAC-адреса
+
+
+ Ім'я
+
+
+ Ім'я вкладки
+
+
+ Пароль
+
+
+ Порт
+
+
+ Протокол
+
+
+ Сесії PuTTY
+
+
+ Шлюз Домена
+
+
+ Хост шлюзу
+
+
+ Пароль шлюзу Служб терміналів
+
+
+ Шлюз
+
+
+ Облікові дані шлюзу
+
+
+ Ім'я користувача шлюзу
+
+
+ Диски
+
+
+ Комбінації клавіш
+
+
+ Порти
+
+
+ Принтери
+
+
+ Смарт-карти
+
+
+ Звуки
+
+
+ Рендеринг
+
+
+ Розмір екрану
+
+
+ SmartSize режим
+
+
+ Сеанс консолі
+
+
+ Додатково
+
+
+ Користувач
+
+
+ Тільки Перегляд
+
+
+ Адреса Проксі
+
+
+ Пароль Проксі
+
+
+ Порт Проксі
+
+
+ Тип Проксі
+
+
+ Користувач Проксі
+
+
+ Протокол событий Отключен.
+Сообщение:
+{0}
+
+
+ Протокол событий Отключение не удалось.
+{0}
+
+
+ Протокол імпорту
+
+
+ Перевірка проксі - невдала!
+
+
+ Перевірка Проксі - вдала!
+
+
+ З'єднання не вдалося!
+
+
+ Завершити роботу Putty - не вдалося!
+
+
+ Не вдається встановити фокус!
+
+
+ Отримати сесію Putty не вдалося!
+
+
+ Оброблювач подій Putty: {0}
+
+
+ Вбити процес Putty не вдалося!
+
+
+ Панель оброблювача подій: {0}
+
+
+ Помилка зміни розміру вікна Putty!
+
+
+ Налаштування PuTTY
+
+
+ Показати налаштування PuTTY не вдалося!
+
+
+ Не вдалося запустити Putty!
+
+
+ Заголовок PuTTY: {0}
+
+
+ Швидке: {0}
+
+
+ Швидке з'єднання
+
+
+ Помилка додавання Швидкого з'єднання!
+
+
+ Створити швидке з'єднання не вдалося
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 кол. (24-біт)
+
+
+ 256 кол. (8-біт)
+
+
+ 32768 кол. (15-біт)
+
+
+ 16777216 кол. (32-біт)
+
+
+ 65536 кол. (16-біт)
+
+
+ RDP Додати дозвіл не вдалося!
+
+
+ RDP Додати дозвіл не вдалося!
+
+
+ Додати сесію не вдалося
+
+
+ Закрити з'єднання RDP не вдалося!
+
+
+ Відкриття з'єднання не вдалася!
+
+
+ Не вдається створити RDP з'єднання, будь ласка, перевірте налаштування mRemoteNG.
+
+
+ Вимкнути блимання курсору
+
+
+ Вимкнути тінь курсора
+
+
+ Вимкнути відображення вікна при перетягуванні
+
+
+ Вимкнути Анімацію
+
+
+ Вимкнути Теми
+
+
+ Вимкнути шпалери Робочого столу
+
+
+ RDP відключено!
+
+
+ RDP не вдалося відключити, спробуйте закрити його!
+
+
+ Внутрішня помилка: код 1.
+
+
+ Внутрішня помилка: код 2.
+
+
+ Внутрішня помилка: код 3. Це неприпустимий режим.
+
+
+ Внутрішня помилка: код 4.
+
+
+ Сталася непоправна помилка під час з'єднання клієнта.
+
+
+ Виникла невідома критична помилка RDP. Код помилки {0}.
+
+
+ Сталася помилка через нестачу пам'яті.
+
+
+ Невідома помилка.
+
+
+ При створенні вікна сталася помилка.
+
+
+ Помилка ініціалізації Winsock.
+
+
+ Не вдалося імпортувати RDP файл!
+
+
+ У вікні
+
+
+ RDP: помилка отримання фокусу!
+
+
+ Шлюз Служб терміналів підтримується.
+
+
+ Шлюз Служб терміналів не підтримується!
+
+
+ Помилка сесії!
+
+
+ Відкрити з'єднання RDP не вдалося!
+
+
+ К-сть перепідключень RDP:
+
+
+ RDP: не вдалося встановити рівень перевірки автентичності!
+
+
+ RDP: Не вдалося використати консольну сесію!
+
+
+ Налаштування перемикання консолей для RDC {0}.
+
+
+ Помилка встановлення облікових даних RDP!
+
+
+ Не вдалося встановити оброблювач подій RDP!
+
+
+ Помилка встановлення шлюзу RDP!
+
+
+ Помилка RDP SetPerformanceFlags!
+
+
+ Не вдалося встановити порт RDP!
+
+
+ Не вдалося встановити параметри RDP!
+
+
+ Не вдалося встановити перенаправлення в RDP!
+
+
+ Не вдалося встановити перенаправлення клавіш в RDP!
+
+
+ Помилка встановлення дозволів RDP!
+
+
+ розумний розмір
+
+
+ Передати на цей комп'ютер
+
+
+ Не відтворювати
+
+
+ Залишити на віддаленому комп'ютері
+
+
+ Не вдалося переключити RDP в режим Fullscreen!
+
+
+ Не вдалося переключити RDP в режим SmartSize!
+
+
+ При запуску підключатися до попередніх сесій
+
+
+ Оновлення
+
+
+ Віддал. файл
+
+
+ Видалити все
+
+
+ Перейменувати
+
+
+ Rlogin
+
+
+ Зберегти
+
+
+ Зберегти все
+
+
+ Перед завантаженням нового з'єднання, хочете зберегти поточний файл з'єднання?
+
+
+ Зберігати з'єднання при виході
+
+
+ Файл Graphics Interchange Format (GIF.) | *. GIF | Файл Joint Photographic Experts Group (JPEG.) | *. JPEG | Файл Joint Photographic Experts Group (JPG.) | *. JPG | Файл Portable Network Graphics (PNG). | *. PNG
+
+
+ Екран
+
+
+ Скріншот
+
+
+ Скріншоти
+
+
+ Надіслати...
+
+
+ Отримати фонову сесію не вдалося
+
+
+ Завершення фонової сесії не вдалося
+
+
+ Встановити ім'я хосту, як псевдонім при створенні нових з'єднань
+
+
+ Налаштування основної текстової форми не вдалося
+
+
+ Не вдалося зберегти налаштування, або розмістити значок у системному треї!
+
+
+ Показувати підказки в дереві з'єднань
+
+
+ Показувати в заголовку вікна повний шлях до файлу з'єднань
+
+
+ Показати відомості про вхід у назві вкладок
+
+
+ Показувати протокол у назві вкладок
+
+
+ Один клік по з'єднанню для його відкриття
+
+
+ Один клік по відкритому з'єднанню переключається на нього
+
+
+ Вигляд
+
+
+ Free
+
+
+ Socks 5
+
+
+ Сортувати
+
+
+ За зростанням (A-Z)
+
+
+ За спаданням (Z-A)
+
+
+ Спеціальні клавіші
+
+
+ Для додаткової інформації див. довідку - Початок роботи - конфігурація SQL!
+
+
+ SQL Server:
+
+
+ Доступно оновлення для SQL! Оновлення з'єднання.
+
+
+ SSH version 1
+
+
+ SSH version 2
+
+
+ Фонова передача по SSH - не вдалося!
+
+
+ Передано успішно!
+
+
+ Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!
+
+
+ Помилка передавання SSH.
+
+
+ Початковий IP
+
+
+ Початк. порт
+
+
+ Запуск / Вихід
+
+
+ Статус
+
+
+ Переключиться на панель повідомлень:
+
+
+ Додатково
+
+
+ Зовнішній вигляд
+
+
+ Вкладки і панелі
+
+
+ Оновлення
+
+
+ Telnet
+
+
+ Встановити вручну:
+
+
+ Помилка ({0})
+
+
+ Інформація ({0})
+
+
+ Пароль
+
+
+ Вибір Панелі
+
+
+ Попередження ({0})
+
+
+ Передача
+
+
+ Передача не вдалася!
+
+
+ Інтеграція
+
+
+ Тип
+
+
+ Ultra VNC Repeater
+
+
+ Порт UltraVNC SingleClick:
+
+
+ Зніміть властивості, які не хочете зберігати!
+
+
+ Потрібне оновлення mRemoteNG
+
+
+ mRemoteNG може періодично підключатися до сайту mRemoteNG для перевірки наявності оновлень.
+
+
+ Не вдалося завершити перевірку оновлень!
+
+
+ Не вдалося перевірити наявність оновлень!
+
+
+ Портативна версія mRemoteNG не підтримує автоматичне оновлення.
+
+
+ Помилка при видаленні файлу оновлення!
+
+
+ Завантаження завершено!
+mRemoteNG зараз припинить роботу і почне процес встановлення оновлення.
+
+
+ Не вдалося завершити завантаження!
+
+
+ Не вдалося завантажити оновлення!
+
+
+ Кожні {0} дн.
+
+
+ Щодня
+
+
+ Щомісяця
+
+
+ Щотижня
+
+
+ Помилка при запуску оновлення!
+
+
+ Використовувати інше ім'я користувача і пароль
+
+
+ Використовувати тільки панель повідомлень (без спливаючих підказок)
+
+
+ Користувач
+
+
+ Використовувати ті ж ім'я користувача і пароль
+
+
+ Використовувати смарт-карти
+
+
+ Використовувати SQL Server для завантаження і збереження з'єднань
+
+
+ Версія
+
+
+ VNC
+
+
+ Не вдалося вимкнути VNC!
+
+
+ Не вдалося відкрити з'єднання!
+
+
+ Не вдалося оновити екран VNC!
+
+
+ Не вдалося послати VNC спец. клавіші!
+
+
+ Не вдалося встановити оброблювач подій VNC!
+
+
+ Не вдалося задати параметри VNC!
+
+
+ Не вдалося почати VNC-чат!
+
+
+ Не вдалося переключити VNC в SmartSize!
+
+
+ Не вдалося переключити VNC в режим Перегляду!
+
+
+ Попереджати, якщо не пройшов перевірку
+
+
+ Попередження
+
+
+ Використано DockPanel Suite від [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Запис в лог-файл (mRemoteNG.log)
+
+
+ Шлях XULRunner:
+
+
+ Так
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.zh-CN.resx b/mRemoteV1/CS/Language/Language.zh-CN.resx
new file mode 100644
index 000000000..c29c08116
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.zh-CN.resx
@@ -0,0 +1,2128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 关于
+
+
+ 活动连接
+
+
+ 活动
+
+
+ 新建连接
+
+
+ 新建目录
+
+
+ AddNodeFromXML 函数执行失败!
+
+
+ AddNodesFromSQL 函数执行失败!
+
+
+ 仅允许应用程序以单实例运行(需要重新启动mRemoteNG)
+
+
+ 始终
+
+
+ 始终连接,即使身份验证失败
+
+
+ 在打开连接时总是显示面板选择对话框
+
+
+ 始终显示标签面板
+
+
+ 始终显示通知区域图标
+
+
+ 稍后询问
+
+
+ 自定义设置
+
+
+ 使用建议设置
+
+
+ {0} 可以自动检查更新,新版本提供新功能及错误修复。建议您允许 {0} 每周检查更新。
+
+
+ 自动更新设置
+
+
+ 方面
+
+
+ 自动获取会话信息
+
+
+ 自动保存配置,每隔
+
+
+ 分钟(0表示禁用)
+
+
+ 当前版本
+
+
+ 浏览(&B)
+
+
+ 取消(&C)
+
+
+ 更改
+
+
+ 关闭(&C)
+
+
+ 默认继承
+
+
+ 默认属性
+
+
+ 断开连接
+
+
+ 图标
+
+
+ 导入(&I)
+
+
+ 继承
+
+
+ 启动PuTTY
+
+
+ 新建(&N)
+
+
+ 确定(&O)
+
+
+ 属性
+
+
+ 扫描(&S)
+
+
+ 停止(&S)
+
+
+ 测试代理
+
+
+ 您不能导入正常连接文件。请使用文件/加载连接文件以导入正常连接文件!
+
+
+ 无法启动端口扫描,IP 格式不正确!
+
+
+ 外观
+
+
+ 连接
+
+
+ 凭据
+
+
+ 显示
+
+
+ 网关
+
+
+ 常规
+
+
+ 杂项
+
+
+ 协议
+
+
+ 重定向
+
+
+ 总是在启动时显示该屏幕
+
+
+ 刷新
+
+
+ 检查失败!
+
+
+ 检查成功!
+
+
+ RDP会话功能需要您已提前在系统上注册eolwtscom.dll文件。mRemoteNG提供此组件,但是不会自动进行注册,需要您手动执行安装。手动注册可以通过以下方式:打开运行对话框(开始菜单中的运行),并输入以下内容“regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll"”(c:\Program Files\mRemoteNG\是您安装mRemoteNG的路径)。如果执行此操作后,依然无法通过RDP会话功能的检测,请在mRemoteNG论坛中咨询,地址是:http://forum.mremoteng.org/
+
+
+ 发现EOLWTSCOM组件,组件已注册。
+
+
+ 使用Gecko渲染引擎,必须事先安装XULrunner 1.8.1.x版本,并且在选项中设置路径。
+您可以在此下载XULrunner 1.8.1.3:ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+下载完成后请解压此压缩包。然后请在mRemoteNG中的工具/选项/高级的XULrunner字段中填写解压路径。
+如果执行此操作后,依然无法通过Gecko渲染引擎的检测,请在mRemoteNG论坛中咨询,地址是:http://forum.mremoteng.org/
+
+
+ 发现XULrunner组件。
+
+
+ 启用ICA需要提前安装 XenDesktop Online 插件,并正确注册wfica.ocx库文件。您可以在此下载此插件:http://www.citrix.com/download/
+如果您已安装 XenDesktop Online 插件,但人就检测失败,请手动注册 wfica.ocx 。
+请打开运行对话框(开始菜单/运行),并输入如下内容:“regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" ”(c:\Program Files\Citrix\ICA Client\ 是您安装 XenDesktop Online 插件的路径)。
+如果执行此操作后,依然无法通过ICA的检测,请在mRemoteNG论坛中咨询,地址是:http://forum.mremoteng.org/
+
+
+ 发现ICA组件。
+Citrix ICA 客户端空间版本:{0}
+
+
+ 安装不正确
+
+
+ SSH、Telnet、Rlogin和RAW协议均基于PuTTY。mRemoteNG安装时会自动安装内置的PuTTY到安装目录中。
+请确保Putty.exe在mRemoteNG目录中(默认为 c:\Program Files\mRemoteNG\)或是在选项(工具/选项/高级/自定义PuTTY路径)中指定Putty的有效路径。
+
+
+ 发现 PuTTY 执行文件。
+
+
+ 为确保RDP工作征程,请您提前安装远程桌面连接(终端服务客户端)6.1版本。您可以在这里下载:http://support.microsoft.com/kb/951616
+如果您已经安装RDP 6.1,但依然检测失败,请尝试手动注册mstscax.dll文件。注册方法:打开运行对话框(开始菜单/运行),并输入以下命令:“regsvr32 "c:\windows\system32\mstscax.dll"”(C:\是您的系统所在驱动器)。
+如果执行此操作后,依然无法正常使用RDP,请在mRemoteNG论坛中咨询,地址是:http://forum.mremoteng.org/
+
+
+ 发现 RDP 组件。
+远程桌面版本 {0}
+
+
+ 使用VNC前,请确认VncSharpNG.dll在您安装mRemoteNG的目录中(一般为 C:\Program Files\mRemoteNG\)。
+如果执行此操作后,依然无法通过VNC的检测,请在mRemoteNG论坛中咨询,地址是:http://forum.mremoteng.org/
+
+
+ 发现 VNC 组件。
+VncSharpNG 版本 {0}
+
+
+ 服务器连接断开时,自动重试连接(仅限RDP和ICA)
+
+
+ 域名
+
+
+ 不再显示此消息。
+
+
+ 继承
+
+
+ 密码
+
+
+ 此代理服务器要求进行身份验证
+
+
+ 自定义 PuTTY 路径:
+
+
+ 准备完成时重新连接
+
+
+ 使用代理服务器连接
+
+
+ 用户名
+
+
+ 等待退出
+
+
+ 再次检查
+
+
+ 启用时检查更新和网站公告。
+
+
+ 现在检查
+
+
+ 启用时检查组件安装是否正常。
+
+
+ 连接前请选择面板
+
+
+ 已关闭端口
+
+
+ 折叠所有目录
+
+
+ 参数
+
+
+ 显示名称
+
+
+ 文件名
+
+
+ 主机名/IP
+
+
+ 消息
+
+
+ 用户名
+
+
+ 等待退出
+
+
+ 无法解析命令行参数!
+
+
+ {0} 检测到联想Auto Scroll程序在本机上运行。该程序程序明确会导致问题 {0} 的出现。建议您禁用或卸载该程序。
+
+
+ 检测到系统存在兼容性问题
+
+
+ 组件检查
+
+
+ btnIcon_Click 函数执行失败!
+
+
+ ShowHideGridItems 函数执行失败!
+
+
+ IconMenu_Click 函数执行失败!
+
+
+ 属性网格对象失败!
+
+
+ SetHostStatus 函数执行失败!
+
+
+ pGrid_PopertyValueChanged 函数执行失败!
+
+
+ 无法加载配置界面。
+
+
+ 确定要关闭连接“{0}”?
+
+
+ 确实要关闭面板“{0}”?此面板所包含的所有连接将会断开。
+
+
+ 确定要删除外部工具,"{0}"?
+
+
+ 确定要删除外部工具 {0} 吗?
+
+
+ 确定要删除连接,"{0}"?
+
+
+ 确定要删除空目录,"{0}"?
+
+
+ 确定要删除目录,"{0}"?目录下所有目录及连接都将被删除。
+
+
+ 确认要关闭所有已打开的连接吗?
+
+
+ 确认要重置面板为默认布局吗?
+
+
+ 连接
+
+
+ 在全屏模式下连接
+
+
+ 正在连接...
+
+
+ 协议事件:已连接
+
+
+ 通过{1}到主机{0}的连接,已被用户{2}打开(说明:“{3}”,自定义信息:“{4}”)。
+
+
+ 连接失败!
+
+
+ 协议事件:发生错误
+
+
+ 连接建立失败!
+
+
+ 无法打开连接:未指定主机名!
+
+
+ RDP发生错误!
+错误代码:{0}
+错误描述:{1}
+
+
+ 连接
+
+
+ 无法设置默认端口 !
+
+
+ 无法创建连接配置文件备份!
+
+
+ 无法导入连接配置文件
+
+
+ 无法载入连接配置文件“{0}”!
+
+
+ 无法载入连接配置文件“{0}”!
+启用新建连接配置文件。
+
+
+ 无法保存连接配置文件!
+
+
+ 无法保存连接配置文件“{0}”!
+
+
+ 连接到控制台会话
+
+
+ 连接(选项)
+
+
+ 通过{1}到主机{0}的连接,已被用户{2}关闭。
+
+
+ 通过{1}到主机{0}的连接,已被用户{2}关闭(说明:“{3}”,自定义信息:“{4}”)。
+
+
+ 连接事件关闭
+
+
+ 连接事件关闭失败!
+
+
+ 无法新建连接配置文件!
+
+
+ 在 FilteredPropertyGrid 中找不到 ToolStrip 控件。
+
+
+ 已安装版本
+
+
+ 默认主题
+
+
+ 检测
+
+
+ 身份验证失败时取消连接
+
+
+ 双击标签关闭
+
+
+ 下载并安装
+
+
+ 创建副本
+
+
+ 确认不输入密码吗?
+
+
+ 对于空用户名、密码或域名使用:
+
+
+ 128 位
+
+
+ 128位(仅用于登录)
+
+
+ 基本
+
+
+ 完全加密连接配置文件
+
+
+ 终止IP
+
+
+ 终止端口
+
+
+ AddFolder (UI.Window.Tree) 函数执行失败。{0}
+
+
+ AddFolder (UI.Window.Tree) 函数执行失败。{0}
+
+
+ 数据库版本 {0} 与当前版本 {1} 不兼容。
+
+
+ CloneNode (Tree.Node) 函数执行失败。{0}
+
+
+ 错误代码{0}。
+
+
+ 无法保存连接列表。
+
+
+ 解密失败。{0}
+
+
+ 加密失败。{0}
+
+
+ Windows 安全设置中已启用"系统加密:使用 FIPS 兼容算法进行加密、散列和签名操作"。此设置与 {0} 不兼容。
+请参阅 Microsoft 支持文章中的详细信息:http://support.microsoft.com/kb/811833
+{0} 即将关闭。
+
+
+ 错误
+
+
+ 默认连接配置文件加载失败。{0}{0}{2}{0}{3}{0}{0}为避免数据丢失, {1} 即将退出。
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) 函数执行失败。{0}
+
+
+ 展开所有目录
+
+
+ 实验
+
+
+ 导出
+
+
+ 导出mRemote/mRemoteNG XML
+
+
+ 外部应用
+
+
+ 内置图标由[FAMFAMFAM]制作
+
+
+ 所有文件(*.*)
+
+
+ 应用程序(*.exe)
+
+
+ mRemote CSV(*.csv)
+
+
+ mRemote XML(*.xml)
+
+
+ RDP文件(*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV Files (*.csv)
+
+
+ 继承 {0}
+
+
+ 继承属性的描述:{0}
+
+
+ 免费
+
+
+ 全屏
+
+
+ 常规
+
+
+ 从 SQL 获取连接配置信息失败
+
+
+ 从 {1} 中加载连接项 {0} 时发生错误。{2}
+
+
+ 自动重试连接
+
+
+ 连接
+
+
+ 外部工具属性
+
+
+ 文件
+
+
+ 主机
+
+
+ HTTP 连接失败!
+
+
+ 无法创建新的 HTTP 连接!
+
+
+ 更改HTTP文档标题失败!
+
+
+ 设置 HTTP 属性失败!
+
+
+ 无法创建新 ICA 连接!
+
+
+ ICA 插件加载失败!
+
+
+ ICA 凭据设置失败!
+
+
+ ICA 事件句柄设置失败!
+
+
+ ICA 属性设置失败!
+
+
+ ICA 分辨率设置失败!
+
+
+ 导入 Active Directory
+
+
+ 导入/导出
+
+
+ 导入mRemote/mRemoteNG XML
+
+
+ 导入端口扫描结果
+
+
+ 导入 RDP 文件
+
+
+ 非活动
+
+
+ 信息
+
+
+ mRemoteNG 已经是最新版本。
+
+
+ 连接失败!
+
+
+ 清除内部程序进程失败!
+
+
+ 内部程序焦点设置失败!
+
+
+ 内部程序句柄:{0}
+
+
+ 终止内部程序进程失败!
+
+
+ 面板句柄:{0}
+
+
+ 内部程序大小调整失败!
+
+
+ --- 内部程序信息 ---
+
+
+ 内部程序标题:{0}
+
+
+ Ctrl + Alt + Del
+
+
+ Ctrl + Esc
+
+
+ 地址:
+
+
+ 参数:
+
+
+ 更新记录:
+
+
+ 当关闭连接时:
+
+
+ 连接(&C)
+
+
+ 显示名称
+
+
+ 域名:
+
+
+ 文件名:
+
+
+ 主机名:
+
+
+ 选项:
+
+
+ 密码:
+
+
+ 端口:
+
+
+ 便携版本
+
+
+ 协议:
+
+
+ 请单击按钮,配置PuTTY会话:
+
+
+ Putty 超时时间:
+
+
+ 基于通用公共许可证(GPL)发布
+
+
+ 秒
+
+
+ 从下面的列表中选择一个面板或单击“新建”添加新面板。单击确定继续。
+
+
+ 服务器状态:
+
+
+ 数据库:
+
+
+ 数据库:
+
+
+ 用户名:
+
+
+ 验证:
+
+
+ 语言
+
+
+ (自动检查)
+
+
+ {0} 必须重新启动,对语言的更改才能生效。
+
+
+ 从SQL加载配置失败!
+
+
+ 从XML加载配置失败!
+
+
+ 本地文件
+
+
+ 本地文件不存在!
+
+
+ 注销
+
+
+ 报告文件写入失败!
+
+
+ 无法在当前位置保存报告文件。
+
+
+ 使用[Crownwood Software]开发的 Magic 库
+
+
+ 关于
+
+
+ 添加连接面板
+
+
+ 公告
+
+
+ 检查更新
+
+
+ 配置
+
+
+ 连接
+
+
+ 连接面板
+
+
+ 连接
+
+
+ 连接和配置
+
+
+ 复制
+
+
+ Ctrl+Alt+Del
+
+
+ Ctrl+Esc
+
+
+ 删除...
+
+
+ 删除连接...
+
+
+ 删除外部工具...
+
+
+ 删除目录…
+
+
+ 断开连接
+
+
+ 捐赠
+
+
+ 创建副本
+
+
+ 重复连接
+
+
+ 重复目录
+
+
+ 重复标签
+
+
+ 退出
+
+
+ 外部工具
+
+
+ 外部工具工具栏
+
+
+ 文件(&F)
+
+
+ 全屏
+
+
+ 全屏(RDP)
+
+
+ 帮助(&H)
+
+
+ mRemoteNG 帮助
+
+
+ 转到
+
+
+ 启动外部工具
+
+
+ 新建连接配置文件
+
+
+ 新建外部工具
+
+
+ 通知
+
+
+ 复制全部
+
+
+ 删除
+
+
+ 删除全部
+
+
+ 打开连接配置文件…
+
+
+ 选项
+
+
+ 粘贴
+
+
+ 端口扫描
+
+
+ 快速连接工具栏
+
+
+ 重新连接
+
+
+ 刷新(VNC)
+
+
+ 重命名
+
+
+ 重命名连接
+
+
+ 重命名目录
+
+
+ 重命名标签
+
+
+ 报告问题
+
+
+ 重置布局
+
+
+ 保存连接配置文件
+
+
+ 另存连接配置文件为…
+
+
+ 屏幕截图
+
+
+ 屏幕截图管理器
+
+
+ 发送特殊键(VNC)
+
+
+ 会话
+
+
+ 会话和屏幕截图
+
+
+ 显示(&S)帮助文本
+
+
+ 显示文本
+
+
+ 窗口自适应(RDP/VNC)
+
+
+ SSH文件传输
+
+
+ 启动Chat(VNC)
+
+
+ 支持论坛
+
+
+ 工具(&T)
+
+
+ 传输文件(SSH)
+
+
+ 查看(&V)
+
+
+ 查看模式(VNC)
+
+
+ 网站
+
+
+ 最小化到通知区域
+
+
+ 下移
+
+
+ 上移
+
+
+ 当前凭据(Windows登录信息)
+
+
+ 从不
+
+
+ 新建连接
+
+
+ 新建目录
+
+
+ 新建面板
+
+
+ 新建根目录
+
+
+ 新标题
+
+
+ 取消
+
+
+ 禁止压缩
+
+
+ 未指定外部应用程序。
+
+
+ 无
+
+
+ 无
+
+
+ 正常
+
+
+ 禁用窗口自适应
+
+
+ 无可用更新
+
+
+ 您正在试图加载旧版mRemote连接配置文件,可能会导致出现运行时错误。如果您遇到此类错误,请创建新的连接配置文件!
+
+
+ 新建标签于当前标签右侧
+
+
+ 打开端口
+
+
+ 主题
+
+
+ 删除(&D)
+
+
+ 新建(&N)
+
+
+ 面板名称
+
+
+ 密码保护
+
+
+ 请填写所有字段
+
+
+ 无法载入端口扫描面板!
+
+
+ (仅当选择mRemote/mRemoteNG XML文件格式保存时,这些属性才会保存!)
+
+
+ 请输入您要连接的主机名或IP。
+
+
+ 切换所有继承选项。
+
+
+ 请选择此链接使用的身份验证级别:
+
+
+ 请选择VNC服务器的身份验证方式。
+
+
+ 请选择是否启用位图缓存功能。
+
+
+ 请选择颜色质量。
+
+
+ 请选择压缩值。
+
+
+ 请在这里输入主机描述或备注。
+
+
+ 如果要启用远程主机的主题,请选择“是”。
+
+
+ 如果要启用远程主机的壁纸,请选择“是”。
+
+
+ 请输入您的域名。
+
+
+ 请选择是否启用桌面组合功能。
+
+
+ 如果要启用字体平滑,请选择“是”。
+
+
+ 请选择编码模式。
+
+
+ 请选择远程主机的加密强度:
+
+
+ 请选择要启动的外部工具。
+
+
+ 请选择断开远程主机连接之后,要启动的外部工具。
+
+
+ 请选择打开远程主机连接之前,要启动的外部工具。
+
+
+ 请选择连接到主机时所要显示的图标。
+
+
+ 请输入远程主机的MAC地址(如果您需要在外部工具中使用此项)。
+
+
+ 这是在连接树中所显示的名称。
+
+
+ 请设置连接所在面板。
+
+
+ 请输入您的密码。
+
+
+ 请输入所选协议对应的监听端口。
+
+
+ 请选择mRemoteNG连接主机所使用的协议。
+
+
+ 请选择连接时所使用的 PuTTY 会话。
+
+
+ 请指定远程桌面网关服务器的域名。
+
+
+ 请指定远程桌面网关服务器的主机名。
+
+
+ 请指定远程桌面网关服务器的时间。
+
+
+ 请在连接配置中指定是否使用相同的用户名或密码登录网关。
+
+
+ 请指定连接远程桌面网关服务器的用户名。
+
+
+ 请选择需要映射到远程主机的本地磁盘。
+
+
+ 请选择需要重定向要远程主机上的按键组合(如Alt+Tab)。
+
+
+ 请选择需要映射到远程主机上的本地端口(如COM口或并口)。
+
+
+ 请选择需要映射到远程主机上的本地打印机。
+
+
+ 请选择本地智能卡设备,以在远程主机上使用。
+
+
+ 请选择远程主机声音的处理方式。
+
+
+ 请选择一个有效的渲染显示HTML的引擎。
+
+
+ 请选择此连接的默认分辨率或模式。
+
+
+ 选择并启用自适应窗口。
+
+
+ 连接到远程主机的控制台会话。
+
+
+ 请在此随意输入任何你所需的信息。
+
+
+ 请输入您的用户名。
+
+
+ 如需建立只读连接,请选择“是”。
+
+
+ 请输入所使用的代理服务器地址。
+
+
+ 请输入代理服务器的密码。
+
+
+ 请输入代理服务器的端口。
+
+
+ 如果您使用代理服务器建立VNC连接的隧道,请选择具体类型。
+
+
+ 请输入代理服务器的用户名。
+
+
+ 主机名/IP
+
+
+ 全部
+
+
+ 服务器身份验证
+
+
+ 身份验证模式
+
+
+ 位图缓存
+
+
+ 色彩
+
+
+ 压缩
+
+
+ 说明
+
+
+ 显示主题
+
+
+ 显示壁纸
+
+
+ 域名
+
+
+ 桌面组合
+
+
+ 字体平滑
+
+
+ 编码
+
+
+ 加密强度
+
+
+ 外部工具
+
+
+ 连接前启动外部工具:
+
+
+ 连接后启动外部工具
+
+
+ 图标
+
+
+ MAC地址
+
+
+ 名称
+
+
+ 面板
+
+
+ 密码
+
+
+ 端口
+
+
+ 协议
+
+
+ PuTTY会话
+
+
+ 网关域名
+
+
+ 网关主机名
+
+
+ 远程桌面网关密码
+
+
+ 使用网关
+
+
+ 网关凭据
+
+
+ 网关用户名
+
+
+ 磁盘
+
+
+ 组合键
+
+
+ 端口
+
+
+ 打印机
+
+
+ 智能卡
+
+
+ 声音
+
+
+ 渲染引擎
+
+
+ 分辨率
+
+
+ 自适应窗口模式
+
+
+ 使用控制台会话。
+
+
+ 使用CredSSP方式
+
+
+ 自定义信息
+
+
+ 用户名
+
+
+ 只读模式(仅供查看)
+
+
+ 代理服务器地址
+
+
+ 代理服务器密码
+
+
+ 代理服务器端口
+
+
+ 代理服务器类型
+
+
+ 代理服务器用户名
+
+
+ 协议事件:连接断开。
+消息:
+{0}
+
+
+ 协议事件:连接断开失败。
+{0}
+
+
+ 需要导入的协议
+
+
+ 代理服务器测试失败!
+
+
+ 代理服务器测试成功!
+
+
+ 连接失败!
+
+
+ 清除Putty进程失败!
+
+
+ 无法设置焦点 !
+
+
+ Putty 会话获取失败!
+
+
+ Putty 句柄:{0}
+
+
+ Putty 进程终止失败!
+
+
+ 面板句柄:{0}
+
+
+ Putty 窗口大小调整失败!
+
+
+ PuTTY 会话已保存
+
+
+ PuTTY 设置
+
+
+ PuTTY 设置窗口显示失败!
+
+
+ Putty 启动失败!
+
+
+ --- PuTTY 信息 ---
+
+
+ PuTTY 标题:{0}
+
+
+ 快速:{0}
+
+
+ 快速连接
+
+
+ 快速连接添加失败 !
+
+
+ 快速连接创建失败!
+
+
+ (&W)关闭连接时确认
+
+
+ 退出(&e)mRemoteNG时确认
+
+
+ 关闭多个(&m)连接时确认
+
+
+ 关闭连接时不需确认
+
+
+ RAW
+
+
+ RDP
+
+
+ 24位色
+
+
+ 256色
+
+
+ 15位色
+
+
+ 32位色
+
+
+ 16位色
+
+
+ RDP 添加分辨率失败!
+
+
+ RDP批量添加分辨率失败!
+
+
+ RDP 会话添加失败!
+
+
+ RDP 连接关闭失败!
+
+
+ 连接建立失败!
+
+
+ 无法创建 RDP 控制,请检查 mRemoteNG 的安装需求是否满足。
+
+
+ 禁用光标闪烁
+
+
+ 禁用光标阴影
+
+
+ 禁用全窗口拖动
+
+
+ 禁用菜单动画功能
+
+
+ 禁用主题功能
+
+
+ 禁用壁纸功能
+
+
+ RDP连接已断开!
+
+
+ RPD连接断开失败,正在尝试关闭!
+
+
+ 内部错误代码 1。
+
+
+ 内部错误代码 2。
+
+
+ 内部错误代码 3。无效状态。
+
+
+ 内部错误代码 4。
+
+
+ 客户端连接时,发生无法恢复的错误。
+
+
+ GetError 函数失败(致命错误)!
+
+
+ 发生了未知的RDP致命错误。错误代码{0}。
+
+
+ 发生内存不足错误。
+
+
+ 发生未知错误。
+
+
+ 发生窗口创建错误。
+
+
+ Winsock 初始化错误。
+
+
+ 无法导入 rdp 文件 !
+
+
+ 适合面板
+
+
+ RDP 焦点失败!
+
+
+ 支持远程桌面网关。
+
+
+ 不支持远程桌面网关。
+
+
+ GetSessions 函数执行失败!
+
+
+ 建立RDP连接失败!
+
+
+ RDP 重新连接计数器:
+
+
+ RDP SetAuthenticationLevel 函数执行失败!
+
+
+ RDP 控制台会话设置失败!
+
+
+ 切换到远程桌面客户端 {0} 控制台会话。
+
+
+ RDP 凭据设置失败!
+
+
+ RDP 事件句柄设置失败!
+
+
+ RDP 远程桌面网关设置失败!
+
+
+ RDP SetPerformanceFlags 函数执行失败!
+
+
+ RDP 端口设置失败!
+
+
+ RDP 属性设置失败!
+
+
+ RDP 重定向设置失败!
+
+
+ Rdp 重定向键设置失败!
+
+
+ RDP 分辨率设置失败!
+
+
+ 自适应大小
+
+
+ 带到这台计算机
+
+
+ 不要播放
+
+
+ 留在远程计算机
+
+
+ RDP 全屏模式切换失败!
+
+
+ RDP 窗口自适应切换失败!
+
+
+ 启动时自动连接上次打开的会话
+
+
+ 刷新
+
+
+ 远程文件
+
+
+ 全部移除
+
+
+ 重命名
+
+
+ Rlogin
+
+
+ 保存
+
+
+ 全部保存
+
+
+ 打开其它连接配置文件前,是否保存当前配置文件?
+
+
+ 退出时保存连接配置文件
+
+
+ GIF(.gif)|*.gif|JPEG(.jpeg)|*.jpeg|JPEG(.jpg)|*.jpg|PNG(.png)|*.png
+
+
+ 屏幕
+
+
+ 屏幕截图
+
+
+ 屏幕截图
+
+
+ 搜索
+
+
+ 发送到…
+
+
+ 获取后台会话失败
+
+
+ 结束后台会话失败
+
+
+ 新建或重命名连接时,主机名自动设置为显示名称
+
+
+ 主窗体文本设置失败!
+
+
+ 无法保存配置或设置系统托盘图标!
+
+
+ 在连接树窗口中显示工具提示
+
+
+ 在窗口标题中显示完整的连接配置文件路径
+
+
+ 在标签名称中显示登录信息
+
+
+ 在标签名称中显示通讯协议
+
+
+ 单击打开连接
+
+
+ 单击切换连接
+
+
+ 方面
+
+
+ 免费
+
+
+ 禁用窗口自适应
+
+
+ Socks 5
+
+
+ 排序
+
+
+ 升序(A至Z)
+
+
+ 降序(Z至A)
+
+
+ 特殊键
+
+
+ 请查看 帮助-入门-SQL配置 以获取更多信息。
+
+
+ SQL服务器
+
+
+ SQL升级检查发现可用更新!即将刷新连接。
+
+
+ SSH v1
+
+
+ SSH v2
+
+
+ SSH 后台传输失败!
+
+
+ 传输成功!
+
+
+ SSH 传输结束(UI.Window.SSHTransfer)失败!
+
+
+ SSH 传输失败。
+
+
+ 起始IP
+
+
+ 起始端口
+
+
+ 启动/退出
+
+
+ 状态
+
+
+ 切换到通知面板:
+
+
+ 高级
+
+
+ 外观
+
+
+ 标签&面板
+
+
+ 升级
+
+
+ Telnet
+
+
+ 以下:
+
+
+ 配置面板
+
+
+ 连接面板
+
+
+ 常规
+
+
+ 配置面板背景色
+
+
+ 配置面板类别文本颜色
+
+
+ 配置面板网格线颜色
+
+
+ 配置面板帮助背景颜色
+
+
+ 配置面板帮助文本颜色
+
+
+ 配置面板文本颜色
+
+
+ 连接面板背景色
+
+
+ 连接面板文本颜色
+
+
+ 连接面板树线颜色
+
+
+ 菜单背景颜色
+
+
+ 菜单文本颜色
+
+
+ 搜索栏背景颜色
+
+
+ 搜索栏文本颜色
+
+
+ 搜索栏提示文本颜色
+
+
+ 工具栏背景颜色
+
+
+ 工具栏文本颜色
+
+
+ 窗口背景颜色
+
+
+ 错误 ({0})
+
+
+ 信息 ({0})
+
+
+ 密码
+
+
+ 选择面板
+
+
+ 警告 ({0})
+
+
+ 传输
+
+
+ 传输失败!
+
+
+ 尝试进行集成
+
+
+ 类型
+
+
+ Ultra VNC Repeater
+
+
+ UltraVNC SingleClick端口:
+
+
+ 请勾去您不想保存的属性!
+
+
+ 未命名主题
+
+
+ mRemoteNG 需要更新
+
+
+ mRemoteNG 会定期检查 mRemoteNG 网站更新和产品公告。
+
+
+ 升级检查未完成!
+
+
+ 升级检查失败!
+
+
+ mRemoteNG便携版目前不支持自动更新。
+
+
+ 升级文件删除失败!
+
+
+ 下载完成!
+mRemoteNG 将退出并安装更新。
+
+
+ 下载未完成!
+
+
+ 升级文件下载失败!
+
+
+ 每隔{0}天
+
+
+ 每日
+
+
+ 每月
+
+
+ 每周
+
+
+ 升级启动失败!
+
+
+ 使用不同的用户名和密码
+
+
+ 仅适用通知面板(不弹出消息窗口)
+
+
+ 用户
+
+
+ 使用相同的用户名和密码
+
+
+ 使用智能卡
+
+
+ 使用SQL服务器加载&保存连接配置
+
+
+ 版本
+
+
+ VNC
+
+
+ VNC 连接断开失败!
+
+
+ 连接建立失败!
+
+
+ VNC 屏幕刷新失败!
+
+
+ VNC SendSpecialKeys 函数执行失败!
+
+
+ VNC 发送事件句柄失败!
+
+
+ 设置VNC属性失败!
+
+
+ VNC Chat启动失败!
+
+
+ VNC 窗口自适应切换失败!
+
+
+ VNC 查看模式切换失败!
+
+
+ 认证失败时弹出警告
+
+
+ 警告
+
+
+ 使用DockPanel Suite[Weifen Luo]
+
+
+ 记录日志(mRemoteNG.log)
+
+
+ XULrunner路径:
+
+
+ 确定
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Language/Language.zh-TW.resx b/mRemoteV1/CS/Language/Language.zh-TW.resx
new file mode 100644
index 000000000..adb3f60ce
--- /dev/null
+++ b/mRemoteV1/CS/Language/Language.zh-TW.resx
@@ -0,0 +1,2161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 關於
+
+
+ 啟動
+
+
+ 作用中
+
+
+ 新增連線
+
+
+ 新增資料夾
+
+
+ AddNodeFromXML 失敗!
+
+
+ AddNodesFromSQL 失敗!
+
+
+ 只允許單一應用程式執行個體 (需要重新啟動 mRemoteNG)
+
+
+ 始終
+
+
+ 一律連線,即使驗證失敗
+
+
+ 開啟連線時一律顯示面板選取對話方塊
+
+
+ 一律顯示面板索引標籤
+
+
+ 始終顯示通知區域圖示
+
+
+ 稍後再次詢問我
+
+
+ 立即自訂設定
+
+
+ 使用建議的設定
+
+
+ {0} 能自動檢查更新,其提供新的功能和和問題修正。建議允許 {0} 每星期檢查更新。
+
+
+ 自動更新設定
+
+
+ 比例
+
+
+ 自動取得工作階段資訊
+
+
+ 自動儲存間隔:
+
+
+ 分鐘 (0 分鐘停用)
+
+
+ 目前版本
+
+
+ 瀏覽(&B)...
+
+
+ 取消(&C)
+
+
+ 變更
+
+
+ 關閉(&C)
+
+
+ 預設繼承
+
+
+ 預設內容
+
+
+ 停止中斷
+
+
+ 圖示
+
+
+ 匯入(&I)
+
+
+ 繼承
+
+
+ 啟動 PuTTY
+
+
+ 新增(&N)
+
+
+ 確定(&O)
+
+
+ 內容
+
+
+ 掃描(&S)
+
+
+ 停止(&S)
+
+
+ 測試 Proxy
+
+
+ 您無法匯入標準連線檔案。
+標準連線檔案請使用 檔案 - 載入連線!
+
+
+ 無法開始 Port Scan,IP 格式不正確!
+
+
+ 外觀
+
+
+ 連線
+
+
+ 認證
+
+
+ 顯示
+
+
+ 閘道
+
+
+ 一般
+
+
+ 雜項
+
+
+ 協定
+
+
+ 重新導向
+
+
+ 啟動時一律顯示此畫面
+
+
+ 重新整理
+
+
+ 檢查失敗!
+
+
+ 檢查成功!
+
+
+ 找到 EOLWTSCOM 並似乎正確註冊。
+
+
+ 找到 XULrunner 並似乎正確註冊。
+
+
+ 找到所有 ICA 元件並似乎正確註冊。
+Citrix ICA Client Control 版本 {0}
+
+
+ 未正確安裝
+
+
+ 找到 PuTTY 執行檔且準備好使用。
+
+
+ 找到所有 RDP 元件並似乎正確註冊。
+Remote Desktop Connection Control 版本 {0}
+
+
+ 找到所有 VNC 元件並似乎正確註冊。
+VncSharpNG Control 版本 {0}
+
+
+ 從伺服器中斷連線時自動嘗試重新連線 (僅限 RDP && ICA)
+
+
+ 網域
+
+
+ 不再顯示此訊息。
+
+
+ 繼承
+
+
+ 密碼
+
+
+ 此 Proxy 伺服器需要驗證
+
+
+ 使用自訂 PuTTY 路徑:
+
+
+ 就緒時重新連線
+
+
+ 使用 Proxy 伺服器連線
+
+
+ 使用者名稱
+
+
+ 等待結束
+
+
+ 再次檢查
+
+
+ 啟動時檢查更新和發佈
+
+
+ 立即檢查
+
+
+ 啟動時檢查元件的正確安裝
+
+
+ 連線前選擇面板
+
+
+ 關閉的連接埠
+
+
+ 折疊所有資料夾
+
+
+ 引數
+
+
+ 顯示名稱
+
+
+ 檔案名稱
+
+
+ 主機名稱/IP
+
+
+ 訊息
+
+
+ 使用者名稱
+
+
+ 等待結束
+
+
+ 無法分析命令列引數!
+
+
+ {0} 偵測到 Lenovo Auto Scroll Utility 執行在此系統。 此工具程式已知會造成 {0} 問題。 建議您將其停用或解除安裝。
+
+
+ 偵測到相容問題
+
+
+ 元件檢查
+
+
+ btnIcon_Click 失敗!
+
+
+ ShowHideGridItems 失敗!
+
+
+ IconMenu_Click 失敗!
+
+
+ Property Grid 物件失敗!
+
+
+ SetHostStatus 失敗!
+
+
+ pGrid_PopertyValueChanged 失敗!
+
+
+ 組態 UI 載失敗!
+
+
+ 您確定要關閉連線「{0}」嗎?
+
+
+ 您確定要關閉關閉面板「{0}」嗎? 任何內含的連線也將關閉。
+
+
+ 您確定要刪除外部工具「{0}」嗎?
+
+
+ 您確定要刪除選取的外部工具「{0}」嗎?
+
+
+ 您確定要刪除連線「{0}」嗎?
+
+
+ 您確定要刪除空的資料夾「{0}」嗎?
+
+
+ 您確定要刪除資料夾「{0}」嗎? 任何內含的資料夾或連線也將刪除。
+
+
+ 您確定要關閉所有開啟連線嗎?
+
+
+ 您確定要重設面板為其預設配置嗎?
+
+
+ 連線
+
+
+ 以全螢幕模式連線
+
+
+ 正在連線...
+
+
+ Protocol Event 已連線
+
+
+ 使用者「{2}」透過「{1}」發佈連線到「{0}」 (描述: 「{3}」,使用者欄位: 「{4}」)
+
+
+ 連線失敗!
+
+
+ 發生 Protocol Event 錯誤
+
+
+ 開啟連線失敗!
+
+
+ 無法開啟連線: 未指定主機名稱!
+
+
+ RDP 錯誤!
+錯誤碼: {0}
+錯誤描述: {1}
+
+
+ 連線
+
+
+ 無法設定預設連接埠!
+
+
+ 無法建立連線檔案備份!
+
+
+ 無法匯入連線檔案!
+
+
+ 無法載入連線檔案「{0}」!
+
+
+ 無法載入連線檔案「{0}」!
+開始新的連線檔案。
+
+
+ 無法儲存連線檔案!
+
+
+ 無法另存連線檔案為「{0}」!
+
+
+ 連線到 Console 工作站
+
+
+ 連線 (含選項)
+
+
+ 使用者「{2}」關閉透過「{1}」連線到「{0}」。
+
+
+ 使用者「{2}」關閉透過「{1}」連線到「{0}」 (描述: 「{3}」,使用者欄位: 「{4}」)
+
+
+ 連線事件已關閉
+
+
+ 連線事件關閉失敗!
+
+
+ 無法建立連線檔案!
+
+
+ 無法在 FilteredPropertyGrid 找到 ToolStrip 控制。
+
+
+ 安裝的版本
+
+
+ 預設主題
+
+
+ 偵測
+
+
+ 如果驗證失敗則不連線
+
+
+ 按兩下索引標籤關閉
+
+
+ 下載並安裝
+
+
+ 複製
+
+
+ 您要以無密碼繼續嗎?
+
+
+ 針對空的使用者名稱、密碼或網域欄位使用:
+
+
+ 128 位元
+
+
+ 128 位元 (只有登入)
+
+
+ 基本
+
+
+ 完整加密連線檔案
+
+
+ 結束 IP
+
+
+ 結束連接埠
+
+
+ AddExternalToolsToToolBar (frmMain) 失敗。 {0}
+
+
+ AddFolder (UI.Window.Tree) 失敗。 {0}
+
+
+ 資料庫版本 {0} 與 {1} 的此版本不相容。
+
+
+ CloneNode (Tree.Node) 失敗。 {0}
+
+
+ 錯誤碼 {0}。
+
+
+ 無法儲存連線清單。
+
+
+ 解密失敗。 {0}
+
+
+ 加密失敗。 {0}
+
+
+ Windows 安全性設定,「系統加密編譯: 使用 FIPS 相容演算法於加密,雜湊,以及簽章」已啟用。 此設定與 {0} 不相容。
+
+更多資訊請查看 Microsoft Support 文章於 http://support.microsoft.com/kb/811833?
+
+{0} 將關閉。
+
+
+ 錯誤
+
+
+ 無法載入啟動連線檔案。 {0}{0}{2}{0}{3}{0}{0} 為了避免資料遺失,{1} 將結束。
+
+
+ VerifyDatabaseVersion (Config.Connections.Save) 失敗 {0}
+
+
+ 展開所有資料夾
+
+
+ 實驗性
+
+
+ 匯出
+
+
+ 匯出 mRemote/mRemoteNG XML
+
+
+ 結束 App
+
+
+ 包含 [FAMFAMFAM] 圖示
+
+
+ 所有檔案 (*.*)
+
+
+ 應用程式檔案 (*.exe)
+
+
+ mRemote CSV 檔案 (*.csv)
+
+
+ mRemote XML 檔案 (*.xml)
+
+
+ RDP 檔案 (*.rdp)
+
+
+ visionapp Remote Desktop 2008 CSV 檔案 (*.csv)
+
+
+ 繼承 {0}
+
+
+ 繼承的內容描述 {0}
+
+
+ 任意
+
+
+ 全螢幕
+
+
+ 一般
+
+
+ 取得 [來自 SQL 的連線資訊] 失敗
+
+
+ 從「{1}」載入「{0}」的連線項目時發生錯誤。 {2}
+
+
+ 自動重新連線
+
+
+ 連線
+
+
+ 外部工具內容
+
+
+ 檔案
+
+
+ 主機
+
+
+ HTTP 連線失敗!
+
+
+ 無法建立新連線!
+
+
+ 變更 HTTP Document Tile 失敗!
+
+
+ 設定 HTTP Props 失敗!
+
+
+ 無法建立新的 ICA 連線!
+
+
+ 載入 ICA Plugin 失敗!
+
+
+ ICA SetCredentials 失敗!
+
+
+ ICA Set Event Handlers 失敗!
+
+
+ ICA Set Props 失敗!
+
+
+ ICA Set Resolution 失敗!
+
+
+ 加入字首「Quick:」以識別快速連線索引標籤
+
+
+ 從 Active Directory 匯入
+
+
+ 匯入/匯出
+
+
+ 匯入 mRemote/mRemoteNG XML
+
+
+ 從 Port Scan 匯入
+
+
+ 從 .RDP 檔案匯入
+
+
+ 非作用中
+
+
+ 資訊
+
+
+ mRemoteNG 為最新
+
+
+ 連線失敗!
+
+
+ Dispose of Int App 程序失敗!
+
+
+ Int App Focus 連線失敗!
+
+
+ Int App 處理: {0}
+
+
+ Killing Int App 程序失敗!
+
+
+ 面板處理: {0}
+
+
+ Int App 調整大小失敗!
+
+
+ --- IntApp Stuff ---
+
+
+ Int App 標題: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ 位址:
+
+
+ 引數:
+
+
+ 更新日誌:
+
+
+ 關閉連線時:
+
+
+ 連線(&C):
+
+
+ 顯示名稱
+
+
+ 網域:
+
+
+ 檔案名稱:
+
+
+ 主機名稱:
+
+
+ 選項:
+
+
+ 密碼:
+
+
+ 連接埠:
+
+
+ 可攜版
+
+
+ 協定:
+
+
+ 若要組態 PuTTY 工作階段,按一下此按鈕:
+
+
+ PuTTY 和整合的外部工具的最大等待時間:
+
+
+ 根據 GNU General Public License (GPL) 發佈
+
+
+ 秒
+
+
+ 從以下清單選取面板或按一下 [新增] 以加入新的。 按一下 [確定] 繼續。
+
+
+ 伺服器狀態:
+
+
+ 資料庫:
+
+
+ 資料庫:
+
+
+ 使用者名稱:
+
+
+ 驗證:
+
+
+ 語言
+
+
+ (自動偵測)
+
+
+ {0} 必須重新啟動使變更語言生效。
+
+
+ 從 SQL 載入連線失敗!
+
+
+ 從 XML 載入連線失敗!
+
+
+ 本機檔案
+
+
+ 本機檔案不存在!
+
+
+ 登出
+
+
+ 寫入報告檔失敗!
+
+
+ 無法儲存報告到最終位置。
+
+
+ 使用 Magic library by [Crownwood Software]
+
+
+ 關於
+
+
+ 加入連線面板
+
+
+ 發佈
+
+
+ 檢查更新
+
+
+ 組態
+
+
+ 連線
+
+
+ 連線面板
+
+
+ 連線
+
+
+ 連線和組態
+
+
+ 複製
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ 刪除...
+
+
+ 刪除連線...
+
+
+ 刪除外部工具...
+
+
+ 刪除資料夾...
+
+
+ 停止中斷
+
+
+ 捐贈
+
+
+ 複製
+
+
+ 複製連線
+
+
+ 複製資料夾
+
+
+ 複製索引標籤
+
+
+ 結束
+
+
+ 外部工具
+
+
+ 外部工具工具列
+
+
+ 檔案(&F)
+
+
+ 全螢幕
+
+
+ 全螢幕 (RDP)
+
+
+ 說明(&H)
+
+
+ mRemoteNG 說明
+
+
+ 跳至
+
+
+ 啟動外部工具
+
+
+ 新增連線檔案
+
+
+ 新增外部工具
+
+
+ 通知
+
+
+ 全部複製
+
+
+ 刪除
+
+
+ 全部刪除
+
+
+ 開啟連線檔案...
+
+
+ 選項
+
+
+ 貼上
+
+
+ 通訊埠掃描
+
+
+ 快速連線工具列
+
+
+ 重新連線
+
+
+ 重新整理螢幕 (VNC)
+
+
+ 重新命名
+
+
+ 重新命名連線
+
+
+ 重新命名資料夾
+
+
+ 重新命名索引標籤
+
+
+ 報告 Bug
+
+
+ 重設配置
+
+
+ 儲存連線檔案
+
+
+ 另儲連線檔案...
+
+
+ 快照
+
+
+ 快照管理員
+
+
+ 傳送特殊鍵 (VNC)
+
+
+ 工作階段
+
+
+ 工作階段和快照
+
+
+ 顯示說明文字(&S)
+
+
+ 顯示文字
+
+
+ 智慧大小 (RDP/VNC)
+
+
+ SSH 檔案傳輸
+
+
+ 開始聊天 (VNC)
+
+
+ 支援討論區
+
+
+ 工具(&T)
+
+
+ 傳輸檔案 (SSH)
+
+
+ 檢視(&V)
+
+
+ 只有檢視 (VNC)
+
+
+ 網站
+
+
+ 最小化到通知區域
+
+
+ 下移
+
+
+ 上移
+
+
+ 我的目前認證 (Windows 登入資訊)
+
+
+ 永不
+
+
+ 新增連線
+
+
+ 新增資料夾
+
+
+ 新增面板
+
+
+ 新增根目錄
+
+
+ 新增標題
+
+
+ 否
+
+
+ 不壓縮
+
+
+ 不結束指定 App。
+
+
+ 無
+
+
+ 無
+
+
+ 標準
+
+
+ 不智慧大小
+
+
+ 沒有可用更新
+
+
+ 您嘗試載入的連線設定檔是使用非常早期的 mRemote 版本所建立,這會造成執行階段錯誤。
+如有類似錯誤,請建立新的連線檔案!
+
+
+ 在目前選取的索引標籤右側開啟新的索引標籤
+
+
+ 開啟連接埠
+
+
+ 主題
+
+
+ 刪除(&D)
+
+
+ 新增(&N)
+
+
+ 面板名稱
+
+
+ 密碼保護
+
+
+ 請填入所有欄位
+
+
+ 無法載入 PortScan 面板!
+
+
+ (這些內容只有在選取 mRemote/mRemoteNG XML 為輸出檔案格式時才會儲存!)
+
+
+ 輸入您要連線的主機名稱或 IP。
+
+
+ 切換所有的繼承選項。
+
+
+ 選取此連線所用的驗證等級。
+
+
+ 選取針對 VNC 伺服器的驗證方式。
+
+
+ 選取是否使用點陣圖快取。
+
+
+ 選取使用的色彩品質。
+
+
+ 選取使用的壓縮值。
+
+
+ 在此輸入主機的備註或描述。
+
+
+ 選取是否顯示遠端主機的佈景主題。
+
+
+ 選取是否顯示遠端主機的底色圖案。
+
+
+ 請輸入網域。
+
+
+ 選取是否使用桌面佈景。
+
+
+ 選取是否使用平滑字型。
+
+
+ 選取使用的編碼模式。
+
+
+ 選取遠端主機的加密長度。
+
+
+ 選取啟動的外部工具。
+
+
+ 選取在中斷遠端主機連線後啟動的外部工具。
+
+
+ 選取在中斷遠端主機連線前啟動的外部工具。
+
+
+ 選擇連線到主機時顯示的圖示。
+
+
+ 輸入遠端主機的 MAC 位址,如果您希望在外部工具中使用。
+
+
+ 顯示在連線樹中的名稱。
+
+
+ 設定開啟連線的面板。
+
+
+ 請輸入密碼。
+
+
+ 輸入選取協定的接聽連接埠。
+
+
+ 選擇連線到主機時 mRemoteNG 使用的協定。
+
+
+ 選取連線時所用的 PuTTY 工作階段。
+
+
+ 指定使用者提供連線到 RD Gateway 伺服器的網域名稱。
+
+
+ 指定 Remote Desktop Gateway 伺服器的主機名稱。
+
+
+ 指定何時使用 Remote Desktop Gateway (RD Gateway) 伺服器。
+
+
+ 指定是否使用與連線相同的使用者名稱和密碼登入到 Gateway。
+
+
+ 指定使用者提供連線到 RD Gateway 伺服器的使用者名稱。
+
+
+ 選取是否在遠端主機對應本機磁碟機。
+
+
+ 選取是否重新導向按鍵組合 (例如 Alt-Tab) 到遠端主機。
+
+
+ 選取是否在遠端主機顯示本機連接埠 (例如 序列埠、並列埠)。
+
+
+ 選取是否在遠端主機顯示本機印表機。
+
+
+ 選取是否在遠端主機可以使用本機智慧卡。
+
+
+ 選取如何重新導向音訊。
+
+
+ 選取可用的轉譯引擎之一用來顯示 HTML。
+
+
+ 顯示此連線將開啟的解析度或模式。
+
+
+ 選取使用 SmartSize 模式。
+
+
+ 連線到遠端主機的 Console 工作階段。
+
+
+ 驗證使用 Credential Security Support Provider (CredSSP),如果可用。
+
+
+ 在此任意輸入您需要的資訊。
+
+
+ 輸入使用者名稱。
+
+
+ 如果您要建立只有檢視的連線到主機,選取是。
+
+
+ 請輸入使用的 Proxy 位址。
+
+
+ 輸入針對 Proxy 伺服器的驗證密碼。
+
+
+ 輸入 Proxy 伺服器接聽的連接埠。
+
+
+ 如果您要使用 Proxy 開啟 VNC 連線通道,請選取其類型。
+
+
+ 輸入針對 Proxy 伺服器的驗證使用者名稱。
+
+
+ 主機名稱/IP
+
+
+ 所有
+
+
+ 伺服器驗證
+
+
+ 驗證模式
+
+
+ 快取點陣圖
+
+
+ 色彩
+
+
+ 壓縮
+
+
+ 描述
+
+
+ 顯示佈景主題
+
+
+ 顯示底色圖案
+
+
+ 網域
+
+
+ 桌面壓縮
+
+
+ 字型平滑
+
+
+ 編碼
+
+
+ 加密長度
+
+
+ 外部工具
+
+
+ 外部工具之後
+
+
+ 外部工具之前
+
+
+ 圖示
+
+
+ MAC 位址
+
+
+ 名稱
+
+
+ 面板
+
+
+ 密碼
+
+
+ 連接埠
+
+
+ 協定
+
+
+ PuTTY 工作階段
+
+
+ 閘道網域
+
+
+ 閘道主機名稱
+
+
+ 遠端桌面閘道密碼
+
+
+ 使用閘道
+
+
+ 閘道認證
+
+
+ 閘道使用者名稱
+
+
+ 磁碟機
+
+
+ 按鍵組合
+
+
+ 連接埠
+
+
+ 印表機
+
+
+ 智慧卡
+
+
+ 音訊
+
+
+ 轉譯引擎
+
+
+ 解析度
+
+
+ 智慧大小模式
+
+
+ 使用 Console 工作階段
+
+
+ 使用 CredSSP
+
+
+ 使用者欄位
+
+
+ 使用者名稱
+
+
+ 只有檢視
+
+
+ Proxy 位址
+
+
+ Proxy 密碼
+
+
+ Proxy 連接埠
+
+
+ Proxy 類型
+
+
+ Proxy 使用者名稱
+
+
+ Protocol Event 已中斷連線。
+訊息:
+{0}
+
+
+ Protocol Event 中斷連線失敗。
+{0}
+
+
+ 匯入協定
+
+
+ Proxy 測試失敗!
+
+
+ Proxy 測試成功!
+
+
+ 連線失敗!
+
+
+ Dispose of Putty process 失敗!
+
+
+ 無法設定焦點!
+
+
+ Get Putty Sessions 失敗!
+
+
+ Putty Handle: {0}
+
+
+ Killing Putty Process 失敗!
+
+
+ 面板處理: {0}
+
+
+ Putty Resize 失敗!
+
+
+ PuTTY 儲存的工作階段
+
+
+ PuTTY 設定
+
+
+ 顯示 PuTTY 設定對話方塊失敗!
+
+
+ Putty 啟動失敗!
+
+
+ --- PuTTY Stuff ---
+
+
+ PuTTY 標題: {0}
+
+
+ 快速: {0}
+
+
+ 快速連線
+
+
+ Quick Connect Add 失敗!
+
+
+ Creating quick connect 失敗
+
+
+ 關閉連線時警告(&W)
+
+
+ 只在結束 mRemoteNG 時警告我(&X)
+
+
+ 只在關閉多重連線時警告我(&M)
+
+
+ 關閉連線時不警告我(&N)
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 色 (24 位元)
+
+
+ 256 色 (8 位元)
+
+
+ 32768 色 (15 位元)
+
+
+ 16777216 色 (32 位元)
+
+
+ 65536 色 (16 位元)
+
+
+ RDP Add Resolution 失敗!
+
+
+ RDP Add Resolutions 失敗!
+
+
+ 加入工作階段失敗
+
+
+ 關閉 RDP 連線失敗!
+
+
+ 開啟連線失敗!
+
+
+ 無法建立 RDP 控制,請檢查 mRemoteNG 需求。
+
+
+ 停用游標閃爍
+
+
+ 停用游標陰影
+
+
+ 停用完整視窗拖曳
+
+
+ 停用功能表動畫
+
+
+ 停用佈景主題
+
+
+ 停用底色圖案
+
+
+ RDP 中斷連線!
+
+
+ RDP 中斷連線失敗,正在嘗試關閉!
+
+
+ 內部錯誤碼 1。
+
+
+ 內部錯誤碼 2。
+
+
+ 內部錯誤碼 3。 狀態無效。
+
+
+ 內部錯誤碼 4。
+
+
+ 用戶端連線期間發生無法復原錯誤。
+
+
+ GetError 失敗 (FatalErrors)
+
+
+ 發生不明嚴重 RDP 錯誤。 錯誤碼 {0}。
+
+
+ 發生記憶體不足錯誤。
+
+
+ 發生不明錯誤。
+
+
+ 發生視窗內容錯誤。
+
+
+ Winsock 初始化錯誤。
+
+
+ 無法匯入 rdp 檔案!
+
+
+ 符合面板
+
+
+ RDP Focus 失敗!
+
+
+ 支援 RD Gateway。
+
+
+ 不支援 RD Gateway!
+
+
+ GetSessions 失敗!
+
+
+ 開啟 RDP 連線失敗!
+
+
+ RDP 重新連線次數:
+
+
+ RDP SetAuthenticationLevel 失敗!
+
+
+ RDP SetUseConsoleSession 失敗!
+
+
+ 設定 RDC {0} 的 Console 開關。
+
+
+ RDP SetCredentials 失敗!
+
+
+ RDP SetEventHandlers 失敗!
+
+
+ RDP SetRDGateway 失敗!
+
+
+ RDP SetPerformanceFlags 失敗!
+
+
+ RDP SetPort 失敗!
+
+
+ RDP SetProps 失敗!
+
+
+ Rdp Set Redirection 失敗!
+
+
+ Rdp Set Redirect Keys 失敗!
+
+
+ RDP SetResolution 失敗!
+
+
+ 智慧大小
+
+
+ 送到此電腦
+
+
+ 不播放
+
+
+ 留在遠端電腦
+
+
+ RDP ToggleFullscreen 失敗!
+
+
+ RDP ToggleSmartSize 失敗!
+
+
+ 啟動時重新連線到先前開啟的工作階段
+
+
+ 重新整理
+
+
+ 遠端檔案
+
+
+ 全部移除
+
+
+ 重新命名
+
+
+ Rlogin
+
+
+ 儲存
+
+
+ 全部儲存
+
+
+ 您要在載入另一個之前先儲存目前的連線檔案嗎?
+
+
+ 結束時儲存連線
+
+
+ Graphics Interchange Format 檔案 (.gif)|*.gif|Joint Photographic Experts Group 檔案 (.jpeg)|*.jpeg|Joint Photographic Experts Group 檔案 (.jpg)|*.jpg|Portable Network Graphics 檔案 (.png)|*.png
+
+
+ 螢幕
+
+
+ 快照
+
+
+ 快照
+
+
+ 搜尋
+
+
+ 傳送到...
+
+
+ Get Sessions Background 失敗
+
+
+ Kill Session Background 失敗
+
+
+ 設定建立或重新命名連線時主機名稱如顯示名稱
+
+
+ 從文字設定主要失敗
+
+
+ 無法儲存設定或部署 SysTray 圖示!
+
+
+ 在連線樹顯示描述工具提示
+
+
+ 在視窗標題顯示完整連線檔案路徑
+
+
+ 在索引標籤名稱顯示登入資訊
+
+
+ 在索引標籤名稱顯示協定
+
+
+ 按一下在連線開啟
+
+
+ 按一下切換到開啟的連線
+
+
+ 比例
+
+
+ 任意
+
+
+ 不智慧大小
+
+
+ Socks 5
+
+
+ 排序
+
+
+ 遞增 (A-Z)
+
+
+ 遞減 (Z-A)
+
+
+ 特殊鍵
+
+
+ 更多資訊請查看說明 - 入門 - SQL 組態!
+
+
+ SQL 伺服器
+
+
+ SQL 更新檢查完成且有更新可以使用! 移至重新整理連線。
+
+
+ SSH 版本 1
+
+
+ SSH 版本 2
+
+
+ SSH 背景傳輸失敗!
+
+
+ 傳輸成功!
+
+
+ SSH Transfer End (UI.Window.SSHTransfer) 失敗!
+
+
+ SSH 傳輸失敗。
+
+
+ 開始 IP
+
+
+ 開始連接埠
+
+
+ 啟動/結束
+
+
+ 狀態
+
+
+ 切換到通知面板:
+
+
+ 進階
+
+
+ 外觀
+
+
+ 索引標籤 && 面板
+
+
+ 更新
+
+
+ Telnet
+
+
+ 以下:
+
+
+ 組態面板
+
+
+ 連線面板
+
+
+ 一般
+
+
+ 組態面板背景色。
+
+
+ 組態面板中分類文字色彩。
+
+
+ 組態面板中格線色彩
+
+
+ 組態面板說明區的背景色。
+
+
+ 組態面板說明區中文字色彩。
+
+
+ 組態面板中文字色彩。
+
+
+ 連線面板背景色。
+
+
+ 連線面板中文字色彩。
+
+
+ 連線面板中樹狀行色彩。
+
+
+ 功能表背景色。
+
+
+ 功能表中文字色彩。
+
+
+ 搜尋方塊背景色。
+
+
+ 搜尋方塊中文字色彩。
+
+
+ 搜尋方塊中提示文字色彩。
+
+
+ 工具列背景色。
+
+
+ 工具列中文字色彩。
+
+
+ 主視窗背景色。
+
+
+ 組態面板背景色
+
+
+ 組態面板分類文字色彩
+
+
+ 組態面板格線色彩
+
+
+ 組態面板說明背景色
+
+
+ 組態面板說明文字色彩
+
+
+ 組態面板文字色彩
+
+
+ 連線面板背景色
+
+
+ 連線面板文字色彩
+
+
+ 連線面板樹狀行色彩
+
+
+ 功能表背景色
+
+
+ 功能表文字色彩
+
+
+ 搜尋方塊背景色
+
+
+ 搜尋方塊中文字色彩
+
+
+ 搜尋方塊中提示文字色彩
+
+
+ 工具列背景色
+
+
+ 工具列中文字色彩
+
+
+ 視窗背景色
+
+
+ 錯誤 ({0})
+
+
+ 資訊 ({0})
+
+
+ 密碼
+
+
+ 選取面板
+
+
+ 警告 ({0})
+
+
+ 傳輸
+
+
+ 傳輸失敗!
+
+
+ 嘗試整合
+
+
+ 類型
+
+
+ Ultra VNC Repeater
+
+
+ UltraVNC SingleClick 連接埠:
+
+
+ 取消勾選您不要儲存的內容!
+
+
+ 未命名的主題
+
+
+ mRemoteNG 需要更新
+
+
+ mRemoteNG 能定期連線到 mRemoteNG 網站檢查更新和產品發佈。
+
+
+ 檢查更新完整性失敗!
+
+
+ 檢查更新失敗!
+
+
+ mRemoteNG 可攜式版本目前不支援自動更新。
+
+
+ 刪除更新檔案錯誤!
+
+
+ 下載完成!
+mRemoteNG 將立即結束並開始安裝。
+
+
+ 下載完成失敗!
+
+
+ 下載更新失敗!
+
+
+ 每隔 {0} 天
+
+
+ 每天
+
+
+ 每月
+
+
+ 每星期
+
+
+ 啟動更新錯誤!
+
+
+ 使用不同的使用者名稱和密碼
+
+
+ 只使用通知面板 (不顯示訊息方塊)
+
+
+ 使用者
+
+
+ 使用相同的使用者名稱和密碼
+
+
+ 使用智慧卡
+
+
+ 使用 SQL Server 載入 && 儲存連線
+
+
+ 版本
+
+
+ VNC
+
+
+ VNC 中斷連線失敗!
+
+
+ 開啟連線失敗!
+
+
+ VNC 重新整理畫面失敗!
+
+
+ VNC SendSpecialKeys 失敗!
+
+
+ VNC Set Event Handlers 失敗!
+
+
+ VNC Set Props 失敗!
+
+
+ VNC Start Chat 失敗!
+
+
+ VNC Toggle SmartSize 失敗!
+
+
+ VNC Toggle ViewOnly 失敗!
+
+
+ 如果驗證失敗警告我
+
+
+ 警告
+
+
+ 使用 DockPanel Suite by [Weifen Luo]
+
+
+ 寫入日誌檔 (mRemoteNG.log)
+
+
+ XULrunner 路徑:
+
+
+ 是
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Messages/Messages.Collector.cs b/mRemoteV1/CS/Messages/Messages.Collector.cs
new file mode 100644
index 000000000..a5cd0bdd9
--- /dev/null
+++ b/mRemoteV1/CS/Messages/Messages.Collector.cs
@@ -0,0 +1,215 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+
+namespace mRemoteNG.Messages
+{
+ public class Collector
+ {
+#region Constructors
+ public Collector(UI.Window.ErrorsAndInfos MessageCollectorForm)
+ {
+ this._MCForm = MessageCollectorForm;
+ CreateTimer();
+ }
+#endregion
+
+#region Private Properties
+ private Timer ECTimer;
+ private UI.Window.ErrorsAndInfos _MCForm;
+#endregion
+
+#region Public Properties
+ public UI.Window.ErrorsAndInfos MCForm
+ {
+ get { return this._MCForm; }
+ set { this._MCForm = value; }
+ }
+#endregion
+
+#region Public Methods
+ public void AddMessage(Messages.MessageClass MsgClass, string MsgText, bool OnlyLog = false)
+ {
+ Messages.Message nMsg = new Messages.Message();
+ nMsg.MsgClass = MsgClass;
+ nMsg.MsgText = MsgText;
+ nMsg.MsgDate = DateTime.Now;
+
+ if (My.Settings.Default.SwitchToMCOnInformation && nMsg.MsgClass == Messages.MessageClass.InformationMsg)
+ {
+ Debug.Print("Info: " + nMsg.MsgText);
+ if (My.Settings.Default.WriteLogFile)
+ {
+ App.Runtime.Log.Info(nMsg.MsgText);
+ }
+
+ if (OnlyLog)
+ {
+ return;
+ }
+
+ if (My.Settings.Default.ShowNoMessageBoxes)
+ {
+ ECTimer.Enabled = true;
+ }
+ else
+ {
+ ShowMessageBox(nMsg);
+ }
+ }
+
+ if (My.Settings.Default.SwitchToMCOnWarning && nMsg.MsgClass == Messages.MessageClass.WarningMsg)
+ {
+ Debug.Print("Warning: " + nMsg.MsgText);
+ if (My.Settings.Default.WriteLogFile)
+ {
+ App.Runtime.Log.Warn(nMsg.MsgText);
+ }
+
+ if (OnlyLog)
+ {
+ return;
+ }
+
+ if (My.Settings.Default.ShowNoMessageBoxes)
+ {
+ ECTimer.Enabled = true;
+ }
+ else
+ {
+ ShowMessageBox(nMsg);
+ }
+ }
+
+ if (My.Settings.Default.SwitchToMCOnError && nMsg.MsgClass == Messages.MessageClass.ErrorMsg)
+ {
+ Debug.Print("Error: " + nMsg.MsgText);
+
+ // Always log error messages
+ App.Runtime.Log.Error(nMsg.MsgText);
+
+ if (OnlyLog)
+ {
+ return;
+ }
+
+ if (My.Settings.Default.ShowNoMessageBoxes)
+ {
+ ECTimer.Enabled = true;
+ }
+ else
+ {
+ ShowMessageBox(nMsg);
+ }
+ }
+
+ if (nMsg.MsgClass == MessageClass.ReportMsg)
+ {
+ Debug.Print("Report: " + nMsg.MsgText);
+
+ if (My.Settings.Default.WriteLogFile)
+ {
+ App.Runtime.Log.Info(nMsg.MsgText);
+ }
+
+ return;
+ }
+
+ ListViewItem lvItem = new ListViewItem();
+ lvItem.ImageIndex = System.Convert.ToInt32(nMsg.MsgClass);
+ lvItem.Text = nMsg.MsgText.Replace(Constants.vbNewLine, " ");
+ lvItem.Tag = nMsg;
+
+ AddToList(lvItem);
+ }
+
+ public void AddExceptionMessage(string message, Exception ex, MessageClass msgClass = MessageClass.ErrorMsg, bool logOnly = false)
+ {
+ AddMessage(msgClass, message + Constants.vbNewLine + Tools.Misc.GetExceptionMessageRecursive(ex), logOnly);
+ }
+#endregion
+
+#region Private Methods
+ private void CreateTimer()
+ {
+ ECTimer = new Timer();
+ ECTimer.Enabled = false;
+ ECTimer.Interval = 300;
+ ECTimer.Tick += SwitchTimerTick;
+ }
+
+ private void SwitchTimerTick(object sender, System.EventArgs e)
+ {
+ this.SwitchToMessage();
+ this.ECTimer.Enabled = false;
+ }
+
+ private void SwitchToMessage()
+ {
+ this._MCForm.PreviousActiveForm = frmMain.Default.pnlDock.ActiveContent;
+ this.ShowMCForm();
+ this._MCForm.lvErrorCollector.Focus();
+ this._MCForm.lvErrorCollector.SelectedItems.Clear();
+ this._MCForm.lvErrorCollector.Items[0].Selected = true;
+ this._MCForm.lvErrorCollector.FocusedItem = this._MCForm.lvErrorCollector.Items[0];
+ }
+
+ private static void ShowMessageBox(Messages.Message Msg)
+ {
+ switch (Msg.MsgClass)
+ {
+ case Messages.MessageClass.InformationMsg:
+ MessageBox.Show(Msg.MsgText, string.Format(My.Language.strTitleInformation, Msg.MsgDate), MessageBoxButtons.OK, MessageBoxIcon.Information);
+ break;
+ case Messages.MessageClass.WarningMsg:
+ MessageBox.Show(Msg.MsgText, string.Format(My.Language.strTitleWarning, Msg.MsgDate), MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ break;
+ case Messages.MessageClass.ErrorMsg:
+ MessageBox.Show(Msg.MsgText, string.Format(My.Language.strTitleError, Msg.MsgDate), MessageBoxButtons.OK, MessageBoxIcon.Error);
+ break;
+ }
+ }
+#endregion
+
+#region Delegates
+ private delegate void ShowMCFormCB();
+ private void ShowMCForm()
+ {
+ if (frmMain.Default.pnlDock.InvokeRequired)
+ {
+ ShowMCFormCB d = new ShowMCFormCB(ShowMCForm);
+ frmMain.Default.pnlDock.Invoke(d);
+ }
+ else
+ {
+ this._MCForm.Show(frmMain.Default.pnlDock);
+ }
+ }
+
+ delegate void AddToListCB(ListViewItem lvItem);
+ private void AddToList(ListViewItem lvItem)
+ {
+ if (this._MCForm.lvErrorCollector.InvokeRequired)
+ {
+ AddToListCB d = new AddToListCB(AddToList);
+ this._MCForm.lvErrorCollector.Invoke(d, new object[] { lvItem });
+ }
+ else
+ {
+ this._MCForm.lvErrorCollector.Items.Insert(0, lvItem);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Messages/Messages.Message.cs b/mRemoteV1/CS/Messages/Messages.Message.cs
new file mode 100644
index 000000000..85d7be505
--- /dev/null
+++ b/mRemoteV1/CS/Messages/Messages.Message.cs
@@ -0,0 +1,66 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Messages
+{
+ public enum MessageClass
+ {
+ InformationMsg = 0,
+ WarningMsg = 1,
+ ErrorMsg = 2,
+ ReportMsg = 3
+ }
+
+ public class Message
+ {
+ private MessageClass _MsgClass;
+public MessageClass MsgClass
+ {
+ get
+ {
+ return _MsgClass;
+ }
+ set
+ {
+ _MsgClass = value;
+ }
+ }
+
+ private string _MsgText;
+public string MsgText
+ {
+ get
+ {
+ return _MsgText;
+ }
+ set
+ {
+ _MsgText = value;
+ }
+ }
+
+ private DateTime _MsgDate;
+public DateTime MsgDate
+ {
+ get
+ {
+ return _MsgDate;
+ }
+ set
+ {
+ _MsgDate = value;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/My Project/Application.myapp b/mRemoteV1/CS/My Project/Application.myapp
new file mode 100644
index 000000000..739ea6fe4
--- /dev/null
+++ b/mRemoteV1/CS/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ true
+ frmMain
+ false
+ 0
+ true
+ 0
+ true
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/My Project/Resources.resx b/mRemoteV1/CS/My Project/Resources.resx
new file mode 100644
index 000000000..2e072570a
--- /dev/null
+++ b/mRemoteV1/CS/My Project/Resources.resx
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\Images\Error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ActiveDirectory.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ErrorSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Fullscreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_Off.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_On.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\InformationSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Rename.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Root.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Root_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Warning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Info_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\mRemote_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\PuttyConfig.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\mRemote.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Play_Quick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Play_Quick_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_Load.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ErrorsAndInfos.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Sort_AZ.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Sort_ZA.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\RDP.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Config.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Config_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Donate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Inheritance.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Keyboard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Options.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Options_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panels.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panel_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panel_Close.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Quit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Save_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Screenshot_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\View.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\WarningSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Website.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Appearance_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Arrow_Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Arrow_Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Bug.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Connections_SaveAs_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Connection_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Connection_Duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\ExtApp_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Start.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\File.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Folder_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Help_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\PortScan.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\PortScan_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Properties_Default.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Sessions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Sessions_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Session_LogOff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\SmartSize.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\SSHTransfer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\SSHTransfer_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\StartupExit_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Tab_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Tools.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Update_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Console.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Inheritance_Default.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Chat.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Panels_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\JumpTo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Monitor_GoTo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\UVNC_SC.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\UVNC_SC_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Bad_Symbol.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ComponentsCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\ComponentsCheck_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Good_Symbol.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\ActiveDirectory_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\News_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\News.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\PuttySessions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\key_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\application_side_tree.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\arrow_out.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\cog_error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\user_comment.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\monitor_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\monitor_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\images_famfamfam\cog.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\images_famfamfam\page_copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\icons\rdcman_icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ ..\resources\images\puttycm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/My Project/Settings.settings b/mRemoteV1/CS/My Project/Settings.settings
new file mode 100644
index 000000000..4a04e1cfa
--- /dev/null
+++ b/mRemoteV1/CS/My Project/Settings.settings
@@ -0,0 +1,576 @@
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+
+
+
+
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ release
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/My Project/app.manifest b/mRemoteV1/CS/My Project/app.manifest
new file mode 100644
index 000000000..4c249cd2c
--- /dev/null
+++ b/mRemoteV1/CS/My Project/app.manifest
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mRemoteV1/CS/Notes/Help.txt b/mRemoteV1/CS/Notes/Help.txt
new file mode 100644
index 000000000..eb03f0dd9
--- /dev/null
+++ b/mRemoteV1/CS/Notes/Help.txt
@@ -0,0 +1,190 @@
+[Introduction]
+Introduction:
+mRemote is a multi-protocol remote connections manager.
+As of Version 1.00 it supports the RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S protocols.
+The main goal is to minimize window clutter and to provide a easy gui for managing all your remote connections.
+
+Features:
+Free and Open Source, released under the GPL
+Panels and tabs allow to group certain connections together, dock them to any side of the window or completely undock them and move them to another screen for example
+Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)
+Easy to organize and maintain list of connections
+Inheritance makes it possible to store most properties on folder basis and let the underlying connections inherit this info
+Support for importing connections from Active Directory
+Allows creating nested containers (folders) to categorize connections
+"Quick Connect" feature to quickly open a connection without creating an entry
+"Quick Search" feature to quickly find a connection while typing
+Support for SCP/SFTP (SSH) file transfers
+Assign icons to connections to easily identify purpose
+Screenshot manager allows to collect multiple screenshots and save them all together or copy them to the clipboard
+View remote session info and log off sessions (RDP)
+Portable (with the use of command line switches)
+"Auto-Update" feature
+Show description tooltips when hoovering over connections
+System tray icon with connection menu
+Fullscreen (Kiosk) mode
+Assign global credentials to use when no information is provided on connection basis
+Host Up/Down (Ping) feature shows if the selected host answers to a ping
+
+License:
+The application is released under the GPL (V2)
+Binary and source code packages are available for download.
+
+[[Getting Started]]
+[Prerequisites]
+WinXP; Vista -> x86
+Win7 -> x86,x64
+Terminal Services Client 6.0
+Citrix Client for ICA (Registered wfica.ocx)
+
+[Installation]
+Setup Package
+Bin Package
+Source Package
+
+[Configuration]
+Introduction
+Connections & Config Panel
+Options
+
+[Command Line Switches]
+/cons (/c)
+
+/resetpos (/rp)
+
+[[User Interface]]
+[Main Menu]
+File
+ New Connections
+ Open Connections
+ --
+ Save Connections
+ Save Connections As
+ --
+ Exit
+View
+ Add Connection Panel
+ Connection Panels
+ --
+ Connections
+ Config
+ Errors and Infos
+ Sessions
+ Screenshot Manager
+ --
+ Fullscreen
+Tools
+ Update
+ SSH File Transfer
+ --
+ Options
+Quick Connect
+ Textfield
+ Button
+Info
+ Help
+ Website
+ --
+ About
+
+[Connections]
+Toolbar
+ Expand all Folders
+ Collapse all Folders
+Tree
+ Connections
+ Folders
+ Drag and Drop
+Context Menu
+ Add Connection
+ Add Folder
+ --
+ Connect
+ Connect with options
+ Connect to console session
+ Connect in fullscreen
+ Disconnect
+ --
+ Tools
+ Transfer File (SSH)
+ Import/Export
+ Export mRemote XML
+ Import mRemote XML
+ --
+ Import from Active Directory
+ Sort
+ Ascending (A-Z)
+ Descending (Z-A)
+ --
+ Rename
+ Delete
+ --
+ Move up
+ Move down
+Search
+ How
+ ESC Shortcut
+
+[Config]
+Toolbar
+ Categorized
+ Alphabethical
+ --
+ Properties
+ Inheritance
+ --
+ Icon
+ Status
+Properties
+Inheritance
+Categories
+ Display
+ Name
+ Description
+ Icon
+ Panel
+ Connection
+ Hostname
+ Username
+ Password
+ Domain
+ Protocol
+ Protocol
+ Port
+ Use console session
+ Appearance
+ Resolution
+ Colors
+ Cache Bitmaps
+ Display Wallpaper
+ Display Themes
+ Redirect
+ Key combinations
+ Disk Drives
+ Printers
+ Ports
+ Smart Cards
+ Sound
+
+[Errors and Infos]
+
+[Save As / Export]
+
+[Sessions]
+
+[Screenshot Manager]
+
+[Connection]
+
+[Options]
+
+[Update]
+
+[SSH File Transfer]
+
+[Quick Connect]
+
+[Import from Active Directory]
+
+[Quick Reference]
+Screenshot with descriptions
\ No newline at end of file
diff --git a/mRemoteV1/CS/Notes/ICA.txt b/mRemoteV1/CS/Notes/ICA.txt
new file mode 100644
index 000000000..b7bad31de
--- /dev/null
+++ b/mRemoteV1/CS/Notes/ICA.txt
@@ -0,0 +1,42 @@
+("InputEncoding", "ISO8859_1")
+("TcpBrowserAddress", "CitrixServer1")
+("TcpBrowserAddress2", "CitrixServer2")
+("Version", "2")
+("TransportReconnectEnabled", "On")
+("RemoveICAFile", "Yes")
+("ProxyType", "None")
+("ClientName", "PC1513")
+("ProxyTimeout", "30000")
+("Application", "SSODesktop")
+("DesiredColor", "8")
+("Launcher", "WI")
+("TransportDriver", "TCP/IP")
+("WinStationDriver", "ICA 3.0")
+("ClientAudio", "Off")
+("Compress", "Off")
+("DesiredHRES", "4294967295")
+("DesiredVRES", "4294967295")
+("ScreenPercent", "0")
+("UseDefaultWindowSize", "Off")
+("DesiredWinType", "0")
+("TWIMode", "Off")
+("Username", "ISFEAF")
+("Title", "[" & "ISFEAF" & "]")
+("ClearPassword", "test")
+("Domain", "MH")
+("AutologonAllowed", "ON")
+("CacheICAFile", "FALSE")
+("Launch", "TRUE")
+("TWIDisableSessionSharing", "TRUE")
+
+DesiredColor
+ 1 = 16 Colors
+ 2 = 256 Colors
+ 4 = 16Bit
+ 8 = 32Bit
+
+ Encryption
+ EncRC5-128 = 128-bit encryption
+ EncRC5-0 = 128-bit encryption for logon only
+ EncRC5-56 = 56-bit encryption
+ EncRC5-40 = 40-bit encryption
diff --git a/mRemoteV1/CS/Notes/Misc.txt b/mRemoteV1/CS/Notes/Misc.txt
new file mode 100644
index 000000000..fb25d9a60
--- /dev/null
+++ b/mRemoteV1/CS/Notes/Misc.txt
@@ -0,0 +1,104 @@
+How to build the portable package:
+ In Config.Settings.Providers:
+ change Inherits LocalFileSettingsProvider
+ to Inherits PortableSettingsProvider
+ In App.Info.Settings:
+ change SettingsPath
+ from GetFolderPath(SpecialFolder.ApplicationData) & "\" & My.Application.Info.CompanyName.Replace(" ", "_") & "\" & My.Application.Info.ProductName
+ to My.Application.Info.DirectoryPath
+
+How to add a new language:
+ Create a new Language.XX.resx file in the My Project folder
+
+Localize PropertyGrid:
+ http://www.morganskinner.com/Articles/LocalizedPropertyGrid/
+
+ToDo:
+ Attribute for roaming settings: "Global.System.Configuration.SettingsManageabilityAttribute(Configuration.SettingsManageability.Roaming), _"
+
+PuTTY Problem:
+ http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=96485
+ http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1652917&SiteID=1
+ http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1654341&SiteID=1
+
+How to add a new protocol:
+ Create a new class in the namespace Connection.Protocol
+ This class must inherit from Connection.Protocol.Base
+ It should implement the following methods:
+ Public Function Connect() as Boolean
+ Public Sub Focus()
+ Public Sub Resize()
+ Public Sub Disconnect()
+ Public Sub Close()
+ The following events can be implemented:
+ Public Event Connecting(ByVal sender As Object)
+ Public Event Connected(ByVal sender As Object)
+ Public Event Disconnected(ByVal sender As Object, ByVal DisconnectedMessage As String)
+ Public Event ErrorOccured(ByVal sender As Object, ByVal ErrorMessage As String)
+ Public Event Closing(ByVal sender As Object)
+ Public Event Closed(ByVal sender As Object)
+ Then the new protocol must be added in the following places:
+ Connection.Protocol.Protocols
+ App.Runtime.OpenConnectionFinal
+ Connection.Info.SetDefaultPort
+ UI.Window.Config.ShowHideGridItems
+
+Remote Desktop ActiveX Control Reference
+ http://msdn.microsoft.com/en-us/library/aa383022%28VS.85%29.aspx
+
+RDP 6.0 NLA:
+ AdvancedSettings5.AuthenticationLevel
+ 0 = No authentication of the server.
+ Always connect, even if authentication fails
+ 1 = Server authentication is required and must complete successfully for the connection to proceed.
+ Do not connect if authentication fails
+ 2 = Attempt authentication of the server. If authentication fails, the user will be prompted with the option to cancel the connection or to proceed without server authentication.
+ Warn me if authentication fails
+
+RDP 6.0 TS Gateway:
+ TransportSettings
+ .GatewayIsSupported
+ Boolean
+ .GatewayProfileUsageMode
+ 0 = Use the default profile mode, as specified by the administrator
+ 1 = Use explicit settings, as specified by the user
+ .GatewayUsageMethod
+ 0 = Do not use a TS Gateway server (Bypass TS Gateway for local addresses NOT set)
+ 1 = Always use a TS Gateway server (Bypass TS Gateway for local addresses NOT set)
+ 2 = Use a TS Gateway server if a direct connection cannot be made (Detect/Bypass TS Gateway for local address IS set)
+ 3 = Use the default TS Gateway server settings
+ 4 = Do not use a TS Gateway server (Bypass TS Gateway for local addresses IS set)
+ .GatewayUserSelectetdCredsSource
+ 0 = Use a password
+ 1 = Use a smart card
+ 4 = Use any authentication method
+ .GatewayHostname
+ Hostname of TS Gateway server
+
+
+
+VNC Props:
+ Compression (Enum 1,2,3,4,5,6,7,8,9) -> JPEGCompression (Bool), JPEGCompressionLevel (Integer 0-9)
+ Encoding (Enum RAW, RRE, Corre, Hextile, ZLib, Tight, ZLibHex, ZRle) -> Encoding (enum)
+ Authentication Mode (Enum VNC, Windows) -> LoginType (Enum)
+ Proxy Type (Enum None, HTTP, Socks5, UltraVNC Repeater) -> ProxyType (Enum)
+ Proxy IP (string) -> ProxyIP (string)
+ Proxy Port (long) -> ProxyPort (long)
+ Proxy Username (string) -> ProxyUser (string)
+ Proxy Password (string) -> ProxyPassword (string)
+ Colors (Enum Normal, 8-bit) -> RestrictPixel (bool)
+ Smart Size Mode (Enum Normal, Free, Aspect) -> StretchMode (Enum)
+ View Only (bool) -> ViewOnly (bool)
+
+
+
+TreeNode
+ Tag (Connection/Container.Info)
+ Protocol
+
+Connection Container (Tab, Panel, etc)
+ Tag (Connection.InterfaceControl)
+ Info
+ Connection.Protocol.Protocols
+ Protocol
+ Connection.Protocol.RDP/VNC/...
\ No newline at end of file
diff --git a/mRemoteV1/CS/Notes/MultiLang.txt b/mRemoteV1/CS/Notes/MultiLang.txt
new file mode 100644
index 000000000..5b73f7b13
--- /dev/null
+++ b/mRemoteV1/CS/Notes/MultiLang.txt
@@ -0,0 +1 @@
+all UI.Window.* -> ApplyLanguage
\ No newline at end of file
diff --git a/mRemoteV1/CS/Notes/MultiUserCons.txt b/mRemoteV1/CS/Notes/MultiUserCons.txt
new file mode 100644
index 000000000..eac4b6ea3
--- /dev/null
+++ b/mRemoteV1/CS/Notes/MultiUserCons.txt
@@ -0,0 +1,5 @@
+Task:
+Many Users access the same connections on an sql server.
+Everyone should get everyones changes but not loose the ones he made himself.
+
+How to do it:
diff --git a/mRemoteV1/CS/Notes/PropertyList.csv b/mRemoteV1/CS/Notes/PropertyList.csv
new file mode 100644
index 000000000..10aee2d89
--- /dev/null
+++ b/mRemoteV1/CS/Notes/PropertyList.csv
@@ -0,0 +1 @@
+Description;Icon;Panel;Username;DomainName;Password;Hostname;Protocol;PuttySession;Port;ConnectToConsole;ICAEncryptionStrength;Colors;Resolution;DisplayWallpaper;DisplayThemes;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnlyInheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritUseConsoleSession;InheritICAEncryptionStrength;InheritUsername;InheritPreExtApp;InheritPostExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;
diff --git a/mRemoteV1/CS/Notes/PropertyList.txt b/mRemoteV1/CS/Notes/PropertyList.txt
new file mode 100644
index 000000000..12bb12b93
--- /dev/null
+++ b/mRemoteV1/CS/Notes/PropertyList.txt
@@ -0,0 +1,72 @@
+Description
+Icon
+Panel
+Username
+DomainName
+Password
+Hostname
+Protocol
+PuttySession
+Port As Integer
+ConnectToConsole
+ICAEncryptionStrength
+Colors
+Resolution
+DisplayWallpaper
+DisplayThemes
+CacheBitmaps
+RedirectDiskDrives
+RedirectPorts
+RedirectPrinters
+RedirectSmartCards
+RedirectSound
+RedirectKeys
+PreExtApp
+PostExtApp
+VNCCompression
+VNCEncoding
+VNCAuthMode
+VNCProxyType
+VNCProxyIP
+VNCProxyPort
+VNCProxyUsername
+VNCProxyPassword
+VNCColors
+VNCSmartSizeMode
+VNCViewOnly
+
+inheritCacheBitmaps
+inheritColors
+inheritDescription
+inheritDisplayThemes
+inheritDisplayWallpaper
+inheritDomain
+inheritIcon
+inheritPanel
+inheritPassword
+inheritPort
+inheritProtocol
+inheritPuttySession
+inheritRedirectDiskDrives
+inheritRedirectKeys
+inheritRedirectPorts
+inheritRedirectPrinters
+inheritRedirectSmartCards
+inheritRedirectSound
+inheritResolution
+inheritUseConsoleSession
+inheritICAEncryptionStrength
+inheritUsername
+inheritPreExtApp
+inheritPostExtApp
+inheritVNCCompression
+inheritVNCEncoding
+inheritVNCAuthMode
+inheritVNCProxyType
+inheritVNCProxyIP
+inheritVNCProxyPort
+inheritVNCProxyUsername
+inheritVNCProxyPassword
+inheritVNCColors
+inheritVNCSmartSizeMode
+inheritVNCViewOnly
\ No newline at end of file
diff --git a/mRemoteV1/CS/Properties/Application.Designer.cs b/mRemoteV1/CS/Properties/Application.Designer.cs
new file mode 100644
index 000000000..16487d83f
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Application.Designer.cs
@@ -0,0 +1,63 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.239
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+
+namespace mRemoteNG
+{
+ namespace My
+ {
+
+ //NOTE: This file is auto-generated; do not modify it directly. To make changes,
+ // or if you encounter build errors in this file, go to the Project Designer
+ // (go to Project Properties or double-click the My Project node in
+ // Solution Explorer), and make changes on the Application tab.
+ //
+ public partial class MyApplication : global::Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
+ {
+ [STAThread]
+ static void Main()
+ {
+ (new MyApplication()).Run(new string[] {});
+ }
+
+ [global::System.Diagnostics.DebuggerStepThrough()]public MyApplication() : base(global::Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
+ {
+
+
+
+ this.IsSingleInstance = false;
+ this.EnableVisualStyles = true;
+ this.SaveMySettingsOnExit = true;
+ this.ShutdownStyle = global::Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses;
+ }
+
+ [global::System.Diagnostics.DebuggerStepThroughAttribute()]protected override void OnCreateMainForm()
+ {
+ this.MainForm = global::mRemoteNG.frmMain.Default;
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Properties/Application.myapp b/mRemoteV1/CS/Properties/Application.myapp
new file mode 100644
index 000000000..739ea6fe4
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ true
+ frmMain
+ false
+ 0
+ true
+ 0
+ true
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Properties/AssemblyInfo.cs b/mRemoteV1/CS/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..b97d40b0c
--- /dev/null
+++ b/mRemoteV1/CS/Properties/AssemblyInfo.cs
@@ -0,0 +1,52 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Resources;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+
+// Review the values of the assembly attributes
+
+[assembly:AssemblyTitle("mRemoteNG")]
+[assembly:AssemblyDescription("")]
+[assembly:AssemblyCompany("")]
+[assembly:AssemblyProduct("mRemoteNG")]
+[assembly:AssemblyCopyright("Copyright © 2007-2009 Felix Deimel, 2010-2013 Riley McArdle")]
+[assembly:AssemblyTrademark("")]
+
+[assembly:ComVisible(false)]
+
+//The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly:Guid("A99669B2-FAEB-11DE-995A-826C56D89593")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+//
+
+[assembly:AssemblyVersion("1.73.*")]
+
+[assembly:NeutralResourcesLanguageAttribute("en")]
+
diff --git a/mRemoteV1/CS/Properties/Resources.Designer.cs b/mRemoteV1/CS/Properties/Resources.Designer.cs
new file mode 100644
index 000000000..8b570c6df
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Resources.Designer.cs
@@ -0,0 +1,1273 @@
+//------------------------------------------------------------------------------
+//
+// 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.
+//
+//------------------------------------------------------------------------------
+
+namespace My.Resources {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+
+ public class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("My.Resources.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap _Error {
+ get {
+ object obj = ResourceManager.GetObject("_Error", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ActiveDirectory {
+ get {
+ object obj = ResourceManager.GetObject("ActiveDirectory", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon ActiveDirectory_Icon {
+ get {
+ object obj = ResourceManager.GetObject("ActiveDirectory_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Appearance_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Appearance_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap application_side_tree {
+ get {
+ object obj = ResourceManager.GetObject("application_side_tree", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Arrow_Down {
+ get {
+ object obj = ResourceManager.GetObject("Arrow_Down", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap arrow_out {
+ get {
+ object obj = ResourceManager.GetObject("arrow_out", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Arrow_Up {
+ get {
+ object obj = ResourceManager.GetObject("Arrow_Up", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Bad_Symbol {
+ get {
+ object obj = ResourceManager.GetObject("Bad_Symbol", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Bug {
+ get {
+ object obj = ResourceManager.GetObject("Bug", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Chat {
+ get {
+ object obj = ResourceManager.GetObject("Chat", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap cog {
+ get {
+ object obj = ResourceManager.GetObject("cog", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap cog_error {
+ get {
+ object obj = ResourceManager.GetObject("cog_error", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Collapse {
+ get {
+ object obj = ResourceManager.GetObject("Collapse", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ComponentsCheck {
+ get {
+ object obj = ResourceManager.GetObject("ComponentsCheck", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon ComponentsCheck_Icon {
+ get {
+ object obj = ResourceManager.GetObject("ComponentsCheck_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Config {
+ get {
+ object obj = ResourceManager.GetObject("Config", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Config_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Config_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connection_Add {
+ get {
+ object obj = ResourceManager.GetObject("Connection_Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connection_Duplicate {
+ get {
+ object obj = ResourceManager.GetObject("Connection_Duplicate", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connections_Load {
+ get {
+ object obj = ResourceManager.GetObject("Connections_Load", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connections_New {
+ get {
+ object obj = ResourceManager.GetObject("Connections_New", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connections_Save {
+ get {
+ object obj = ResourceManager.GetObject("Connections_Save", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Connections_SaveAs {
+ get {
+ object obj = ResourceManager.GetObject("Connections_SaveAs", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Connections_SaveAs_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Connections_SaveAs_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Console {
+ get {
+ object obj = ResourceManager.GetObject("Console", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Copy {
+ get {
+ object obj = ResourceManager.GetObject("Copy", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Delete {
+ get {
+ object obj = ResourceManager.GetObject("Delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Donate {
+ get {
+ object obj = ResourceManager.GetObject("Donate", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ErrorsAndInfos {
+ get {
+ object obj = ResourceManager.GetObject("ErrorsAndInfos", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ErrorSmall {
+ get {
+ object obj = ResourceManager.GetObject("ErrorSmall", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Expand {
+ get {
+ object obj = ResourceManager.GetObject("Expand", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ExtApp {
+ get {
+ object obj = ResourceManager.GetObject("ExtApp", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ExtApp_Add {
+ get {
+ object obj = ResourceManager.GetObject("ExtApp_Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ExtApp_Delete {
+ get {
+ object obj = ResourceManager.GetObject("ExtApp_Delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon ExtApp_Icon {
+ get {
+ object obj = ResourceManager.GetObject("ExtApp_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap ExtApp_Start {
+ get {
+ object obj = ResourceManager.GetObject("ExtApp_Start", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap File {
+ get {
+ object obj = ResourceManager.GetObject("File", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Folder {
+ get {
+ object obj = ResourceManager.GetObject("Folder", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Folder_Add {
+ get {
+ object obj = ResourceManager.GetObject("Folder_Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Fullscreen {
+ get {
+ object obj = ResourceManager.GetObject("Fullscreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Good_Symbol {
+ get {
+ object obj = ResourceManager.GetObject("Good_Symbol", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Help {
+ get {
+ object obj = ResourceManager.GetObject("Help", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Help_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Help_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap HostStatus_Check {
+ get {
+ object obj = ResourceManager.GetObject("HostStatus_Check", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap HostStatus_Off {
+ get {
+ object obj = ResourceManager.GetObject("HostStatus_Off", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap HostStatus_On {
+ get {
+ object obj = ResourceManager.GetObject("HostStatus_On", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Info {
+ get {
+ object obj = ResourceManager.GetObject("Info", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Info_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Info_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Information {
+ get {
+ object obj = ResourceManager.GetObject("Information", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap InformationSmall {
+ get {
+ object obj = ResourceManager.GetObject("InformationSmall", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Inheritance {
+ get {
+ object obj = ResourceManager.GetObject("Inheritance", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Inheritance_Default {
+ get {
+ object obj = ResourceManager.GetObject("Inheritance_Default", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap JumpTo {
+ get {
+ object obj = ResourceManager.GetObject("JumpTo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap key_delete {
+ get {
+ object obj = ResourceManager.GetObject("key_delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Keyboard {
+ get {
+ object obj = ResourceManager.GetObject("Keyboard", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Lock {
+ get {
+ object obj = ResourceManager.GetObject("Lock", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Logo {
+ get {
+ object obj = ResourceManager.GetObject("Logo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Monitor {
+ get {
+ object obj = ResourceManager.GetObject("Monitor", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap monitor_delete {
+ get {
+ object obj = ResourceManager.GetObject("monitor_delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap monitor_go {
+ get {
+ object obj = ResourceManager.GetObject("monitor_go", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Monitor_GoTo {
+ get {
+ object obj = ResourceManager.GetObject("Monitor_GoTo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap mRemote {
+ get {
+ object obj = ResourceManager.GetObject("mRemote", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon mRemote_Icon {
+ get {
+ object obj = ResourceManager.GetObject("mRemote_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap News {
+ get {
+ object obj = ResourceManager.GetObject("News", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon News_Icon {
+ get {
+ object obj = ResourceManager.GetObject("News_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Options {
+ get {
+ object obj = ResourceManager.GetObject("Options", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Options_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Options_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Page {
+ get {
+ object obj = ResourceManager.GetObject("Page", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap page_copy {
+ get {
+ object obj = ResourceManager.GetObject("page_copy", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Panel_Add {
+ get {
+ object obj = ResourceManager.GetObject("Panel_Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Panel_Close {
+ get {
+ object obj = ResourceManager.GetObject("Panel_Close", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Panels {
+ get {
+ object obj = ResourceManager.GetObject("Panels", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Panels_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Panels_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Pause {
+ get {
+ object obj = ResourceManager.GetObject("Pause", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Play {
+ get {
+ object obj = ResourceManager.GetObject("Play", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Play_Quick {
+ get {
+ object obj = ResourceManager.GetObject("Play_Quick", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Play_Quick_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Play_Quick_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap PortScan {
+ get {
+ object obj = ResourceManager.GetObject("PortScan", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon PortScan_Icon {
+ get {
+ object obj = ResourceManager.GetObject("PortScan_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Properties {
+ get {
+ object obj = ResourceManager.GetObject("Properties", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Properties_Default {
+ get {
+ object obj = ResourceManager.GetObject("Properties_Default", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap puttycm {
+ get {
+ object obj = ResourceManager.GetObject("puttycm", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap PuttyConfig {
+ get {
+ object obj = ResourceManager.GetObject("PuttyConfig", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap PuttySessions {
+ get {
+ object obj = ResourceManager.GetObject("PuttySessions", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Quit {
+ get {
+ object obj = ResourceManager.GetObject("Quit", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon RDCMan_Icon {
+ get {
+ object obj = ResourceManager.GetObject("RDCMan_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap RDP {
+ get {
+ object obj = ResourceManager.GetObject("RDP", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Refresh {
+ get {
+ object obj = ResourceManager.GetObject("Refresh", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Rename {
+ get {
+ object obj = ResourceManager.GetObject("Rename", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Root {
+ get {
+ object obj = ResourceManager.GetObject("Root", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Root_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Root_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Save {
+ get {
+ object obj = ResourceManager.GetObject("Save", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Save_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Save_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Screenshot {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Screenshot_Add {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot_Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Screenshot_Copy {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot_Copy", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Screenshot_Delete {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot_Delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Screenshot_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Screenshot_Save {
+ get {
+ object obj = ResourceManager.GetObject("Screenshot_Save", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Search {
+ get {
+ object obj = ResourceManager.GetObject("Search", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Session_LogOff {
+ get {
+ object obj = ResourceManager.GetObject("Session_LogOff", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Sessions {
+ get {
+ object obj = ResourceManager.GetObject("Sessions", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Sessions_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Sessions_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap SmartSize {
+ get {
+ object obj = ResourceManager.GetObject("SmartSize", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Sort_AZ {
+ get {
+ object obj = ResourceManager.GetObject("Sort_AZ", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Sort_ZA {
+ get {
+ object obj = ResourceManager.GetObject("Sort_ZA", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap SSHTransfer {
+ get {
+ object obj = ResourceManager.GetObject("SSHTransfer", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon SSHTransfer_Icon {
+ get {
+ object obj = ResourceManager.GetObject("SSHTransfer_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon StartupExit_Icon {
+ get {
+ object obj = ResourceManager.GetObject("StartupExit_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Tab_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Tab_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Tools {
+ get {
+ object obj = ResourceManager.GetObject("Tools", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Update {
+ get {
+ object obj = ResourceManager.GetObject("Update", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon Update_Icon {
+ get {
+ object obj = ResourceManager.GetObject("Update_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap user_comment {
+ get {
+ object obj = ResourceManager.GetObject("user_comment", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap UVNC_SC {
+ get {
+ object obj = ResourceManager.GetObject("UVNC_SC", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon UVNC_SC_Icon {
+ get {
+ object obj = ResourceManager.GetObject("UVNC_SC_Icon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap View {
+ get {
+ object obj = ResourceManager.GetObject("View", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Warning {
+ get {
+ object obj = ResourceManager.GetObject("Warning", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap WarningSmall {
+ get {
+ object obj = ResourceManager.GetObject("WarningSmall", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap Website {
+ get {
+ object obj = ResourceManager.GetObject("Website", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Properties/Resources.resx b/mRemoteV1/CS/Properties/Resources.resx
new file mode 100644
index 000000000..2e072570a
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Resources.resx
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\Images\Error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ActiveDirectory.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ErrorSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Fullscreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_Off.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\HostStatus_On.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\InformationSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Rename.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Root.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Root_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Warning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Info_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\mRemote_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\PuttyConfig.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\mRemote.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Play_Quick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Play_Quick_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_Load.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Connections_SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ErrorsAndInfos.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Sort_AZ.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Sort_ZA.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\RDP.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Config.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Config_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Donate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Inheritance.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Keyboard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Options.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Options_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panels.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panel_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Panel_Close.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Quit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Save_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Screenshot_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Screenshot_Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\View.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\WarningSmall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Website.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Appearance_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Arrow_Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Arrow_Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Bug.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\Connections_SaveAs_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Connection_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Connection_Duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\ExtApp_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\ExtApp_Start.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\File.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Folder_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Help_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\PortScan.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\PortScan_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Properties_Default.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Sessions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Sessions_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Session_LogOff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\SmartSize.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\SSHTransfer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\SSHTransfer_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\StartupExit_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Tab_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Tools.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Update_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Console.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Inheritance_Default.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Chat.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\Panels_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\JumpTo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\Monitor_GoTo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\UVNC_SC.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\UVNC_SC_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Bad_Symbol.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\ComponentsCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\ComponentsCheck_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\Good_Symbol.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons\ActiveDirectory_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Icons_FamFamFam\News_Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\News.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images\PuttySessions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\key_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\application_side_tree.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\arrow_out.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\cog_error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\user_comment.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\monitor_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Images_FamFamFam\monitor_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\images_famfamfam\cog.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\images_famfamfam\page_copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\resources\icons\rdcman_icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ ..\resources\images\puttycm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Properties/Settings.Designer.cs b/mRemoteV1/CS/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..cd5dfa60b
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Settings.Designer.cs
@@ -0,0 +1,2936 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Threading;
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.1008
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+
+namespace mRemoteNG
+{
+ namespace My
+ {
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute(),
+ global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0"),
+ global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = (My.Settings) (global::System.Configuration.ApplicationSettingsBase.Synchronized(new My.Settings()));
+
+#region My.Settings Auto-Save Functionality
+#if _MyType
+ private static bool addedHandler;
+
+ private static object addedHandlerLockObject = new object();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute(), global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]private static void AutoSaveSettings(global::System.Object sender, global::System.EventArgs e)
+ {
+ if ((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).SaveMySettingsOnExit)
+ {
+ My.Settings.Default.Save();
+ }
+ }
+#endif
+#endregion
+
+public static Settings Default
+ {
+ get
+ {
+
+#if _MyType
+ if (!addedHandler)
+ {
+ lock(addedHandlerLockObject)
+ {
+ if (!addedHandler)
+ {
+ (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase).Shutdown += AutoSaveSettings;
+ addedHandler = true;
+ }
+ }
+ }
+#endif
+ return defaultInstance;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute()]public global::System.Drawing.Point MainFormLocation
+ {
+ get
+ {
+ return ((global::System.Drawing.Point) (this["MainFormLocation"]));
+ }
+ set
+ {
+ this["MainFormLocation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute()]public global::System.Drawing.Size MainFormSize
+ {
+ get
+ {
+ return ((global::System.Drawing.Size) (this["MainFormSize"]));
+ }
+ set
+ {
+ this["MainFormSize"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+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.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool MainFormKiosk
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["MainFormKiosk"]);
+ }
+ set
+ {
+ this["MainFormKiosk"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool DoUpgrade
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["DoUpgrade"]);
+ }
+ set
+ {
+ this["DoUpgrade"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string CustomPuttyPath
+ {
+ get
+ {
+ return System.Convert.ToString(this["CustomPuttyPath"]);
+ }
+ set
+ {
+ this["CustomPuttyPath"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ShowNoMessageBoxes
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowNoMessageBoxes"]);
+ }
+ set
+ {
+ this["ShowNoMessageBoxes"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool SwitchToMCOnInformation
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SwitchToMCOnInformation"]);
+ }
+ set
+ {
+ this["SwitchToMCOnInformation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool SwitchToMCOnWarning
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SwitchToMCOnWarning"]);
+ }
+ set
+ {
+ this["SwitchToMCOnWarning"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool SwitchToMCOnError
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SwitchToMCOnError"]);
+ }
+ set
+ {
+ this["SwitchToMCOnError"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool AutomaticallyGetSessionInfo
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["AutomaticallyGetSessionInfo"]);
+ }
+ set
+ {
+ this["AutomaticallyGetSessionInfo"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool LoadConsFromCustomLocation
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["LoadConsFromCustomLocation"]);
+ }
+ set
+ {
+ this["LoadConsFromCustomLocation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string CustomConsPath
+ {
+ get
+ {
+ return System.Convert.ToString(this["CustomConsPath"]);
+ }
+ set
+ {
+ this["CustomConsPath"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool SaveConsOnExit
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SaveConsOnExit"]);
+ }
+ set
+ {
+ this["SaveConsOnExit"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool CheckForUpdatesOnStartup
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["CheckForUpdatesOnStartup"]);
+ }
+ set
+ {
+ this["CheckForUpdatesOnStartup"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ShowDescriptionTooltipsInTree
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowDescriptionTooltipsInTree"]);
+ }
+ set
+ {
+ this["ShowDescriptionTooltipsInTree"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ShowSystemTrayIcon
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowSystemTrayIcon"]);
+ }
+ set
+ {
+ this["ShowSystemTrayIcon"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool OpenTabsRightOfSelected
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["OpenTabsRightOfSelected"]);
+ }
+ set
+ {
+ this["OpenTabsRightOfSelected"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ShowLogonInfoOnTabs
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowLogonInfoOnTabs"]);
+ }
+ set
+ {
+ this["ShowLogonInfoOnTabs"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool SingleClickOnConnectionOpensIt
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SingleClickOnConnectionOpensIt"]);
+ }
+ set
+ {
+ this["SingleClickOnConnectionOpensIt"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("noinfo")]public string EmptyCredentials
+ {
+ get
+ {
+ return System.Convert.ToString(this["EmptyCredentials"]);
+ }
+ set
+ {
+ this["EmptyCredentials"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string DefaultUsername
+ {
+ get
+ {
+ return System.Convert.ToString(this["DefaultUsername"]);
+ }
+ set
+ {
+ this["DefaultUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string DefaultPassword
+ {
+ get
+ {
+ return System.Convert.ToString(this["DefaultPassword"]);
+ }
+ set
+ {
+ this["DefaultPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string DefaultDomain
+ {
+ get
+ {
+ return System.Convert.ToString(this["DefaultDomain"]);
+ }
+ set
+ {
+ this["DefaultDomain"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool WriteLogFile
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["WriteLogFile"]);
+ }
+ set
+ {
+ this["WriteLogFile"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool UseCustomPuttyPath
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["UseCustomPuttyPath"]);
+ }
+ set
+ {
+ this["UseCustomPuttyPath"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ShowCompleteConsPathInTitle
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowCompleteConsPathInTitle"]);
+ }
+ set
+ {
+ this["ShowCompleteConsPathInTitle"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool FirstStart
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["FirstStart"]);
+ }
+ set
+ {
+ this["FirstStart"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ShowProtocolOnTabs
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowProtocolOnTabs"]);
+ }
+ set
+ {
+ this["ShowProtocolOnTabs"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ResetPanels
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ResetPanels"]);
+ }
+ set
+ {
+ this["ResetPanels"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool UpdateUseProxy
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["UpdateUseProxy"]);
+ }
+ set
+ {
+ this["UpdateUseProxy"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string UpdateProxyAddress
+ {
+ get
+ {
+ return System.Convert.ToString(this["UpdateProxyAddress"]);
+ }
+ set
+ {
+ this["UpdateProxyAddress"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("80")]public int UpdateProxyPort
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["UpdateProxyPort"]);
+ }
+ set
+ {
+ this["UpdateProxyPort"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool UpdateProxyUseAuthentication
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["UpdateProxyUseAuthentication"]);
+ }
+ set
+ {
+ this["UpdateProxyUseAuthentication"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string UpdateProxyAuthUser
+ {
+ get
+ {
+ return System.Convert.ToString(this["UpdateProxyAuthUser"]);
+ }
+ set
+ {
+ this["UpdateProxyAuthUser"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string UpdateProxyAuthPass
+ {
+ get
+ {
+ return System.Convert.ToString(this["UpdateProxyAuthPass"]);
+ }
+ set
+ {
+ this["UpdateProxyAuthPass"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultDescription
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultDescription"]);
+ }
+ set
+ {
+ this["ConDefaultDescription"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultUsername
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultUsername"]);
+ }
+ set
+ {
+ this["ConDefaultUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultPassword
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultPassword"]);
+ }
+ set
+ {
+ this["ConDefaultPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultDomain
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultDomain"]);
+ }
+ set
+ {
+ this["ConDefaultDomain"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("RDP")]public string ConDefaultProtocol
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultProtocol"]);
+ }
+ set
+ {
+ this["ConDefaultProtocol"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Default Settings")]public string ConDefaultPuttySession
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultPuttySession"]);
+ }
+ set
+ {
+ this["ConDefaultPuttySession"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultUseConsoleSession
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultUseConsoleSession"]);
+ }
+ set
+ {
+ this["ConDefaultUseConsoleSession"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("FitToWindow")]public string ConDefaultResolution
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultResolution"]);
+ }
+ set
+ {
+ this["ConDefaultResolution"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Colors16Bit")]public string ConDefaultColors
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultColors"]);
+ }
+ set
+ {
+ this["ConDefaultColors"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ConDefaultCacheBitmaps
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultCacheBitmaps"]);
+ }
+ set
+ {
+ this["ConDefaultCacheBitmaps"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultDisplayWallpaper
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultDisplayWallpaper"]);
+ }
+ set
+ {
+ this["ConDefaultDisplayWallpaper"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultDisplayThemes
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultDisplayThemes"]);
+ }
+ set
+ {
+ this["ConDefaultDisplayThemes"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultRedirectKeys
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultRedirectKeys"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectKeys"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultRedirectDiskDrives
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultRedirectDiskDrives"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectDiskDrives"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultRedirectPrinters
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultRedirectPrinters"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectPrinters"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultRedirectPorts
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultRedirectPorts"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectPorts"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultRedirectSmartCards
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultRedirectSmartCards"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectSmartCards"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("DoNotPlay")]public string ConDefaultRedirectSound
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRedirectSound"]);
+ }
+ set
+ {
+ this["ConDefaultRedirectSound"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("2")]public int MaxPuttyWaitTime
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["MaxPuttyWaitTime"]);
+ }
+ set
+ {
+ this["MaxPuttyWaitTime"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool SingleInstance
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SingleInstance"]);
+ }
+ set
+ {
+ this["SingleInstance"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool OpenConsFromLastSession
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["OpenConsFromLastSession"]);
+ }
+ set
+ {
+ this["OpenConsFromLastSession"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool NoReconnect
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["NoReconnect"]);
+ }
+ set
+ {
+ this["NoReconnect"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("0")]public int AutoSaveEveryMinutes
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["AutoSaveEveryMinutes"]);
+ }
+ set
+ {
+ this["AutoSaveEveryMinutes"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ExtAppsTBVisible
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ExtAppsTBVisible"]);
+ }
+ set
+ {
+ this["ExtAppsTBVisible"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ExtAppsTBShowText
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ExtAppsTBShowText"]);
+ }
+ set
+ {
+ this["ExtAppsTBShowText"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("0, 0")]public global::System.Drawing.Point ExtAppsTBLocation
+ {
+ get
+ {
+ return ((global::System.Drawing.Point) (this["ExtAppsTBLocation"]));
+ }
+ set
+ {
+ this["ExtAppsTBLocation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Bottom")]public string ExtAppsTBParentDock
+ {
+ get
+ {
+ return System.Convert.ToString(this["ExtAppsTBParentDock"]);
+ }
+ set
+ {
+ this["ExtAppsTBParentDock"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool QuickyTBVisible
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["QuickyTBVisible"]);
+ }
+ set
+ {
+ this["QuickyTBVisible"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("3, 24")]public global::System.Drawing.Point QuickyTBLocation
+ {
+ get
+ {
+ return ((global::System.Drawing.Point) (this["QuickyTBLocation"]));
+ }
+ set
+ {
+ this["QuickyTBLocation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Top")]public string QuickyTBParentDock
+ {
+ get
+ {
+ return System.Convert.ToString(this["QuickyTBParentDock"]);
+ }
+ set
+ {
+ this["QuickyTBParentDock"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ResetToolbars
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ResetToolbars"]);
+ }
+ set
+ {
+ this["ResetToolbars"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool UseSQLServer
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["UseSQLServer"]);
+ }
+ set
+ {
+ this["UseSQLServer"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string SQLHost
+ {
+ get
+ {
+ return System.Convert.ToString(this["SQLHost"]);
+ }
+ set
+ {
+ this["SQLHost"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string SQLUser
+ {
+ get
+ {
+ return System.Convert.ToString(this["SQLUser"]);
+ }
+ set
+ {
+ this["SQLUser"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string SQLPass
+ {
+ get
+ {
+ return System.Convert.ToString(this["SQLPass"]);
+ }
+ set
+ {
+ this["SQLPass"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultCacheBitmaps
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultCacheBitmaps"]);
+ }
+ set
+ {
+ this["InhDefaultCacheBitmaps"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultColors
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultColors"]);
+ }
+ set
+ {
+ this["InhDefaultColors"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultDescription
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultDescription"]);
+ }
+ set
+ {
+ this["InhDefaultDescription"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultDisplayThemes
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultDisplayThemes"]);
+ }
+ set
+ {
+ this["InhDefaultDisplayThemes"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultDisplayWallpaper
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultDisplayWallpaper"]);
+ }
+ set
+ {
+ this["InhDefaultDisplayWallpaper"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultDomain
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultDomain"]);
+ }
+ set
+ {
+ this["InhDefaultDomain"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultIcon
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultIcon"]);
+ }
+ set
+ {
+ this["InhDefaultIcon"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPassword
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPassword"]);
+ }
+ set
+ {
+ this["InhDefaultPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPort
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPort"]);
+ }
+ set
+ {
+ this["InhDefaultPort"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultProtocol
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultProtocol"]);
+ }
+ set
+ {
+ this["InhDefaultProtocol"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPuttySession
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPuttySession"]);
+ }
+ set
+ {
+ this["InhDefaultPuttySession"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectDiskDrives
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectDiskDrives"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectDiskDrives"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectKeys
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectKeys"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectKeys"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectPorts
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectPorts"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectPorts"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectPrinters
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectPrinters"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectPrinters"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectSmartCards
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectSmartCards"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectSmartCards"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRedirectSound
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRedirectSound"]);
+ }
+ set
+ {
+ this["InhDefaultRedirectSound"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultResolution
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultResolution"]);
+ }
+ set
+ {
+ this["InhDefaultResolution"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultUseConsoleSession
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultUseConsoleSession"]);
+ }
+ set
+ {
+ this["InhDefaultUseConsoleSession"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultUsername
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultUsername"]);
+ }
+ set
+ {
+ this["InhDefaultUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPanel
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPanel"]);
+ }
+ set
+ {
+ this["InhDefaultPanel"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("EncrBasic")]public string ConDefaultICAEncryptionStrength
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultICAEncryptionStrength"]);
+ }
+ set
+ {
+ this["ConDefaultICAEncryptionStrength"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultICAEncryptionStrength
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultICAEncryptionStrength"]);
+ }
+ set
+ {
+ this["InhDefaultICAEncryptionStrength"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultPreExtApp
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultPreExtApp"]);
+ }
+ set
+ {
+ this["ConDefaultPreExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultPostExtApp
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultPostExtApp"]);
+ }
+ set
+ {
+ this["ConDefaultPostExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPreExtApp
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPreExtApp"]);
+ }
+ set
+ {
+ this["InhDefaultPreExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultPostExtApp
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultPostExtApp"]);
+ }
+ set
+ {
+ this["InhDefaultPostExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool SetHostnameLikeDisplayName
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SetHostnameLikeDisplayName"]);
+ }
+ set
+ {
+ this["SetHostnameLikeDisplayName"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool DoubleClickOnTabClosesIt
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["DoubleClickOnTabClosesIt"]);
+ }
+ set
+ {
+ this["DoubleClickOnTabClosesIt"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ReconnectOnDisconnect
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ReconnectOnDisconnect"]);
+ }
+ set
+ {
+ this["ReconnectOnDisconnect"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool AlwaysShowPanelSelectionDlg
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["AlwaysShowPanelSelectionDlg"]);
+ }
+ set
+ {
+ this["AlwaysShowPanelSelectionDlg"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("AuthVNC")]public string ConDefaultVNCAuthMode
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCAuthMode"]);
+ }
+ set
+ {
+ this["ConDefaultVNCAuthMode"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("ColNormal")]public string ConDefaultVNCColors
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCColors"]);
+ }
+ set
+ {
+ this["ConDefaultVNCColors"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("SmartSAspect")]public string ConDefaultVNCSmartSizeMode
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCSmartSizeMode"]);
+ }
+ set
+ {
+ this["ConDefaultVNCSmartSizeMode"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultVNCViewOnly
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultVNCViewOnly"]);
+ }
+ set
+ {
+ this["ConDefaultVNCViewOnly"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("CompNone")]public string ConDefaultVNCCompression
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCCompression"]);
+ }
+ set
+ {
+ this["ConDefaultVNCCompression"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("EncHextile")]public string ConDefaultVNCEncoding
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCEncoding"]);
+ }
+ set
+ {
+ this["ConDefaultVNCEncoding"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultVNCProxyIP
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCProxyIP"]);
+ }
+ set
+ {
+ this["ConDefaultVNCProxyIP"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultVNCProxyPassword
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCProxyPassword"]);
+ }
+ set
+ {
+ this["ConDefaultVNCProxyPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("0")]public int ConDefaultVNCProxyPort
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["ConDefaultVNCProxyPort"]);
+ }
+ set
+ {
+ this["ConDefaultVNCProxyPort"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("ProxyNone")]public string ConDefaultVNCProxyType
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCProxyType"]);
+ }
+ set
+ {
+ this["ConDefaultVNCProxyType"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultVNCProxyUsername
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultVNCProxyUsername"]);
+ }
+ set
+ {
+ this["ConDefaultVNCProxyUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCAuthMode
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCAuthMode"]);
+ }
+ set
+ {
+ this["InhDefaultVNCAuthMode"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCColors
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCColors"]);
+ }
+ set
+ {
+ this["InhDefaultVNCColors"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCSmartSizeMode
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCSmartSizeMode"]);
+ }
+ set
+ {
+ this["InhDefaultVNCSmartSizeMode"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCViewOnly
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCViewOnly"]);
+ }
+ set
+ {
+ this["InhDefaultVNCViewOnly"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCCompression
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCCompression"]);
+ }
+ set
+ {
+ this["InhDefaultVNCCompression"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCEncoding
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCEncoding"]);
+ }
+ set
+ {
+ this["InhDefaultVNCEncoding"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCProxyIP
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCProxyIP"]);
+ }
+ set
+ {
+ this["InhDefaultVNCProxyIP"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCProxyPassword
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCProxyPassword"]);
+ }
+ set
+ {
+ this["InhDefaultVNCProxyPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCProxyPort
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCProxyPort"]);
+ }
+ set
+ {
+ this["InhDefaultVNCProxyPort"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCProxyType
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCProxyType"]);
+ }
+ set
+ {
+ this["InhDefaultVNCProxyType"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultVNCProxyUsername
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultVNCProxyUsername"]);
+ }
+ set
+ {
+ this["InhDefaultVNCProxyUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool MinimizeToTray
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["MinimizeToTray"]);
+ }
+ set
+ {
+ this["MinimizeToTray"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool SingleClickSwitchesToOpenConnection
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["SingleClickSwitchesToOpenConnection"]);
+ }
+ set
+ {
+ this["SingleClickSwitchesToOpenConnection"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("NoAuth")]public string ConDefaultRDPAuthenticationLevel
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDPAuthenticationLevel"]);
+ }
+ set
+ {
+ this["ConDefaultRDPAuthenticationLevel"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDPAuthenticationLevel
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDPAuthenticationLevel"]);
+ }
+ set
+ {
+ this["InhDefaultRDPAuthenticationLevel"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("5500")]public int UVNCSCPort
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["UVNCSCPort"]);
+ }
+ set
+ {
+ this["UVNCSCPort"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool StartupComponentsCheck
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["StartupComponentsCheck"]);
+ }
+ set
+ {
+ this["StartupComponentsCheck"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string XULRunnerPath
+ {
+ get
+ {
+ return System.Convert.ToString(this["XULRunnerPath"]);
+ }
+ set
+ {
+ this["XULRunnerPath"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("IE")]public string ConDefaultRenderingEngine
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRenderingEngine"]);
+ }
+ set
+ {
+ this["ConDefaultRenderingEngine"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRenderingEngine
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRenderingEngine"]);
+ }
+ set
+ {
+ this["InhDefaultRenderingEngine"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultMacAddress
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultMacAddress"]);
+ }
+ set
+ {
+ this["ConDefaultMacAddress"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultMacAddress
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultMacAddress"]);
+ }
+ set
+ {
+ this["InhDefaultMacAddress"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool EncryptCompleteConnectionsFile
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["EncryptCompleteConnectionsFile"]);
+ }
+ set
+ {
+ this["EncryptCompleteConnectionsFile"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultUserField
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultUserField"]);
+ }
+ set
+ {
+ this["ConDefaultUserField"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultUserField
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultUserField"]);
+ }
+ set
+ {
+ this["InhDefaultUserField"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultExtApp
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultExtApp"]);
+ }
+ set
+ {
+ this["ConDefaultExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultExtApp
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultExtApp"]);
+ }
+ set
+ {
+ this["InhDefaultExtApp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string LastAnnouncement
+ {
+ get
+ {
+ return System.Convert.ToString(this["LastAnnouncement"]);
+ }
+ set
+ {
+ this["LastAnnouncement"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool CheckForUpdatesAsked
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["CheckForUpdatesAsked"]);
+ }
+ set
+ {
+ this["CheckForUpdatesAsked"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("7")]public int CheckForUpdatesFrequencyDays
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["CheckForUpdatesFrequencyDays"]);
+ }
+ set
+ {
+ this["CheckForUpdatesFrequencyDays"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("1980-01-01")]public DateTime CheckForUpdatesLastCheck
+ {
+ get
+ {
+ return System.Convert.ToDateTime(this["CheckForUpdatesLastCheck"]);
+ }
+ set
+ {
+ this["CheckForUpdatesLastCheck"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool UpdatePending
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["UpdatePending"]);
+ }
+ set
+ {
+ this["UpdatePending"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Never")]public string ConDefaultRDGatewayUsageMethod
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayUsageMethod"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayUsageMethod"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("Yes")]public string ConDefaultRDGatewayUseConnectionCredentials
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayUseConnectionCredentials"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayUseConnectionCredentials"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("mRemoteNG")]public string ConDefaultIcon
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultIcon"]);
+ }
+ set
+ {
+ this["ConDefaultIcon"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayUsageMethod
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayUsageMethod"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayUsageMethod"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayHostname
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayHostname"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayHostname"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayUsername
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayUsername"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayPassword
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayPassword"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayDomain
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayDomain"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayDomain"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultRDGatewayUseConnectionCredentials
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultRDGatewayUseConnectionCredentials"]);
+ }
+ set
+ {
+ this["InhDefaultRDGatewayUseConnectionCredentials"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("5")]public int RdpReconnectionCount
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["RdpReconnectionCount"]);
+ }
+ set
+ {
+ this["RdpReconnectionCount"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string OverrideUICulture
+ {
+ get
+ {
+ return System.Convert.ToString(this["OverrideUICulture"]);
+ }
+ set
+ {
+ this["OverrideUICulture"] = value;
+ }
+ }
+
+[global::System.Configuration.ApplicationScopedSettingAttribute(),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW")]public string SupportedUICultures
+ {
+ get
+ {
+ return System.Convert.ToString(this["SupportedUICultures"]);
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultRDGatewayHostname
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayHostname"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayHostname"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultRDGatewayUsername
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayUsername"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayUsername"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultRDGatewayPassword
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayPassword"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayPassword"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultRDGatewayDomain
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultRDGatewayDomain"]);
+ }
+ set
+ {
+ this["ConDefaultRDGatewayDomain"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultEnableFontSmoothing
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultEnableFontSmoothing"]);
+ }
+ set
+ {
+ this["ConDefaultEnableFontSmoothing"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultEnableFontSmoothing
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultEnableFontSmoothing"]);
+ }
+ set
+ {
+ this["InhDefaultEnableFontSmoothing"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool ConDefaultEnableDesktopComposition
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultEnableDesktopComposition"]);
+ }
+ set
+ {
+ this["ConDefaultEnableDesktopComposition"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultEnableDesktopComposition
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultEnableDesktopComposition"]);
+ }
+ set
+ {
+ this["InhDefaultEnableDesktopComposition"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("4")]public int ConfirmCloseConnection
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["ConfirmCloseConnection"]);
+ }
+ set
+ {
+ this["ConfirmCloseConnection"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute()]public global::System.Drawing.Size MainFormRestoreSize
+ {
+ get
+ {
+ return ((global::System.Drawing.Size) (this["MainFormRestoreSize"]));
+ }
+ set
+ {
+ this["MainFormRestoreSize"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute()]public global::System.Drawing.Point MainFormRestoreLocation
+ {
+ get
+ {
+ return ((global::System.Drawing.Point) (this["MainFormRestoreLocation"]));
+ }
+ set
+ {
+ this["MainFormRestoreLocation"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("mRemoteNG")]public string SQLDatabaseName
+ {
+ get
+ {
+ return System.Convert.ToString(this["SQLDatabaseName"]);
+ }
+ set
+ {
+ this["SQLDatabaseName"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("10"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public int BackupFileKeepCount
+ {
+ get
+ {
+ return System.Convert.ToInt32(this["BackupFileKeepCount"]);
+ }
+ set
+ {
+ this["BackupFileKeepCount"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("{0}.{1:yyyyMMdd-HHmmssffff}.backup"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public string BackupFileNameFormat
+ {
+ get
+ {
+ return System.Convert.ToString(this["BackupFileNameFormat"]);
+ }
+ set
+ {
+ this["BackupFileNameFormat"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultUseCredSsp
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultUseCredSsp"]);
+ }
+ set
+ {
+ this["InhDefaultUseCredSsp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ConDefaultUseCredSsp
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultUseCredSsp"]);
+ }
+ set
+ {
+ this["ConDefaultUseCredSsp"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public bool AlwaysShowPanelTabs
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["AlwaysShowPanelTabs"]);
+ }
+ set
+ {
+ this["AlwaysShowPanelTabs"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public bool IdentifyQuickConnectTabs
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["IdentifyQuickConnectTabs"]);
+ }
+ set
+ {
+ this["IdentifyQuickConnectTabs"] = value;
+ }
+ }
+
+[global::System.Configuration.ApplicationScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("release")]public string UpdateChannel
+ {
+ get
+ {
+ return System.Convert.ToString(this["UpdateChannel"]);
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ThemeName
+ {
+ get
+ {
+ return System.Convert.ToString(this["ThemeName"]);
+ }
+ set
+ {
+ this["ThemeName"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ShowConfigHelpText
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ShowConfigHelpText"]);
+ }
+ set
+ {
+ this["ShowConfigHelpText"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string PuttySavedSessionsName
+ {
+ get
+ {
+ return System.Convert.ToString(this["PuttySavedSessionsName"]);
+ }
+ set
+ {
+ this["PuttySavedSessionsName"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string PuttySavedSessionsPanel
+ {
+ get
+ {
+ return System.Convert.ToString(this["PuttySavedSessionsPanel"]);
+ }
+ set
+ {
+ this["PuttySavedSessionsPanel"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool CompatibilityWarnLenovoAutoScrollUtility
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["CompatibilityWarnLenovoAutoScrollUtility"]);
+ }
+ set
+ {
+ this["CompatibilityWarnLenovoAutoScrollUtility"] = value;
+ }
+ }
+
+[global::System.Configuration.ApplicationScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("https://update.mremoteng.org/announcement.txt")]public string AnnouncementAddress
+ {
+ get
+ {
+ return System.Convert.ToString(this["AnnouncementAddress"]);
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("https://update.mremoteng.org/")]public string UpdateAddress
+ {
+ get
+ {
+ return System.Convert.ToString(this["UpdateAddress"]);
+ }
+ set
+ {
+ this["UpdateAddress"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("")]public string ConDefaultLoadBalanceInfo
+ {
+ get
+ {
+ return System.Convert.ToString(this["ConDefaultLoadBalanceInfo"]);
+ }
+ set
+ {
+ this["ConDefaultLoadBalanceInfo"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("True")]public bool ConDefaultAutomaticResize
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["ConDefaultAutomaticResize"]);
+ }
+ set
+ {
+ this["ConDefaultAutomaticResize"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultLoadBalanceInfo
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultLoadBalanceInfo"]);
+ }
+ set
+ {
+ this["InhDefaultLoadBalanceInfo"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("False")]public bool InhDefaultAutomaticResize
+ {
+ get
+ {
+ return System.Convert.ToBoolean(this["InhDefaultAutomaticResize"]);
+ }
+ set
+ {
+ this["InhDefaultAutomaticResize"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("RDP"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public string QuickConnectProtocol
+ {
+ get
+ {
+ return System.Convert.ToString(this["QuickConnectProtocol"]);
+ }
+ set
+ {
+ this["QuickConnectProtocol"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("9/9, 33/8"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public string KeysPreviousTab
+ {
+ get
+ {
+ return System.Convert.ToString(this["KeysPreviousTab"]);
+ }
+ set
+ {
+ this["KeysPreviousTab"] = value;
+ }
+ }
+
+[global::System.Configuration.UserScopedSettingAttribute(),
+global::System.Configuration.SettingsProviderAttribute(typeof(mRemoteNG.Config.Settings.Providers.ChooseProvider)),
+global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+global::System.Configuration.DefaultSettingValueAttribute("9/8, 34/8"),
+global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]public string KeysNextTab
+ {
+ get
+ {
+ return System.Convert.ToString(this["KeysNextTab"]);
+ }
+ set
+ {
+ this["KeysNextTab"] = value;
+ }
+ }
+ }
+ }
+
+ namespace My
+ {
+
+ [global::Microsoft.VisualBasic.HideModuleNameAttribute(),
+ global::System.Diagnostics.DebuggerNonUserCodeAttribute(),
+ global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]internal sealed class MySettingsProperty
+ {
+
+[global::System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")]internal static global::mRemoteNG.My.Settings Settings
+ {
+ get
+ {
+ return global::mRemoteNG.My.Settings.Default;
+ }
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Properties/Settings.settings b/mRemoteV1/CS/Properties/Settings.settings
new file mode 100644
index 000000000..4a04e1cfa
--- /dev/null
+++ b/mRemoteV1/CS/Properties/Settings.settings
@@ -0,0 +1,576 @@
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+
+
+
+
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ release
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Properties/app.manifest b/mRemoteV1/CS/Properties/app.manifest
new file mode 100644
index 000000000..4c249cd2c
--- /dev/null
+++ b/mRemoteV1/CS/Properties/app.manifest
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mRemoteV1/CS/References/ADTree.dll b/mRemoteV1/CS/References/ADTree.dll
new file mode 100644
index 000000000..98e435b33
Binary files /dev/null and b/mRemoteV1/CS/References/ADTree.dll differ
diff --git a/mRemoteV1/CS/References/DiffieHellman.dll b/mRemoteV1/CS/References/DiffieHellman.dll
new file mode 100644
index 000000000..aa3105110
Binary files /dev/null and b/mRemoteV1/CS/References/DiffieHellman.dll differ
diff --git a/mRemoteV1/CS/References/FilteredPropertyGrid.dll b/mRemoteV1/CS/References/FilteredPropertyGrid.dll
new file mode 100644
index 000000000..4561e8a9b
Binary files /dev/null and b/mRemoteV1/CS/References/FilteredPropertyGrid.dll differ
diff --git a/mRemoteV1/CS/References/IPTextBox.dll b/mRemoteV1/CS/References/IPTextBox.dll
new file mode 100644
index 000000000..e340f4856
Binary files /dev/null and b/mRemoteV1/CS/References/IPTextBox.dll differ
diff --git a/mRemoteV1/CS/References/MagicLibrary.dll b/mRemoteV1/CS/References/MagicLibrary.dll
new file mode 100644
index 000000000..24cfa5d0a
Binary files /dev/null and b/mRemoteV1/CS/References/MagicLibrary.dll differ
diff --git a/mRemoteV1/CS/References/MiniGeckoBrowser.dll b/mRemoteV1/CS/References/MiniGeckoBrowser.dll
new file mode 100644
index 000000000..901b73cfc
Binary files /dev/null and b/mRemoteV1/CS/References/MiniGeckoBrowser.dll differ
diff --git a/mRemoteV1/CS/References/MiniTabControl.dll b/mRemoteV1/CS/References/MiniTabControl.dll
new file mode 100644
index 000000000..04bb12dd7
Binary files /dev/null and b/mRemoteV1/CS/References/MiniTabControl.dll differ
diff --git a/mRemoteV1/CS/References/Org.Mentalis.Security.dll b/mRemoteV1/CS/References/Org.Mentalis.Security.dll
new file mode 100644
index 000000000..bac39dd9c
Binary files /dev/null and b/mRemoteV1/CS/References/Org.Mentalis.Security.dll differ
diff --git a/mRemoteV1/CS/References/PSTaskDialog.dll b/mRemoteV1/CS/References/PSTaskDialog.dll
new file mode 100644
index 000000000..7d74bce32
Binary files /dev/null and b/mRemoteV1/CS/References/PSTaskDialog.dll differ
diff --git a/mRemoteV1/CS/References/Skybound.Gecko.dll b/mRemoteV1/CS/References/Skybound.Gecko.dll
new file mode 100644
index 000000000..19abc441e
Binary files /dev/null and b/mRemoteV1/CS/References/Skybound.Gecko.dll differ
diff --git a/mRemoteV1/CS/References/Tamir.SharpSSH.dll b/mRemoteV1/CS/References/Tamir.SharpSSH.dll
new file mode 100644
index 000000000..9d217c26f
Binary files /dev/null and b/mRemoteV1/CS/References/Tamir.SharpSSH.dll differ
diff --git a/mRemoteV1/CS/References/VncSharpNG.dll b/mRemoteV1/CS/References/VncSharpNG.dll
new file mode 100644
index 000000000..f9c9dc1d1
Binary files /dev/null and b/mRemoteV1/CS/References/VncSharpNG.dll differ
diff --git a/mRemoteV1/CS/References/VncSharpNG.pdb b/mRemoteV1/CS/References/VncSharpNG.pdb
new file mode 100644
index 000000000..15ee70043
Binary files /dev/null and b/mRemoteV1/CS/References/VncSharpNG.pdb differ
diff --git a/mRemoteV1/CS/References/WeifenLuo.WinFormsUI.Docking.dll b/mRemoteV1/CS/References/WeifenLuo.WinFormsUI.Docking.dll
new file mode 100644
index 000000000..ea1da8876
Binary files /dev/null and b/mRemoteV1/CS/References/WeifenLuo.WinFormsUI.Docking.dll differ
diff --git a/mRemoteV1/CS/References/log4net.dll b/mRemoteV1/CS/References/log4net.dll
new file mode 100644
index 000000000..ffc57e112
Binary files /dev/null and b/mRemoteV1/CS/References/log4net.dll differ
diff --git a/mRemoteV1/CS/Resources/Announcement/mRemote_Announcement.txt b/mRemoteV1/CS/Resources/Announcement/mRemote_Announcement.txt
new file mode 100644
index 000000000..7def56007
--- /dev/null
+++ b/mRemoteV1/CS/Resources/Announcement/mRemote_Announcement.txt
@@ -0,0 +1,2 @@
+Name: mRemote goes Commercial
+URL: http://mremote.org/wiki/Commercial.ashx
diff --git a/mRemoteV1/CS/Resources/Icons/ActiveDirectory_Icon.ico b/mRemoteV1/CS/Resources/Icons/ActiveDirectory_Icon.ico
new file mode 100644
index 000000000..2c1b2b23e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/ActiveDirectory_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/ComponentsCheck_Icon.ico b/mRemoteV1/CS/Resources/Icons/ComponentsCheck_Icon.ico
new file mode 100644
index 000000000..090e14f59
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/ComponentsCheck_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Config_Icon.ico b/mRemoteV1/CS/Resources/Icons/Config_Icon.ico
new file mode 100644
index 000000000..d3d035ab2
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Config_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Connections_SaveAs_Icon.ico b/mRemoteV1/CS/Resources/Icons/Connections_SaveAs_Icon.ico
new file mode 100644
index 000000000..0cb5d8896
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Connections_SaveAs_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/ExtApp_Icon.ico b/mRemoteV1/CS/Resources/Icons/ExtApp_Icon.ico
new file mode 100644
index 000000000..d551aa3aa
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/ExtApp_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Help_Icon.ico b/mRemoteV1/CS/Resources/Icons/Help_Icon.ico
new file mode 100644
index 000000000..130a92039
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Help_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Info_Icon.ico b/mRemoteV1/CS/Resources/Icons/Info_Icon.ico
new file mode 100644
index 000000000..2728dd14c
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Info_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Options_Icon.ico b/mRemoteV1/CS/Resources/Icons/Options_Icon.ico
new file mode 100644
index 000000000..5bcd27980
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Options_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Play_Quick_Icon.ico b/mRemoteV1/CS/Resources/Icons/Play_Quick_Icon.ico
new file mode 100644
index 000000000..9fa978f4a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Play_Quick_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/PortScan_Icon.ico b/mRemoteV1/CS/Resources/Icons/PortScan_Icon.ico
new file mode 100644
index 000000000..5348d4cee
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/PortScan_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/RDCMan_Icon.ico b/mRemoteV1/CS/Resources/Icons/RDCMan_Icon.ico
new file mode 100644
index 000000000..788b50833
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/RDCMan_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Root_Icon.ico b/mRemoteV1/CS/Resources/Icons/Root_Icon.ico
new file mode 100644
index 000000000..95cc05e00
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Root_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/SSHTransfer_Icon.ico b/mRemoteV1/CS/Resources/Icons/SSHTransfer_Icon.ico
new file mode 100644
index 000000000..7492c7471
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/SSHTransfer_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Save_Icon.ico b/mRemoteV1/CS/Resources/Icons/Save_Icon.ico
new file mode 100644
index 000000000..187d6fec3
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Save_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Screenshot_Icon.ico b/mRemoteV1/CS/Resources/Icons/Screenshot_Icon.ico
new file mode 100644
index 000000000..26151c401
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Screenshot_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Sessions_Icon.ico b/mRemoteV1/CS/Resources/Icons/Sessions_Icon.ico
new file mode 100644
index 000000000..c3244ee7c
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Sessions_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/UVNC_SC_Icon.ico b/mRemoteV1/CS/Resources/Icons/UVNC_SC_Icon.ico
new file mode 100644
index 000000000..393489755
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/UVNC_SC_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/Update_Icon.ico b/mRemoteV1/CS/Resources/Icons/Update_Icon.ico
new file mode 100644
index 000000000..e02ca8853
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/Update_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons/mRemote_Icon.ico b/mRemoteV1/CS/Resources/Icons/mRemote_Icon.ico
new file mode 100644
index 000000000..700854c14
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons/mRemote_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Appearance_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Appearance_Icon.ico
new file mode 100644
index 000000000..4aea5a645
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Appearance_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Config_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Config_Icon.ico
new file mode 100644
index 000000000..04736abcb
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Config_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/ExtApp_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/ExtApp_Icon.ico
new file mode 100644
index 000000000..f8d9517b9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/ExtApp_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Help_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Help_Icon.ico
new file mode 100644
index 000000000..48f3c5289
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Help_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/News_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/News_Icon.ico
new file mode 100644
index 000000000..e443efa28
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/News_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Options_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Options_Icon.ico
new file mode 100644
index 000000000..75ea960da
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Options_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Panels_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Panels_Icon.ico
new file mode 100644
index 000000000..d2e3a095b
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Panels_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/PortScan_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/PortScan_Icon.ico
new file mode 100644
index 000000000..60f0200b9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/PortScan_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/SSHTransfer_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/SSHTransfer_Icon.ico
new file mode 100644
index 000000000..0d3f2527e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/SSHTransfer_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Save_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Save_Icon.ico
new file mode 100644
index 000000000..eb522217d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Save_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Screenshot_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Screenshot_Icon.ico
new file mode 100644
index 000000000..5f0da7ac6
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Screenshot_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Sessions_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Sessions_Icon.ico
new file mode 100644
index 000000000..8b3d2c1ad
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Sessions_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/StartupExit_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/StartupExit_Icon.ico
new file mode 100644
index 000000000..0f733a92d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/StartupExit_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Tab_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Tab_Icon.ico
new file mode 100644
index 000000000..434212737
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Tab_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/Update_Icon.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/Update_Icon.ico
new file mode 100644
index 000000000..57ea6cc8a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/Update_Icon.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/database.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/database.ico
new file mode 100644
index 000000000..9704872c8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/database.ico differ
diff --git a/mRemoteV1/CS/Resources/Icons_FamFamFam/keyboard.ico b/mRemoteV1/CS/Resources/Icons_FamFamFam/keyboard.ico
new file mode 100644
index 000000000..cb4322d2f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Icons_FamFamFam/keyboard.ico differ
diff --git a/mRemoteV1/CS/Resources/Images/ActiveDirectory.png b/mRemoteV1/CS/Resources/Images/ActiveDirectory.png
new file mode 100644
index 000000000..3e459ae67
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/ActiveDirectory.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Arrow_Down.png b/mRemoteV1/CS/Resources/Images/Arrow_Down.png
new file mode 100644
index 000000000..eedc8b8e6
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Arrow_Down.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Arrow_Up.png b/mRemoteV1/CS/Resources/Images/Arrow_Up.png
new file mode 100644
index 000000000..ea46c0d4f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Arrow_Up.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Bad_Symbol.png b/mRemoteV1/CS/Resources/Images/Bad_Symbol.png
new file mode 100644
index 000000000..ca97ab755
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Bad_Symbol.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Collapse.png b/mRemoteV1/CS/Resources/Images/Collapse.png
new file mode 100644
index 000000000..4b9795060
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Collapse.png differ
diff --git a/mRemoteV1/CS/Resources/Images/ComponentsCheck.png b/mRemoteV1/CS/Resources/Images/ComponentsCheck.png
new file mode 100644
index 000000000..0111960e9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/ComponentsCheck.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Config.png b/mRemoteV1/CS/Resources/Images/Config.png
new file mode 100644
index 000000000..c3038cfe3
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Config.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Connections_Load.png b/mRemoteV1/CS/Resources/Images/Connections_Load.png
new file mode 100644
index 000000000..2396025df
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Connections_Load.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Connections_New.png b/mRemoteV1/CS/Resources/Images/Connections_New.png
new file mode 100644
index 000000000..f03158547
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Connections_New.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Connections_Save.png b/mRemoteV1/CS/Resources/Images/Connections_Save.png
new file mode 100644
index 000000000..b36436473
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Connections_Save.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Connections_SaveAs.png b/mRemoteV1/CS/Resources/Images/Connections_SaveAs.png
new file mode 100644
index 000000000..7ebb679a7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Connections_SaveAs.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Copy.png b/mRemoteV1/CS/Resources/Images/Copy.png
new file mode 100644
index 000000000..cb3d8717a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Copy.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Delete.png b/mRemoteV1/CS/Resources/Images/Delete.png
new file mode 100644
index 000000000..7f830593d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Duplicate.png b/mRemoteV1/CS/Resources/Images/Duplicate.png
new file mode 100644
index 000000000..36635f0bb
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Duplicate.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Error.png b/mRemoteV1/CS/Resources/Images/Error.png
new file mode 100644
index 000000000..9d9737afd
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Error.png differ
diff --git a/mRemoteV1/CS/Resources/Images/ErrorSmall.png b/mRemoteV1/CS/Resources/Images/ErrorSmall.png
new file mode 100644
index 000000000..ed633b43a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/ErrorSmall.png differ
diff --git a/mRemoteV1/CS/Resources/Images/ErrorsAndInfos.png b/mRemoteV1/CS/Resources/Images/ErrorsAndInfos.png
new file mode 100644
index 000000000..e623ba282
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/ErrorsAndInfos.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Exit.png b/mRemoteV1/CS/Resources/Images/Exit.png
new file mode 100644
index 000000000..a70a2aba4
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Exit.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Expand.png b/mRemoteV1/CS/Resources/Images/Expand.png
new file mode 100644
index 000000000..d8aac5038
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Expand.png differ
diff --git a/mRemoteV1/CS/Resources/Images/ExtApp.png b/mRemoteV1/CS/Resources/Images/ExtApp.png
new file mode 100644
index 000000000..9561ce73f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/ExtApp.png differ
diff --git a/mRemoteV1/CS/Resources/Images/File.png b/mRemoteV1/CS/Resources/Images/File.png
new file mode 100644
index 000000000..a6a9206c1
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/File.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Folder.png b/mRemoteV1/CS/Resources/Images/Folder.png
new file mode 100644
index 000000000..0c35ef7ce
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Folder.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Fullscreen.png b/mRemoteV1/CS/Resources/Images/Fullscreen.png
new file mode 100644
index 000000000..511e7a08a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Fullscreen.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Good_Symbol.png b/mRemoteV1/CS/Resources/Images/Good_Symbol.png
new file mode 100644
index 000000000..22af10bf9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Good_Symbol.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Help.png b/mRemoteV1/CS/Resources/Images/Help.png
new file mode 100644
index 000000000..edf9d2922
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Help.png differ
diff --git a/mRemoteV1/CS/Resources/Images/HostStatus_Check.png b/mRemoteV1/CS/Resources/Images/HostStatus_Check.png
new file mode 100644
index 000000000..a2b16bf06
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/HostStatus_Check.png differ
diff --git a/mRemoteV1/CS/Resources/Images/HostStatus_Off.png b/mRemoteV1/CS/Resources/Images/HostStatus_Off.png
new file mode 100644
index 000000000..8d6f32544
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/HostStatus_Off.png differ
diff --git a/mRemoteV1/CS/Resources/Images/HostStatus_On.png b/mRemoteV1/CS/Resources/Images/HostStatus_On.png
new file mode 100644
index 000000000..ceaf83c44
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/HostStatus_On.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Info.png b/mRemoteV1/CS/Resources/Images/Info.png
new file mode 100644
index 000000000..4f07f8454
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Info.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Information.png b/mRemoteV1/CS/Resources/Images/Information.png
new file mode 100644
index 000000000..705d27d42
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Information.png differ
diff --git a/mRemoteV1/CS/Resources/Images/InformationSmall.png b/mRemoteV1/CS/Resources/Images/InformationSmall.png
new file mode 100644
index 000000000..c82358499
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/InformationSmall.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Inheritance.png b/mRemoteV1/CS/Resources/Images/Inheritance.png
new file mode 100644
index 000000000..f62137498
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Inheritance.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Keyboard.png b/mRemoteV1/CS/Resources/Images/Keyboard.png
new file mode 100644
index 000000000..4b4676f18
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Keyboard.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Lock.png b/mRemoteV1/CS/Resources/Images/Lock.png
new file mode 100644
index 000000000..b70b50f65
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Lock.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Logo.png b/mRemoteV1/CS/Resources/Images/Logo.png
new file mode 100644
index 000000000..8355b295d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Logo.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Minimize.png b/mRemoteV1/CS/Resources/Images/Minimize.png
new file mode 100644
index 000000000..9c61bf1eb
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Minimize.png differ
diff --git a/mRemoteV1/CS/Resources/Images/New.png b/mRemoteV1/CS/Resources/Images/New.png
new file mode 100644
index 000000000..bed8d2cbc
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/New.png differ
diff --git a/mRemoteV1/CS/Resources/Images/NewConnection.png b/mRemoteV1/CS/Resources/Images/NewConnection.png
new file mode 100644
index 000000000..2985b8d77
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/NewConnection.png differ
diff --git a/mRemoteV1/CS/Resources/Images/NewFolder.png b/mRemoteV1/CS/Resources/Images/NewFolder.png
new file mode 100644
index 000000000..872173231
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/NewFolder.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Open.png b/mRemoteV1/CS/Resources/Images/Open.png
new file mode 100644
index 000000000..1f5e38cd8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Open.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Options.png b/mRemoteV1/CS/Resources/Images/Options.png
new file mode 100644
index 000000000..fe9b9c62b
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Options.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Pause.png b/mRemoteV1/CS/Resources/Images/Pause.png
new file mode 100644
index 000000000..d89667218
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Pause.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Play.png b/mRemoteV1/CS/Resources/Images/Play.png
new file mode 100644
index 000000000..d54035da7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Play.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Play_Quick.png b/mRemoteV1/CS/Resources/Images/Play_Quick.png
new file mode 100644
index 000000000..72064726e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Play_Quick.png differ
diff --git a/mRemoteV1/CS/Resources/Images/PortScan.png b/mRemoteV1/CS/Resources/Images/PortScan.png
new file mode 100644
index 000000000..32dbe8c86
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/PortScan.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Properties.png b/mRemoteV1/CS/Resources/Images/Properties.png
new file mode 100644
index 000000000..0c5ec1c05
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Properties.png differ
diff --git a/mRemoteV1/CS/Resources/Images/PropertiesDefault.png b/mRemoteV1/CS/Resources/Images/PropertiesDefault.png
new file mode 100644
index 000000000..03dca1781
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/PropertiesDefault.png differ
diff --git a/mRemoteV1/CS/Resources/Images/PuttyConfig.png b/mRemoteV1/CS/Resources/Images/PuttyConfig.png
new file mode 100644
index 000000000..142084601
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/PuttyConfig.png differ
diff --git a/mRemoteV1/CS/Resources/Images/PuttySessions.png b/mRemoteV1/CS/Resources/Images/PuttySessions.png
new file mode 100644
index 000000000..d3407e276
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/PuttySessions.png differ
diff --git a/mRemoteV1/CS/Resources/Images/RDP.png b/mRemoteV1/CS/Resources/Images/RDP.png
new file mode 100644
index 000000000..56aef05b6
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/RDP.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Refresh.png b/mRemoteV1/CS/Resources/Images/Refresh.png
new file mode 100644
index 000000000..56fb0eb14
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Refresh.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Rename.png b/mRemoteV1/CS/Resources/Images/Rename.png
new file mode 100644
index 000000000..d61198f39
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Rename.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Root.png b/mRemoteV1/CS/Resources/Images/Root.png
new file mode 100644
index 000000000..5915cb451
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Root.png differ
diff --git a/mRemoteV1/CS/Resources/Images/SSHTransfer.png b/mRemoteV1/CS/Resources/Images/SSHTransfer.png
new file mode 100644
index 000000000..7447e6291
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/SSHTransfer.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Save.png b/mRemoteV1/CS/Resources/Images/Save.png
new file mode 100644
index 000000000..353e93d11
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Save.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Screenshot.png b/mRemoteV1/CS/Resources/Images/Screenshot.png
new file mode 100644
index 000000000..b11d6aa57
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Screenshot.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Screenshot_Add.png b/mRemoteV1/CS/Resources/Images/Screenshot_Add.png
new file mode 100644
index 000000000..caba335b5
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Screenshot_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Search.png b/mRemoteV1/CS/Resources/Images/Search.png
new file mode 100644
index 000000000..851d54a33
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Search.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Sessions.png b/mRemoteV1/CS/Resources/Images/Sessions.png
new file mode 100644
index 000000000..7d58120ed
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Sessions.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Sort_AZ.png b/mRemoteV1/CS/Resources/Images/Sort_AZ.png
new file mode 100644
index 000000000..02e7740ff
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Sort_AZ.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Sort_ZA.png b/mRemoteV1/CS/Resources/Images/Sort_ZA.png
new file mode 100644
index 000000000..6ad8f5c08
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Sort_ZA.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Tools.png b/mRemoteV1/CS/Resources/Images/Tools.png
new file mode 100644
index 000000000..78c1dcf18
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Tools.png differ
diff --git a/mRemoteV1/CS/Resources/Images/UVNC_SC.png b/mRemoteV1/CS/Resources/Images/UVNC_SC.png
new file mode 100644
index 000000000..8154a2459
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/UVNC_SC.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Update.png b/mRemoteV1/CS/Resources/Images/Update.png
new file mode 100644
index 000000000..dc5c27799
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Update.png differ
diff --git a/mRemoteV1/CS/Resources/Images/View.png b/mRemoteV1/CS/Resources/Images/View.png
new file mode 100644
index 000000000..27ef5e33b
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/View.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Warning.png b/mRemoteV1/CS/Resources/Images/Warning.png
new file mode 100644
index 000000000..3390da3e9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Warning.png differ
diff --git a/mRemoteV1/CS/Resources/Images/WarningSmall.png b/mRemoteV1/CS/Resources/Images/WarningSmall.png
new file mode 100644
index 000000000..87419a6c6
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/WarningSmall.png differ
diff --git a/mRemoteV1/CS/Resources/Images/Website.png b/mRemoteV1/CS/Resources/Images/Website.png
new file mode 100644
index 000000000..cbd90f88d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/Website.png differ
diff --git a/mRemoteV1/CS/Resources/Images/database.bmp b/mRemoteV1/CS/Resources/Images/database.bmp
new file mode 100644
index 000000000..3233dcdb9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/database.bmp differ
diff --git a/mRemoteV1/CS/Resources/Images/mRemote.png b/mRemoteV1/CS/Resources/Images/mRemote.png
new file mode 100644
index 000000000..fe3f349e3
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/mRemote.png differ
diff --git a/mRemoteV1/CS/Resources/Images/puttycm.png b/mRemoteV1/CS/Resources/Images/puttycm.png
new file mode 100644
index 000000000..9eae419a8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images/puttycm.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Down.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Down.png
new file mode 100644
index 000000000..9b23c06d7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Down.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Up.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Up.png
new file mode 100644
index 000000000..24df0f421
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Arrow_Up.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Bug.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Bug.png
new file mode 100644
index 000000000..2d5fb90ec
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Bug.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Chat.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Chat.png
new file mode 100644
index 000000000..39433cf78
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Chat.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Config.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Config.png
new file mode 100644
index 000000000..768bb25ee
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Config.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Add.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Add.png
new file mode 100644
index 000000000..21492c2ec
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Duplicate.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Duplicate.png
new file mode 100644
index 000000000..02649ab66
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Connection_Duplicate.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Console.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Console.png
new file mode 100644
index 000000000..c28dd6381
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Console.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Copy.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Copy.png
new file mode 100644
index 000000000..195dc6d6c
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Copy.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Delete.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Delete.png
new file mode 100644
index 000000000..1514d51a3
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Donate.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Donate.png
new file mode 100644
index 000000000..42c52d05f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Donate.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp.png b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp.png
new file mode 100644
index 000000000..b3d8ce01e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Add.png b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Add.png
new file mode 100644
index 000000000..4c2875304
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Delete.png b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Delete.png
new file mode 100644
index 000000000..5f8635a6e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Start.png b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Start.png
new file mode 100644
index 000000000..4e9b34f67
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/ExtApp_Start.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/File.png b/mRemoteV1/CS/Resources/Images_FamFamFam/File.png
new file mode 100644
index 000000000..03ddd799f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/File.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Folder.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Folder.png
new file mode 100644
index 000000000..784e8fa48
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Folder.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Folder_Add.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Folder_Add.png
new file mode 100644
index 000000000..529fe8fe0
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Folder_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Help.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Help.png
new file mode 100644
index 000000000..5c870176d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Help.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Info.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Info.png
new file mode 100644
index 000000000..12cd1aef9
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Info.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance.png
new file mode 100644
index 000000000..c32d25c16
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance_Default.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance_Default.png
new file mode 100644
index 000000000..eae300fd7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Inheritance_Default.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/JumpTo.png b/mRemoteV1/CS/Resources/Images_FamFamFam/JumpTo.png
new file mode 100644
index 000000000..29039e6a8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/JumpTo.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Keyboard.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Keyboard.png
new file mode 100644
index 000000000..898d402d7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Keyboard.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Link.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Link.png
new file mode 100644
index 000000000..25eacb7c2
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Link.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor.png
new file mode 100644
index 000000000..d040bd022
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor_GoTo.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor_GoTo.png
new file mode 100644
index 000000000..8af3eda9f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Monitor_GoTo.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/News.png b/mRemoteV1/CS/Resources/Images_FamFamFam/News.png
new file mode 100644
index 000000000..356c3b860
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/News.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Options.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Options.png
new file mode 100644
index 000000000..5c8213fef
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Options.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Page.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Page.png
new file mode 100644
index 000000000..813f712f7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Page.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Add.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Add.png
new file mode 100644
index 000000000..62037221c
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Close.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Close.png
new file mode 100644
index 000000000..4bd45f131
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Panel_Close.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Panels.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Panels.png
new file mode 100644
index 000000000..b4aaad9a4
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Panels.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Pause.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Pause.png
new file mode 100644
index 000000000..2d9ce9c4e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Pause.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Play.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Play.png
new file mode 100644
index 000000000..f8c8ec683
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Play.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/PortScan.png b/mRemoteV1/CS/Resources/Images_FamFamFam/PortScan.png
new file mode 100644
index 000000000..b80ec6d9d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/PortScan.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Properties.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Properties.png
new file mode 100644
index 000000000..abcd93689
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Properties.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Properties_Default.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Properties_Default.png
new file mode 100644
index 000000000..2a3e5c4df
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Properties_Default.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Quit.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Quit.png
new file mode 100644
index 000000000..41676a0a5
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Quit.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Refresh.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Refresh.png
new file mode 100644
index 000000000..0de26566d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Refresh.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/SSHTransfer.png b/mRemoteV1/CS/Resources/Images_FamFamFam/SSHTransfer.png
new file mode 100644
index 000000000..258c16c63
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/SSHTransfer.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Save.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Save.png
new file mode 100644
index 000000000..99d532e8b
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Save.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot.png
new file mode 100644
index 000000000..4a158fef7
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Add.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Add.png
new file mode 100644
index 000000000..d6d3f8564
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Add.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Copy.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Copy.png
new file mode 100644
index 000000000..d9591c13f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Copy.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Delete.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Delete.png
new file mode 100644
index 000000000..cca9f535d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Save.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Save.png
new file mode 100644
index 000000000..777fb5d2e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Screenshot_Save.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Search.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Search.png
new file mode 100644
index 000000000..cf3d97f75
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Search.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Session_LogOff.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Session_LogOff.png
new file mode 100644
index 000000000..acbb5630e
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Session_LogOff.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Sessions.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Sessions.png
new file mode 100644
index 000000000..c1a52a520
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Sessions.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/SmartSize.png b/mRemoteV1/CS/Resources/Images_FamFamFam/SmartSize.png
new file mode 100644
index 000000000..ce27fe3a0
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/SmartSize.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Tools.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Tools.png
new file mode 100644
index 000000000..dbac6eae8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Tools.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Update.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Update.png
new file mode 100644
index 000000000..8850a8355
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Update.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/View.png b/mRemoteV1/CS/Resources/Images_FamFamFam/View.png
new file mode 100644
index 000000000..00818f636
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/View.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Warning_Small.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Warning_Small.png
new file mode 100644
index 000000000..628cf2dae
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Warning_Small.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/Website.png b/mRemoteV1/CS/Resources/Images_FamFamFam/Website.png
new file mode 100644
index 000000000..b8edc1265
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/Website.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/application_side_tree.png b/mRemoteV1/CS/Resources/Images_FamFamFam/application_side_tree.png
new file mode 100644
index 000000000..f04a52b3d
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/application_side_tree.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/arrow_out.png b/mRemoteV1/CS/Resources/Images_FamFamFam/arrow_out.png
new file mode 100644
index 000000000..2e9bc42be
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/arrow_out.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/cog.png b/mRemoteV1/CS/Resources/Images_FamFamFam/cog.png
new file mode 100644
index 000000000..67de2c6cc
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/cog.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/cog_error.png b/mRemoteV1/CS/Resources/Images_FamFamFam/cog_error.png
new file mode 100644
index 000000000..47667430a
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/cog_error.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/database.png b/mRemoteV1/CS/Resources/Images_FamFamFam/database.png
new file mode 100644
index 000000000..3d09261a2
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/database.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/key_delete.png b/mRemoteV1/CS/Resources/Images_FamFamFam/key_delete.png
new file mode 100644
index 000000000..00dec80d8
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/key_delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_delete.png b/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_delete.png
new file mode 100644
index 000000000..37332563f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_delete.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_go.png b/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_go.png
new file mode 100644
index 000000000..8af3eda9f
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/monitor_go.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/page_copy.png b/mRemoteV1/CS/Resources/Images_FamFamFam/page_copy.png
new file mode 100644
index 000000000..195dc6d6c
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/page_copy.png differ
diff --git a/mRemoteV1/CS/Resources/Images_FamFamFam/user_comment.png b/mRemoteV1/CS/Resources/Images_FamFamFam/user_comment.png
new file mode 100644
index 000000000..e54ebebaf
Binary files /dev/null and b/mRemoteV1/CS/Resources/Images_FamFamFam/user_comment.png differ
diff --git a/mRemoteV1/CS/Resources/Update/mRemote_Update.txt b/mRemoteV1/CS/Resources/Update/mRemote_Update.txt
new file mode 100644
index 000000000..775d7c306
--- /dev/null
+++ b/mRemoteV1/CS/Resources/Update/mRemote_Update.txt
@@ -0,0 +1,3 @@
+Version: 1.35
+dURL: http://downloads.sourceforge.net/mremote/mRemote_1.35_Setup.exe
+clURL: http://update.mRemote.org/mRemote_1.35_ChangeLog.txt
\ No newline at end of file
diff --git a/mRemoteV1/CS/Root/PuttySessions.Info.cs b/mRemoteV1/CS/Root/PuttySessions.Info.cs
new file mode 100644
index 000000000..e111a127c
--- /dev/null
+++ b/mRemoteV1/CS/Root/PuttySessions.Info.cs
@@ -0,0 +1,75 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+using mRemoteNG.Tools;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Root.PuttySessions
+{
+ public class Info : Root.Info
+ {
+ public Info() : base(RootType.PuttySessions)
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ _name = Language.strPuttySavedSessionsRootName;
+ _panel = My.Language.strGeneral;
+
+ }
+
+ private string _name; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedDefaultValue("strPuttySavedSessionsRootName")]
+ public override string Name
+ {
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ if (_name == value)
+ {
+ return ;
+ }
+ _name = value;
+ if (TreeNode != null)
+ {
+ TreeNode.Text = value;
+ }
+ Settings.PuttySavedSessionsName = value;
+ }
+ }
+
+ private string _panel; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNamePanel"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionPanel")]
+ public string Panel
+ {
+ get
+ {
+ return _panel;
+ }
+ set
+ {
+ if (_panel == value)
+ {
+ return ;
+ }
+ _panel = value;
+ Settings.PuttySavedSessionsPanel = value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/CS/Root/Root.Info.cs b/mRemoteV1/CS/Root/Root.Info.cs
new file mode 100644
index 000000000..12873da2c
--- /dev/null
+++ b/mRemoteV1/CS/Root/Root.Info.cs
@@ -0,0 +1,82 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+using mRemoteNG.Tools;
+using System.ComponentModel;
+//using mRemoteNG.Tools.LocalizedAttributes;
+
+
+namespace mRemoteNG.Root
+{
+ [DefaultProperty("Name")]public class Info
+ {
+#region Constructors
+ public Info(RootType rootType)
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ _name = My.Language.strConnections;
+
+ Type = rootType;
+ }
+#endregion
+
+#region Public Properties
+ private string _name; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ Browsable(true),
+ LocalizedAttributes.LocalizedDefaultValue("strConnections"),
+ LocalizedAttributes.LocalizedDisplayName("strPropertyNameName"),
+ LocalizedAttributes.LocalizedDescription("strPropertyDescriptionName")]
+ public virtual string Name
+ {
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ if (_name == value)
+ {
+ return ;
+ }
+ _name = value;
+ if (TreeNode != null)
+ {
+ TreeNode.Name = value;
+ TreeNode.Text = value;
+ }
+ }
+ }
+
+ [LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 1),
+ Browsable(true),
+ LocalizedAttributes.LocalizedDisplayName("strPasswordProtect"),
+ TypeConverter(typeof(Tools.Misc.YesNoTypeConverter))]
+ public bool Password { get; set; }
+
+ [Browsable(false)]public string PasswordString {get; set;}
+
+ [Browsable(false)]public RootType Type {get; set;}
+
+ [Browsable(false)]public TreeNode TreeNode {get; set;}
+#endregion
+
+#region Public Enumerations
+ public enum RootType
+ {
+ Connection,
+ Credential,
+ PuttySessions
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Security/Security.Crypt.cs b/mRemoteV1/CS/Security/Security.Crypt.cs
new file mode 100644
index 000000000..8ad2c6473
--- /dev/null
+++ b/mRemoteV1/CS/Security/Security.Crypt.cs
@@ -0,0 +1,125 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using System.Security.Cryptography;
+using System.Text;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Security
+{
+ public class Crypt
+ {
+ public static string Encrypt(string StrToEncrypt, string StrSecret)
+ {
+ if (StrToEncrypt == "" || StrSecret == "")
+ {
+ return StrToEncrypt;
+ }
+
+ try
+ {
+ RijndaelManaged rd = new RijndaelManaged();
+
+ MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
+ byte[] key = md5.ComputeHash(Encoding.UTF8.GetBytes(StrSecret));
+
+ md5.Clear();
+ rd.Key = key;
+ rd.GenerateIV();
+
+ byte[] iv = rd.IV;
+ MemoryStream ms = new MemoryStream();
+
+ ms.Write(iv, 0, iv.Length);
+
+ CryptoStream cs = new CryptoStream(ms, rd.CreateEncryptor(), CryptoStreamMode.Write);
+ byte[] data = System.Text.Encoding.UTF8.GetBytes(StrToEncrypt);
+
+ cs.Write(data, 0, data.Length);
+ cs.FlushFinalBlock();
+
+ byte[] encdata = ms.ToArray();
+ cs.Close();
+ rd.Clear();
+
+ return Convert.ToBase64String(encdata);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strErrorEncryptionFailed, ex.Message));
+ }
+
+ return StrToEncrypt;
+ }
+
+ public static string Decrypt(string ciphertextBase64, string password)
+ {
+ if (string.IsNullOrEmpty(ciphertextBase64) || string.IsNullOrEmpty(password))
+ {
+ return ciphertextBase64;
+ }
+
+ try
+ {
+ string plaintext = "";
+
+ using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
+ {
+ using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
+ {
+ byte[] key = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
+ rijndaelManaged.Key = key;
+ }
+
+
+ byte[] ciphertext = Convert.FromBase64String(ciphertextBase64);
+
+ using (MemoryStream memoryStream = new MemoryStream(ciphertext))
+ {
+ const int ivLength = 16;
+ byte[] iv = new byte[ivLength - 1 + 1];
+ memoryStream.Read(iv, 0, ivLength);
+ rijndaelManaged.IV = iv;
+
+ using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(), CryptoStreamMode.Read))
+ {
+ using (StreamReader streamReader = new StreamReader(cryptoStream, System.Text.Encoding.UTF8, true))
+ {
+ plaintext = streamReader.ReadToEnd();
+ }
+
+ rijndaelManaged.Clear();
+ } // cryptoStream
+
+ } // memoryStream
+
+ } // rijndaelManaged
+
+
+ return plaintext;
+ }
+ catch (Exception ex)
+ {
+ // Ignore CryptographicException "Padding is invalid and cannot be removed." when password is incorrect.
+ if (!(ex is CryptographicException))
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(My.Language.strErrorDecryptionFailed, ex.Message));
+ }
+ }
+
+ return ciphertextBase64;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Security/Security.Impersonator.cs b/mRemoteV1/CS/Security/Security.Impersonator.cs
new file mode 100644
index 000000000..d520f3004
--- /dev/null
+++ b/mRemoteV1/CS/Security/Security.Impersonator.cs
@@ -0,0 +1,124 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+using System.Security.Principal;
+using System.Security.Permissions;
+//using mRemoteNG.App.Runtime;
+
+
+[assembly:SecurityPermissionAttribute(SecurityAction.RequestMinimum,UnmanagedCode=true)]
+[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum,Name="FullTrust")]
+
+namespace mRemoteNG.Security
+{
+ public class Impersonator
+ {
+#region Logon API
+ private const int LOGON32_PROVIDER_DEFAULT = 0;
+ private const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
+
+ private const int SecurityImpersonation = 2;
+
+ [DllImport("advapi32.dll", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
+ private static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
+
+ private const int FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x100;
+ private const int FORMAT_MESSAGE_IGNORE_INSERTS = 0x200;
+ private const int FORMAT_MESSAGE_FROM_SYSTEM = 0x1000;
+
+ [DllImport("kernel32.dll")]private static extern int FormatMessage(int dwFlags, ref IntPtr lpSource, int dwMessageId, int dwLanguageId, ref string lpBuffer, int nSize, ref IntPtr Arguments);
+
+ [DllImport("kernel32.dll", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
+ private static extern bool CloseHandle(IntPtr handle);
+
+ [DllImport("advapi32.dll", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)]
+ private static extern int DuplicateToken(IntPtr ExistingTokenHandle, int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);
+#endregion
+
+ private IntPtr tokenHandle = new IntPtr(0);
+ private WindowsImpersonationContext impersonatedUser = null;
+
+ // GetErrorMessage formats and returns an error message corresponding to the input errorCode.
+ private string GetErrorMessage(int errorCode)
+ {
+ int messageSize = 255;
+ string lpMsgBuf = "";
+ int dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;
+
+ IntPtr ptrlpSource = IntPtr.Zero;
+ IntPtr prtArguments = IntPtr.Zero;
+
+ int retVal = FormatMessage(dwFlags, ref ptrlpSource, errorCode, 0, ref lpMsgBuf, messageSize, ref prtArguments);
+ return lpMsgBuf.Trim(new char[] {char.Parse(Constants.vbCr), char.Parse(Constants.vbLf)});
+ }
+
+ [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]public void StartImpersonation(string DomainName, string UserName, string Password)
+ {
+ try
+ {
+ if (!(impersonatedUser == null))
+ {
+ throw (new Exception("Already impersonating a user."));
+ }
+
+ tokenHandle = IntPtr.Zero;
+
+ int returnValue = System.Convert.ToInt32(LogonUser(UserName, DomainName, Password, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref tokenHandle));
+
+ if (0 == returnValue)
+ {
+ int errCode = Marshal.GetLastWin32Error();
+ string errMsg = "LogonUser failed with error code: " + errCode.ToString() + "(" + GetErrorMessage(errCode) + ")";
+ ApplicationException exLogon = new ApplicationException(errMsg);
+ throw (exLogon);
+ }
+
+ WindowsIdentity newId = new WindowsIdentity(tokenHandle);
+ impersonatedUser = newId.Impersonate();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Starting Impersonation failed (Sessions feature will not work)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]public void StopImpersonation()
+ {
+ if (impersonatedUser == null)
+ {
+ return;
+ }
+
+ try
+ {
+ impersonatedUser.Undo(); // Stop impersonating the user.
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Stopping Impersonation failed" + Constants.vbNewLine + ex.Message, true);
+ throw;
+ }
+ finally
+ {
+
+ if (!System.IntPtr.op_Equality(tokenHandle, IntPtr.Zero))
+ {
+ CloseHandle(tokenHandle);
+ }
+
+ impersonatedUser = null;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Security/Security.Save.cs b/mRemoteV1/CS/Security/Security.Save.cs
new file mode 100644
index 000000000..a36d88692
--- /dev/null
+++ b/mRemoteV1/CS/Security/Security.Save.cs
@@ -0,0 +1,82 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Security
+{
+ public class Save
+ {
+ public Save(bool DisableEverything = false)
+ {
+ if (DisableEverything == false)
+ {
+ _Username = true;
+ _Password = true;
+ _Domain = true;
+ _Inheritance = true;
+ }
+ }
+
+ private bool _Username;
+public bool Username
+ {
+ get
+ {
+ return _Username;
+ }
+ set
+ {
+ _Username = value;
+ }
+ }
+
+ private bool _Password;
+public bool Password
+ {
+ get
+ {
+ return _Password;
+ }
+ set
+ {
+ _Password = value;
+ }
+ }
+
+ private bool _Domain;
+public bool Domain
+ {
+ get
+ {
+ return _Domain;
+ }
+ set
+ {
+ _Domain = value;
+ }
+ }
+
+ private bool _Inheritance;
+public bool Inheritance
+ {
+ get
+ {
+ return _Inheritance;
+ }
+ set
+ {
+ _Inheritance = value;
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Themes/ThemeInfo.cs b/mRemoteV1/CS/Themes/ThemeInfo.cs
new file mode 100644
index 000000000..f3bc562b9
--- /dev/null
+++ b/mRemoteV1/CS/Themes/ThemeInfo.cs
@@ -0,0 +1,466 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+//using mRemoteNG.Tools.LocalizedAttributes;
+using mRemoteNG.My;
+using mRemoteNG.Tools;
+
+
+namespace mRemoteNG.Themes
+{
+ public class ThemeInfo : ICloneable, INotifyPropertyChanged
+ {
+#region Public Methods
+ public ThemeInfo(string themeName = null)
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ _name = Language.strUnnamedTheme;
+
+ if (themeName != null)
+ {
+ Name = themeName;
+ }
+ }
+
+ public object Clone()
+ {
+ return MemberwiseClone();
+ }
+
+ public override string ToString()
+ {
+ return Name;
+ }
+
+ public override bool Equals(object obj)
+ {
+ ThemeInfo otherTheme = obj as ThemeInfo;
+ if (otherTheme == null)
+ {
+ return false;
+ }
+
+ Type themeInfoType = (new ThemeInfo()).GetType();
+ object myProperty = null;
+ object otherProperty = null;
+ foreach (System.Reflection.PropertyInfo propertyInfo in themeInfoType.GetProperties())
+ {
+ myProperty = propertyInfo.GetValue(this, null);
+ otherProperty = propertyInfo.GetValue(otherTheme, null);
+ if (!myProperty.Equals(otherProperty))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+#endregion
+
+#region Events
+ public event PropertyChangedEventHandler PropertyChanged;
+ protected void NotifyPropertyChanged(string propertyName)
+ {
+ if
+ (PropertyChanged != null)
+ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+ }
+#endregion
+
+#region Properties
+ private string _name; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [Browsable(false)]
+ public string Name
+ {
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ if (_name == value)
+ {
+ return ;
+ }
+ _name = value;
+ NotifyPropertyChanged("Name");
+ }
+ }
+
+#region General
+ private Color _windowBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameWindowBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionWindowBackgroundColor")]
+ public Color WindowBackgroundColor
+ {
+ get
+ {
+ return (_windowBackgroundColor);
+ }
+ set
+ {
+ if (_windowBackgroundColor == value)
+ {
+ return ;
+ }
+ _windowBackgroundColor = value;
+ NotifyPropertyChanged("WindowBackgroundColor");
+ }
+ }
+
+ private Color _menuBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameMenuBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionMenuBackgroundColor")]
+ public Color MenuBackgroundColor
+ {
+ get
+ {
+ return _menuBackgroundColor;
+ }
+ set
+ {
+ if (_menuBackgroundColor == value)
+ {
+ return ;
+ }
+ _menuBackgroundColor = value;
+ NotifyPropertyChanged("MenuBackgroundColor");
+ }
+ }
+
+ private Color _menuTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameMenuTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionMenuTextColor")]
+ public Color MenuTextColor
+ {
+ get
+ {
+ return _menuTextColor;
+ }
+ set
+ {
+ if (_menuTextColor == value)
+ {
+ return ;
+ }
+ _menuTextColor = value;
+ NotifyPropertyChanged("MenuTextColor");
+ }
+ }
+
+ private Color _toolbarBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1),
+ Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameToolbarBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionToolbarBackgroundColor")]
+ public Color ToolbarBackgroundColor
+ {
+ get
+ {
+ return _toolbarBackgroundColor;
+ }
+ set
+ {
+ if (_toolbarBackgroundColor == value || value.A < 255)
+ {
+ return ;
+ }
+ _toolbarBackgroundColor = value;
+ NotifyPropertyChanged("ToolbarBackgroundColor");
+ }
+ }
+
+ private Color _toolbarTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameToolbarTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionToolbarTextColor")]
+ public Color ToolbarTextColor
+ {
+ get
+ {
+ return _toolbarTextColor;
+ }
+ set
+ {
+ if (_toolbarTextColor == value)
+ {
+ return ;
+ }
+ _toolbarTextColor = value;
+ NotifyPropertyChanged("ToolbarTextColor");
+ }
+ }
+#endregion
+
+#region Connections Panel
+ private Color _connectionsPanelBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConnectionsPanelBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConnectionsPanelBackgroundColor")]
+ public Color ConnectionsPanelBackgroundColor
+ {
+ get
+ {
+ return _connectionsPanelBackgroundColor;
+ }
+ set
+ {
+ if (_connectionsPanelBackgroundColor == value || value.A < 255)
+ {
+ return ;
+ }
+ _connectionsPanelBackgroundColor = value;
+ NotifyPropertyChanged("ConnectionsPanelBackgroundColor");
+ }
+ }
+
+ private Color _connectionsPanelTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConnectionsPanelTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConnectionsPanelTextColor")]
+ public Color ConnectionsPanelTextColor
+ {
+ get
+ {
+ return _connectionsPanelTextColor;
+ }
+ set
+ {
+ if (_connectionsPanelTextColor == value)
+ {
+ return ;
+ }
+ _connectionsPanelTextColor = value;
+ NotifyPropertyChanged("ConnectionsPanelTextColor");
+ }
+ }
+
+ private Color _connectionsPanelTreeLineColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConnectionsPanelTreeLineColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConnectionsPanelTreeLineColor")]
+ public Color ConnectionsPanelTreeLineColor
+ {
+ get
+ {
+ return _connectionsPanelTreeLineColor;
+ }
+ set
+ {
+ if (_connectionsPanelTreeLineColor == value)
+ {
+ return ;
+ }
+ _connectionsPanelTreeLineColor = value;
+ NotifyPropertyChanged("ConnectionsPanelTreeLineColor");
+ }
+ }
+
+ private Color _searchBoxBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameSearchBoxBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionSearchBoxBackgroundColor")]
+ public Color SearchBoxBackgroundColor
+ {
+ get
+ {
+ return _searchBoxBackgroundColor;
+ }
+ set
+ {
+ if (_searchBoxBackgroundColor == value || value.A < 255)
+ {
+ return ;
+ }
+ _searchBoxBackgroundColor = value;
+ NotifyPropertyChanged("SearchBoxBackgroundColor");
+ }
+ }
+
+ private Color _searchBoxTextPromptColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel",2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameSearchBoxTextPromptColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionSearchBoxTextPromptColor")]
+ public Color SearchBoxTextPromptColor
+ {
+ get
+ {
+ return _searchBoxTextPromptColor;
+ }
+ set
+ {
+ if (_searchBoxTextPromptColor == value)
+ {
+ return ;
+ }
+ _searchBoxTextPromptColor = value;
+ NotifyPropertyChanged("SearchBoxTextPromptColor");
+ }
+ }
+
+ private Color _searchBoxTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameSearchBoxTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionSearchBoxTextColor")]
+ public Color SearchBoxTextColor
+ {
+ get
+ {
+ return _searchBoxTextColor;
+ }
+ set
+ {
+ if (_searchBoxTextColor == value)
+ {
+ return ;
+ }
+ _searchBoxTextColor = value;
+ NotifyPropertyChanged("SearchBoxTextColor");
+ }
+ }
+#endregion
+
+#region Config Panel
+ private Color _configPanelBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelBackgroundColor")]
+ public Color ConfigPanelBackgroundColor
+ {
+ get
+ {
+ return _configPanelBackgroundColor;
+ }
+ set
+ {
+ if (_configPanelBackgroundColor == value || value.A < 255)
+ {
+ return ;
+ }
+ _configPanelBackgroundColor = value;
+ NotifyPropertyChanged("ConfigPanelBackgroundColor");
+ }
+ }
+
+ private Color _configPanelTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelTextColor")]
+ public Color ConfigPanelTextColor
+ {
+ get
+ {
+ return _configPanelTextColor;
+ }
+ set
+ {
+ if (_configPanelTextColor == value)
+ {
+ return ;
+ }
+ _configPanelTextColor = value;
+ NotifyPropertyChanged("ConfigPanelTextColor");
+ }
+ }
+
+ private Color _configPanelCategoryTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelCategoryTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelCategoryTextColor")]
+ public Color ConfigPanelCategoryTextColor
+ {
+ get
+ {
+ return _configPanelCategoryTextColor;
+ }
+ set
+ {
+ if (_configPanelCategoryTextColor == value)
+ {
+ return ;
+ }
+ _configPanelCategoryTextColor = value;
+ NotifyPropertyChanged("ConfigPanelCategoryTextColor");
+ }
+ }
+
+ private Color _configPanelHelpBackgroundColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelHelpBackgroundColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelHelpBackgroundColor")]
+ public Color ConfigPanelHelpBackgroundColor
+ {
+ get
+ {
+ return _configPanelHelpBackgroundColor;
+ }
+ set
+ {
+ if (_configPanelHelpBackgroundColor == value || value.A < 255)
+ {
+ return ;
+ }
+ _configPanelHelpBackgroundColor = value;
+ NotifyPropertyChanged("ConfigPanelHelpBackgroundColor");
+ }
+ }
+
+ private Color _configPanelHelpTextColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelHelpTextColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelHelpTextColor")]
+ public Color ConfigPanelHelpTextColor
+ {
+ get
+ {
+ return _configPanelHelpTextColor;
+ }
+ set
+ {
+ if (_configPanelHelpTextColor == value)
+ {
+ return ;
+ }
+ _configPanelHelpTextColor = value;
+ NotifyPropertyChanged("ConfigPanelHelpTextColor");
+ }
+ }
+
+ private Color _configPanelGridLineColor; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [LocalizedAttributes.LocalizedCategory("strThemeCategoryConfigPanel", 3),
+ LocalizedAttributes.LocalizedDisplayName("strThemeNameConfigPanelGridLineColor"),
+ LocalizedAttributes.LocalizedDescription("strThemeDescriptionConfigPanelGridLineColor")]
+ public Color ConfigPanelGridLineColor
+ {
+ get
+ {
+ return _configPanelGridLineColor;
+ }
+ set
+ {
+ if (_configPanelGridLineColor == value)
+ {
+ return ;
+ }
+ _configPanelGridLineColor = value;
+ NotifyPropertyChanged("ConfigPanelGridLineColor");
+ }
+ }
+#endregion
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Themes/ThemeManager.cs b/mRemoteV1/CS/Themes/ThemeManager.cs
new file mode 100644
index 000000000..ce9b031a2
--- /dev/null
+++ b/mRemoteV1/CS/Themes/ThemeManager.cs
@@ -0,0 +1,163 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using System.ComponentModel;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Themes
+{
+ public class ThemeManager
+ {
+#region Public Methods
+ public static ThemeInfo LoadTheme(string themeName, bool setActive = true)
+ {
+ ThemeInfo loadedTheme = DefaultTheme;
+
+ if (!string.IsNullOrEmpty(themeName))
+ {
+ foreach (ThemeInfo theme in LoadThemes())
+ {
+ if (theme.Name == themeName)
+ {
+ loadedTheme = theme;
+ break;
+ }
+ }
+ }
+
+ if (setActive)
+ {
+ ActiveTheme = loadedTheme;
+ }
+ return loadedTheme;
+ }
+
+ public static List LoadThemes()
+ {
+ List themes = new List();
+ themes.Add(DefaultTheme);
+ try
+ {
+ themes.AddRange(ThemeSerializer.LoadFromXmlFile(Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName)));
+ }
+ catch (FileNotFoundException)
+ {
+ }
+
+ return themes;
+ }
+
+ public static void SaveThemes(List themes)
+ {
+ themes.Remove(DefaultTheme);
+ ThemeSerializer.SaveToXmlFile(themes, Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName));
+ }
+
+ public static void SaveThemes(ThemeInfo[] themes)
+ {
+ SaveThemes(new List(themes));
+ }
+
+ public static void SaveThemes(BindingList themes)
+ {
+ ThemeInfo[] themesArray = new ThemeInfo[themes.Count - 1 + 1];
+ themes.CopyTo(themesArray, 0);
+ SaveThemes(themesArray);
+ }
+#endregion
+
+#region Events
+ public delegate void ThemeChangedEventHandler();
+ private static ThemeChangedEventHandler ThemeChangedEvent;
+
+ public static event ThemeChangedEventHandler ThemeChanged
+ {
+ add
+ {
+ ThemeChangedEvent = (ThemeChangedEventHandler) System.Delegate.Combine(ThemeChangedEvent, value);
+ }
+ remove
+ {
+ ThemeChangedEvent = (ThemeChangedEventHandler) System.Delegate.Remove(ThemeChangedEvent, value);
+ }
+ }
+
+ protected static void NotifyThemeChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == "Name")
+ {
+ return ;
+ }
+ if (ThemeChangedEvent != null)
+ ThemeChangedEvent();
+ }
+#endregion
+
+#region Properties
+ // ReSharper disable InconsistentNaming
+ private static readonly ThemeInfo _defaultTheme = new ThemeInfo(Language.strDefaultTheme);
+ // ReSharper restore InconsistentNaming
+public static ThemeInfo DefaultTheme
+ {
+ get
+ {
+ return _defaultTheme;
+ }
+ }
+
+ private static ThemeInfo _activeTheme;
+ private static bool _activeThemeHandlerSet = false;
+public static ThemeInfo ActiveTheme
+ {
+ get
+ {
+ if (_activeTheme == null)
+ {
+ return DefaultTheme;
+ }
+ return _activeTheme;
+ }
+ set
+ {
+ // We need to set ActiveTheme to the new theme to make sure it references the right object.
+ // However, if both themes have the same properties, we don't need to raise a notification event.
+ bool needNotify = true;
+ if (_activeTheme != null)
+ {
+ if (_activeTheme.Equals(value))
+ {
+ needNotify = false;
+ }
+ }
+
+ if (_activeThemeHandlerSet)
+ {
+ _activeTheme.PropertyChanged -= NotifyThemeChanged;
+ }
+
+ _activeTheme = value;
+
+ _activeTheme.PropertyChanged += NotifyThemeChanged;
+ _activeThemeHandlerSet = true;
+
+ if (needNotify)
+ {
+ NotifyThemeChanged(_activeTheme, new PropertyChangedEventArgs(""));
+ }
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Themes/ThemeSerializer.cs b/mRemoteV1/CS/Themes/ThemeSerializer.cs
new file mode 100644
index 000000000..d31529508
--- /dev/null
+++ b/mRemoteV1/CS/Themes/ThemeSerializer.cs
@@ -0,0 +1,159 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using System.Xml;
+using System.Reflection;
+
+
+namespace mRemoteNG.Themes
+{
+ public class ThemeSerializer
+ {
+ public static void SaveToXmlFile(ThemeInfo themeInfo, string filename)
+ {
+ List themeList = new List();
+ themeList.Add(themeInfo);
+ SaveToXmlFile(themeList, filename);
+ }
+
+ public static void SaveToXmlFile(List themes, string filename)
+ {
+ string tempFileName = Path.GetTempFileName();
+ XmlTextWriter xmlTextWriter = new XmlTextWriter(tempFileName, System.Text.Encoding.UTF8);
+
+ xmlTextWriter.Formatting = Formatting.Indented;
+ xmlTextWriter.Indentation = 4;
+
+ xmlTextWriter.WriteStartDocument();
+
+ xmlTextWriter.WriteStartElement("mRemoteNG");
+
+ xmlTextWriter.WriteStartElement("FileInfo");
+ xmlTextWriter.WriteAttributeString("Version", "1.0");
+ xmlTextWriter.WriteElementString("FileType", "Theme");
+ xmlTextWriter.WriteElementString("FileTypeVersion", "1.0");
+ xmlTextWriter.WriteEndElement(); // FileInfo
+
+ Type themeType = (new ThemeInfo()).GetType();
+ Type colorType = (new Color()).GetType();
+ Color color = new Color();
+ foreach (ThemeInfo themeInfo in themes)
+ {
+ xmlTextWriter.WriteStartElement("Theme");
+ xmlTextWriter.WriteAttributeString("Name", themeInfo.Name);
+
+ foreach (PropertyInfo propertyInfo in themeType.GetProperties())
+ {
+ if (!(propertyInfo.PropertyType == colorType))
+ {
+ continue;
+ }
+ color = propertyInfo.GetValue(themeInfo, null);
+ xmlTextWriter.WriteStartElement("Color");
+ xmlTextWriter.WriteAttributeString("Name", propertyInfo.Name);
+ xmlTextWriter.WriteAttributeString("Value", EncodeColorName(color));
+ xmlTextWriter.WriteEndElement(); // Color
+ }
+
+ xmlTextWriter.WriteEndElement(); // Theme
+ }
+
+ xmlTextWriter.WriteEndElement(); // mRemoteNG
+
+ xmlTextWriter.Close();
+
+ File.Delete(filename);
+ File.Move(tempFileName, filename);
+ }
+
+ public static List LoadFromXmlFile(string filename)
+ {
+ XmlDocument xmlDocument = new XmlDocument();
+ xmlDocument.Load(filename);
+
+ XmlNode fileInfoNode = xmlDocument.SelectSingleNode("/mRemoteNG/FileInfo");
+ Version fileInfoVersion = new Version(fileInfoNode.Attributes["Version"].Value);
+ if (fileInfoVersion > new Version(1, 0))
+ {
+ throw (new FileFormatException(string.Format("Unsupported FileInfo version ({0}).", fileInfoVersion)));
+ }
+
+ XmlNode fileTypeNode = fileInfoNode.SelectSingleNode("./FileType");
+ string fileType = fileTypeNode.InnerText;
+ if (!(fileType == "Theme"))
+ {
+ throw (new FileFormatException(string.Format("Incorrect FileType ({0}). Expected \"Theme\".", fileType)));
+ }
+
+ Version fileTypeVersion = new Version(fileInfoNode.SelectSingleNode("./FileTypeVersion").InnerText);
+ if (fileTypeVersion > new Version(1, 0))
+ {
+ throw (new FileFormatException(string.Format("Unsupported FileTypeVersion ({0}).", fileTypeVersion)));
+ }
+
+ XmlNodeList themeNodes = xmlDocument.SelectNodes("/mRemoteNG/Theme");
+ List themes = new List();
+ ThemeInfo themeInfo = default(ThemeInfo);
+ Type themeType = (new ThemeInfo()).GetType();
+ Type colorType = (new Color()).GetType();
+ string colorName = "";
+ string colorValue = "";
+ PropertyInfo propertyInfo = default(PropertyInfo);
+ foreach (XmlNode themeNode in themeNodes)
+ {
+ themeInfo = new ThemeInfo();
+ themeInfo.Name = themeNode.Attributes["Name"].Value;
+ foreach (XmlNode colorNode in themeNode.SelectNodes("./Color"))
+ {
+ colorName = colorNode.Attributes["Name"].Value;
+ colorValue = colorNode.Attributes["Value"].Value;
+ propertyInfo = themeType.GetProperty(colorName);
+ if (propertyInfo == null || !(propertyInfo.PropertyType == colorType))
+ {
+ continue;
+ }
+ propertyInfo.SetValue(themeInfo, DecodeColorName(colorValue), null);
+ }
+ themes.Add(themeInfo);
+ }
+
+ return themes;
+ }
+
+ private static string EncodeColorName(Color color)
+ {
+ if (color.IsNamedColor)
+ {
+ return color.Name;
+ }
+ else
+ {
+ return Conversion.Hex(color.ToArgb()).PadLeft(8, '0');
+ }
+ }
+
+ private static Color DecodeColorName(string name)
+ {
+ System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("^[0-9a-fA-F]{8}$");
+ if (regex.Match(name).Success)
+ {
+ return Color.FromArgb(Convert.ToInt32(name, 16));
+ }
+ else
+ {
+ return Color.FromName(name);
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Authenticode.cs b/mRemoteV1/CS/Tools/Authenticode.cs
new file mode 100644
index 000000000..d21352a90
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Authenticode.cs
@@ -0,0 +1,308 @@
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+using System.IO;
+using System.Security.Cryptography.X509Certificates;
+using System.Runtime.InteropServices;
+using System.Security.Cryptography;
+using System.Reflection;
+using System.ComponentModel;
+
+
+namespace mRemoteNG.Tools
+{
+ public class Authenticode
+ {
+ #region Public Methods
+ public Authenticode(string filePath)
+ {
+ this.FilePath = filePath;
+ }
+
+ public StatusValue Verify()
+ {
+ IntPtr trustFileInfoPointer = default(IntPtr);
+ IntPtr trustDataPointer = default(IntPtr);
+ try
+ {
+ FileInfo fileInfo = new FileInfo(FilePath);
+ if (!fileInfo.Exists)
+ {
+ _status = StatusValue.FileNotExist;
+ return _status;
+ }
+ if (fileInfo.Length == 0)
+ {
+ _status = StatusValue.FileEmpty;
+ return _status;
+ }
+
+ if (RequireThumbprintMatch)
+ {
+ if (string.IsNullOrEmpty(ThumbprintToMatch))
+ {
+ _status = StatusValue.NoThumbprintToMatch;
+ return _status;
+ }
+
+ X509Certificate certificate = X509Certificate.CreateFromSignedFile(FilePath);
+ X509Certificate2 certificate2 = new X509Certificate2(certificate);
+ _thumbprint = certificate2.Thumbprint;
+ if (!(_thumbprint == ThumbprintToMatch))
+ {
+ _status = StatusValue.ThumbprintNotMatch;
+ return _status;
+ }
+ }
+
+ Win32.WINTRUST_FILE_INFO trustFileInfo = new Win32.WINTRUST_FILE_INFO();
+ trustFileInfo.pcwszFilePath = FilePath;
+ trustFileInfoPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(trustFileInfo));
+ Marshal.StructureToPtr(trustFileInfo, trustFileInfoPointer, false);
+
+ Win32.WINTRUST_DATA trustData = new Win32.WINTRUST_DATA();
+ trustData.dwUIChoice = Display;
+ trustData.fdwRevocationChecks = Win32.WTD_REVOKE_WHOLECHAIN;
+ trustData.dwUnionChoice = Win32.WTD_CHOICE_FILE;
+ trustData.pFile = trustFileInfoPointer;
+ trustData.dwStateAction = Win32.WTD_STATEACTION_IGNORE;
+ trustData.dwProvFlags = Win32.WTD_DISABLE_MD2_MD4;
+ trustData.dwUIContext = DisplayContext;
+ trustDataPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(trustData));
+ Marshal.StructureToPtr(trustData, trustDataPointer, false);
+
+ IntPtr windowHandle = default(IntPtr);
+ if (DisplayParentForm == null)
+ {
+ windowHandle = IntPtr.Zero;
+ }
+ else
+ {
+ windowHandle = DisplayParentForm.Handle;
+ }
+
+ _trustProviderErrorCode = Win32.WinVerifyTrust(windowHandle, Win32.WINTRUST_ACTION_GENERIC_VERIFY_V2, trustDataPointer);
+ switch (_trustProviderErrorCode)
+ {
+ case Win32.TRUST_E_NOSIGNATURE:
+ _status = StatusValue.NoSignature;
+ break;
+ case Win32.TRUST_E_SUBJECT_NOT_TRUSTED:
+ break;
+
+ }
+ if (!(_trustProviderErrorCode == 0))
+ {
+ _status = StatusValue.TrustProviderError;
+ return _status;
+ }
+
+ _status = StatusValue.Verified;
+ return _status;
+ }
+ catch (CryptographicException ex)
+ {
+ PropertyInfo hResultProperty = ex.GetType().GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
+ int hResult = System.Convert.ToInt32(hResultProperty.GetValue(ex, null));
+ if (hResult == Win32.CRYPT_E_NO_MATCH)
+ {
+ _status = StatusValue.NoSignature;
+ return _status;
+ }
+ else
+ {
+ _status = StatusValue.UnhandledException;
+ Exception = ex;
+ return _status;
+ }
+ }
+ catch (Exception ex)
+ {
+ _status = StatusValue.UnhandledException;
+ Exception = ex;
+ return _status;
+ }
+ finally
+ {
+ if (!(trustDataPointer == IntPtr.Zero))
+ {
+ Marshal.FreeCoTaskMem(trustDataPointer);
+ }
+ if (!(trustFileInfoPointer == IntPtr.Zero))
+ {
+ Marshal.FreeCoTaskMem(trustFileInfoPointer);
+ }
+ }
+ }
+ #endregion
+
+ #region Public Properties
+ private DisplayValue _Display = DisplayValue.None;
+ public DisplayValue Display
+ {
+ get { return _Display; }
+ set { _Display = value; }
+ }
+ public DisplayContextValue DisplayContext {get; set;}
+ public Form DisplayParentForm {get; set;}
+ public Exception Exception {get; set;}
+ public string FilePath {get; set;}
+ public bool RequireThumbprintMatch {get; set;}
+
+ private StatusValue _status;
+ public StatusValue Status
+ {
+ get { return _status; }
+ }
+
+ public string StatusMessage
+ {
+ get
+ {
+ switch (Status)
+ {
+ case StatusValue.Verified:
+ return "The file was verified successfully.";
+ case StatusValue.FileNotExist:
+ return "The specified file does not exist.";
+ case StatusValue.FileEmpty:
+ return "The specified file is empty.";
+ case StatusValue.NoSignature:
+ return "The specified file is not digitally signed.";
+ case StatusValue.NoThumbprintToMatch:
+ return "A thumbprint match is required but no thumbprint to match against was specified.";
+ case StatusValue.ThumbprintNotMatch:
+ return string.Format("The thumbprint does not match. {0} {1} {2}.", _thumbprint, Strings.ChrW(0x2260), ThumbprintToMatch);
+ case StatusValue.TrustProviderError:
+ Win32Exception ex = new Win32Exception(_trustProviderErrorCode);
+ return string.Format("The trust provider returned an error. {0}", ex.Message);
+ case StatusValue.UnhandledException:
+ return string.Format("An unhandled exception occurred. {0}", Exception.Message);
+ default:
+ return "The status is unknown.";
+ }
+ }
+ }
+
+ private string _thumbprint;
+ public string Thumbprint
+ {
+ get { return _thumbprint; }
+ }
+
+ public string ThumbprintToMatch {get; set;}
+
+ private int _trustProviderErrorCode;
+ public int TrustProviderErrorCode
+ {
+ get { return _trustProviderErrorCode; }
+ }
+ #endregion
+
+ #region Public Enums
+ public enum DisplayValue : uint
+ {
+ Unknown = 0,
+ All = Win32.WTD_UI_ALL,
+ None = Win32.WTD_UI_NONE,
+ NoBad = Win32.WTD_UI_NOBAD,
+ NoGood = Win32.WTD_UI_NOGOOD
+ }
+
+ public enum DisplayContextValue : uint
+ {
+ Execute = Win32.WTD_UICONTEXT_EXECUTE,
+ Install = Win32.WTD_UICONTEXT_INSTALL
+ }
+
+ public enum StatusValue
+ {
+ Unknown = 0,
+ Verified,
+ FileNotExist,
+ FileEmpty,
+ NoSignature,
+ NoThumbprintToMatch,
+ ThumbprintNotMatch,
+ TrustProviderError,
+ UnhandledException
+ }
+ #endregion
+
+ #region Protected Classes
+ protected class Win32
+ {
+ // ReSharper disable InconsistentNaming
+ [DllImport("wintrust.dll", CharSet = CharSet.Auto, SetLastError = false)]
+ public static extern int WinVerifyTrust([In()]IntPtr hWnd, [In(), MarshalAs(UnmanagedType.LPStruct)]Guid pgActionOID, [In()]IntPtr pWVTData);
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ public class WINTRUST_DATA
+ {
+ public WINTRUST_DATA()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ cbStruct = (uint)Marshal.SizeOf(typeof(WINTRUST_DATA));
+ }
+ public UInt32 cbStruct; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ public IntPtr pPolicyCallbackData;
+ public IntPtr pSIPClientData;
+ public UInt32 dwUIChoice;
+ public UInt32 fdwRevocationChecks;
+ public UInt32 dwUnionChoice;
+ public IntPtr pFile;
+ public UInt32 dwStateAction;
+ public IntPtr hWVTStateData;
+ public IntPtr pwszURLReference;
+ public UInt32 dwProvFlags;
+ public UInt32 dwUIContext;
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ public class WINTRUST_FILE_INFO
+ {
+ public WINTRUST_FILE_INFO()
+ {
+ // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#.
+ cbStruct = (uint)Marshal.SizeOf(typeof(WINTRUST_FILE_INFO));
+ }
+ public UInt32 cbStruct; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
+ [MarshalAs(UnmanagedType.LPTStr)]public string pcwszFilePath;
+ public IntPtr hFile;
+ public IntPtr pgKnownSubject;
+ }
+
+ public const int CRYPT_E_NO_MATCH = unchecked ((int) 0x80092009);
+
+ public const int TRUST_E_SUBJECT_NOT_TRUSTED = unchecked ((int) 0x800B0004);
+ public const int TRUST_E_NOSIGNATURE = unchecked ((int) 0x800B0100);
+
+ public static readonly Guid WINTRUST_ACTION_GENERIC_VERIFY_V2 = new Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}");
+
+ public const UInt32 WTD_CHOICE_FILE = 1;
+ public const UInt32 WTD_DISABLE_MD2_MD4 = 0x2000;
+ public const UInt32 WTD_REVOKE_WHOLECHAIN = 1;
+
+ public const UInt32 WTD_STATEACTION_IGNORE = 0x0;
+ public const UInt32 WTD_STATEACTION_VERIFY = 0x1;
+ public const UInt32 WTD_STATEACTION_CLOSE = 0x2;
+
+ public const UInt32 WTD_UI_ALL = 1;
+ public const UInt32 WTD_UI_NONE = 2;
+ public const UInt32 WTD_UI_NOBAD = 3;
+ public const UInt32 WTD_UI_NOGOOD = 4;
+
+ public const UInt32 WTD_UICONTEXT_EXECUTE = 0;
+ public const UInt32 WTD_UICONTEXT_INSTALL = 1;
+ // ReSharper restore InconsistentNaming
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/CS/Tools/CommandLineArguments.cs b/mRemoteV1/CS/Tools/CommandLineArguments.cs
new file mode 100644
index 000000000..582cf507e
--- /dev/null
+++ b/mRemoteV1/CS/Tools/CommandLineArguments.cs
@@ -0,0 +1,158 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Text.RegularExpressions;
+
+
+namespace mRemoteNG.Tools
+{
+ // Adapted from http://qntm.org/cmd
+ public class CommandLineArguments
+ {
+#region Protected Fields
+ protected List Arguments = new List();
+#endregion
+
+#region Public Properties
+ public bool EscapeForShell {get; set;}
+#endregion
+
+#region Public Methods
+ public void Add(string argument, bool forceQuotes = false)
+ {
+ Arguments.Add(new argument(argument, false, forceQuotes));
+ }
+
+ public void Add(params string[] argumentArray)
+ {
+ foreach (string argument in argumentArray)
+ {
+ Add(argument);
+ }
+ }
+
+ public void AddFileName(string fileName, bool forceQuotes = false)
+ {
+ Arguments.Add(new Argument(fileName, true, forceQuotes));
+ }
+
+ public override string ToString()
+ {
+ List processedArguments = new List();
+
+ foreach (Argument argument in Arguments)
+ {
+ processedArguments.Add(ProcessArgument(argument, EscapeForShell));
+ }
+
+ return string.Join(" ", processedArguments.ToArray());
+ }
+
+ public static string PrefixFileName(string argument)
+ {
+ if (string.IsNullOrEmpty(argument))
+ {
+ return argument;
+ }
+
+ if (argument.StartsWith("-"))
+ {
+ argument = ".\\" + argument;
+ }
+
+ return argument;
+ }
+
+ public static string EscapeBackslashes(string argument)
+ {
+ if (string.IsNullOrEmpty(argument))
+ {
+ return argument;
+ }
+
+ // Sequence of backslashes followed by a double quote:
+ // double up all the backslashes and escape the double quote
+ return Regex.Replace(argument, "(\\\\*)\"", "$1$1\\\"");
+ }
+
+ public static string EscapeBackslashesForTrailingQuote(string argument)
+ {
+ if (string.IsNullOrEmpty(argument))
+ {
+ return argument;
+ }
+
+ // Sequence of backslashes followed by the end of the string
+ // (which will become a double quote):
+ // double up all the backslashes
+ return Regex.Replace(argument, "(\\\\*)$", "$1$1");
+ }
+
+ public static string QuoteArgument(string argument, bool forceQuotes = false)
+ {
+ if (!forceQuotes && !string.IsNullOrEmpty(argument) && !argument.Contains(" "))
+ {
+ return argument;
+ }
+
+ return "\"" + EscapeBackslashesForTrailingQuote(argument) + "\"";
+ }
+
+ public static string EscapeShellMetacharacters(string argument)
+ {
+ if (string.IsNullOrEmpty(argument))
+ {
+ return argument;
+ }
+
+ return Regex.Replace(argument, "([()%!^\"<>&|])", "^$1");
+ }
+#endregion
+
+#region Protected Methods
+ protected static string ProcessArgument(Argument argument, bool escapeForShell = false)
+ {
+ string text = argument.Text;
+
+ if (argument.IsFileName)
+ {
+ text = PrefixFileName(text);
+ }
+ text = EscapeBackslashes(text);
+ text = QuoteArgument(text, argument.ForceQuotes);
+ if (escapeForShell)
+ {
+ text = EscapeShellMetacharacters(text);
+ }
+
+ return text;
+ }
+#endregion
+
+#region Protected Classes
+ protected class Argument
+ {
+ public Argument(string text, bool isFileName = false, bool forceQuotes = false)
+ {
+ this.Text = text;
+ this.IsFileName = isFileName;
+ this.ForceQuotes = forceQuotes;
+ }
+
+ public string Text {get; set;}
+ public bool IsFileName {get; set;}
+ public bool ForceQuotes {get; set;}
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Tools/EnumWindows.cs b/mRemoteV1/CS/Tools/EnumWindows.cs
new file mode 100644
index 000000000..ed8f296a5
--- /dev/null
+++ b/mRemoteV1/CS/Tools/EnumWindows.cs
@@ -0,0 +1,63 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+
+namespace mRemoteNG.Tools
+{
+ public class EnumWindows
+ {
+ public static List EnumWindows_Renamed()
+ {
+ List handleList = new List();
+
+ HandleLists.Add(handleList);
+ int handleIndex = HandleLists.IndexOf(handleList);
+ Win32.EnumWindows(EnumCallback, handleIndex);
+ HandleLists.Remove(handleList);
+
+ return handleList;
+ }
+
+ public static List EnumChildWindows(IntPtr hWndParent)
+ {
+ List handleList = new List();
+
+ HandleLists.Add(handleList);
+ int handleIndex = HandleLists.IndexOf(handleList);
+ Win32.EnumChildWindows(hWndParent, EnumCallback, handleIndex);
+ HandleLists.Remove(handleList);
+
+ return handleList;
+ }
+
+ private static readonly List> HandleLists = new List>();
+
+ private static bool EnumCallback(int hwnd, int lParam)
+ {
+ HandleLists[lParam].Add(hwnd);
+ return true;
+ }
+
+ // ReSharper disable ClassNeverInstantiated.Local
+ private class Win32
+ {
+ // ReSharper restore ClassNeverInstantiated.Local
+ public delegate bool EnumWindowsProc(int hwnd, int lParam);
+ [DllImport("user32", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
+ public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, int lParam);
+ [DllImport("user32", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
+ public static extern bool EnumChildWindows(IntPtr hWndParent, EnumWindowsProc lpEnumFunc, int lParam);
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/EnvironmentInfo.cs b/mRemoteV1/CS/Tools/EnvironmentInfo.cs
new file mode 100644
index 000000000..3e9eea7e1
--- /dev/null
+++ b/mRemoteV1/CS/Tools/EnvironmentInfo.cs
@@ -0,0 +1,70 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+
+
+namespace mRemoteNG.Tools
+{
+ public class EnvironmentInfo
+ {
+public static bool IsWow64
+ {
+ get
+ {
+ Win32.IsWow64ProcessDelegate isWow64ProcessDelegate = GetIsWow64ProcessDelegate();
+ if (isWow64ProcessDelegate == null)
+ {
+ return false;
+ }
+
+ bool isWow64Process = false;
+ bool result = System.Convert.ToBoolean(isWow64ProcessDelegate.Invoke(Process.GetCurrentProcess().Handle, isWow64Process));
+ if (!result)
+ {
+ return false;
+ }
+
+ return isWow64Process;
+ }
+ }
+
+ private static Win32.IsWow64ProcessDelegate GetIsWow64ProcessDelegate()
+ {
+ IntPtr moduleHandle = Win32.LoadLibrary("kernel32");
+ if (moduleHandle == IntPtr.Zero)
+ {
+ return null;
+ }
+
+ IntPtr functionPointer = Win32.GetProcAddress(moduleHandle, "IsWow64Process");
+ if (functionPointer == IntPtr.Zero)
+ {
+ return null;
+ }
+
+ return Marshal.GetDelegateForFunctionPointer(functionPointer, typeof(Win32.IsWow64ProcessDelegate));
+ }
+
+ protected class Win32
+ {
+ // ReSharper disable InconsistentNaming
+ [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]public static extern IntPtr LoadLibrary([In(), MarshalAs(UnmanagedType.LPTStr)]string lpFileName);
+
+ [DllImport("kernel32", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]public static extern IntPtr GetProcAddress([In()]IntPtr hModule, [In(), MarshalAs(UnmanagedType.LPStr)]string lpProcName);
+
+ public delegate bool IsWow64ProcessDelegate([In()]IntPtr hProcess, ref bool Wow64Process);
+ // ReSharper restore InconsistentNaming
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/ExternalTool.cs b/mRemoteV1/CS/Tools/ExternalTool.cs
new file mode 100644
index 000000000..524ce7b10
--- /dev/null
+++ b/mRemoteV1/CS/Tools/ExternalTool.cs
@@ -0,0 +1,466 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+using System.IO;
+using System.ComponentModel;
+
+
+namespace mRemoteNG.Tools
+{
+ public class ExternalTool
+ {
+#region Public Properties
+ public string DisplayName {get; set;}
+ public string FileName {get; set;}
+ public bool WaitForExit {get; set;}
+ public string Arguments {get; set;}
+ public bool TryIntegrate {get; set;}
+ public Connection.Info ConnectionInfo {get; set;}
+
+ public Icon Icon
+ {
+ get
+ {
+ if (File.Exists(FileName))
+ {
+ return Misc.GetIconFromFile(FileName);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+
+ public Image Image
+ {
+ get
+ {
+ if (Icon != null)
+ {
+ return Icon.ToBitmap();
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+#endregion
+
+#region Constructors
+ public ExternalTool(string displayName = "", string fileName = "", string arguments = "")
+ {
+ this.DisplayName = displayName;
+ this.FileName = fileName;
+ this.Arguments = arguments;
+ }
+#endregion
+
+#region Public Methods
+ // Start external app
+ public void Start(Connection.Info startConnectionInfo = null)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(FileName))
+ {
+ throw (new InvalidOperationException("FileName cannot be blank."));
+ }
+
+ ConnectionInfo = startConnectionInfo;
+
+ if (TryIntegrate)
+ {
+ StartIntegrated();
+ return ;
+ }
+
+ Process process = new Process();
+ process.StartInfo.UseShellExecute = true;
+ process.StartInfo.FileName = ParseArguments(FileName);
+ process.StartInfo.Arguments = ParseArguments(Arguments);
+
+ process.Start();
+
+ if (WaitForExit)
+ {
+ process.WaitForExit();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("ExternalApp.Start() failed.", ex);
+ }
+ }
+
+ // Start external app integrated
+ public void StartIntegrated()
+ {
+ try
+ {
+ Connection.Info newConnectionInfo = default(Connection.Info);
+ if (ConnectionInfo == null)
+ {
+ newConnectionInfo = new Connection.Info();
+ }
+ else
+ {
+ newConnectionInfo = ConnectionInfo.Copy();
+ }
+
+ newConnectionInfo.Protocol = Connection.Protocol.Protocols.IntApp;
+ newConnectionInfo.ExtApp = DisplayName;
+ newConnectionInfo.Name = DisplayName;
+ newConnectionInfo.Panel = My.Language.strMenuExternalTools;
+
+ OpenConnection(newConnectionInfo);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "ExternalApp.StartIntegrated() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ private enum EscapeType
+ {
+ All,
+ ShellMetacharacters,
+ None
+ }
+
+ private struct Replacement
+ {
+ public Replacement(int start, int length, string value)
+ {
+ this.Start = start;
+ this.Length = length;
+ this.Value = value;
+ }
+
+ public int Start {get; set;}
+ public int Length {get; set;}
+ public string Value {get; set;}
+ }
+
+ public string ParseArguments(string input)
+ {
+ int index = 0;
+ List replacements = new List();
+
+ do
+ {
+ int tokenStart = input.IndexOf("%", index, StringComparison.InvariantCulture);
+ if (tokenStart == -1)
+ {
+ break;
+ }
+
+ int tokenEnd = input.IndexOf("%", tokenStart + 1, StringComparison.InvariantCulture);
+ if (tokenEnd == -1)
+ {
+ break;
+ }
+
+ int tokenLength = tokenEnd - tokenStart + 1;
+
+ int variableNameStart = tokenStart + 1;
+ int variableNameLength = tokenLength - 2;
+
+ bool isEnvironmentVariable = false;
+
+ string variableName = "";
+
+ if (tokenStart > 0)
+ {
+ char tokenStartPrefix = input.Substring(tokenStart - 1, 1);
+ char tokenEndPrefix = input.Substring(tokenEnd - 1, 1);
+
+ if (tokenStartPrefix == '\\' && tokenEndPrefix == '\\')
+ {
+ isEnvironmentVariable = true;
+
+ // Add the first backslash to the token
+ tokenStart--;
+ tokenLength++;
+
+ // Remove the last backslash from the name
+ variableNameLength--;
+ }
+ else if (tokenStartPrefix == '^' && tokenEndPrefix == '^')
+ {
+ // Add the first caret to the token
+ tokenStart--;
+ tokenLength++;
+
+ // Remove the last caret from the name
+ variableNameLength--;
+
+ variableName = input.Substring(variableNameStart, variableNameLength);
+ replacements.Add(new Replacement(tokenStart, tokenLength, string.Format("%{0}%", variableName)));
+
+ index = tokenEnd;
+ continue;
+ }
+ }
+
+ string token = input.Substring(tokenStart, tokenLength);
+
+ EscapeType escape = EscapeType.All;
+ string prefix = input.Substring(variableNameStart, 1);
+ switch (prefix)
+ {
+ case "-":
+ escape = EscapeType.ShellMetacharacters;
+ break;
+ case "!":
+ escape = EscapeType.None;
+ break;
+ }
+
+ if (!(escape == EscapeType.All))
+ {
+ // Remove the escape character from the name
+ variableNameStart++;
+ variableNameLength--;
+ }
+
+ if (variableNameLength == 0)
+ {
+ index = tokenEnd;
+ continue;
+ }
+
+ variableName = input.Substring(variableNameStart, variableNameLength);
+
+ string replacementValue = token;
+ if (!isEnvironmentVariable)
+ {
+ replacementValue = GetVariableReplacement(variableName, token);
+ }
+
+ bool haveReplacement = false;
+
+ if (!(replacementValue == token))
+ {
+ haveReplacement = true;
+ }
+ else
+ {
+ replacementValue = Environment.GetEnvironmentVariable(variableName);
+ if (replacementValue != null)
+ {
+ haveReplacement = true;
+ }
+ }
+
+ if (haveReplacement)
+ {
+ char trailing = '\0';
+ if (tokenEnd + 2 <= input.Length)
+ {
+ trailing = input.Substring(tokenEnd + 1, 1);
+ }
+ else
+ {
+ trailing = string.Empty;
+ }
+
+ if (escape == EscapeType.All)
+ {
+ replacementValue = CommandLineArguments.EscapeBackslashes(replacementValue);
+ if (trailing == '\'')
+ {
+ replacementValue = CommandLineArguments.EscapeBackslashesForTrailingQuote(replacementValue);
+ }
+ }
+
+ if (escape == EscapeType.All | escape == EscapeType.ShellMetacharacters)
+ {
+ replacementValue = CommandLineArguments.EscapeShellMetacharacters(replacementValue);
+ }
+
+ replacements.Add(new Replacement(tokenStart, tokenLength, replacementValue));
+ index = tokenEnd + 1;
+ }
+ else
+ {
+ index = tokenEnd;
+ }
+ } while (true);
+
+ string result = input;
+
+ for (index = result.Length; index >= 0; index--)
+ {
+ foreach (Replacement replacement in replacements)
+ {
+ if (!(replacement.Start == index))
+ {
+ continue;
+ }
+
+ string before = result.Substring(0, replacement.Start);
+ string after = result.Substring(replacement.Start + replacement.Length);
+ result = before + replacement.Value + after;
+ }
+ }
+
+ return result;
+ }
+#endregion
+
+#region Private Methods
+ private string GetVariableReplacement(string variable, string original)
+ {
+ string replacement = "";
+ switch (variable.ToLowerInvariant())
+ {
+ case "name":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Name;
+ }
+ break;
+ case "hostname":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Hostname;
+ }
+ break;
+ case "port":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = System.Convert.ToString(ConnectionInfo.Port);
+ }
+ break;
+ case "username":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Username;
+ }
+ break;
+ case "password":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Password;
+ }
+ break;
+ case "domain":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Domain;
+ }
+ break;
+ case "description":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.Description;
+ }
+ break;
+ // ReSharper disable once StringLiteralTypo
+ case "macaddress":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.MacAddress;
+ }
+ break;
+ // ReSharper disable once StringLiteralTypo
+ case "userfield":
+ if (ConnectionInfo == null)
+ {
+ replacement = "";
+ }
+ else
+ {
+ replacement = ConnectionInfo.UserField;
+ }
+ break;
+ default:
+ return original;
+ }
+ return replacement;
+ }
+#endregion
+ }
+
+ public class ExternalToolsTypeConverter : StringConverter
+ {
+
+ public static string[] ExternalTools
+ {
+ get
+ {
+ List externalToolList = new List();
+
+ // Add a blank entry to signify that no external tool is selected
+ externalToolList.Add(string.Empty);
+
+ foreach (ExternalTool externalTool in App.Runtime.ExternalTools)
+ {
+ externalToolList.Add(externalTool.DisplayName);
+ }
+
+ return externalToolList.ToArray();
+ }
+ }
+
+ public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return new StandardValuesCollection(ExternalTools);
+ }
+
+ public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)
+ {
+ return true;
+ }
+
+ public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+ {
+ return true;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/IeBrowserEmulation.cs b/mRemoteV1/CS/Tools/IeBrowserEmulation.cs
new file mode 100644
index 000000000..29dcb8b5e
--- /dev/null
+++ b/mRemoteV1/CS/Tools/IeBrowserEmulation.cs
@@ -0,0 +1,76 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using Microsoft.Win32;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Tools
+{
+ public class IeBrowserEmulation
+ {
+ private const string BrowserEmulationKey = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION";
+ private static int _previousIeBrowserEmulationValue = 0;
+ public static void Register()
+ {
+ try
+ {
+ RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
+ if (registryKey == null)
+ {
+ Registry.CurrentUser.CreateSubKey(BrowserEmulationKey);
+ registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
+ if (registryKey == null)
+ {
+ return ;
+ }
+ }
+ string exeName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
+ _previousIeBrowserEmulationValue = System.Convert.ToInt32(registryKey.GetValue(exeName, 0));
+ registryKey.SetValue(exeName, 11000, RegistryValueKind.DWord);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "IeBrowserEmulation.Register() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public static void Unregister()
+ {
+#if PORTABLE
+ try
+ {
+ RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
+ if (registryKey == null)
+ {
+ return ;
+ }
+ string exeName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
+ if (_previousIeBrowserEmulationValue == 0)
+ {
+ registryKey.DeleteValue(exeName);
+ }
+ else
+ {
+ registryKey.SetValue(exeName, _previousIeBrowserEmulationValue, RegistryValueKind.DWord);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "IeBrowserEmulation.Unregister() failed.", ex: ex, logOnly: true);
+ }
+#endif
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/ProcessController.cs b/mRemoteV1/CS/Tools/ProcessController.cs
new file mode 100644
index 000000000..88409ceeb
--- /dev/null
+++ b/mRemoteV1/CS/Tools/ProcessController.cs
@@ -0,0 +1,267 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+using System.Text;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Tools
+{
+ public class ProcessController
+ {
+#region Public Methods
+ public bool Start(string fileName, CommandLineArguments arguments = null)
+ {
+ Process.StartInfo.UseShellExecute = false;
+ Process.StartInfo.FileName = fileName;
+ if (arguments != null)
+ {
+ Process.StartInfo.Arguments = arguments.ToString();
+ }
+
+ if (!Process.Start())
+ {
+ return false;
+ }
+ GetMainWindowHandle();
+
+ return true;
+ }
+
+ public bool SetControlVisible(string className, string text, bool visible = true)
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return false;
+ }
+ if (Handle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr controlHandle = GetControlHandle(className, text);
+ if (controlHandle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ int nCmdShow = 0;
+ if (visible)
+ {
+ nCmdShow = Win32.SW_SHOW;
+ }
+ else
+ {
+ nCmdShow = Win32.SW_HIDE;
+ }
+
+ Win32.ShowWindow(controlHandle, nCmdShow);
+
+ return true;
+ }
+
+ public bool SetControlText(string className, string oldText, string newText)
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return false;
+ }
+ if (Handle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr controlHandle = GetControlHandle(className, oldText);
+ if (controlHandle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr result = Win32.SendMessage(controlHandle, Win32.WM_SETTEXT, 0, new StringBuilder(newText));
+ if (!(result.ToInt32() == Win32.TRUE))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public bool SelectListBoxItem(string itemText)
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return false;
+ }
+ if (Handle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr listBoxHandle = GetControlHandle("ListBox");
+ if (listBoxHandle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr result = Win32.SendMessage(listBoxHandle, Win32.LB_SELECTSTRING, -1, new StringBuilder(itemText));
+ if (result.ToInt32() == Win32.LB_ERR)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public bool ClickButton(string text)
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return false;
+ }
+ if (Handle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ IntPtr buttonHandle = GetControlHandle("Button", text);
+ if (buttonHandle == IntPtr.Zero)
+ {
+ return false;
+ }
+
+ int buttonControlId = Win32.GetDlgCtrlID(buttonHandle);
+ Win32.SendMessage(Handle, Win32.WM_COMMAND, buttonControlId, buttonHandle);
+
+ return true;
+ }
+
+ public void WaitForExit()
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return ;
+ }
+ Process.WaitForExit();
+ }
+#endregion
+
+#region Protected Fields
+ protected Process Process = new Process();
+ protected IntPtr Handle = IntPtr.Zero;
+ protected List Controls = new List();
+#endregion
+
+#region Protected Methods
+ protected IntPtr GetMainWindowHandle()
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return IntPtr.Zero;
+ }
+
+ Process.WaitForInputIdle(Settings.MaxPuttyWaitTime * 1000);
+
+ Handle = IntPtr.Zero;
+ int startTicks = Environment.TickCount;
+ while (Handle == IntPtr.Zero && Environment.TickCount < startTicks + (Settings.MaxPuttyWaitTime * 1000))
+ {
+ Process.Refresh();
+ Handle = Process.MainWindowHandle;
+ if (Handle == IntPtr.Zero)
+ {
+ System.Threading.Thread.Sleep(0);
+ }
+ }
+
+ return Handle;
+ }
+
+ protected IntPtr GetControlHandle(string className, string text = "")
+ {
+ if (Process == null || Process.HasExited)
+ {
+ return IntPtr.Zero;
+ }
+ if (Handle == IntPtr.Zero)
+ {
+ return IntPtr.Zero;
+ }
+
+ if (Controls.Count == 0)
+ {
+ Controls = EnumWindows.EnumChildWindows(Handle);
+ }
+
+ System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
+ IntPtr controlHandle = IntPtr.Zero;
+ foreach (IntPtr control in Controls)
+ {
+ Win32.GetClassName(control, stringBuilder, stringBuilder.Capacity);
+ if (stringBuilder.ToString() == className)
+ {
+ if (string.IsNullOrEmpty(text))
+ {
+ controlHandle = control;
+ break;
+ }
+ else
+ {
+ Win32.SendMessage(control, Win32.WM_GETTEXT, stringBuilder.Capacity, stringBuilder);
+ if (stringBuilder.ToString() == text)
+ {
+ controlHandle = control;
+ break;
+ }
+ }
+ }
+ }
+
+ return controlHandle;
+ }
+#endregion
+
+#region Win32
+ // ReSharper disable ClassNeverInstantiated.Local
+ private class Win32
+ {
+ // ReSharper restore ClassNeverInstantiated.Local
+ // ReSharper disable InconsistentNaming
+ // ReSharper disable UnusedMethodReturnValue.Local
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern void GetClassName(IntPtr hWnd, System.Text.StringBuilder lpClassName, int nMaxCount);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, System.Text.StringBuilder lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern int GetDlgCtrlID(int hwndCtl);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
+
+ public const int LB_ERR = -1;
+ public const int LB_SELECTSTRING = 0x18C;
+
+ public const int WM_SETTEXT = 0xC;
+ public const int WM_GETTEXT = 0xD;
+ public const int WM_COMMAND = 0x111;
+
+ public const int SW_HIDE = 0;
+ public const int SW_SHOW = 5;
+
+ public const int TRUE = 1;
+ // ReSharper restore UnusedMethodReturnValue.Local
+ // ReSharper restore InconsistentNaming
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Tools/PropertyGridCommandSite.cs b/mRemoteV1/CS/Tools/PropertyGridCommandSite.cs
new file mode 100644
index 000000000..c8a2d0046
--- /dev/null
+++ b/mRemoteV1/CS/Tools/PropertyGridCommandSite.cs
@@ -0,0 +1,216 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Reflection;
+
+
+namespace mRemoteNG.Tools
+{
+ public class PropertyGridCommandSite : IMenuCommandService, ISite
+ {
+
+ protected object TheObject;
+ public PropertyGridCommandSite(object @object)
+ {
+ TheObject = @object;
+ }
+
+public DesignerVerbCollection Verbs
+ {
+ get
+ {
+ DesignerVerbCollection objectVerbs = new DesignerVerbCollection();
+ // ReSharper disable VBPossibleMistakenCallToGetType.2
+ MethodInfo[] methods = TheObject.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance);
+ // ReSharper restore VBPossibleMistakenCallToGetType.2
+ foreach (MethodInfo method in methods)
+ {
+ object[] commandAttributes = method.GetCustomAttributes(typeof(CommandAttribute), true);
+ if (commandAttributes == null || commandAttributes.Length == 0)
+ {
+ continue;
+ }
+
+ CommandAttribute commandAttribute = (CommandAttribute) (commandAttributes[0]);
+ if (!commandAttribute.Command)
+ {
+ continue;
+ }
+
+ string displayName = method.Name;
+ object[] displayNameAttributes = method.GetCustomAttributes(typeof(DisplayNameAttribute), true);
+ if (!(displayNameAttributes == null || displayNameAttributes.Length == 0))
+ {
+ DisplayNameAttribute displayNameAttribute = (DisplayNameAttribute) (displayNameAttributes[0]);
+ if (!string.IsNullOrEmpty(displayNameAttribute.DisplayName))
+ {
+ displayName = displayNameAttribute.DisplayName;
+ }
+ }
+ objectVerbs.Add(new DesignerVerb(displayName, new EventHandler(VerbEventHandler)));
+ }
+
+ return objectVerbs;
+ }
+ }
+
+ private void VerbEventHandler(object sender, EventArgs e)
+ {
+ DesignerVerb verb = sender as DesignerVerb;
+ if (verb == null)
+ {
+ return ;
+ }
+ // ReSharper disable VBPossibleMistakenCallToGetType.2
+ MethodInfo[] methods = TheObject.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance);
+ // ReSharper restore VBPossibleMistakenCallToGetType.2
+ foreach (MethodInfo method in methods)
+ {
+ object[] commandAttributes = method.GetCustomAttributes(typeof(CommandAttribute), true);
+ if (commandAttributes == null || commandAttributes.Length == 0)
+ {
+ continue;
+ }
+
+ CommandAttribute commandAttribute = (CommandAttribute) (commandAttributes[0]);
+ if (!commandAttribute.Command)
+ {
+ continue;
+ }
+
+ string displayName = method.Name;
+ object[] displayNameAttributes = method.GetCustomAttributes(typeof(DisplayNameAttribute), true);
+ if (!(displayNameAttributes == null || displayNameAttributes.Length == 0))
+ {
+ DisplayNameAttribute displayNameAttribute = (DisplayNameAttribute) (displayNameAttributes[0]);
+ if (!string.IsNullOrEmpty(displayNameAttribute.DisplayName))
+ {
+ displayName = displayNameAttribute.DisplayName;
+ }
+ }
+
+ if (verb.Text == displayName)
+ {
+ method.Invoke(TheObject, null);
+ return ;
+ }
+ }
+ }
+
+ public object GetService(Type serviceType)
+ {
+ if (serviceType == typeof(IMenuCommandService))
+ {
+ return this;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+public System.ComponentModel.IComponent Component
+ {
+ get
+ {
+ throw (new NotImplementedException());
+ }
+ }
+
+public System.ComponentModel.IContainer Container
+ {
+ get
+ {
+ return null;
+ }
+ }
+
+public bool DesignMode
+ {
+ get
+ {
+ return true;
+ }
+ }
+
+public string Name
+ {
+ get
+ {
+ throw (new NotImplementedException());
+ }
+ set
+ {
+ throw (new NotImplementedException());
+ }
+ }
+
+ public void AddCommand(MenuCommand command)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public void AddVerb(DesignerVerb verb)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public MenuCommand FindCommand(CommandID commandId)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public bool GlobalInvoke(CommandID commandId)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public void RemoveCommand(MenuCommand command)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public void RemoveVerb(DesignerVerb verb)
+ {
+ throw (new NotImplementedException());
+ }
+
+ public void ShowContextMenu(CommandID menuId, int x, int y)
+ {
+ throw (new NotImplementedException());
+ }
+
+ }
+
+ public class CommandAttribute : Attribute
+ {
+ private bool _Command = false;
+public bool Command
+ {
+ get
+ {
+ return _Command;
+ }
+ set
+ {
+ _Command = value;
+ }
+ }
+ public CommandAttribute(bool isCommand = true)
+ {
+ Command = isCommand;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/PuttyProcessController.cs b/mRemoteV1/CS/Tools/PuttyProcessController.cs
new file mode 100644
index 000000000..5e67250d4
--- /dev/null
+++ b/mRemoteV1/CS/Tools/PuttyProcessController.cs
@@ -0,0 +1,35 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.Tools
+{
+ public class PuttyProcessController : ProcessController
+ {
+ public bool Start(CommandLineArguments arguments = null)
+ {
+ string filename = "";
+ if (Settings.UseCustomPuttyPath)
+ {
+ filename = Settings.CustomPuttyPath;
+ }
+ else
+ {
+ filename = App.Info.General.PuttyPath;
+ }
+ return Start(filename, arguments);
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/PuttyTypeDetector.cs b/mRemoteV1/CS/Tools/PuttyTypeDetector.cs
new file mode 100644
index 000000000..e3bf7cf8c
--- /dev/null
+++ b/mRemoteV1/CS/Tools/PuttyTypeDetector.cs
@@ -0,0 +1,115 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.Connection.Protocol;
+
+
+namespace mRemoteNG.Tools
+{
+ public class PuttyTypeDetector
+ {
+ public static PuttyType GetPuttyType()
+ {
+ return GetPuttyType(PuttyBase.PuttyPath);
+ }
+
+ public static PuttyType GetPuttyType(string filename)
+ {
+ if (IsPuttyNg(filename))
+ {
+ return PuttyType.PuttyNg;
+ }
+ if (IsKitty(filename))
+ {
+ return PuttyType.Kitty;
+ }
+ if (IsXming(filename))
+ {
+ return PuttyType.Xming;
+ }
+
+ // Check this last
+ if (IsPutty(filename))
+ {
+ return PuttyType.Putty;
+ }
+
+ return PuttyType.Unknown;
+ }
+
+ private static bool IsPutty(string filename)
+ {
+ bool result = false;
+ try
+ {
+ result = System.Convert.ToBoolean(FileVersionInfo.GetVersionInfo(filename).InternalName.Contains("PuTTY"));
+ }
+ catch
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ private static bool IsPuttyNg(string filename)
+ {
+ bool result = false;
+ try
+ {
+ result = System.Convert.ToBoolean(FileVersionInfo.GetVersionInfo(filename).InternalName.Contains("PuTTYNG"));
+ }
+ catch
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ private static bool IsKitty(string filename)
+ {
+ bool result = false;
+ try
+ {
+ result = System.Convert.ToBoolean(FileVersionInfo.GetVersionInfo(filename).InternalName.Contains("PuTTY") && FileVersionInfo.GetVersionInfo(filename).Comments.Contains("KiTTY"));
+ }
+ catch
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ private static bool IsXming(string filename)
+ {
+ bool result = false;
+ try
+ {
+ result = System.Convert.ToBoolean(FileVersionInfo.GetVersionInfo(filename).InternalName.Contains("PuTTY") && FileVersionInfo.GetVersionInfo(filename).ProductVersion.Contains("Xming"));
+ }
+ catch
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ public enum PuttyType
+ {
+ Unknown = 0,
+ Putty,
+ PuttyNg,
+ Kitty,
+ Xming
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/ReconnectGroup.Designer.cs b/mRemoteV1/CS/Tools/ReconnectGroup.Designer.cs
new file mode 100644
index 000000000..f1b4260aa
--- /dev/null
+++ b/mRemoteV1/CS/Tools/ReconnectGroup.Designer.cs
@@ -0,0 +1,152 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ [global::Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]public
+ partial class ReconnectGroup : System.Windows.Forms.UserControl
+ {
+
+ //UserControl overrides dispose to clean up the component list.
+ [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
+ {
+ try
+ {
+ if (disposing && components != null)
+ {
+ components.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+
+ //Required by the Windows Form Designer
+ private System.ComponentModel.Container components = null;
+
+ //NOTE: The following procedure is required by the Windows Form Designer
+ //It can be modified using the Windows Form Designer.
+ //Do not modify it using the code editor.
+ [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.grpAutomaticReconnect = new System.Windows.Forms.GroupBox();
+ this.lblAnimation = new System.Windows.Forms.Label();
+ this.btnClose = new System.Windows.Forms.Button();
+ this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+ this.lblServerStatus = new System.Windows.Forms.Label();
+ this.chkReconnectWhenReady = new System.Windows.Forms.CheckBox();
+ this.chkReconnectWhenReady.CheckedChanged += new System.EventHandler(this.chkReconnectWhenReady_CheckedChanged);
+ this.pbServerStatus = new System.Windows.Forms.PictureBox();
+ this.tmrAnimation = new System.Windows.Forms.Timer(this.components);
+ this.tmrAnimation.Tick += new System.EventHandler(this.tmrAnimation_Tick);
+ this.grpAutomaticReconnect.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbServerStatus).BeginInit();
+ this.SuspendLayout();
+ //
+ //grpAutomaticReconnect
+ //
+ this.grpAutomaticReconnect.BackColor = System.Drawing.Color.White;
+ this.grpAutomaticReconnect.Controls.Add(this.lblAnimation);
+ this.grpAutomaticReconnect.Controls.Add(this.btnClose);
+ this.grpAutomaticReconnect.Controls.Add(this.lblServerStatus);
+ this.grpAutomaticReconnect.Controls.Add(this.chkReconnectWhenReady);
+ this.grpAutomaticReconnect.Controls.Add(this.pbServerStatus);
+ this.grpAutomaticReconnect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.grpAutomaticReconnect.Location = new System.Drawing.Point(3, 0);
+ this.grpAutomaticReconnect.Name = "grpAutomaticReconnect";
+ this.grpAutomaticReconnect.Size = new System.Drawing.Size(171, 98);
+ this.grpAutomaticReconnect.TabIndex = 8;
+ this.grpAutomaticReconnect.TabStop = false;
+ this.grpAutomaticReconnect.Text = "Automatisches wiederverbinden";
+ //
+ //lblAnimation
+ //
+ this.lblAnimation.Location = new System.Drawing.Point(124, 22);
+ this.lblAnimation.Name = "lblAnimation";
+ this.lblAnimation.Size = new System.Drawing.Size(32, 17);
+ this.lblAnimation.TabIndex = 8;
+ //
+ //btnClose
+ //
+ this.btnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnClose.Location = new System.Drawing.Point(6, 67);
+ this.btnClose.Name = "btnClose";
+ this.btnClose.Size = new System.Drawing.Size(159, 23);
+ this.btnClose.TabIndex = 7;
+ this.btnClose.Text = "&Schließen";
+ this.btnClose.UseVisualStyleBackColor = true;
+ //
+ //lblServerStatus
+ //
+ this.lblServerStatus.AutoSize = true;
+ this.lblServerStatus.Location = new System.Drawing.Point(15, 24);
+ this.lblServerStatus.Name = "lblServerStatus";
+ this.lblServerStatus.Size = new System.Drawing.Size(74, 13);
+ this.lblServerStatus.TabIndex = 3;
+ this.lblServerStatus.Text = "Server Status:";
+ //
+ //chkReconnectWhenReady
+ //
+ this.chkReconnectWhenReady.AutoSize = true;
+ this.chkReconnectWhenReady.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.chkReconnectWhenReady.Location = new System.Drawing.Point(18, 44);
+ this.chkReconnectWhenReady.Name = "chkReconnectWhenReady";
+ this.chkReconnectWhenReady.Size = new System.Drawing.Size(129, 17);
+ this.chkReconnectWhenReady.TabIndex = 6;
+ this.chkReconnectWhenReady.Text = "Verbinden wenn bereit";
+ this.chkReconnectWhenReady.UseVisualStyleBackColor = true;
+ //
+ //pbServerStatus
+ //
+ this.pbServerStatus.Image = global::My.Resources.Resources.HostStatus_Check;
+ this.pbServerStatus.Location = new System.Drawing.Point(99, 23);
+ this.pbServerStatus.Name = "pbServerStatus";
+ this.pbServerStatus.Size = new System.Drawing.Size(16, 16);
+ this.pbServerStatus.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.pbServerStatus.TabIndex = 5;
+ this.pbServerStatus.TabStop = false;
+ //
+ //tmrAnimation
+ //
+ this.tmrAnimation.Enabled = true;
+ this.tmrAnimation.Interval = 200;
+ //
+ //ReconnectGroup
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.White;
+ this.Controls.Add(this.grpAutomaticReconnect);
+ this.Name = "ReconnectGroup";
+ this.Size = new System.Drawing.Size(228, 138);
+ this.grpAutomaticReconnect.ResumeLayout(false);
+ this.grpAutomaticReconnect.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbServerStatus).EndInit();
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.GroupBox grpAutomaticReconnect;
+ internal System.Windows.Forms.Button btnClose;
+ internal System.Windows.Forms.Label lblServerStatus;
+ internal System.Windows.Forms.CheckBox chkReconnectWhenReady;
+ internal System.Windows.Forms.PictureBox pbServerStatus;
+ internal System.Windows.Forms.Timer tmrAnimation;
+ internal System.Windows.Forms.Label lblAnimation;
+
+ }
+
+}
diff --git a/mRemoteV1/CS/Tools/ReconnectGroup.cs b/mRemoteV1/CS/Tools/ReconnectGroup.cs
new file mode 100644
index 000000000..d2e8d88cd
--- /dev/null
+++ b/mRemoteV1/CS/Tools/ReconnectGroup.cs
@@ -0,0 +1,161 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ public partial class ReconnectGroup
+ {
+ public ReconnectGroup()
+ {
+ InitializeComponent();
+ }
+ private bool _ServerReady;
+public bool ServerReady
+ {
+ get
+ {
+ return _ServerReady;
+ }
+ set
+ {
+ if (value == true)
+ {
+ SetStatusImage(global::My.Resources.HostStatus_On);
+ }
+ else
+ {
+ SetStatusImage(global::My.Resources.HostStatus_Off);
+ }
+
+ _ServerReady = value;
+ }
+ }
+
+ private delegate void SetStatusImageCB(Image Img);
+ private void SetStatusImage(Image Img)
+ {
+ if (pbServerStatus.InvokeRequired)
+ {
+ SetStatusImageCB d = new SetStatusImageCB(SetStatusImage);
+ ParentForm.Invoke(d, new object[] {Img});
+ }
+ else
+ {
+ pbServerStatus.Image = Img;
+ }
+ }
+
+ public void chkReconnectWhenReady_CheckedChanged(System.Object sender, System.EventArgs e)
+ {
+ _ReconnectWhenReady = chkReconnectWhenReady.Checked;
+ }
+
+ private bool _ReconnectWhenReady;
+public bool ReconnectWhenReady
+ {
+ get
+ {
+ return _ReconnectWhenReady;
+ }
+ set
+ {
+ _ReconnectWhenReady = value;
+ SetCheckbox(value);
+ }
+ }
+
+ private delegate void SetCheckboxCB(bool Val);
+ private void SetCheckbox(bool Val)
+ {
+ if (chkReconnectWhenReady.InvokeRequired)
+ {
+ SetCheckboxCB d = new SetCheckboxCB(SetCheckbox);
+ ParentForm.Invoke(d, new object[] {Val});
+ }
+ else
+ {
+ chkReconnectWhenReady.Checked = Val;
+ }
+ }
+
+ public delegate void CloseClickedEventHandler();
+ private CloseClickedEventHandler CloseClickedEvent;
+
+ public event CloseClickedEventHandler CloseClicked
+ {
+ add
+ {
+ CloseClickedEvent = (CloseClickedEventHandler) System.Delegate.Combine(CloseClickedEvent, value);
+ }
+ remove
+ {
+ CloseClickedEvent = (CloseClickedEventHandler) System.Delegate.Remove(CloseClickedEvent, value);
+ }
+ }
+
+
+ public void btnClose_Click(System.Object sender, System.EventArgs e)
+ {
+ if (CloseClickedEvent != null)
+ CloseClickedEvent();
+ }
+
+ public void tmrAnimation_Tick(System.Object sender, System.EventArgs e)
+ {
+ switch (lblAnimation.Text)
+ {
+ case "":
+ lblAnimation.Text = "»";
+ break;
+ case "»":
+ lblAnimation.Text = "»»";
+ break;
+ case "»»":
+ lblAnimation.Text = "»»»";
+ break;
+ case "»»»":
+ lblAnimation.Text = "";
+ break;
+ }
+ }
+
+ private delegate void DisposeReconnectGroupCB();
+ public void DisposeReconnectGroup()
+ {
+ if (this.InvokeRequired)
+ {
+ DisposeReconnectGroupCB d = new DisposeReconnectGroupCB(DisposeReconnectGroup);
+ ParentForm.Invoke(d);
+ }
+ else
+ {
+ this.Dispose();
+ }
+ }
+
+ public void ReconnectGroup_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private void ApplyLanguage()
+ {
+ grpAutomaticReconnect.Text = My.Language.strGroupboxAutomaticReconnect;
+ btnClose.Text = My.Language.strButtonClose;
+ lblServerStatus.Text = My.Language.strLabelServerStatus;
+ chkReconnectWhenReady.Text = My.Language.strCheckboxReconnectWhenReady;
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/Tools/ReconnectGroup.resx b/mRemoteV1/CS/Tools/ReconnectGroup.resx
new file mode 100644
index 000000000..5a7628ea6
--- /dev/null
+++ b/mRemoteV1/CS/Tools/ReconnectGroup.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 18, 18
+
+
+ 60
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/Tools/Tools.Controls.cs b/mRemoteV1/CS/Tools/Tools.Controls.cs
new file mode 100644
index 000000000..481f99917
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.Controls.cs
@@ -0,0 +1,314 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.Tools
+{
+ public class Controls
+ {
+ public class ComboBoxItem
+ {
+ private string _Text;
+public string Text
+ {
+ get
+ {
+ return this._Text;
+ }
+ set
+ {
+ this._Text = value;
+ }
+ }
+
+ private object _Tag;
+public object Tag
+ {
+ get
+ {
+ return this._Tag;
+ }
+ set
+ {
+ this._Tag = value;
+ }
+ }
+
+ public ComboBoxItem(string Text, object Tag = null)
+ {
+ this._Text = Text;
+ if (Tag != null)
+ {
+ this._Tag = Tag;
+ }
+ }
+
+ public override string ToString()
+ {
+ return this._Text;
+ }
+ }
+
+
+ public class NotificationAreaIcon
+ {
+ private NotifyIcon _nI;
+
+ private ContextMenuStrip _cMen;
+ private ToolStripMenuItem _cMenCons;
+ private ToolStripSeparator _cMenSep1;
+ private ToolStripMenuItem _cMenExit;
+
+ private bool _Disposed;
+public bool Disposed
+ {
+ get
+ {
+ return _Disposed;
+ }
+ set
+ {
+ _Disposed = value;
+ }
+ }
+
+
+ //Public Event MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
+ //Public Event MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
+
+
+ public NotificationAreaIcon()
+ {
+ try
+ {
+ this._cMenCons = new ToolStripMenuItem();
+ this._cMenCons.Text = My.Language.strConnections;
+ this._cMenCons.Image = global::My.Resources.Root;
+
+ this._cMenSep1 = new ToolStripSeparator();
+
+ this._cMenExit = new ToolStripMenuItem();
+ this._cMenExit.Text = My.Language.strMenuExit;
+ this._cMenExit.Click += cMenExit_Click;
+
+ this._cMen = new ContextMenuStrip();
+ this._cMen.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this._cMen.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this._cMen.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this._cMenCons, this._cMenSep1, this._cMenExit});
+
+ this._nI = new NotifyIcon();
+ this._nI.Text = "mRemote";
+ this._nI.BalloonTipText = "mRemote";
+ this._nI.Icon = global::My.Resources.mRemote_Icon;
+ this._nI.ContextMenuStrip = this._cMen;
+ this._nI.Visible = true;
+
+ this._nI.MouseClick += nI_MouseClick;
+ this._nI.MouseDoubleClick += nI_MouseDoubleClick;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Creating new SysTrayIcon failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void Dispose()
+ {
+ try
+ {
+ this._nI.Visible = false;
+ this._nI.Dispose();
+ this._cMen.Dispose();
+ this._Disposed = true;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Disposing SysTrayIcon failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void nI_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Right)
+ {
+ this._cMenCons.DropDownItems.Clear();
+
+ foreach (TreeNode tNode in App.Runtime.Windows.treeForm.tvConnections.Nodes)
+ {
+ AddNodeToMenu(tNode.Nodes, this._cMenCons);
+ }
+ }
+ }
+
+ private void AddNodeToMenu(TreeNodeCollection tnc, ToolStripMenuItem menToolStrip)
+ {
+ try
+ {
+ foreach (TreeNode tNode in tnc)
+ {
+ ToolStripMenuItem tMenItem = new ToolStripMenuItem();
+ tMenItem.Text = tNode.Text;
+ tMenItem.Tag = tNode;
+
+ if (Tree.Node.GetNodeType(tNode) == Tree.Node.Type.Container)
+ {
+ tMenItem.Image = global::My.Resources.Folder;
+ tMenItem.Tag = tNode.Tag;
+
+ menToolStrip.DropDownItems.Add(tMenItem);
+ AddNodeToMenu(tNode.Nodes, tMenItem);
+ }
+ else if (Tree.Node.GetNodeType(tNode) == Tree.Node.Type.Connection | Tree.Node.GetNodeType(tNode) == Tree.Node.Type.PuttySession)
+ {
+ tMenItem.Image = Windows.treeForm.imgListTree.Images[tNode.ImageIndex];
+ tMenItem.Tag = tNode.Tag;
+
+ menToolStrip.DropDownItems.Add(tMenItem);
+ }
+
+ tMenItem.MouseUp += ConMenItem_MouseUp;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void nI_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (frmMain.Default.Visible == true)
+ {
+ HideForm();
+ }
+ else
+ {
+ ShowForm();
+ }
+ }
+
+ private void ShowForm()
+ {
+ frmMain.Default.Show();
+ frmMain.Default.WindowState = frmMain.Default.PreviousWindowState;
+
+ if (My.Settings.Default.ShowSystemTrayIcon == false)
+ {
+ App.Runtime.NotificationAreaIcon.Dispose();
+ App.Runtime.NotificationAreaIcon = null;
+ }
+ }
+
+ private void HideForm()
+ {
+ frmMain.Default.Hide();
+ frmMain.Default.PreviousWindowState = frmMain.Default.WindowState;
+ }
+
+ private void ConMenItem_MouseUp(System.Object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ if (sender.Tag is Connection.Info)
+ {
+ if (frmMain.Default.Visible == false)
+ {
+ ShowForm();
+ }
+ App.Runtime.OpenConnection(sender.Tag);
+ }
+ }
+ }
+
+ private void cMenExit_Click(System.Object sender, System.EventArgs e)
+ {
+ App.Runtime.Shutdown.Quit();
+ }
+ }
+
+ public static SaveFileDialog ConnectionsSaveAsDialog()
+ {
+ SaveFileDialog saveFileDialog = new SaveFileDialog();
+ saveFileDialog.CheckPathExists = true;
+ saveFileDialog.InitialDirectory = App.Info.Connections.DefaultConnectionsPath;
+ saveFileDialog.FileName = App.Info.Connections.DefaultConnectionsFile;
+ saveFileDialog.OverwritePrompt = true;
+
+ saveFileDialog.Filter = My.Language.strFiltermRemoteXML + "|*.xml|" + My.Language.strFilterAll + "|*.*";
+
+ return saveFileDialog;
+ }
+
+ public static SaveFileDialog ConnectionsExportDialog()
+ {
+ SaveFileDialog saveFileDialog = new SaveFileDialog();
+ saveFileDialog.CheckPathExists = true;
+ saveFileDialog.InitialDirectory = App.Info.Connections.DefaultConnectionsPath;
+ saveFileDialog.FileName = App.Info.Connections.DefaultConnectionsFile;
+ saveFileDialog.OverwritePrompt = true;
+
+ saveFileDialog.Filter = My.Language.strFiltermRemoteXML + "|*.xml|" + My.Language.strFiltermRemoteCSV + "|*.csv|" + My.Language.strFiltervRD2008CSV + "|*.csv|" + My.Language.strFilterAll + "|*.*";
+
+ return saveFileDialog;
+ }
+
+ public static OpenFileDialog ConnectionsLoadDialog()
+ {
+ OpenFileDialog lDlg = new OpenFileDialog();
+ lDlg.CheckFileExists = true;
+ lDlg.InitialDirectory = App.Info.Connections.DefaultConnectionsPath;
+ lDlg.Filter = My.Language.strFiltermRemoteXML + "|*.xml|" + My.Language.strFilterAll + "|*.*";
+
+ return lDlg;
+ }
+
+ public static OpenFileDialog ImportConnectionsRdpFileDialog()
+ {
+ OpenFileDialog openFileDialog = new OpenFileDialog();
+ openFileDialog.CheckFileExists = true;
+ openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+ openFileDialog.Filter = string.Join("|", new[] {My.Language.strFilterRDP, "*.rdp", My.Language.strFilterAll, "*.*"});
+ openFileDialog.Multiselect = true;
+ return openFileDialog;
+ }
+
+ public class TreeNodeSorter : IComparer
+ {
+
+ public System.Windows.Forms.SortOrder Sorting {get; set;}
+
+ public TreeNodeSorter(SortOrder sortOrder = System.Windows.Forms.SortOrder.None)
+ {
+ Sorting = sortOrder;
+ }
+
+ public int Compare(object x, object y)
+ {
+ TreeNode tx = (TreeNode) x;
+ TreeNode ty = (TreeNode) y;
+
+ switch (Sorting)
+ {
+ case SortOrder.Ascending:
+ return string.Compare(tx.Text, ty.Text);
+ case SortOrder.Descending:
+ return string.Compare(ty.Text, tx.Text);
+ default:
+ return 0;
+ }
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Tools.LocalizedAttributes.cs b/mRemoteV1/CS/Tools/Tools.LocalizedAttributes.cs
new file mode 100644
index 000000000..dc41de67d
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.LocalizedAttributes.cs
@@ -0,0 +1,175 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+
+
+namespace mRemoteNG.Tools
+{
+ public class LocalizedAttributes
+ {
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedCategoryAttribute : CategoryAttribute
+ {
+
+ private const int MaxOrder = 10;
+ private int Order;
+
+ public LocalizedCategoryAttribute(string value, int Order = 1) : base(value)
+ {
+ if (Order > LocalizedCategoryAttribute.MaxOrder)
+ {
+ this.Order = LocalizedCategoryAttribute.MaxOrder;
+ }
+ else
+ {
+ this.Order = Order;
+ }
+ }
+
+ protected override string GetLocalizedString(string value)
+ {
+ string OrderPrefix = "";
+ for (int x = 0; x <= LocalizedCategoryAttribute.MaxOrder - this.Order; x++)
+ {
+ OrderPrefix += System.Convert.ToString("\t");
+ }
+
+ return OrderPrefix + My.Language.ResourceManager.GetString(value);
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedDisplayNameAttribute : DisplayNameAttribute
+ {
+
+ private bool Localized;
+
+ public LocalizedDisplayNameAttribute(string value) : base(value)
+ {
+ this.Localized = false;
+ }
+
+public override string DisplayName
+ {
+ get
+ {
+ if (!this.Localized)
+ {
+ this.Localized = true;
+ this.DisplayNameValue = My.Language.ResourceManager.GetString(this.DisplayNameValue);
+ }
+
+ return base.DisplayName;
+ }
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedDescriptionAttribute : DescriptionAttribute
+ {
+
+ private bool Localized;
+
+ public LocalizedDescriptionAttribute(string value) : base(value)
+ {
+ this.Localized = false;
+ }
+
+public override string Description
+ {
+ get
+ {
+ if (!this.Localized)
+ {
+ this.Localized = true;
+ this.DescriptionValue = My.Language.ResourceManager.GetString(this.DescriptionValue);
+ }
+
+ return base.Description;
+ }
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedDefaultValueAttribute : DefaultValueAttribute
+ {
+
+ public LocalizedDefaultValueAttribute(string name) : base(My.Language.ResourceManager.GetString(name))
+ {
+ }
+
+ // This allows localized attributes in a derived class to override a matching
+ // non-localized attribute inherited from its base class
+public override object TypeId
+ {
+ get
+ {
+ return typeof(DefaultValueAttribute);
+ }
+ }
+ }
+
+#region Special localization - with String.Format
+
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedDisplayNameInheritAttribute : DisplayNameAttribute
+ {
+
+ private bool Localized;
+
+ public LocalizedDisplayNameInheritAttribute(string value) : base(value)
+ {
+
+ this.Localized = false;
+ }
+
+public override string DisplayName
+ {
+ get
+ {
+ if (!this.Localized)
+ {
+ this.Localized = true;
+ this.DisplayNameValue = string.Format(My.Language.strFormatInherit, My.Language.ResourceManager.GetString(this.DisplayNameValue));
+ }
+
+ return base.DisplayName;
+ }
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]public class LocalizedDescriptionInheritAttribute : DescriptionAttribute
+ {
+
+ private bool Localized;
+
+ public LocalizedDescriptionInheritAttribute(string value) : base(value)
+ {
+
+ this.Localized = false;
+ }
+
+public override string Description
+ {
+ get
+ {
+ if (!this.Localized)
+ {
+ this.Localized = true;
+ this.DescriptionValue = string.Format(My.Language.strFormatInheritDescription, My.Language.ResourceManager.GetString(this.DescriptionValue));
+ }
+
+ return base.Description;
+ }
+ }
+ }
+#endregion
+
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Tools.Misc.cs b/mRemoteV1/CS/Tools/Tools.Misc.cs
new file mode 100644
index 000000000..70964244e
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.Misc.cs
@@ -0,0 +1,531 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Reflection;
+using System.ComponentModel;
+using System.Runtime.InteropServices;
+using System.Collections.Specialized;
+using System.Text.RegularExpressions;
+using mRemoteNG.Forms;
+//using mRemoteNG.App.Runtime;
+using System.IO;
+using System.Data.SqlClient;
+
+
+namespace mRemoteNG.Tools
+{
+ public class Misc
+ {
+ private struct SHFILEINFO
+ {
+ public IntPtr hIcon; // : icon
+ public int iIcon; // : icondex
+ public int dwAttributes; // : SFGAO_ flags
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]public string szDisplayName;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]public string szTypeName;
+ }
+
+ [DllImport("shell32.dll")]private static extern IntPtr SHGetFileInfo(string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
+
+ private const int SHGFI_ICON = 0x100;
+ private const int SHGFI_SMALLICON = 0x1;
+ //Private Const SHGFI_LARGEICON = &H0 ' Large icon
+
+ public static Icon GetIconFromFile(string FileName)
+ {
+ try
+ {
+ if (File.Exists(FileName) == false)
+ {
+ return null;
+ }
+
+ IntPtr hImgSmall; //The handle to the system image list.
+ //Dim hImgLarge As IntPtr 'The handle to the system image list.
+ SHFILEINFO shinfo = new SHFILEINFO();
+ shinfo = new SHFILEINFO();
+
+ shinfo.szDisplayName = new string('\0', 260);
+ shinfo.szTypeName = new string('\0', 80);
+
+ //Use this to get the small icon.
+ hImgSmall = SHGetFileInfo(FileName, 0, ref shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON);
+
+ //Use this to get the large icon.
+ //hImgLarge = SHGetFileInfo(fName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_LARGEICON);
+
+ //The icon is returned in the hIcon member of the
+ //shinfo struct.
+ System.Drawing.Icon myIcon = default(System.Drawing.Icon);
+ myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
+
+ return myIcon;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "GetIconFromFile failed (Tools.Misc)" + Constants.vbNewLine + ex.Message, true);
+ return null;
+ }
+ }
+
+ public delegate void SQLUpdateCheckFinishedEventHandler(bool UpdateAvailable);
+ private static SQLUpdateCheckFinishedEventHandler SQLUpdateCheckFinishedEvent;
+
+ public static event SQLUpdateCheckFinishedEventHandler SQLUpdateCheckFinished
+ {
+ add
+ {
+ SQLUpdateCheckFinishedEvent = (SQLUpdateCheckFinishedEventHandler) System.Delegate.Combine(SQLUpdateCheckFinishedEvent, value);
+ }
+ remove
+ {
+ SQLUpdateCheckFinishedEvent = (SQLUpdateCheckFinishedEventHandler) System.Delegate.Remove(SQLUpdateCheckFinishedEvent, value);
+ }
+ }
+
+ public static void IsSQLUpdateAvailableBG()
+ {
+ System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(IsSQLUpdateAvailable));
+ t.SetApartmentState(System.Threading.ApartmentState.STA);
+ t.Start();
+ }
+
+ public static bool IsSQLUpdateAvailable()
+ {
+ try
+ {
+ SqlConnection sqlCon = default(SqlConnection);
+ SqlCommand sqlQuery = default(SqlCommand);
+ SqlDataReader sqlRd = default(SqlDataReader);
+
+ DateTime LastUpdateInDB = default(DateTime);
+
+ if (My.Settings.Default.SQLUser != "")
+ {
+ sqlCon = new SqlConnection("Data Source=" + My.Settings.Default.SQLHost + ";Initial Catalog=" + My.Settings.Default.SQLDatabaseName + ";User Id=" + My.Settings.Default.SQLUser + ";Password=" + Security.Crypt.Decrypt(System.Convert.ToString(My.Settings.Default.SQLPass), App.Info.General.EncryptionKey));
+ }
+ else
+ {
+ sqlCon = new SqlConnection("Data Source=" + My.Settings.Default.SQLHost + ";Initial Catalog=" + My.Settings.Default.SQLDatabaseName + ";Integrated Security=True");
+ }
+
+ sqlCon.Open();
+
+ sqlQuery = new SqlCommand("SELECT * FROM tblUpdate", sqlCon);
+ sqlRd = sqlQuery.ExecuteReader(CommandBehavior.CloseConnection);
+
+ sqlRd.Read();
+
+ if (sqlRd.HasRows)
+ {
+ LastUpdateInDB = System.Convert.ToDateTime(sqlRd["LastUpdate"]);
+
+ if (LastUpdateInDB > LastSqlUpdate)
+ {
+ if (SQLUpdateCheckFinishedEvent != null)
+ SQLUpdateCheckFinishedEvent(true);
+ return true;
+ }
+ }
+
+ if (SQLUpdateCheckFinishedEvent != null)
+ SQLUpdateCheckFinishedEvent(false);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "IsSQLUpdateAvailable failed (Tools.Misc)" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return false;
+ }
+
+ public static string PasswordDialog(string passwordName = null, bool verify = true)
+ {
+ PasswordForm passwordForm = new PasswordForm(passwordName, verify);
+
+ if (passwordForm.ShowDialog() == DialogResult.OK)
+ {
+ return passwordForm.Password;
+ }
+ else
+ {
+ return "";
+ }
+ }
+
+ public static string CreateConstantID()
+ {
+ return Guid.NewGuid().ToString();
+ }
+
+ public static string LeadingZero(string Number)
+ {
+ if (Number < 10)
+ {
+ return "0" + Number;
+ }
+ else
+ {
+ return Number;
+ }
+ }
+
+ public static string DBDate(DateTime Dt)
+ {
+ string strDate = "";
+
+ strDate = Dt.Year + LeadingZero(System.Convert.ToString(Dt.Month)) + LeadingZero(System.Convert.ToString(Dt.Day)) + " " + LeadingZero(System.Convert.ToString(Dt.Hour)) + ":" + LeadingZero(System.Convert.ToString(Dt.Minute)) + ":" + LeadingZero(System.Convert.ToString(Dt.Second));
+
+ return strDate;
+ }
+
+ public static string PrepareForDB(string Text)
+ {
+ Text = Strings.Replace(Expression: Text, Find: "\'True\'", Replacement: "1", Compare: CompareMethod.Text);
+ Text = Strings.Replace(Expression: Text, Find: "\'False\'", Replacement: "0", Compare: CompareMethod.Text);
+
+ return Text;
+ }
+
+ public static string PrepareValueForDB(string Text)
+ {
+ Text = Strings.Replace(Expression: Text, Find: "\'", Replacement: "\'\'", Compare: CompareMethod.Text);
+
+ return Text;
+ }
+
+ public static object StringToEnum(Type t, string value)
+ {
+ return Enum.Parse(t, value);
+ }
+
+ public static string GetExceptionMessageRecursive(Exception ex, string separator = Constants.vbNewLine)
+ {
+ string message = ex.Message;
+ if (ex.InnerException != null)
+ {
+ string innerMessage = GetExceptionMessageRecursive(ex.InnerException, separator);
+ message = string.Join(separator, new string[] {message, innerMessage});
+ }
+ return message;
+ }
+
+ public static Image TakeScreenshot(UI.Window.Connection sender)
+ {
+ try
+ {
+ int LeftStart = sender.TabController.SelectedTab.PointToScreen(new Point(sender.TabController.SelectedTab.Left)).X; //Me.Left + Splitter.SplitterDistance + 11
+ int TopStart = sender.TabController.SelectedTab.PointToScreen(new Point(sender.TabController.SelectedTab.Top)).Y; //Me.Top + Splitter.Top + TabController.Top + TabController.SelectedTab.Top * 2 - 3
+ int LeftWidth = sender.TabController.SelectedTab.Width; //Me.Width - (Splitter.SplitterDistance + 16)
+ int TopHeight = sender.TabController.SelectedTab.Height; //Me.Height - (Splitter.Top + TabController.Top + TabController.SelectedTab.Top * 2 + 2)
+
+ Size currentFormSize = new Size(LeftWidth, TopHeight);
+ Bitmap ScreenToBitmap = new Bitmap(LeftWidth, TopHeight);
+ System.Drawing.Graphics gGraphics = System.Drawing.Graphics.FromImage(ScreenToBitmap);
+
+ gGraphics.CopyFromScreen(new Point(LeftStart, TopStart), new Point(0, 0), currentFormSize);
+
+ return ScreenToBitmap;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Taking Screenshot failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+
+ public class EnumTypeConverter : EnumConverter
+ {
+ private System.Type _enumType;
+
+ public EnumTypeConverter(System.Type type) : base(type)
+ {
+ _enumType = type;
+ }
+
+ public override bool CanConvertTo(ITypeDescriptorContext context, System.Type destType)
+ {
+ return destType == typeof(string);
+ }
+
+ public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, System.Type destType)
+ {
+ FieldInfo fi = _enumType.GetField(Enum.GetName(_enumType, value));
+ DescriptionAttribute dna = (DescriptionAttribute) (Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)));
+
+ if (dna != null)
+ {
+ return dna.Description;
+ }
+ else
+ {
+ return value.ToString();
+ }
+ }
+
+ public override bool CanConvertFrom(ITypeDescriptorContext context, System.Type srcType)
+ {
+ return srcType == typeof(string);
+ }
+
+ public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+ {
+ foreach (FieldInfo fi in _enumType.GetFields())
+ {
+ DescriptionAttribute dna = (DescriptionAttribute) (Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)));
+
+ if ((dna != null) && (((string) value) == dna.Description))
+ {
+ return Enum.Parse(_enumType, fi.Name);
+ }
+ }
+
+ return Enum.Parse(_enumType, (string) value);
+ }
+ }
+
+ public class YesNoTypeConverter : TypeConverter
+ {
+
+ public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
+ {
+ if (sourceType == typeof(string))
+ {
+ return true;
+ }
+
+ return base.CanConvertFrom(context, sourceType);
+ }
+
+ public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
+ {
+ if (destinationType == typeof(string))
+ {
+ return true;
+ }
+
+ return base.CanConvertTo(context, destinationType);
+ }
+
+ public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+ {
+ if (value.GetType() == typeof(string))
+ {
+ if ((value).ToString().ToLower() == My.Language.strYes.ToLower())
+ {
+ return true;
+ }
+
+ if ((value).ToString().ToLower() == My.Language.strNo.ToLower())
+ {
+ return false;
+ }
+
+ throw (new Exception("Values must be \"Yes\" or \"No\""));
+ }
+
+ return base.ConvertFrom(context, culture, value);
+ }
+
+ public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+ {
+ if (destinationType == typeof(string))
+ {
+ return ((System.Convert.ToBoolean(value)) ? My.Language.strYes : My.Language.strNo);
+ }
+
+ return base.ConvertTo(context, culture, value, destinationType);
+ }
+
+ public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+ {
+ return true;
+ }
+
+ public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
+ {
+ bool[] bools = new bool[] {true, false};
+
+ System.ComponentModel.TypeConverter.StandardValuesCollection svc = new System.ComponentModel.TypeConverter.StandardValuesCollection(bools);
+
+ return svc;
+ }
+ }
+
+ public class Fullscreen
+ {
+ public Fullscreen(Form handledForm)
+ {
+ _handledForm = handledForm;
+ }
+
+ private Form _handledForm;
+ private FormWindowState _savedWindowState;
+ private FormBorderStyle _savedBorderStyle;
+ private Rectangle _savedBounds;
+
+ private bool _value = false;
+public bool Value
+ {
+ get
+ {
+ return _value;
+ }
+ set
+ {
+ if (_value == value)
+ {
+ return ;
+ }
+ if (!_value)
+ {
+ EnterFullscreen();
+ }
+ else
+ {
+ ExitFullscreen();
+ }
+ _value = value;
+ }
+ }
+
+ private void EnterFullscreen()
+ {
+ _savedBorderStyle = _handledForm.FormBorderStyle;
+ _savedWindowState = _handledForm.WindowState;
+ _savedBounds = _handledForm.Bounds;
+
+ _handledForm.FormBorderStyle = FormBorderStyle.None;
+ if (_handledForm.WindowState == FormWindowState.Maximized)
+ {
+ _handledForm.WindowState = FormWindowState.Normal;
+ }
+ _handledForm.WindowState = FormWindowState.Maximized;
+ }
+
+ private void ExitFullscreen()
+ {
+ _handledForm.FormBorderStyle = _savedBorderStyle;
+ _handledForm.WindowState = _savedWindowState;
+ _handledForm.Bounds = _savedBounds;
+ }
+ }
+
+
+ //
+ //* Arguments class: application arguments interpreter
+ //*
+ //* Authors: R. LOPES
+ //* Contributors: R. LOPES
+ //* Created: 25 October 2002
+ //* Modified: 28 October 2002
+ //*
+ //* Version: 1.0
+ //
+ public class CMDArguments
+ {
+ private StringDictionary Parameters;
+
+ // Retrieve a parameter value if it exists
+public string this[string Param]
+ {
+ get
+ {
+ return (Parameters[Param]);
+ }
+ }
+
+ public CMDArguments(string[] Args)
+ {
+ Parameters = new StringDictionary();
+ Regex Spliter = new Regex("^-{1,2}|^/|=|:", (System.Text.RegularExpressions.RegexOptions) (RegexOptions.IgnoreCase | RegexOptions.Compiled));
+ Regex Remover = new Regex("^[\'\"]?(.*?)[\'\"]?$", (System.Text.RegularExpressions.RegexOptions) (RegexOptions.IgnoreCase | RegexOptions.Compiled));
+ string Parameter = null;
+ string[] Parts = null;
+
+ // Valid parameters forms:
+ // {-,/,--}param{ ,=,:}((",')value(",'))
+ // Examples: -param1 value1 --param2 /param3:"Test-:-work" /param4=happy -param5 '--=nice=--'
+
+ try
+ {
+ foreach (string Txt in Args)
+ {
+ // Look for new parameters (-,/ or --) and a possible enclosed value (=,:)
+ Parts = Spliter.Split(Txt, 3);
+ switch (Parts.Length)
+ {
+ case 1:
+ // Found a value (for the last parameter found (space separator))
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parts[0] = Remover.Replace(Parts[0], "$1");
+ Parameters.Add(Parameter, Parts[0]);
+ }
+ Parameter = null;
+ }
+ // else Error: no parameter waiting for a value (skipped)
+ break;
+ case 2:
+ // Found just a parameter
+ // The last parameter is still waiting. With no value, set it to true.
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parameters.Add(Parameter, "true");
+ }
+ }
+ Parameter = Parts[1];
+ break;
+ case 3:
+ // Parameter with enclosed value
+ // The last parameter is still waiting. With no value, set it to true.
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parameters.Add(Parameter, "true");
+ }
+ }
+ Parameter = Parts[1];
+ // Remove possible enclosing characters (",')
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parts[2] = Remover.Replace(Parts[2], "$1");
+ Parameters.Add(Parameter, Parts[2]);
+ }
+ Parameter = null;
+ break;
+ }
+ }
+ // In case a parameter is still waiting
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parameters.Add(Parameter, "true");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Creating new Args failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Tools.PortScan.cs b/mRemoteV1/CS/Tools/Tools.PortScan.cs
new file mode 100644
index 000000000..03b7135f7
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.PortScan.cs
@@ -0,0 +1,687 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Threading;
+//using mRemoteNG.App.Runtime;
+using System.Net.NetworkInformation;
+using System.Net;
+
+
+namespace mRemoteNG.Tools.PortScan
+{
+ public class ScanHost
+ {
+#region Properties
+ private static int _SSHPort = Connection.Protocol.SSH1.Defaults.Port;
+public static int SSHPort
+ {
+ get
+ {
+ return _SSHPort;
+ }
+ set
+ {
+ _SSHPort = value;
+ }
+ }
+
+ private static int _TelnetPort = Connection.Protocol.Telnet.Defaults.Port;
+public static int TelnetPort
+ {
+ get
+ {
+ return _TelnetPort;
+ }
+ set
+ {
+ _TelnetPort = value;
+ }
+ }
+
+ private static int _HTTPPort = Connection.Protocol.HTTP.Defaults.Port;
+public static int HTTPPort
+ {
+ get
+ {
+ return _HTTPPort;
+ }
+ set
+ {
+ _HTTPPort = value;
+ }
+ }
+
+ private static int _HTTPSPort = Connection.Protocol.HTTPS.Defaults.Port;
+public static int HTTPSPort
+ {
+ get
+ {
+ return _HTTPSPort;
+ }
+ set
+ {
+ _HTTPSPort = value;
+ }
+ }
+
+ private static int _RloginPort = Connection.Protocol.Rlogin.Defaults.Port;
+public static int RloginPort
+ {
+ get
+ {
+ return _RloginPort;
+ }
+ set
+ {
+ _RloginPort = value;
+ }
+ }
+
+ private static int _RDPPort = Connection.Protocol.RDP.Defaults.Port;
+public static int RDPPort
+ {
+ get
+ {
+ return _RDPPort;
+ }
+ set
+ {
+ _RDPPort = value;
+ }
+ }
+
+ private static int _VNCPort = Connection.Protocol.VNC.Defaults.Port;
+public static int VNCPort
+ {
+ get
+ {
+ return _VNCPort;
+ }
+ set
+ {
+ _VNCPort = value;
+ }
+ }
+
+ private string _hostName = "";
+public string HostName
+ {
+ get
+ {
+ return _hostName;
+ }
+ set
+ {
+ _hostName = value;
+ }
+ }
+
+public string HostNameWithoutDomain
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(HostName) || HostName == HostIp)
+ {
+ return HostIp;
+ }
+ return HostName.Split('.')[0];
+ }
+ }
+
+ private string _hostIp;
+public string HostIp
+ {
+ get
+ {
+ return _hostIp;
+ }
+ set
+ {
+ _hostIp = value;
+ }
+ }
+
+ private ArrayList _openPorts = new ArrayList();
+public ArrayList OpenPorts
+ {
+ get
+ {
+ return _openPorts;
+ }
+ set
+ {
+ _openPorts = value;
+ }
+ }
+
+ private ArrayList _closedPorts;
+public ArrayList ClosedPorts
+ {
+ get
+ {
+ return _closedPorts;
+ }
+ set
+ {
+ _closedPorts = value;
+ }
+ }
+
+ private bool _RDP;
+public bool RDP
+ {
+ get
+ {
+ return _RDP;
+ }
+ set
+ {
+ _RDP = value;
+ }
+ }
+
+ private bool _VNC;
+public bool VNC
+ {
+ get
+ {
+ return _VNC;
+ }
+ set
+ {
+ _VNC = value;
+ }
+ }
+
+ private bool _SSH;
+public bool SSH
+ {
+ get
+ {
+ return _SSH;
+ }
+ set
+ {
+ _SSH = value;
+ }
+ }
+
+ private bool _Telnet;
+public bool Telnet
+ {
+ get
+ {
+ return _Telnet;
+ }
+ set
+ {
+ _Telnet = value;
+ }
+ }
+
+ private bool _Rlogin;
+public bool Rlogin
+ {
+ get
+ {
+ return _Rlogin;
+ }
+ set
+ {
+ _Rlogin = value;
+ }
+ }
+
+ private bool _HTTP;
+public bool HTTP
+ {
+ get
+ {
+ return _HTTP;
+ }
+ set
+ {
+ _HTTP = value;
+ }
+ }
+
+ private bool _HTTPS;
+public bool HTTPS
+ {
+ get
+ {
+ return _HTTPS;
+ }
+ set
+ {
+ _HTTPS = value;
+ }
+ }
+#endregion
+
+#region Methods
+ public ScanHost(string host)
+ {
+ _hostIp = host;
+ _openPorts = new ArrayList();
+ _closedPorts = new ArrayList();
+ }
+
+ public override string ToString()
+ {
+ try
+ {
+ return "SSH: " + System.Convert.ToString(_SSH) + " Telnet: " + System.Convert.ToString(_Telnet) + " HTTP: " + System.Convert.ToString(_HTTP) + " HTTPS: " + System.Convert.ToString(_HTTPS) + " Rlogin: " + System.Convert.ToString(_Rlogin) + " RDP: " + System.Convert.ToString(_RDP) + " VNC: " + System.Convert.ToString(_VNC);
+ }
+ catch (Exception)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "ToString failed (Tools.PortScan)", true);
+ return "";
+ }
+ }
+
+ public ListViewItem ToListViewItem(bool import)
+ {
+ try
+ {
+ ListViewItem listViewItem = new ListViewItem();
+ listViewItem.Tag = this;
+ if (!string.IsNullOrEmpty(_hostName))
+ {
+ listViewItem.Text = _hostName;
+ }
+ else
+ {
+ listViewItem.Text = _hostIp;
+ }
+
+ if (import)
+ {
+ listViewItem.SubItems.Add(BoolToYesNo(_SSH));
+ listViewItem.SubItems.Add(BoolToYesNo(_Telnet));
+ listViewItem.SubItems.Add(BoolToYesNo(_HTTP));
+ listViewItem.SubItems.Add(BoolToYesNo(_HTTPS));
+ listViewItem.SubItems.Add(BoolToYesNo(_Rlogin));
+ listViewItem.SubItems.Add(BoolToYesNo(_RDP));
+ listViewItem.SubItems.Add(BoolToYesNo(_VNC));
+ }
+ else
+ {
+ string strOpen = "";
+ string strClosed = "";
+
+ foreach (int p in _openPorts)
+ {
+ strOpen += p + ", ";
+ }
+
+ foreach (int p in _closedPorts)
+ {
+ strClosed += p + ", ";
+ }
+
+ listViewItem.SubItems.Add(strOpen.Substring(0, strOpen.Length > 0 ? strOpen.Length - 2 : strOpen.Length));
+ listViewItem.SubItems.Add(strClosed.Substring(0, strClosed.Length > 0 ? strClosed.Length - 2 : strClosed.Length));
+ }
+
+ return listViewItem;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("Tools.PortScan.ToListViewItem() failed.", ex, Messages.MessageClass.WarningMsg, true);
+ return null;
+ }
+ }
+
+ private string BoolToYesNo(bool value)
+ {
+ if (value)
+ {
+ return My.Language.strYes;
+ }
+ else
+ {
+ return My.Language.strNo;
+ }
+ }
+
+ public void SetAllProtocols(bool value)
+ {
+ _VNC = value;
+ _Telnet = value;
+ _SSH = value;
+ _Rlogin = value;
+ _RDP = value;
+ _HTTPS = value;
+ _HTTP = value;
+ }
+#endregion
+ }
+
+ public class Scanner
+ {
+#region Private Members
+ private List _ipAddresses = new List();
+ private List _ports = new List();
+
+ private Thread _scanThread;
+ private List _scannedHosts = new List();
+#endregion
+
+#region Public Methods
+ public Scanner(IPAddress ipAddress1, IPAddress ipAddress2)
+ {
+ IPAddress ipAddressStart = IpAddressMin(ipAddress1, ipAddress2);
+ IPAddress ipAddressEnd = IpAddressMax(ipAddress1, ipAddress2);
+
+ _ports.Clear();
+ _ports.AddRange(new int[] {scanHost.SSHPort, scanHost.TelnetPort, scanHost.HTTPPort, scanHost.HTTPSPort, scanHost.RloginPort, scanHost.RDPPort, scanHost.VNCPort});
+
+ _ipAddresses.Clear();
+ _ipAddresses.AddRange(IpAddressArrayFromRange(ipAddressStart, ipAddressEnd));
+
+ _scannedHosts.Clear();
+ }
+
+ public Scanner(IPAddress ipAddress1, IPAddress ipAddress2, int port1, int port2) : this(ipAddress1, ipAddress2)
+ {
+
+ int portStart = Math.Min(port1, port2);
+ int portEnd = Math.Max(port1, port2);
+
+ _ports.Clear();
+ for (int port = portStart; port <= portEnd; port++)
+ {
+ _ports.Add(port);
+ }
+ }
+
+ public void StartScan()
+ {
+ _scanThread = new Thread(new System.Threading.ThreadStart(ScanAsync));
+ _scanThread.SetApartmentState(ApartmentState.STA);
+ _scanThread.IsBackground = true;
+ _scanThread.Start();
+ }
+
+ public void StopScan()
+ {
+ _scanThread.Abort();
+ }
+
+ public static bool IsPortOpen(string hostname, string port)
+ {
+ try
+ {
+ // ReSharper disable UnusedVariable
+ System.Net.Sockets.TcpClient tcpClient = new System.Net.Sockets.TcpClient(hostname, (int) port);
+ // ReSharper restore UnusedVariable
+ return true;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+#endregion
+
+#region Private Methods
+ private void ScanAsync()
+ {
+ try
+ {
+ int hostCount = 0;
+
+ foreach (IPAddress ipAddress in _ipAddresses)
+ {
+ if (BeginHostScanEvent != null)
+ BeginHostScanEvent(ipAddress.ToString());
+
+ ScanHost scanHost = new ScanHost(ipAddress.ToString());
+ hostCount++;
+
+ if (!IsHostAlive(ipAddress))
+ {
+ scanHost.ClosedPorts.AddRange(_ports);
+ scanHost.SetAllProtocols(false);
+ }
+ else
+ {
+ foreach (int port in _ports)
+ {
+ bool isPortOpen = false;
+
+ try
+ {
+ // ReSharper disable UnusedVariable
+ System.Net.Sockets.TcpClient tcpClient = new System.Net.Sockets.TcpClient(ipAddress.ToString(), port);
+ // ReSharper restore UnusedVariable
+
+ isPortOpen = true;
+ scanHost.OpenPorts.Add(port);
+ }
+ catch (Exception)
+ {
+ isPortOpen = false;
+ scanHost.ClosedPorts.Add(port);
+ }
+
+ if (port == scanHost.SSHPort)
+ {
+ scanHost.SSH = isPortOpen;
+ }
+ else if (port == scanHost.TelnetPort)
+ {
+ scanHost.Telnet = isPortOpen;
+ }
+ else if (port == scanHost.HTTPPort)
+ {
+ scanHost.HTTP = isPortOpen;
+ }
+ else if (port == scanHost.HTTPSPort)
+ {
+ scanHost.HTTPS = isPortOpen;
+ }
+ else if (port == scanHost.RloginPort)
+ {
+ scanHost.Rlogin = isPortOpen;
+ }
+ else if (port == scanHost.RDPPort)
+ {
+ scanHost.RDP = isPortOpen;
+ }
+ else if (port == scanHost.VNCPort)
+ {
+ scanHost.VNC = isPortOpen;
+ }
+ }
+ }
+
+ try
+ {
+ scanHost.HostName = Dns.GetHostEntry(scanHost.HostIp).HostName;
+ }
+ catch (Exception)
+ {
+ }
+ if (string.IsNullOrEmpty(scanHost.HostName))
+ {
+ scanHost.HostName = scanHost.HostIp;
+ }
+
+ _scannedHosts.Add(scanHost);
+ if (HostScannedEvent != null)
+ HostScannedEvent(scanHost, hostCount, _ipAddresses.Count);
+ }
+
+ if (ScanCompleteEvent != null)
+ ScanCompleteEvent(_scannedHosts);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "StartScanBG failed (Tools.PortScan)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private static bool IsHostAlive(IPAddress ipAddress)
+ {
+ Ping pingSender = new Ping();
+ PingReply pingReply;
+
+ try
+ {
+ pingReply = pingSender.Send(ipAddress);
+
+ if (pingReply.Status == IPStatus.Success)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+
+ private static IPAddress[] IpAddressArrayFromRange(IPAddress ipAddress1, IPAddress ipAddress2)
+ {
+ IPAddress startIpAddress = IpAddressMin(ipAddress1, ipAddress2);
+ IPAddress endIpAddress = IpAddressMax(ipAddress1, ipAddress2);
+
+ int startAddress = IpAddressToInt32(startIpAddress);
+ int endAddress = IpAddressToInt32(endIpAddress);
+ int addressCount = endAddress - startAddress;
+
+ IPAddress[] addressArray = new IPAddress[addressCount + 1];
+ int index = 0;
+ for (int address = startAddress; address <= endAddress; address++)
+ {
+ addressArray[index] = IpAddressFromInt32(address);
+ index++;
+ }
+
+ return addressArray;
+ }
+
+ private static IPAddress IpAddressMin(IPAddress ipAddress1, IPAddress ipAddress2)
+ {
+ if (IpAddressCompare(ipAddress1, ipAddress2) < 0) // ipAddress1 < ipAddress2
+ {
+ return ipAddress1;
+ }
+ else
+ {
+ return ipAddress2;
+ }
+ }
+
+ private static IPAddress IpAddressMax(IPAddress ipAddress1, IPAddress ipAddress2)
+ {
+ if (IpAddressCompare(ipAddress1, ipAddress2) > 0) // ipAddress1 > ipAddress2
+ {
+ return ipAddress1;
+ }
+ else
+ {
+ return ipAddress2;
+ }
+ }
+
+ private static int IpAddressCompare(IPAddress ipAddress1, IPAddress ipAddress2)
+ {
+ return IpAddressToInt32(ipAddress1) - IpAddressToInt32(ipAddress2);
+ }
+
+ private static int IpAddressToInt32(IPAddress ipAddress)
+ {
+ if (!(ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork))
+ {
+ throw (new ArgumentException("ipAddress"));
+ }
+
+ byte[] addressBytes = ipAddress.GetAddressBytes(); // in network order (big-endian)
+ if (BitConverter.IsLittleEndian)
+ {
+ Array.Reverse(addressBytes); // to host order (little-endian)
+ }
+ Debug.Assert(addressBytes.Length == 4);
+
+ return BitConverter.ToInt32(addressBytes, 0);
+ }
+
+ private static IPAddress IpAddressFromInt32(int ipAddress)
+ {
+ byte[] addressBytes = BitConverter.GetBytes(ipAddress); // in host order
+ if (BitConverter.IsLittleEndian)
+ {
+ Array.Reverse(addressBytes); // to network order (big-endian)
+ }
+ Debug.Assert(addressBytes.Length == 4);
+
+ return new ipAddress(addressBytes);
+ }
+#endregion
+
+#region Events
+ public delegate void BeginHostScanEventHandler(string host);
+ private BeginHostScanEventHandler BeginHostScanEvent;
+
+ public event BeginHostScanEventHandler BeginHostScan
+ {
+ add
+ {
+ BeginHostScanEvent = (BeginHostScanEventHandler) System.Delegate.Combine(BeginHostScanEvent, value);
+ }
+ remove
+ {
+ BeginHostScanEvent = (BeginHostScanEventHandler) System.Delegate.Remove(BeginHostScanEvent, value);
+ }
+ }
+
+ public delegate void HostScannedEventHandler(ScanHost scanHost, int scannedHostCount, int totalHostCount);
+ private HostScannedEventHandler HostScannedEvent;
+
+ public event HostScannedEventHandler HostScanned
+ {
+ add
+ {
+ HostScannedEvent = (HostScannedEventHandler) System.Delegate.Combine(HostScannedEvent, value);
+ }
+ remove
+ {
+ HostScannedEvent = (HostScannedEventHandler) System.Delegate.Remove(HostScannedEvent, value);
+ }
+ }
+
+ public delegate void ScanCompleteEventHandler(List hosts);
+ private ScanCompleteEventHandler ScanCompleteEvent;
+
+ public event ScanCompleteEventHandler ScanComplete
+ {
+ add
+ {
+ ScanCompleteEvent = (ScanCompleteEventHandler) System.Delegate.Combine(ScanCompleteEvent, value);
+ }
+ remove
+ {
+ ScanCompleteEvent = (ScanCompleteEventHandler) System.Delegate.Remove(ScanCompleteEvent, value);
+ }
+ }
+
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Tools.SystemMenu.cs b/mRemoteV1/CS/Tools/Tools.SystemMenu.cs
new file mode 100644
index 000000000..06da4ba0e
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.SystemMenu.cs
@@ -0,0 +1,64 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.Tools
+{
+ public class SystemMenu
+ {
+ public enum Flags
+ {
+ MF_STRING = App.Native.MF_STRING,
+ MF_SEPARATOR = App.Native.MF_SEPARATOR,
+ MF_BYCOMMAND = App.Native.MF_BYCOMMAND,
+ MF_BYPOSITION = App.Native.MF_BYPOSITION,
+ MF_POPUP = App.Native.MF_POPUP,
+
+ WM_SYSCOMMAND = App.Native.WM_SYSCOMMAND
+ }
+
+ public IntPtr SystemMenuHandle;
+ public IntPtr FormHandle;
+
+ public SystemMenu(IntPtr Handle)
+ {
+ FormHandle = Handle;
+ SystemMenuHandle = App.Native.GetSystemMenu(FormHandle, false);
+ }
+
+ public void Reset()
+ {
+ SystemMenuHandle = App.Native.GetSystemMenu(FormHandle, true);
+ }
+
+ public void AppendMenuItem(IntPtr ParentMenu, Flags Flags, int ID, string Text)
+ {
+ App.Native.AppendMenu(ParentMenu, Flags, ID, Text);
+ }
+
+ public IntPtr CreatePopupMenuItem()
+ {
+ return App.Native.CreatePopupMenu();
+ }
+
+ public bool InsertMenuItem(IntPtr SysMenu, int Position, Flags Flags, IntPtr SubMenu, string Text)
+ {
+ return App.Native.InsertMenu(SysMenu, Position, Flags, SubMenu, Text);
+ }
+
+ public IntPtr SetBitmap(IntPtr Menu, int Position, Flags Flags, Bitmap Bitmap)
+ {
+ return App.Native.SetMenuItemBitmaps(Menu, Position, Flags, Bitmap.GetHbitmap(), Bitmap.GetHbitmap());
+ }
+ }
+}
diff --git a/mRemoteV1/CS/Tools/Tools.WindowPlacement.cs b/mRemoteV1/CS/Tools/Tools.WindowPlacement.cs
new file mode 100644
index 000000000..6ae008127
--- /dev/null
+++ b/mRemoteV1/CS/Tools/Tools.WindowPlacement.cs
@@ -0,0 +1,161 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Runtime.InteropServices;
+
+
+namespace mRemoteNG.Tools
+{
+ public class WindowPlacement
+ {
+#region Windows API
+#region Functions
+ [DllImport("user32", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
+ private static extern bool GetWindowPlacement(System.IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
+ [DllImport("user32", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
+ private static extern bool SetWindowPlacement(System.IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
+#endregion
+
+#region Structures
+ private struct WINDOWPLACEMENT
+ {
+ public UInt32 length;
+ public UInt32 flags;
+ public UInt32 showCmd;
+ public POINT ptMinPosition;
+ public POINT ptMaxPosition;
+ public RECT rcNormalPosition;
+ }
+
+ private struct POINT
+ {
+ public long x;
+ public long y;
+ }
+
+ private struct RECT
+ {
+ public long left;
+ public long top;
+ public long right;
+ public long bottom;
+ }
+#endregion
+
+#region Constants
+ // WINDOWPLACEMENT.flags values
+ private const UInt32 WPF_SETMINPOSITION = 0x1;
+ private const UInt32 WPF_RESTORETOMAXIMIZED = 0x2;
+ private const UInt32 WPF_ASYNCWINDOWPLACEMENT = 0x4;
+
+ // WINDOWPLACEMENT.showCmd values
+ private const UInt32 SW_HIDE = 0;
+ private const UInt32 SW_SHOWNORMAL = 1;
+ private const UInt32 SW_SHOWMINIMIZED = 2;
+ private const UInt32 SW_SHOWMAXIMIZED = 3;
+ private const UInt32 SW_MAXIMIZE = 3;
+ private const UInt32 SW_SHOWNOACTIVATE = 4;
+ private const UInt32 SW_SHOW = 5;
+ private const UInt32 SW_MINIMIZE = 6;
+ private const UInt32 SW_SHOWMINNOACTIVE = 7;
+ private const UInt32 SW_SHOWNA = 8;
+ private const UInt32 SW_RESTORE = 9;
+#endregion
+#endregion
+
+#region Private Variables
+ private Windows.Forms.Form _form;
+#endregion
+
+#region Constructors/Destructors
+ public WindowPlacement(Windows.Forms.Form form)
+ {
+ _form = form;
+ }
+#endregion
+
+#region Public Properties
+public Windows.Forms.Form Form
+ {
+ get
+ {
+ return _form;
+ }
+ set
+ {
+ _form = value;
+ }
+ }
+
+public bool RestoreToMaximized
+ {
+ get
+ {
+ WINDOWPLACEMENT windowPlacement = GetWindowPlacement();
+ return windowPlacement.flags & WPF_RESTORETOMAXIMIZED;
+ }
+ set
+ {
+ WINDOWPLACEMENT windowPlacement = GetWindowPlacement();
+ if (value)
+ {
+ windowPlacement.flags = windowPlacement.flags | WPF_RESTORETOMAXIMIZED;
+ }
+ else
+ {
+ windowPlacement.flags = windowPlacement.flags & ~WPF_RESTORETOMAXIMIZED;
+ }
+ SetWindowPlacement(windowPlacement);
+ }
+ }
+#endregion
+
+#region Private Functions
+ private WINDOWPLACEMENT GetWindowPlacement()
+ {
+ if (_form == null)
+ {
+ throw (new System.NullReferenceException("WindowPlacement.Form is not set."));
+ }
+ WINDOWPLACEMENT windowPlacement = new WINDOWPLACEMENT();
+ windowPlacement.length = Marshal.SizeOf(windowPlacement);
+ try
+ {
+ GetWindowPlacement(_form.Handle, ref windowPlacement);
+ return windowPlacement;
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+
+ private bool SetWindowPlacement(WINDOWPLACEMENT windowPlacement)
+ {
+ if (_form == null)
+ {
+ throw (new System.NullReferenceException("WindowPlacement.Form is not set."));
+ }
+ windowPlacement.length = Marshal.SizeOf(windowPlacement);
+ try
+ {
+ return SetWindowPlacement(_form.Handle, ref windowPlacement);
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/Tree/Tree.Node.cs b/mRemoteV1/CS/Tree/Tree.Node.cs
new file mode 100644
index 000000000..f03947f7d
--- /dev/null
+++ b/mRemoteV1/CS/Tree/Tree.Node.cs
@@ -0,0 +1,697 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.App.Runtime;
+using System.DirectoryServices;
+
+
+namespace mRemoteNG.Tree
+{
+ public class Node
+ {
+ public enum Type
+ {
+ None = 0,
+ Root = 1,
+ Container = 2,
+ Connection = 3,
+ PuttyRoot = 4,
+ PuttySession = 5
+ }
+
+ private static TreeView _TreeView;
+public static TreeView TreeView
+ {
+ get
+ {
+ return _TreeView;
+ }
+ set
+ {
+ _TreeView = value;
+ }
+ }
+
+public static TreeNode SelectedNode
+ {
+ get
+ {
+ return _TreeView.SelectedNode;
+ }
+ set
+ {
+ treeNodeToBeSelected = value;
+ SelectNode();
+ }
+ }
+
+ private static TreeNode treeNodeToBeSelected;
+ private delegate void SelectNodeCB();
+ private static void SelectNode()
+ {
+ if (_TreeView.InvokeRequired == true)
+ {
+ SelectNodeCB d = new SelectNodeCB(SelectNode);
+ _TreeView.Invoke(d);
+ }
+ else
+ {
+ _TreeView.SelectedNode = treeNodeToBeSelected;
+ }
+ }
+
+
+ public static string GetConstantID(TreeNode node)
+ {
+ if (GetNodeType(node) == Type.Connection)
+ {
+ return (node.Tag as mRemoteNG.Connection.Info).ConstantID;
+ }
+ else if (GetNodeType(node) == Type.Container)
+ {
+ return (node.Tag as mRemoteNG.Container.Info).ConnectionInfo.ConstantID;
+ }
+
+ return null;
+ }
+
+ public static TreeNode GetNodeFromPositionID(int id)
+ {
+ foreach (Connection.Info conI in ConnectionList)
+ {
+ if (conI.PositionID == id)
+ {
+ if (conI.IsContainer)
+ {
+ return (conI.Parent as Container.Info).TreeNode;
+ }
+ else
+ {
+ return conI.TreeNode;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static TreeNode GetNodeFromConstantID(string id)
+ {
+ foreach (Connection.Info conI in ConnectionList)
+ {
+ if (conI.ConstantID == id)
+ {
+ if (conI.IsContainer)
+ {
+ return (conI.Parent as Container.Info).TreeNode;
+ }
+ else
+ {
+ return conI.TreeNode;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static Tree.Node.Type GetNodeType(TreeNode treeNode)
+ {
+ try
+ {
+ if (treeNode == null)
+ {
+ return Type.None;
+ }
+
+ if (treeNode.Tag == null)
+ {
+ return Type.None;
+ }
+
+ if (treeNode.Tag is Root.PuttySessions.Info)
+ {
+ return Type.PuttyRoot;
+ }
+ else if (treeNode.Tag is Root.Info)
+ {
+ return Type.Root;
+ }
+ else if (treeNode.Tag is Container.Info)
+ {
+ return Type.Container;
+ }
+ else if (treeNode.Tag is Connection.PuttySession.Info)
+ {
+ return Type.PuttySession;
+ }
+ else if (treeNode.Tag is Connection.Info)
+ {
+ return Type.Connection;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t get node type" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return Type.None;
+ }
+
+ public static Tree.Node.Type GetNodeTypeFromString(string str)
+ {
+ try
+ {
+ switch (str.ToLower())
+ {
+ case "root":
+ return Type.Root;
+ case "container":
+ return Type.Container;
+ case "connection":
+ return Type.Connection;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t get node type from string" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return Type.None;
+ }
+
+ public static TreeNode Find(TreeNode treeNode, string searchFor)
+ {
+ TreeNode tmpNode = default(TreeNode);
+
+ try
+ {
+ if ((treeNode.Text.ToLower()).IndexOf(searchFor.ToLower()) + 1 > 0)
+ {
+ return treeNode;
+ }
+ else
+ {
+ foreach (TreeNode childNode in treeNode.Nodes)
+ {
+ tmpNode = Find(childNode, searchFor);
+ if (!(tmpNode == null))
+ {
+ return tmpNode;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Find node failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+
+ public static TreeNode Find(TreeNode treeNode, Connection.Info conInfo)
+ {
+ TreeNode tmpNode = default(TreeNode);
+
+ try
+ {
+ if (treeNode.Tag == conInfo)
+ {
+ return treeNode;
+ }
+ else
+ {
+ foreach (TreeNode childNode in treeNode.Nodes)
+ {
+ tmpNode = Find(childNode, conInfo);
+ if (!(tmpNode == null))
+ {
+ return tmpNode;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Find node failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+
+ public static bool IsEmpty(TreeNode treeNode)
+ {
+ try
+ {
+ if (treeNode.Nodes.Count <= 0)
+ {
+ return false;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "IsEmpty (Tree.Node) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return true;
+ }
+
+
+
+ public static TreeNode AddNode(Type nodeType, string name = null)
+ {
+ try
+ {
+ TreeNode treeNode = new TreeNode();
+ string defaultName = "";
+
+ switch (nodeType)
+ {
+ case Type.Connection:
+ case Type.PuttySession:
+ defaultName = My.Language.strNewConnection;
+ treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ break;
+ case Type.Container:
+ defaultName = My.Language.strNewFolder;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+ break;
+ case Type.Root:
+ defaultName = My.Language.strNewRoot;
+ treeNode.ImageIndex = Images.Enums.TreeImage.Root;
+ treeNode.SelectedImageIndex = Images.Enums.TreeImage.Root;
+ break;
+ }
+
+ if (!string.IsNullOrEmpty(name))
+ {
+ treeNode.Name = name;
+ }
+ else
+ {
+ treeNode.Name = defaultName;
+ }
+ treeNode.Text = treeNode.Name;
+
+ return treeNode;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNode failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+
+ public static void CloneNode(TreeNode oldTreeNode, TreeNode parentNode = null)
+ {
+ try
+ {
+ if (GetNodeType(oldTreeNode) == Type.Connection)
+ {
+ Connection.Info oldConnectionInfo = (Connection.Info) oldTreeNode.Tag;
+
+ Connection.Info newConnectionInfo = oldConnectionInfo.Copy();
+ Connection.Info.Inheritance newInheritance = oldConnectionInfo.Inherit.Copy();
+ newInheritance.Parent = newConnectionInfo;
+ newConnectionInfo.Inherit = newInheritance;
+
+ ConnectionList.Add(newConnectionInfo);
+
+ TreeNode newTreeNode = new TreeNode(newConnectionInfo.Name);
+ newTreeNode.Tag = newConnectionInfo;
+ newTreeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+ newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed;
+
+ newConnectionInfo.TreeNode = newTreeNode;
+
+ if (parentNode == null)
+ {
+ oldTreeNode.Parent.Nodes.Insert(oldTreeNode.Index + 1, newTreeNode);
+ TreeView.SelectedNode = newTreeNode;
+ }
+ else
+ {
+ Container.Info parentContainerInfo = parentNode.Tag as Container.Info;
+ if (parentContainerInfo != null)
+ {
+ newConnectionInfo.Parent = parentContainerInfo;
+ }
+ parentNode.Nodes.Add(newTreeNode);
+ }
+ }
+ else if (GetNodeType(oldTreeNode) == Type.Container)
+ {
+ Container.Info oldContainerInfo = (Container.Info) oldTreeNode.Tag;
+
+ Container.Info newContainerInfo = oldContainerInfo.Copy();
+ Connection.Info newConnectionInfo = oldContainerInfo.ConnectionInfo.Copy();
+ newContainerInfo.ConnectionInfo = newConnectionInfo;
+
+ TreeNode newTreeNode = new TreeNode(newContainerInfo.Name);
+ newTreeNode.Tag = newContainerInfo;
+ newTreeNode.ImageIndex = Images.Enums.TreeImage.Container;
+ newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Container;
+ newContainerInfo.ConnectionInfo.Parent = newContainerInfo;
+
+ ContainerList.Add(newContainerInfo);
+
+ if (parentNode == null)
+ {
+ oldTreeNode.Parent.Nodes.Insert(oldTreeNode.Index + 1, newTreeNode);
+ TreeView.SelectedNode = newTreeNode;
+ }
+ else
+ {
+ parentNode.Nodes.Add(newTreeNode);
+ }
+
+ foreach (TreeNode childTreeNode in oldTreeNode.Nodes)
+ {
+ CloneNode(childTreeNode, newTreeNode);
+ }
+
+ newTreeNode.Expand();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, string.Format(My.Language.strErrorCloneNodeFailed, ex.Message));
+ }
+ }
+
+ public static void SetNodeImage(TreeNode treeNode, Images.Enums.TreeImage Img)
+ {
+ SetNodeImageIndex(treeNode, Img);
+ }
+
+ private delegate void SetNodeImageIndexDelegate(TreeNode treeNode, int imageIndex);
+ private static void SetNodeImageIndex(TreeNode treeNode, int imageIndex)
+ {
+ if (treeNode == null || treeNode.TreeView == null)
+ {
+ return ;
+ }
+ if (treeNode.TreeView.InvokeRequired)
+ {
+ treeNode.TreeView.Invoke(new SetNodeImageIndexDelegate(SetNodeImageIndex), new object[] {treeNode, imageIndex});
+ return ;
+ }
+
+ treeNode.ImageIndex = imageIndex;
+ treeNode.SelectedImageIndex = imageIndex;
+ }
+
+ // VBConversions Note: Former VB static variables moved to class level because they aren't supported in C#.
+ static TreeNode SetNodeToolTip_old_node = default(TreeNode);
+
+ public static void SetNodeToolTip(MouseEventArgs e, ToolTip tTip)
+ {
+ try
+ {
+ if (My.Settings.Default.ShowDescriptionTooltipsInTree)
+ {
+ //Find the node under the mouse.
+ // static TreeNode old_node = default(TreeNode); VBConversions Note: Static variable moved to class level and renamed SetNodeToolTip_old_node. Local static variables are not supported in C#.
+ TreeNode new_node = _TreeView.GetNodeAt(e.X, e.Y);
+ if (new_node == SetNodeToolTip_old_node)
+ {
+ return;
+ }
+ SetNodeToolTip_old_node = new_node;
+
+ //See if we have a node.
+ if (SetNodeToolTip_old_node == null)
+ {
+ tTip.SetToolTip(_TreeView, "");
+ }
+ else
+ {
+ //Get this node's object data.
+ if (GetNodeType(SetNodeToolTip_old_node) == Type.Connection)
+ {
+ tTip.SetToolTip(_TreeView, (SetNodeToolTip_old_node.Tag as mRemoteNG.Connection.Info).Description);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SetNodeToolTip failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+
+ public static void DeleteSelectedNode()
+ {
+ try
+ {
+ if (SelectedNode == null)
+ {
+ return ;
+ }
+
+ if (Tree.Node.GetNodeType(SelectedNode) == Type.Root)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "The root item cannot be deleted!");
+ }
+ else if (Tree.Node.GetNodeType(SelectedNode) == Type.Container)
+ {
+ if (Tree.Node.IsEmpty(SelectedNode) == false)
+ {
+ if (Interaction.MsgBox(string.Format(My.Language.strConfirmDeleteNodeFolder, SelectedNode.Text), (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.YesNo | MsgBoxStyle.Question), null) == MsgBoxResult.Yes)
+ {
+ SelectedNode.Remove();
+ }
+ }
+ else
+ {
+ if (Interaction.MsgBox(string.Format(My.Language.strConfirmDeleteNodeFolderNotEmpty, SelectedNode.Text), (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.YesNo | MsgBoxStyle.Question), null) == MsgBoxResult.Yes)
+ {
+ foreach (TreeNode tNode in SelectedNode.Nodes)
+ {
+ tNode.Remove();
+ }
+ SelectedNode.Remove();
+ }
+ }
+ }
+ else if (Tree.Node.GetNodeType(SelectedNode) == Type.Connection)
+ {
+ if (Interaction.MsgBox(string.Format(My.Language.strConfirmDeleteNodeConnection, SelectedNode.Text), (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.YesNo | MsgBoxStyle.Question), null) == MsgBoxResult.Yes)
+ {
+ SelectedNode.Remove();
+ }
+ }
+ else
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Tree item type is unknown so it cannot be deleted!");
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Deleting selected node failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void StartRenameSelectedNode()
+ {
+ if (SelectedNode != null)
+ {
+ SelectedNode.BeginEdit();
+ }
+ }
+
+ public static void FinishRenameSelectedNode(string newName)
+ {
+ if (newName == null)
+ {
+ return ;
+ }
+
+ if (newName.Length > 0)
+ {
+ SelectedNode.Tag.Name = newName;
+
+ if (My.Settings.Default.SetHostnameLikeDisplayName)
+ {
+ Connection.Info connectionInfo = SelectedNode.Tag as Connection.Info;
+ if (connectionInfo != null)
+ {
+ connectionInfo.Hostname = newName;
+ }
+ }
+ }
+ }
+
+ public static void MoveNodeUp()
+ {
+ try
+ {
+ if (SelectedNode != null)
+ {
+ if (!(SelectedNode.PrevNode == null))
+ {
+ TreeView.BeginUpdate();
+ TreeView.Sorted = false;
+
+ TreeNode newNode = SelectedNode.Clone();
+ SelectedNode.Parent.Nodes.Insert(SelectedNode.Index - 1, newNode);
+ SelectedNode.Remove();
+ SelectedNode = newNode;
+
+ TreeView.EndUpdate();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "MoveNodeUp failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void MoveNodeDown()
+ {
+ try
+ {
+ if (SelectedNode != null)
+ {
+ if (!(SelectedNode.NextNode == null))
+ {
+ TreeView.BeginUpdate();
+ TreeView.Sorted = false;
+
+ TreeNode newNode = SelectedNode.Clone();
+ SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 2, newNode);
+ SelectedNode.Remove();
+ SelectedNode = newNode;
+
+ TreeView.EndUpdate();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "MoveNodeDown failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public static void ExpandAllNodes()
+ {
+ TreeView.BeginUpdate();
+ TreeView.ExpandAll();
+ TreeView.EndUpdate();
+ }
+
+ public static void CollapseAllNodes()
+ {
+ TreeView.BeginUpdate();
+ foreach (TreeNode treeNode in TreeView.Nodes[0].Nodes)
+ {
+ treeNode.Collapse(false);
+ }
+ TreeView.EndUpdate();
+ }
+
+ public static void Sort(TreeNode treeNode, System.Windows.Forms.SortOrder sorting)
+ {
+ if (TreeView == null)
+ {
+ return ;
+ }
+
+ TreeView.BeginUpdate();
+
+ if (treeNode == null)
+ {
+ if (TreeView.Nodes.Count > 0)
+ {
+ treeNode = TreeView.Nodes[0];
+ }
+ else
+ {
+ return ;
+ }
+ }
+ else if (GetNodeType(treeNode) == Type.Connection)
+ {
+ treeNode = treeNode.Parent;
+ if (treeNode == null)
+ {
+ return ;
+ }
+ }
+
+ Sort(treeNode, new Tools.Controls.TreeNodeSorter(sorting));
+
+ TreeView.EndUpdate();
+ }
+
+ // Adapted from http://www.codeproject.com/Tips/252234/ASP-NET-TreeView-Sort
+ private static void Sort(TreeNode treeNode, Tools.Controls.TreeNodeSorter nodeSorter)
+ {
+ foreach (TreeNode childNode in treeNode.Nodes)
+ {
+ Sort(childNode, nodeSorter);
+ }
+
+ try
+ {
+ List sortedNodes = new List();
+ TreeNode currentNode = null;
+ while (treeNode.Nodes.Count > 0)
+ {
+ foreach (TreeNode childNode in treeNode.Nodes)
+ {
+ if (currentNode == null || nodeSorter.Compare(childNode, currentNode) < 0)
+ {
+ currentNode = childNode;
+ }
+ }
+ treeNode.Nodes.Remove(currentNode);
+ sortedNodes.Add(currentNode);
+ currentNode = null;
+ }
+
+ foreach (TreeNode childNode in sortedNodes)
+ {
+ treeNode.Nodes.Add(childNode);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Sort nodes failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private delegate void ResetTreeDelegate();
+ public static void ResetTree()
+ {
+ if (TreeView.InvokeRequired)
+ {
+ ResetTreeDelegate resetTreeDelegate = new ResetTreeDelegate(ResetTree);
+ Windows.treeForm.Invoke(resetTreeDelegate);
+ }
+ else
+ {
+ TreeView.BeginUpdate();
+ TreeView.Nodes.Clear();
+ TreeView.Nodes.Add(My.Language.strConnections);
+ TreeView.EndUpdate();
+ }
+ }
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.About.cs b/mRemoteV1/CS/UI/UI.Window.About.cs
new file mode 100644
index 000000000..01f305605
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.About.cs
@@ -0,0 +1,360 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+using System.IO;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class About : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.Label lblCopyright;
+ internal System.Windows.Forms.Label lblTitle;
+ internal System.Windows.Forms.Label lblVersion;
+ internal System.Windows.Forms.Label lblLicense;
+ internal System.Windows.Forms.TextBox txtChangeLog;
+ internal System.Windows.Forms.Label lblChangeLog;
+ internal System.Windows.Forms.Panel pnlBottom;
+ internal System.Windows.Forms.PictureBox pbLogo;
+ internal System.Windows.Forms.Label lblEdition;
+ internal System.Windows.Forms.LinkLabel llblFAMFAMFAM;
+ internal System.Windows.Forms.LinkLabel llblMagicLibrary;
+ internal System.Windows.Forms.LinkLabel llblWeifenLuo;
+ internal System.Windows.Forms.Panel pnlTop;
+
+ private void InitializeComponent()
+ {
+ this.pnlTop = new System.Windows.Forms.Panel();
+ this.Load += new System.EventHandler(About_Load);
+ this.lblEdition = new System.Windows.Forms.Label();
+ this.pbLogo = new System.Windows.Forms.PictureBox();
+ this.pnlBottom = new System.Windows.Forms.Panel();
+ this.llblWeifenLuo = new System.Windows.Forms.LinkLabel();
+ this.llblWeifenLuo.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llblWeifenLuo_LinkClicked);
+ this.llblMagicLibrary = new System.Windows.Forms.LinkLabel();
+ this.llblMagicLibrary.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llblMagicLibrary_LinkClicked);
+ this.llblFAMFAMFAM = new System.Windows.Forms.LinkLabel();
+ this.llblFAMFAMFAM.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llblFAMFAMFAM_LinkClicked);
+ this.txtChangeLog = new System.Windows.Forms.TextBox();
+ this.lblTitle = new System.Windows.Forms.Label();
+ this.lblVersion = new System.Windows.Forms.Label();
+ this.lblChangeLog = new System.Windows.Forms.Label();
+ this.lblLicense = new System.Windows.Forms.Label();
+ this.lblCopyright = new System.Windows.Forms.Label();
+ this.pnlTop.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbLogo).BeginInit();
+ this.pnlBottom.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //pnlTop
+ //
+ this.pnlTop.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlTop.BackColor = System.Drawing.Color.Black;
+ this.pnlTop.Controls.Add(this.lblEdition);
+ this.pnlTop.Controls.Add(this.pbLogo);
+ this.pnlTop.ForeColor = System.Drawing.Color.White;
+ this.pnlTop.Location = new System.Drawing.Point(-1, -1);
+ this.pnlTop.Name = "pnlTop";
+ this.pnlTop.Size = new System.Drawing.Size(788, 145);
+ this.pnlTop.TabIndex = 0;
+ //
+ //lblEdition
+ //
+ this.lblEdition.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.lblEdition.BackColor = System.Drawing.Color.Black;
+ this.lblEdition.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (14.25F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblEdition.ForeColor = System.Drawing.Color.White;
+ this.lblEdition.Location = new System.Drawing.Point(512, 112);
+ this.lblEdition.Name = "lblEdition";
+ this.lblEdition.Size = new System.Drawing.Size(264, 24);
+ this.lblEdition.TabIndex = 0;
+ this.lblEdition.Text = "Edition";
+ this.lblEdition.TextAlign = System.Drawing.ContentAlignment.BottomRight;
+ this.lblEdition.Visible = false;
+ //
+ //pbLogo
+ //
+ this.pbLogo.Image = global::My.Resources.Resources.Logo;
+ this.pbLogo.Location = new System.Drawing.Point(8, 8);
+ this.pbLogo.Name = "pbLogo";
+ this.pbLogo.Size = new System.Drawing.Size(492, 128);
+ this.pbLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.pbLogo.TabIndex = 1;
+ this.pbLogo.TabStop = false;
+ //
+ //pnlBottom
+ //
+ this.pnlBottom.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlBottom.BackColor = System.Drawing.SystemColors.Control;
+ this.pnlBottom.Controls.Add(this.llblWeifenLuo);
+ this.pnlBottom.Controls.Add(this.llblMagicLibrary);
+ this.pnlBottom.Controls.Add(this.llblFAMFAMFAM);
+ this.pnlBottom.Controls.Add(this.txtChangeLog);
+ this.pnlBottom.Controls.Add(this.lblTitle);
+ this.pnlBottom.Controls.Add(this.lblVersion);
+ this.pnlBottom.Controls.Add(this.lblChangeLog);
+ this.pnlBottom.Controls.Add(this.lblLicense);
+ this.pnlBottom.Controls.Add(this.lblCopyright);
+ this.pnlBottom.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.pnlBottom.Location = new System.Drawing.Point(-1, 144);
+ this.pnlBottom.Name = "pnlBottom";
+ this.pnlBottom.Size = new System.Drawing.Size(788, 418);
+ this.pnlBottom.TabIndex = 1;
+ //
+ //llblWeifenLuo
+ //
+ this.llblWeifenLuo.AutoSize = true;
+ this.llblWeifenLuo.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.llblWeifenLuo.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.llblWeifenLuo.LinkColor = System.Drawing.Color.Blue;
+ this.llblWeifenLuo.Location = new System.Drawing.Point(16, 158);
+ this.llblWeifenLuo.Name = "llblWeifenLuo";
+ this.llblWeifenLuo.Size = new System.Drawing.Size(78, 22);
+ this.llblWeifenLuo.TabIndex = 9;
+ this.llblWeifenLuo.TabStop = true;
+ this.llblWeifenLuo.Text = "WeifenLuo";
+ this.llblWeifenLuo.UseCompatibleTextRendering = true;
+ //
+ //llblMagicLibrary
+ //
+ this.llblMagicLibrary.AutoSize = true;
+ this.llblMagicLibrary.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.llblMagicLibrary.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.llblMagicLibrary.LinkColor = System.Drawing.Color.Blue;
+ this.llblMagicLibrary.Location = new System.Drawing.Point(16, 136);
+ this.llblMagicLibrary.Name = "llblMagicLibrary";
+ this.llblMagicLibrary.Size = new System.Drawing.Size(92, 22);
+ this.llblMagicLibrary.TabIndex = 8;
+ this.llblMagicLibrary.TabStop = true;
+ this.llblMagicLibrary.Text = "MagicLibrary";
+ this.llblMagicLibrary.UseCompatibleTextRendering = true;
+ //
+ //llblFAMFAMFAM
+ //
+ this.llblFAMFAMFAM.AutoSize = true;
+ this.llblFAMFAMFAM.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.llblFAMFAMFAM.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.llblFAMFAMFAM.LinkColor = System.Drawing.Color.Blue;
+ this.llblFAMFAMFAM.Location = new System.Drawing.Point(16, 116);
+ this.llblFAMFAMFAM.Name = "llblFAMFAMFAM";
+ this.llblFAMFAMFAM.Size = new System.Drawing.Size(101, 22);
+ this.llblFAMFAMFAM.TabIndex = 4;
+ this.llblFAMFAMFAM.TabStop = true;
+ this.llblFAMFAMFAM.Text = "FAMFAMFAM";
+ this.llblFAMFAMFAM.UseCompatibleTextRendering = true;
+ //
+ //txtChangeLog
+ //
+ this.txtChangeLog.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtChangeLog.BackColor = System.Drawing.SystemColors.Control;
+ this.txtChangeLog.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Default;
+ this.txtChangeLog.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (9.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.txtChangeLog.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.txtChangeLog.Location = new System.Drawing.Point(24, 224);
+ this.txtChangeLog.Multiline = true;
+ this.txtChangeLog.Name = "txtChangeLog";
+ this.txtChangeLog.ReadOnly = true;
+ this.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.txtChangeLog.Size = new System.Drawing.Size(760, 192);
+ this.txtChangeLog.TabIndex = 7;
+ this.txtChangeLog.TabStop = false;
+ //
+ //lblTitle
+ //
+ this.lblTitle.AutoSize = true;
+ this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (14.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblTitle.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblTitle.Location = new System.Drawing.Point(16, 16);
+ this.lblTitle.Name = "lblTitle";
+ this.lblTitle.Size = new System.Drawing.Size(122, 27);
+ this.lblTitle.TabIndex = 0;
+ this.lblTitle.Text = "mRemoteNG";
+ this.lblTitle.UseCompatibleTextRendering = true;
+ //
+ //lblVersion
+ //
+ this.lblVersion.AutoSize = true;
+ this.lblVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblVersion.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblVersion.Location = new System.Drawing.Point(16, 56);
+ this.lblVersion.Name = "lblVersion";
+ this.lblVersion.Size = new System.Drawing.Size(57, 22);
+ this.lblVersion.TabIndex = 1;
+ this.lblVersion.Text = "Version";
+ this.lblVersion.UseCompatibleTextRendering = true;
+ //
+ //lblChangeLog
+ //
+ this.lblChangeLog.AutoSize = true;
+ this.lblChangeLog.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblChangeLog.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblChangeLog.Location = new System.Drawing.Point(16, 199);
+ this.lblChangeLog.Name = "lblChangeLog";
+ this.lblChangeLog.Size = new System.Drawing.Size(92, 22);
+ this.lblChangeLog.TabIndex = 6;
+ this.lblChangeLog.Text = "Change Log:";
+ this.lblChangeLog.UseCompatibleTextRendering = true;
+ //
+ //lblLicense
+ //
+ this.lblLicense.AutoSize = true;
+ this.lblLicense.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblLicense.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblLicense.Location = new System.Drawing.Point(16, 96);
+ this.lblLicense.Name = "lblLicense";
+ this.lblLicense.Size = new System.Drawing.Size(58, 22);
+ this.lblLicense.TabIndex = 5;
+ this.lblLicense.Text = "License";
+ this.lblLicense.UseCompatibleTextRendering = true;
+ //
+ //lblCopyright
+ //
+ this.lblCopyright.AutoSize = true;
+ this.lblCopyright.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (11.0F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCopyright.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblCopyright.Location = new System.Drawing.Point(16, 76);
+ this.lblCopyright.Name = "lblCopyright";
+ this.lblCopyright.Size = new System.Drawing.Size(70, 22);
+ this.lblCopyright.TabIndex = 2;
+ this.lblCopyright.Text = "Copyright";
+ this.lblCopyright.UseCompatibleTextRendering = true;
+ //
+ //About
+ //
+ this.BackColor = System.Drawing.SystemColors.Control;
+ this.ClientSize = new System.Drawing.Size(784, 564);
+ this.Controls.Add(this.pnlTop);
+ this.Controls.Add(this.pnlBottom);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.Icon = global::My.Resources.Resources.mRemote_Icon;
+ this.MaximumSize = new System.Drawing.Size(20000, 10000);
+ this.Name = "About";
+ this.TabText = "About";
+ this.Text = "About";
+ this.pnlTop.ResumeLayout(false);
+ this.pnlTop.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbLogo).EndInit();
+ this.pnlBottom.ResumeLayout(false);
+ this.pnlBottom.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Public Methods
+ public About(DockContent Panel)
+ {
+ this.WindowType = Type.About;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ App.Runtime.FontOverride(this);
+ }
+#endregion
+
+#region Private Methods
+ private void ApplyLanguage()
+ {
+ lblLicense.Text = My.Language.strLabelReleasedUnderGPL;
+ lblChangeLog.Text = My.Language.strLabelChangeLog;
+ TabText = My.Language.strAbout;
+ Text = My.Language.strAbout;
+ }
+
+ private void ApplyEditions()
+ {
+#if PORTABLE
+ lblEdition.Text = My.Language.strLabelPortableEdition;
+ lblEdition.Visible = true;
+#endif
+ }
+
+ private void FillLinkLabel(LinkLabel llbl, string Text, string URL)
+ {
+ llbl.Links.Clear();
+
+ int Open = Text.IndexOf("[");
+ int Close = 0;
+ while (Open != -1)
+ {
+ Text = Text.Remove(Open, 1);
+ Close = Text.IndexOf("]", Open);
+ if (Close == -1)
+ {
+ break;
+ }
+ Text = Text.Remove(Close, 1);
+ llbl.Links.Add(Open, Close - Open, URL);
+ Open = Text.IndexOf("[", Open);
+ }
+
+ llbl.Text = Text;
+ }
+#endregion
+
+#region Form Stuff
+ private void About_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ ApplyEditions();
+
+ try
+ {
+ lblCopyright.Text = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.Copyright;
+
+ this.lblVersion.Text = "Version " + (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.Version.ToString();
+
+ FillLinkLabel(llblFAMFAMFAM, My.Language.strFAMFAMFAMAttribution, My.Language.strFAMFAMFAMAttributionURL);
+ FillLinkLabel(llblMagicLibrary, My.Language.strMagicLibraryAttribution, My.Language.strMagicLibraryAttributionURL);
+ FillLinkLabel(llblWeifenLuo, My.Language.strWeifenLuoAttribution, My.Language.strWeifenLuoAttributionURL);
+
+ if (File.Exists((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\CHANGELOG.TXT"))
+ {
+ StreamReader sR = new StreamReader((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\CHANGELOG.TXT");
+ this.txtChangeLog.Text = sR.ReadToEnd();
+ sR.Close();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Loading About failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void llblFAMFAMFAM_LinkClicked(System.Object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
+ {
+ App.Runtime.GoToURL(My.Language.strFAMFAMFAMAttributionURL);
+ }
+
+ private void llblMagicLibrary_LinkClicked(System.Object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
+ {
+ App.Runtime.GoToURL(My.Language.strMagicLibraryAttributionURL);
+ }
+
+ private void llblWeifenLuo_LinkClicked(System.Object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
+ {
+ App.Runtime.GoToURL(My.Language.strWeifenLuoAttributionURL);
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.About.resx b/mRemoteV1/CS/UI/UI.Window.About.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.About.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.Designer.cs b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.Designer.cs
new file mode 100644
index 000000000..1cdfc970c
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.Designer.cs
@@ -0,0 +1,112 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class ActiveDirectoryImport : Base
+ {
+#region Windows Form Designer generated code
+
+ private void InitializeComponent()
+ {
+ this.btnImport = new System.Windows.Forms.Button();
+ this.Load += new System.EventHandler(ADImport_Load);
+ this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
+ this.txtDomain = new System.Windows.Forms.TextBox();
+ this.txtDomain.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.txtDomain_PreviewKeyDown);
+ this.txtDomain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtDomain_KeyDown);
+ this.lblDomain = new System.Windows.Forms.Label();
+ this.btnChangeDomain = new System.Windows.Forms.Button();
+ this.btnChangeDomain.Click += new System.EventHandler(this.btnChangeDomain_Click);
+ this.ActiveDirectoryTree = new ADTree.ADtree();
+ this.ActiveDirectoryTree.ADPathChanged += new ADTree.ADtree.ADPathChangedEventHandler(this.ActiveDirectoryTree_ADPathChanged);
+ this.SuspendLayout();
+ //
+ //btnImport
+ //
+ this.btnImport.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnImport.Location = new System.Drawing.Point(443, 338);
+ this.btnImport.Name = "btnImport";
+ this.btnImport.Size = new System.Drawing.Size(75, 23);
+ this.btnImport.TabIndex = 4;
+ this.btnImport.Text = "&Import";
+ this.btnImport.UseVisualStyleBackColor = true;
+ //
+ //txtDomain
+ //
+ this.txtDomain.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtDomain.Location = new System.Drawing.Point(12, 25);
+ this.txtDomain.Name = "txtDomain";
+ this.txtDomain.Size = new System.Drawing.Size(425, 20);
+ this.txtDomain.TabIndex = 1;
+ //
+ //lblDomain
+ //
+ this.lblDomain.AutoSize = true;
+ this.lblDomain.Location = new System.Drawing.Point(9, 9);
+ this.lblDomain.Name = "lblDomain";
+ this.lblDomain.Size = new System.Drawing.Size(46, 13);
+ this.lblDomain.TabIndex = 0;
+ this.lblDomain.Text = "Domain:";
+ //
+ //btnChangeDomain
+ //
+ this.btnChangeDomain.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.btnChangeDomain.Location = new System.Drawing.Point(443, 23);
+ this.btnChangeDomain.Name = "btnChangeDomain";
+ this.btnChangeDomain.Size = new System.Drawing.Size(75, 23);
+ this.btnChangeDomain.TabIndex = 2;
+ this.btnChangeDomain.Text = "Change";
+ this.btnChangeDomain.UseVisualStyleBackColor = true;
+ //
+ //ActiveDirectoryTree
+ //
+ this.ActiveDirectoryTree.ADPath = null;
+ this.ActiveDirectoryTree.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.ActiveDirectoryTree.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.ActiveDirectoryTree.Location = new System.Drawing.Point(12, 52);
+ this.ActiveDirectoryTree.Name = "ActiveDirectoryTree";
+ this.ActiveDirectoryTree.SelectedNode = null;
+ this.ActiveDirectoryTree.Size = new System.Drawing.Size(506, 280);
+ this.ActiveDirectoryTree.TabIndex = 3;
+ //
+ //ADImport
+ //
+ this.AcceptButton = this.btnImport;
+ this.ClientSize = new System.Drawing.Size(530, 373);
+ this.Controls.Add(this.ActiveDirectoryTree);
+ this.Controls.Add(this.lblDomain);
+ this.Controls.Add(this.txtDomain);
+ this.Controls.Add(this.btnChangeDomain);
+ this.Controls.Add(this.btnImport);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = global::My.Resources.Resources.ActiveDirectory_Icon;
+ this.Name = "ActiveDirectoryImport";
+ this.TabText = "Active Directory Import";
+ this.Text = "Active Directory Import";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ private System.Windows.Forms.Button btnImport;
+ private System.Windows.Forms.TextBox txtDomain;
+ private System.Windows.Forms.Label lblDomain;
+ private System.Windows.Forms.Button btnChangeDomain;
+ private ADTree.ADTree ActiveDirectoryTree;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.cs b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.cs
new file mode 100644
index 000000000..c9f11b064
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.cs
@@ -0,0 +1,98 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+using mRemoteNG.App;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class ActiveDirectoryImport : Base
+ {
+#region Constructors
+ public ActiveDirectoryImport(DockContent panel)
+ {
+ InitializeComponent();
+
+ Runtime.FontOverride(this);
+
+ WindowType = Type.ActiveDirectoryImport;
+ DockPnl = panel;
+ }
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void ADImport_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+
+ txtDomain.Text = ActiveDirectoryTree.Domain;
+ EnableDisableImportButton();
+ }
+
+ public void btnImport_Click(System.Object sender, EventArgs e)
+ {
+ Import.ImportFromActiveDirectory(ActiveDirectoryTree.ADPath);
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+
+ static public void txtDomain_PreviewKeyDown(System.Object sender, PreviewKeyDownEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ e.IsInputKey = true;
+ }
+ }
+
+ public void txtDomain_KeyDown(System.Object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ ChangeDomain();
+ e.SuppressKeyPress = true;
+ }
+ }
+
+ public void btnChangeDomain_Click(System.Object sender, EventArgs e)
+ {
+ ChangeDomain();
+ }
+
+ public void ActiveDirectoryTree_ADPathChanged(object sender)
+ {
+ EnableDisableImportButton();
+ }
+#endregion
+
+ private void ApplyLanguage()
+ {
+ btnImport.Text = My.Language.strButtonImport;
+ lblDomain.Text = My.Language.strLabelDomain;
+ btnChangeDomain.Text = My.Language.strButtonChange;
+ }
+
+ private void ChangeDomain()
+ {
+ ActiveDirectoryTree.Domain = txtDomain.Text;
+ ActiveDirectoryTree.Refresh();
+ }
+
+ private void EnableDisableImportButton()
+ {
+ btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.ADPath);
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.resx b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ActiveDirectoryImport.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Announcement.Designer.cs b/mRemoteV1/CS/UI/UI.Window.Announcement.Designer.cs
new file mode 100644
index 000000000..bff9eff25
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Announcement.Designer.cs
@@ -0,0 +1,58 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Wi
+ {
+ namespace Window
+ {
+ public partial class Announcement
+ {
+#region Windows Form Designer generated code
+ internal System.Windows.Forms.WebBrowser webBrowser;
+
+ private void InitializeComponent()
+ {
+ this.webBrowser = new System.Windows.Forms.WebBrowser();
+ this.Load += new System.EventHandler(Announcement_Load);
+ this.SuspendLayout();
+ //
+ //webBrowser
+ //
+ this.webBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.webBrowser.Location = new System.Drawing.Point(0, 0);
+ this.webBrowser.MinimumSize = new System.Drawing.Size(20, 20);
+ this.webBrowser.Name = "webBrowser";
+ this.webBrowser.Size = new System.Drawing.Size(549, 474);
+ this.webBrowser.TabIndex = 0;
+ //
+ //Announcement
+ //
+ this.ClientSize = new System.Drawing.Size(549, 474);
+ this.Controls.Add(this.webBrowser);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = global::My.Resources.Resources.News_Icon;
+ this.Name = "Announcement";
+ this.TabText = "Announcement";
+ this.Text = "Announcement";
+ this.ResumeLayout(false);
+
+ }
+#endregion
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Announcement.cs b/mRemoteV1/CS/UI/UI.Window.Announcement.cs
new file mode 100644
index 000000000..448bac2a7
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Announcement.cs
@@ -0,0 +1,107 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.My;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class Announcement : Base
+ {
+#region Public Methods
+ public Announcement(DockContent panel)
+ {
+ WindowType = Type.Announcement;
+ DockPnl = panel;
+ InitializeComponent();
+ }
+#endregion
+
+#region Private Fields
+ private App.Update _appUpdate;
+#endregion
+
+#region Private Methods
+ public void Announcement_Load(object sender, EventArgs e)
+ {
+ webBrowser.Navigated += webBrowser_Navigated;
+
+ ApplyLanguage();
+ CheckForAnnouncement();
+ }
+
+ private void ApplyLanguage()
+ {
+
+ }
+
+ private void webBrowser_Navigated(object sender, System.Windows.Forms.WebBrowserNavigatedEventArgs e)
+ {
+ // This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
+ webBrowser.AllowWebBrowserDrop = false;
+
+ webBrowser.Navigated -= webBrowser_Navigated;
+ }
+
+ private void CheckForAnnouncement()
+ {
+ if (_appUpdate == null)
+ {
+ _appUpdate = new App.Update();
+ _appUpdate.Load += _appUpdate.Update_Load;
+ }
+ else if (_appUpdate.IsGetAnnouncementInfoRunning)
+ {
+ return ;
+ }
+
+ _appUpdate.GetAnnouncementInfoCompletedEvent += GetAnnouncementInfoCompleted;
+
+ _appUpdate.GetAnnouncementInfoAsync();
+ }
+
+ private void GetAnnouncementInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (InvokeRequired)
+ {
+ AsyncCompletedEventHandler myDelegate = new AsyncCompletedEventHandler(GetAnnouncementInfoCompleted);
+ Invoke(myDelegate, new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetAnnouncementInfoCompletedEvent -= GetAnnouncementInfoCompleted;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ webBrowser.Navigate(_appUpdate.CurrentAnnouncementInfo.Address);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(Language.strUpdateGetAnnouncementInfoFailed, ex);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Announcement.resx b/mRemoteV1/CS/UI/UI.Window.Announcement.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Announcement.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Base.cs b/mRemoteV1/CS/UI/UI.Window.Base.cs
new file mode 100644
index 000000000..90a83ffad
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Base.cs
@@ -0,0 +1,110 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class Base : DockContent
+ {
+ public Base()
+ {
+ InitializeComponent();
+
+ //Added to support default instance behavour in C#
+ if (defaultInstance == null)
+ defaultInstance = this;
+ }
+
+#region Default Instance
+
+ private static Base defaultInstance;
+
+ ///
+ /// Added by the VB.Net to C# Converter to support default instance behavour in C#
+ ///
+public static Base Default
+ {
+ get
+ {
+ if (defaultInstance == null)
+ {
+ defaultInstance = new Base();
+ defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
+ }
+
+ return defaultInstance;
+ }
+ set
+ {
+ defaultInstance = value;
+ }
+ }
+
+ static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ defaultInstance = null;
+ }
+
+#endregion
+
+#region Public Properties
+ private Type _WindowType;
+public Type WindowType
+ {
+ get
+ {
+ return this._WindowType;
+ }
+ set
+ {
+ this._WindowType = value;
+ }
+ }
+
+ private DockContent _DockPnl;
+public DockContent DockPnl
+ {
+ get
+ {
+ return this._DockPnl;
+ }
+ set
+ {
+ this._DockPnl = value;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public void SetFormText(string Text)
+ {
+ this.Text = Text;
+ this.TabText = Text;
+ }
+#endregion
+
+#region Private Methods
+ private void Base_Load(System.Object sender, System.EventArgs e)
+ {
+ frmMain.Default.ShowHidePanelTabs();
+ }
+
+ private void Base_FormClosed(System.Object sender, System.Windows.Forms.FormClosedEventArgs e)
+ {
+ frmMain.Default.ShowHidePanelTabs(this);
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.cs b/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.cs
new file mode 100644
index 000000000..13b9557ef
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.cs
@@ -0,0 +1,718 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+using System.IO;
+//using mRemoteNG.App.Runtime;
+using System.Threading;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class ComponentsCheck : Base
+ {
+
+#region Form Stuff
+ internal System.Windows.Forms.PictureBox pbCheck1;
+ internal System.Windows.Forms.Label lblCheck1;
+ internal System.Windows.Forms.Panel pnlCheck2;
+ internal System.Windows.Forms.Label lblCheck2;
+ internal System.Windows.Forms.PictureBox pbCheck2;
+ internal System.Windows.Forms.Panel pnlCheck3;
+ internal System.Windows.Forms.Label lblCheck3;
+ internal System.Windows.Forms.PictureBox pbCheck3;
+ internal System.Windows.Forms.Panel pnlCheck4;
+ internal System.Windows.Forms.Label lblCheck4;
+ internal System.Windows.Forms.PictureBox pbCheck4;
+ internal System.Windows.Forms.Panel pnlCheck5;
+ internal System.Windows.Forms.Label lblCheck5;
+ internal System.Windows.Forms.PictureBox pbCheck5;
+ internal System.Windows.Forms.Button btnCheckAgain;
+ internal System.Windows.Forms.TextBox txtCheck1;
+ internal System.Windows.Forms.TextBox txtCheck2;
+ internal System.Windows.Forms.TextBox txtCheck3;
+ internal System.Windows.Forms.TextBox txtCheck4;
+ internal System.Windows.Forms.TextBox txtCheck5;
+ internal System.Windows.Forms.CheckBox chkAlwaysShow;
+ internal System.Windows.Forms.Panel pnlChecks;
+ internal System.Windows.Forms.Panel pnlCheck6;
+ internal System.Windows.Forms.TextBox txtCheck6;
+ internal System.Windows.Forms.Label lblCheck6;
+ internal System.Windows.Forms.PictureBox pbCheck6;
+ internal System.Windows.Forms.Panel pnlCheck1;
+
+ private void InitializeComponent()
+ {
+ this.pnlCheck1 = new System.Windows.Forms.Panel();
+ this.Load += new System.EventHandler(ComponentsCheck_Load);
+ this.txtCheck1 = new System.Windows.Forms.TextBox();
+ this.lblCheck1 = new System.Windows.Forms.Label();
+ this.pbCheck1 = new System.Windows.Forms.PictureBox();
+ this.pnlCheck2 = new System.Windows.Forms.Panel();
+ this.txtCheck2 = new System.Windows.Forms.TextBox();
+ this.lblCheck2 = new System.Windows.Forms.Label();
+ this.pbCheck2 = new System.Windows.Forms.PictureBox();
+ this.pnlCheck3 = new System.Windows.Forms.Panel();
+ this.txtCheck3 = new System.Windows.Forms.TextBox();
+ this.lblCheck3 = new System.Windows.Forms.Label();
+ this.pbCheck3 = new System.Windows.Forms.PictureBox();
+ this.pnlCheck4 = new System.Windows.Forms.Panel();
+ this.txtCheck4 = new System.Windows.Forms.TextBox();
+ this.lblCheck4 = new System.Windows.Forms.Label();
+ this.pbCheck4 = new System.Windows.Forms.PictureBox();
+ this.pnlCheck5 = new System.Windows.Forms.Panel();
+ this.txtCheck5 = new System.Windows.Forms.TextBox();
+ this.lblCheck5 = new System.Windows.Forms.Label();
+ this.pbCheck5 = new System.Windows.Forms.PictureBox();
+ this.btnCheckAgain = new System.Windows.Forms.Button();
+ this.btnCheckAgain.Click += new System.EventHandler(this.btnCheckAgain_Click);
+ this.chkAlwaysShow = new System.Windows.Forms.CheckBox();
+ this.chkAlwaysShow.CheckedChanged += new System.EventHandler(this.chkAlwaysShow_CheckedChanged);
+ this.pnlChecks = new System.Windows.Forms.Panel();
+ this.pnlCheck6 = new System.Windows.Forms.Panel();
+ this.txtCheck6 = new System.Windows.Forms.TextBox();
+ this.lblCheck6 = new System.Windows.Forms.Label();
+ this.pbCheck6 = new System.Windows.Forms.PictureBox();
+ this.pnlCheck1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck1).BeginInit();
+ this.pnlCheck2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck2).BeginInit();
+ this.pnlCheck3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck3).BeginInit();
+ this.pnlCheck4.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck4).BeginInit();
+ this.pnlCheck5.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck5).BeginInit();
+ this.pnlChecks.SuspendLayout();
+ this.pnlCheck6.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck6).BeginInit();
+ this.SuspendLayout();
+ //
+ //pnlCheck1
+ //
+ this.pnlCheck1.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck1.Controls.Add(this.txtCheck1);
+ this.pnlCheck1.Controls.Add(this.lblCheck1);
+ this.pnlCheck1.Controls.Add(this.pbCheck1);
+ this.pnlCheck1.Location = new System.Drawing.Point(3, 3);
+ this.pnlCheck1.Name = "pnlCheck1";
+ this.pnlCheck1.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck1.TabIndex = 10;
+ this.pnlCheck1.Visible = false;
+ //
+ //txtCheck1
+ //
+ this.txtCheck1.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck1.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck1.Location = new System.Drawing.Point(129, 29);
+ this.txtCheck1.Multiline = true;
+ this.txtCheck1.Name = "txtCheck1";
+ this.txtCheck1.ReadOnly = true;
+ this.txtCheck1.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck1.TabIndex = 2;
+ //
+ //lblCheck1
+ //
+ this.lblCheck1.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck1.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck1.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblCheck1.Location = new System.Drawing.Point(108, 3);
+ this.lblCheck1.Name = "lblCheck1";
+ this.lblCheck1.Size = new System.Drawing.Size(451, 23);
+ this.lblCheck1.TabIndex = 1;
+ this.lblCheck1.Text = "RDP check succeeded!";
+ //
+ //pbCheck1
+ //
+ this.pbCheck1.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck1.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck1.Name = "pbCheck1";
+ this.pbCheck1.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck1.TabIndex = 0;
+ this.pbCheck1.TabStop = false;
+ //
+ //pnlCheck2
+ //
+ this.pnlCheck2.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck2.Controls.Add(this.txtCheck2);
+ this.pnlCheck2.Controls.Add(this.lblCheck2);
+ this.pnlCheck2.Controls.Add(this.pbCheck2);
+ this.pnlCheck2.Location = new System.Drawing.Point(3, 139);
+ this.pnlCheck2.Name = "pnlCheck2";
+ this.pnlCheck2.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck2.TabIndex = 20;
+ this.pnlCheck2.Visible = false;
+ //
+ //txtCheck2
+ //
+ this.txtCheck2.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck2.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck2.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck2.Location = new System.Drawing.Point(129, 29);
+ this.txtCheck2.Multiline = true;
+ this.txtCheck2.Name = "txtCheck2";
+ this.txtCheck2.ReadOnly = true;
+ this.txtCheck2.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck2.TabIndex = 2;
+ //
+ //lblCheck2
+ //
+ this.lblCheck2.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck2.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck2.Location = new System.Drawing.Point(112, 3);
+ this.lblCheck2.Name = "lblCheck2";
+ this.lblCheck2.Size = new System.Drawing.Size(447, 23);
+ this.lblCheck2.TabIndex = 1;
+ this.lblCheck2.Text = "RDP check succeeded!";
+ //
+ //pbCheck2
+ //
+ this.pbCheck2.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck2.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck2.Name = "pbCheck2";
+ this.pbCheck2.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck2.TabIndex = 0;
+ this.pbCheck2.TabStop = false;
+ //
+ //pnlCheck3
+ //
+ this.pnlCheck3.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck3.Controls.Add(this.txtCheck3);
+ this.pnlCheck3.Controls.Add(this.lblCheck3);
+ this.pnlCheck3.Controls.Add(this.pbCheck3);
+ this.pnlCheck3.Location = new System.Drawing.Point(3, 275);
+ this.pnlCheck3.Name = "pnlCheck3";
+ this.pnlCheck3.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck3.TabIndex = 30;
+ this.pnlCheck3.Visible = false;
+ //
+ //txtCheck3
+ //
+ this.txtCheck3.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck3.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck3.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck3.Location = new System.Drawing.Point(129, 29);
+ this.txtCheck3.Multiline = true;
+ this.txtCheck3.Name = "txtCheck3";
+ this.txtCheck3.ReadOnly = true;
+ this.txtCheck3.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck3.TabIndex = 2;
+ //
+ //lblCheck3
+ //
+ this.lblCheck3.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck3.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck3.Location = new System.Drawing.Point(112, 3);
+ this.lblCheck3.Name = "lblCheck3";
+ this.lblCheck3.Size = new System.Drawing.Size(447, 23);
+ this.lblCheck3.TabIndex = 1;
+ this.lblCheck3.Text = "RDP check succeeded!";
+ //
+ //pbCheck3
+ //
+ this.pbCheck3.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck3.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck3.Name = "pbCheck3";
+ this.pbCheck3.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck3.TabIndex = 0;
+ this.pbCheck3.TabStop = false;
+ //
+ //pnlCheck4
+ //
+ this.pnlCheck4.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck4.Controls.Add(this.txtCheck4);
+ this.pnlCheck4.Controls.Add(this.lblCheck4);
+ this.pnlCheck4.Controls.Add(this.pbCheck4);
+ this.pnlCheck4.Location = new System.Drawing.Point(3, 411);
+ this.pnlCheck4.Name = "pnlCheck4";
+ this.pnlCheck4.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck4.TabIndex = 40;
+ this.pnlCheck4.Visible = false;
+ //
+ //txtCheck4
+ //
+ this.txtCheck4.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck4.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck4.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck4.Location = new System.Drawing.Point(129, 30);
+ this.txtCheck4.Multiline = true;
+ this.txtCheck4.Name = "txtCheck4";
+ this.txtCheck4.ReadOnly = true;
+ this.txtCheck4.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck4.TabIndex = 2;
+ //
+ //lblCheck4
+ //
+ this.lblCheck4.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck4.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck4.Location = new System.Drawing.Point(112, 3);
+ this.lblCheck4.Name = "lblCheck4";
+ this.lblCheck4.Size = new System.Drawing.Size(447, 23);
+ this.lblCheck4.TabIndex = 1;
+ this.lblCheck4.Text = "RDP check succeeded!";
+ //
+ //pbCheck4
+ //
+ this.pbCheck4.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck4.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck4.Name = "pbCheck4";
+ this.pbCheck4.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck4.TabIndex = 0;
+ this.pbCheck4.TabStop = false;
+ //
+ //pnlCheck5
+ //
+ this.pnlCheck5.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck5.Controls.Add(this.txtCheck5);
+ this.pnlCheck5.Controls.Add(this.lblCheck5);
+ this.pnlCheck5.Controls.Add(this.pbCheck5);
+ this.pnlCheck5.Location = new System.Drawing.Point(3, 547);
+ this.pnlCheck5.Name = "pnlCheck5";
+ this.pnlCheck5.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck5.TabIndex = 50;
+ this.pnlCheck5.Visible = false;
+ //
+ //txtCheck5
+ //
+ this.txtCheck5.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck5.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck5.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck5.Location = new System.Drawing.Point(129, 29);
+ this.txtCheck5.Multiline = true;
+ this.txtCheck5.Name = "txtCheck5";
+ this.txtCheck5.ReadOnly = true;
+ this.txtCheck5.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck5.TabIndex = 2;
+ //
+ //lblCheck5
+ //
+ this.lblCheck5.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck5.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck5.Location = new System.Drawing.Point(112, 3);
+ this.lblCheck5.Name = "lblCheck5";
+ this.lblCheck5.Size = new System.Drawing.Size(447, 23);
+ this.lblCheck5.TabIndex = 1;
+ this.lblCheck5.Text = "RDP check succeeded!";
+ //
+ //pbCheck5
+ //
+ this.pbCheck5.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck5.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck5.Name = "pbCheck5";
+ this.pbCheck5.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck5.TabIndex = 0;
+ this.pbCheck5.TabStop = false;
+ //
+ //btnCheckAgain
+ //
+ this.btnCheckAgain.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnCheckAgain.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnCheckAgain.Location = new System.Drawing.Point(476, 842);
+ this.btnCheckAgain.Name = "btnCheckAgain";
+ this.btnCheckAgain.Size = new System.Drawing.Size(104, 23);
+ this.btnCheckAgain.TabIndex = 0;
+ this.btnCheckAgain.Text = "Check again";
+ this.btnCheckAgain.UseVisualStyleBackColor = true;
+ //
+ //chkAlwaysShow
+ //
+ this.chkAlwaysShow.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left);
+ this.chkAlwaysShow.AutoSize = true;
+ this.chkAlwaysShow.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.chkAlwaysShow.Location = new System.Drawing.Point(12, 846);
+ this.chkAlwaysShow.Name = "chkAlwaysShow";
+ this.chkAlwaysShow.Size = new System.Drawing.Size(185, 17);
+ this.chkAlwaysShow.TabIndex = 51;
+ this.chkAlwaysShow.Text = "Always show this screen at startup";
+ this.chkAlwaysShow.UseVisualStyleBackColor = true;
+ //
+ //pnlChecks
+ //
+ this.pnlChecks.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlChecks.AutoScroll = true;
+ this.pnlChecks.Controls.Add(this.pnlCheck1);
+ this.pnlChecks.Controls.Add(this.pnlCheck2);
+ this.pnlChecks.Controls.Add(this.pnlCheck3);
+ this.pnlChecks.Controls.Add(this.pnlCheck6);
+ this.pnlChecks.Controls.Add(this.pnlCheck5);
+ this.pnlChecks.Controls.Add(this.pnlCheck4);
+ this.pnlChecks.Location = new System.Drawing.Point(12, 12);
+ this.pnlChecks.Name = "pnlChecks";
+ this.pnlChecks.Size = new System.Drawing.Size(568, 824);
+ this.pnlChecks.TabIndex = 52;
+ //
+ //pnlCheck6
+ //
+ this.pnlCheck6.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlCheck6.Controls.Add(this.txtCheck6);
+ this.pnlCheck6.Controls.Add(this.lblCheck6);
+ this.pnlCheck6.Controls.Add(this.pbCheck6);
+ this.pnlCheck6.Location = new System.Drawing.Point(3, 683);
+ this.pnlCheck6.Name = "pnlCheck6";
+ this.pnlCheck6.Size = new System.Drawing.Size(562, 130);
+ this.pnlCheck6.TabIndex = 50;
+ this.pnlCheck6.Visible = false;
+ //
+ //txtCheck6
+ //
+ this.txtCheck6.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtCheck6.BackColor = System.Drawing.SystemColors.Control;
+ this.txtCheck6.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtCheck6.Location = new System.Drawing.Point(129, 29);
+ this.txtCheck6.Multiline = true;
+ this.txtCheck6.Name = "txtCheck6";
+ this.txtCheck6.ReadOnly = true;
+ this.txtCheck6.Size = new System.Drawing.Size(430, 97);
+ this.txtCheck6.TabIndex = 2;
+ //
+ //lblCheck6
+ //
+ this.lblCheck6.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblCheck6.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblCheck6.Location = new System.Drawing.Point(112, 3);
+ this.lblCheck6.Name = "lblCheck6";
+ this.lblCheck6.Size = new System.Drawing.Size(447, 23);
+ this.lblCheck6.TabIndex = 1;
+ this.lblCheck6.Text = "RDP check succeeded!";
+ //
+ //pbCheck6
+ //
+ this.pbCheck6.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left);
+ this.pbCheck6.Location = new System.Drawing.Point(3, 3);
+ this.pbCheck6.Name = "pbCheck6";
+ this.pbCheck6.Size = new System.Drawing.Size(72, 123);
+ this.pbCheck6.TabIndex = 0;
+ this.pbCheck6.TabStop = false;
+ //
+ //ComponentsCheck
+ //
+ this.ClientSize = new System.Drawing.Size(592, 877);
+ this.Controls.Add(this.pnlChecks);
+ this.Controls.Add(this.chkAlwaysShow);
+ this.Controls.Add(this.btnCheckAgain);
+ this.Icon = global::My.Resources.Resources.ComponentsCheck_Icon;
+ this.Name = "ComponentsCheck";
+ this.TabText = "Components Check";
+ this.Text = "Components Check";
+ this.pnlCheck1.ResumeLayout(false);
+ this.pnlCheck1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck1).EndInit();
+ this.pnlCheck2.ResumeLayout(false);
+ this.pnlCheck2.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck2).EndInit();
+ this.pnlCheck3.ResumeLayout(false);
+ this.pnlCheck3.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck3).EndInit();
+ this.pnlCheck4.ResumeLayout(false);
+ this.pnlCheck4.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck4).EndInit();
+ this.pnlCheck5.ResumeLayout(false);
+ this.pnlCheck5.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck5).EndInit();
+ this.pnlChecks.ResumeLayout(false);
+ this.pnlCheck6.ResumeLayout(false);
+ this.pnlCheck6.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbCheck6).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+#endregion
+
+#region Public Methods
+ public ComponentsCheck(DockContent Panel)
+ {
+ this.WindowType = Type.ComponentsCheck;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ }
+#endregion
+
+#region Form Stuff
+ private void ComponentsCheck_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+
+ chkAlwaysShow.Checked = System.Convert.ToBoolean(My.Settings.Default.StartupComponentsCheck);
+ CheckComponents();
+ }
+
+ private void ApplyLanguage()
+ {
+ TabText = My.Language.strComponentsCheck;
+ Text = My.Language.strComponentsCheck;
+ chkAlwaysShow.Text = My.Language.strCcAlwaysShowScreen;
+ btnCheckAgain.Text = My.Language.strCcCheckAgain;
+ }
+
+ private void btnCheckAgain_Click(System.Object sender, System.EventArgs e)
+ {
+ CheckComponents();
+ }
+
+ private void chkAlwaysShow_CheckedChanged(System.Object sender, System.EventArgs e)
+ {
+ My.Settings.Default.StartupComponentsCheck = chkAlwaysShow.Checked;
+ My.Settings.Default.Save();
+ }
+#endregion
+
+#region Private Methods
+ private void CheckComponents()
+ {
+ string errorMsg = My.Language.strCcNotInstalledProperly;
+
+ pnlCheck1.Visible = true;
+ pnlCheck2.Visible = true;
+ pnlCheck3.Visible = true;
+ pnlCheck4.Visible = true;
+ pnlCheck5.Visible = true;
+ pnlCheck6.Visible = true;
+
+
+ AxMSTSCLib.AxMsRdpClient5NotSafeForScripting rdpClient = null;
+
+ try
+ {
+ rdpClient = new AxMSTSCLib.AxMsRdpClient5NotSafeForScripting();
+ rdpClient.CreateControl();
+
+ while (!rdpClient.Created)
+ {
+ Thread.Sleep(0);
+ System.Windows.Forms.Application.DoEvents();
+ }
+
+ if (!(new Version(System.Convert.ToString(rdpClient.Version)) >= mRemoteNG.Connection.Protocol.RDP.Versions.RDC60))
+ {
+ throw (new Exception(string.Format("Found RDC Client version {0} but version {1} or higher is required.", rdpClient.Version, mRemoteNG.Connection.Protocol.RDP.Versions.RDC60)));
+ }
+
+ pbCheck1.Image = global::My.Resources.Good_Symbol;
+ lblCheck1.ForeColor = Color.DarkOliveGreen;
+ lblCheck1.Text = "RDP (Remote Desktop) " + My.Language.strCcCheckSucceeded;
+ txtCheck1.Text = string.Format(My.Language.strCcRDPOK, rdpClient.Version);
+ }
+ catch (Exception ex)
+ {
+ pbCheck1.Image = global::My.Resources.Bad_Symbol;
+ lblCheck1.ForeColor = Color.Firebrick;
+ lblCheck1.Text = "RDP (Remote Desktop) " + My.Language.strCcCheckFailed;
+ txtCheck1.Text = My.Language.strCcRDPFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "RDP " + errorMsg, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, true);
+ }
+
+ if (rdpClient != null)
+ {
+ rdpClient.Dispose();
+ }
+
+
+ VncSharp.RemoteDesktop VNC = null;
+
+ try
+ {
+ VNC = new VncSharp.RemoteDesktop();
+ VNC.CreateControl();
+
+ while (!VNC.Created)
+ {
+ Thread.Sleep(10);
+ System.Windows.Forms.Application.DoEvents();
+ }
+
+ pbCheck2.Image = global::My.Resources.Good_Symbol;
+ lblCheck2.ForeColor = Color.DarkOliveGreen;
+ lblCheck2.Text = "VNC (Virtual Network Computing) " + My.Language.strCcCheckSucceeded;
+ txtCheck2.Text = string.Format(My.Language.strCcVNCOK, VNC.ProductVersion);
+ }
+ catch (Exception)
+ {
+ pbCheck2.Image = global::My.Resources.Bad_Symbol;
+ lblCheck2.ForeColor = Color.Firebrick;
+ lblCheck2.Text = "VNC (Virtual Network Computing) " + My.Language.strCcCheckFailed;
+ txtCheck2.Text = My.Language.strCcVNCFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "VNC " + errorMsg, true);
+ }
+
+ if (VNC != null)
+ {
+ VNC.Dispose();
+ }
+
+
+ string pPath = "";
+ if (My.Settings.Default.UseCustomPuttyPath == false)
+ {
+ pPath = (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\PuTTYNG.exe";
+ }
+ else
+ {
+ pPath = System.Convert.ToString(My.Settings.Default.CustomPuttyPath);
+ }
+
+ if (File.Exists(pPath))
+ {
+ pbCheck3.Image = global::My.Resources.Good_Symbol;
+ lblCheck3.ForeColor = Color.DarkOliveGreen;
+ lblCheck3.Text = "PuTTY (SSH/Telnet/Rlogin/RAW) " + My.Language.strCcCheckSucceeded;
+ txtCheck3.Text = My.Language.strCcPuttyOK;
+ }
+ else
+ {
+ pbCheck3.Image = global::My.Resources.Bad_Symbol;
+ lblCheck3.ForeColor = Color.Firebrick;
+ lblCheck3.Text = "PuTTY (SSH/Telnet/Rlogin/RAW) " + My.Language.strCcCheckFailed;
+ txtCheck3.Text = My.Language.strCcPuttyFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "PuTTY " + errorMsg, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "File " + pPath + " does not exist.", true);
+ }
+
+
+ AxWFICALib.AxICAClient ICA = null;
+
+ try
+ {
+ ICA = new AxWFICALib.AxICAClient();
+ ICA.Parent = this;
+ ICA.CreateControl();
+
+ while (!ICA.Created)
+ {
+ Thread.Sleep(10);
+ System.Windows.Forms.Application.DoEvents();
+ }
+
+ pbCheck4.Image = global::My.Resources.Good_Symbol;
+ lblCheck4.ForeColor = Color.DarkOliveGreen;
+ lblCheck4.Text = "ICA (Citrix ICA) " + My.Language.strCcCheckSucceeded;
+ txtCheck4.Text = string.Format(My.Language.strCcICAOK, ICA.Version);
+ }
+ catch (Exception ex)
+ {
+ pbCheck4.Image = global::My.Resources.Bad_Symbol;
+ lblCheck4.ForeColor = Color.Firebrick;
+ lblCheck4.Text = "ICA (Citrix ICA) " + My.Language.strCcCheckFailed;
+ txtCheck4.Text = My.Language.strCcICAFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "ICA " + errorMsg, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, true);
+ }
+
+ if (ICA != null)
+ {
+ ICA.Dispose();
+ }
+
+
+ bool GeckoBad = false;
+
+ if (My.Settings.Default.XULRunnerPath == "")
+ {
+ GeckoBad = true;
+ }
+
+ if (Directory.Exists(System.Convert.ToString(My.Settings.Default.XULRunnerPath)))
+ {
+ if (File.Exists(Path.Combine(System.Convert.ToString(My.Settings.Default.XULRunnerPath), "xpcom.dll")) == false)
+ {
+ GeckoBad = true;
+ }
+ }
+ else
+ {
+ GeckoBad = true;
+ }
+
+ if (GeckoBad == false)
+ {
+ pbCheck5.Image = global::My.Resources.Good_Symbol;
+ lblCheck5.ForeColor = Color.DarkOliveGreen;
+ lblCheck5.Text = "Gecko (Firefox) Rendering Engine (HTTP/S) " + My.Language.strCcCheckSucceeded;
+ txtCheck5.Text = My.Language.strCcGeckoOK;
+ }
+ else
+ {
+ pbCheck5.Image = global::My.Resources.Bad_Symbol;
+ lblCheck5.ForeColor = Color.Firebrick;
+ lblCheck5.Text = "Gecko (Firefox) Rendering Engine (HTTP/S) " + My.Language.strCcCheckFailed;
+ txtCheck5.Text = My.Language.strCcGeckoFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Gecko " + errorMsg, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "XULrunner was not found in " + My.Settings.Default.XULRunnerPath, true);
+ }
+
+
+ EOLWTSCOM.WTSCOM eol = null;
+
+ try
+ {
+ eol = new EOLWTSCOM.WTSCOM();
+
+ pbCheck6.Image = global::My.Resources.Good_Symbol;
+ lblCheck6.ForeColor = Color.DarkOliveGreen;
+ lblCheck6.Text = "(RDP) Sessions " + My.Language.strCcCheckSucceeded;
+ txtCheck6.Text = My.Language.strCcEOLOK;
+ }
+ catch (Exception ex)
+ {
+ pbCheck6.Image = global::My.Resources.Bad_Symbol;
+ lblCheck6.ForeColor = Color.Firebrick;
+ lblCheck6.Text = "(RDP) Sessions " + My.Language.strCcCheckFailed;
+ txtCheck6.Text = My.Language.strCcEOLFailed;
+
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "EOLWTSCOM " + errorMsg, true);
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, true);
+ }
+ }
+#endregion
+
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.resx b/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ComponentsCheck.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Config.cs b/mRemoteV1/CS/UI/UI.Window.Config.cs
new file mode 100644
index 000000000..57d739b9a
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Config.cs
@@ -0,0 +1,1917 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.IO;
+using mRemoteNG.Messages;
+using mRemoteNG.My;
+using mRemoteNG.Connection.Protocol;
+using mRemoteNG.Root;
+using WeifenLuo.WinFormsUI.Docking;
+using System.Net.NetworkInformation;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class Config : Base
+ {
+
+
+#region Form Init
+ internal System.Windows.Forms.ToolStripButton btnShowProperties;
+ internal System.Windows.Forms.ToolStripButton btnShowDefaultProperties;
+ internal System.Windows.Forms.ToolStripButton btnShowInheritance;
+ internal System.Windows.Forms.ToolStripButton btnShowDefaultInheritance;
+ internal System.Windows.Forms.ToolStripButton btnIcon;
+ internal System.Windows.Forms.ToolStripButton btnHostStatus;
+ internal System.Windows.Forms.ContextMenuStrip cMenIcons;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ContextMenuStrip propertyGridContextMenu;
+ internal System.Windows.Forms.ToolStripMenuItem propertyGridContextMenuShowHelpText;
+ internal System.Windows.Forms.ToolStripMenuItem propertyGridContextMenuReset;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1;
+ internal Azuria.Common.Controls.FilteredPropertyGrid pGrid;
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(Config_Load);
+ base.SystemColorsChanged += new System.EventHandler(Config_SystemColorsChanged);
+ this.pGrid = new Azuria.Common.Controls.FilteredPropertyGrid();
+ this.pGrid.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.pGrid_PropertyValueChanged);
+ this.pGrid.PropertySortChanged += new System.EventHandler(this.pGrid_PropertySortChanged);
+ this.propertyGridContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.propertyGridContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.propertyGridContextMenu_Opening);
+ this.propertyGridContextMenuReset = new System.Windows.Forms.ToolStripMenuItem();
+ this.propertyGridContextMenuReset.Click += new System.EventHandler(this.propertyGridContextMenuReset_Click);
+ this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.propertyGridContextMenuShowHelpText = new System.Windows.Forms.ToolStripMenuItem();
+ this.propertyGridContextMenuShowHelpText.Click += new System.EventHandler(this.propertyGridContextMenuShowHelpText_Click);
+ this.propertyGridContextMenuShowHelpText.CheckedChanged += new System.EventHandler(this.propertyGridContextMenuShowHelpText_CheckedChanged);
+ this.btnShowInheritance = new System.Windows.Forms.ToolStripButton();
+ this.btnShowInheritance.Click += new System.EventHandler(this.btnShowInheritance_Click);
+ this.btnShowDefaultInheritance = new System.Windows.Forms.ToolStripButton();
+ this.btnShowDefaultInheritance.Click += new System.EventHandler(this.btnShowDefaultInheritance_Click);
+ this.btnShowProperties = new System.Windows.Forms.ToolStripButton();
+ this.btnShowProperties.Click += new System.EventHandler(this.btnShowProperties_Click);
+ this.btnShowDefaultProperties = new System.Windows.Forms.ToolStripButton();
+ this.btnShowDefaultProperties.Click += new System.EventHandler(this.btnShowDefaultProperties_Click);
+ this.btnIcon = new System.Windows.Forms.ToolStripButton();
+ this.btnIcon.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnIcon_Click);
+ this.btnHostStatus = new System.Windows.Forms.ToolStripButton();
+ this.btnHostStatus.Click += new System.EventHandler(this.btnHostStatus_Click);
+ this.cMenIcons = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.propertyGridContextMenu.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //pGrid
+ //
+ this.pGrid.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pGrid.BrowsableProperties = null;
+ this.pGrid.ContextMenuStrip = this.propertyGridContextMenu;
+ this.pGrid.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.pGrid.HiddenAttributes = null;
+ this.pGrid.HiddenProperties = null;
+ this.pGrid.Location = new System.Drawing.Point(0, 0);
+ this.pGrid.Name = "pGrid";
+ this.pGrid.PropertySort = System.Windows.Forms.PropertySort.Categorized;
+ this.pGrid.Size = new System.Drawing.Size(226, 530);
+ this.pGrid.TabIndex = 0;
+ this.pGrid.UseCompatibleTextRendering = true;
+ //
+ //propertyGridContextMenu
+ //
+ this.propertyGridContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.propertyGridContextMenuReset, this.ToolStripSeparator1, this.propertyGridContextMenuShowHelpText});
+ this.propertyGridContextMenu.Name = "propertyGridContextMenu";
+ this.propertyGridContextMenu.Size = new System.Drawing.Size(157, 76);
+ //
+ //propertyGridContextMenuReset
+ //
+ this.propertyGridContextMenuReset.Name = "propertyGridContextMenuReset";
+ this.propertyGridContextMenuReset.Size = new System.Drawing.Size(156, 22);
+ this.propertyGridContextMenuReset.Text = "&Reset";
+ //
+ //ToolStripSeparator1
+ //
+ this.ToolStripSeparator1.Name = "ToolStripSeparator1";
+ this.ToolStripSeparator1.Size = new System.Drawing.Size(153, 6);
+ //
+ //propertyGridContextMenuShowHelpText
+ //
+ this.propertyGridContextMenuShowHelpText.Name = "propertyGridContextMenuShowHelpText";
+ this.propertyGridContextMenuShowHelpText.Size = new System.Drawing.Size(156, 22);
+ this.propertyGridContextMenuShowHelpText.Text = "&Show Help Text";
+ //
+ //btnShowInheritance
+ //
+ this.btnShowInheritance.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnShowInheritance.Image = global::My.Resources.Resources.Inheritance;
+ this.btnShowInheritance.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnShowInheritance.Name = "btnShowInheritance";
+ this.btnShowInheritance.Size = new System.Drawing.Size(23, 22);
+ this.btnShowInheritance.Text = "Inheritance";
+ //
+ //btnShowDefaultInheritance
+ //
+ this.btnShowDefaultInheritance.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnShowDefaultInheritance.Image = global::My.Resources.Resources.Inheritance_Default;
+ this.btnShowDefaultInheritance.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnShowDefaultInheritance.Name = "btnShowDefaultInheritance";
+ this.btnShowDefaultInheritance.Size = new System.Drawing.Size(23, 22);
+ this.btnShowDefaultInheritance.Text = "Default Inheritance";
+ //
+ //btnShowProperties
+ //
+ this.btnShowProperties.Checked = true;
+ this.btnShowProperties.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.btnShowProperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnShowProperties.Image = global::My.Resources.Resources.Properties;
+ this.btnShowProperties.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnShowProperties.Name = "btnShowProperties";
+ this.btnShowProperties.Size = new System.Drawing.Size(23, 22);
+ this.btnShowProperties.Text = "Properties";
+ //
+ //btnShowDefaultProperties
+ //
+ this.btnShowDefaultProperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnShowDefaultProperties.Image = global::My.Resources.Resources.Properties_Default;
+ this.btnShowDefaultProperties.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnShowDefaultProperties.Name = "btnShowDefaultProperties";
+ this.btnShowDefaultProperties.Size = new System.Drawing.Size(23, 22);
+ this.btnShowDefaultProperties.Text = "Default Properties";
+ //
+ //btnIcon
+ //
+ this.btnIcon.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.btnIcon.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnIcon.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnIcon.Name = "btnIcon";
+ this.btnIcon.Size = new System.Drawing.Size(23, 22);
+ this.btnIcon.Text = "Icon";
+ //
+ //btnHostStatus
+ //
+ this.btnHostStatus.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.btnHostStatus.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnHostStatus.Image = global::My.Resources.Resources.HostStatus_Check;
+ this.btnHostStatus.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnHostStatus.Name = "btnHostStatus";
+ this.btnHostStatus.Size = new System.Drawing.Size(23, 22);
+ this.btnHostStatus.Tag = "checking";
+ this.btnHostStatus.Text = "Status";
+ //
+ //cMenIcons
+ //
+ this.cMenIcons.Name = "cMenIcons";
+ this.cMenIcons.Size = new System.Drawing.Size(61, 4);
+ //
+ //Config
+ //
+ this.ClientSize = new System.Drawing.Size(226, 530);
+ this.Controls.Add(this.pGrid);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.HideOnClose = true;
+ this.Icon = global::My.Resources.Resources.Config_Icon;
+ this.Name = "Config";
+ this.TabText = "Config";
+ this.Text = "Config";
+ this.propertyGridContextMenu.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Private Properties
+ private bool ConfigLoading = false;
+#endregion
+
+#region Public Properties
+public bool PropertiesVisible
+ {
+ get
+ {
+ if (this.btnShowProperties.Checked)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ set
+ {
+ this.btnShowProperties.Checked = value;
+
+ if (value == true)
+ {
+ this.btnShowInheritance.Checked = false;
+ this.btnShowDefaultInheritance.Checked = false;
+ this.btnShowDefaultProperties.Checked = false;
+ }
+ }
+ }
+
+public bool InheritanceVisible
+ {
+ get
+ {
+ if (this.btnShowInheritance.Checked)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ set
+ {
+ this.btnShowInheritance.Checked = value;
+
+ if (value == true)
+ {
+ this.btnShowProperties.Checked = false;
+ this.btnShowDefaultInheritance.Checked = false;
+ this.btnShowDefaultProperties.Checked = false;
+ }
+ }
+ }
+
+public bool DefaultPropertiesVisible
+ {
+ get
+ {
+ if (this.btnShowDefaultProperties.Checked)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ set
+ {
+ this.btnShowDefaultProperties.Checked = value;
+
+ if (value == true)
+ {
+ this.btnShowProperties.Checked = false;
+ this.btnShowDefaultInheritance.Checked = false;
+ this.btnShowInheritance.Checked = false;
+ }
+ }
+ }
+
+public bool DefaultInheritanceVisible
+ {
+ get
+ {
+ if (this.btnShowDefaultInheritance.Checked)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ set
+ {
+ this.btnShowDefaultInheritance.Checked = value;
+
+ if (value == true)
+ {
+ this.btnShowProperties.Checked = false;
+ this.btnShowDefaultProperties.Checked = false;
+ this.btnShowInheritance.Checked = false;
+ }
+ }
+ }
+#endregion
+
+#region Public Methods
+ public Config(DockContent Panel)
+ {
+ this.WindowType = Type.Config;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ }
+
+ // Main form handle command key events
+ // Adapted from http://kiwigis.blogspot.com/2009/05/adding-tab-key-support-to-propertygrid.html
+ protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
+ {
+ if ((keyData & Keys.KeyCode) == Keys.Tab)
+ {
+ GridItem selectedItem = pGrid.SelectedGridItem;
+ GridItem gridRoot = selectedItem;
+ while (gridRoot.GridItemType != GridItemType.Root)
+ {
+ gridRoot = gridRoot.Parent;
+ }
+
+ List gridItems = new List();
+ FindChildGridItems(gridRoot, ref gridItems);
+
+ if (!ContainsGridItemProperty(gridItems))
+ {
+ return true;
+ }
+
+ GridItem newItem = selectedItem;
+
+ if (keyData == (Keys.Tab | Keys.Shift))
+ {
+ newItem = FindPreviousGridItemProperty(gridItems, selectedItem);
+ }
+ else if (keyData == Keys.Tab)
+ {
+ newItem = FindNextGridItemProperty(gridItems, selectedItem);
+ }
+
+ pGrid.SelectedGridItem = newItem;
+
+ return true; // Handled
+ }
+ else
+ {
+ return base.ProcessCmdKey(ref msg, keyData);
+ }
+ }
+
+ private void FindChildGridItems(GridItem item, ref List gridItems)
+ {
+ gridItems.Add(item);
+
+ if (!item.Expandable || item.Expanded)
+ {
+ foreach (GridItem child in item.GridItems)
+ {
+ FindChildGridItems(child, ref gridItems);
+ }
+ }
+ }
+
+ private bool ContainsGridItemProperty(List gridItems)
+ {
+ foreach (GridItem item in gridItems)
+ {
+ if (item.GridItemType == GridItemType.Property)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private GridItem FindPreviousGridItemProperty(System.Collections.Generic.List gridItems, GridItem startItem)
+ {
+ if (gridItems.Count == 0)
+ {
+ return null;
+ }
+ if (startItem == null)
+ {
+ return null;
+ }
+
+ int startIndex = gridItems.IndexOf(startItem);
+
+ if (startItem.GridItemType == GridItemType.Property)
+ {
+ startIndex--;
+ if (startIndex < 0)
+ {
+ startIndex = gridItems.Count - 1;
+ }
+ }
+
+ int previousIndex = 0;
+ bool previousIndexValid = false;
+ for (int index = startIndex; index >= 0; index--)
+ {
+ if (gridItems[index].GridItemType == GridItemType.Property)
+ {
+ previousIndex = index;
+ previousIndexValid = true;
+ break;
+ }
+ }
+
+ if (previousIndexValid)
+ {
+ return gridItems[previousIndex];
+ }
+
+ for (int index = gridItems.Count - 1; index >= startIndex + 1; index--)
+ {
+ if (gridItems[index].GridItemType == GridItemType.Property)
+ {
+ previousIndex = index;
+ previousIndexValid = true;
+ break;
+ }
+ }
+
+ if (!previousIndexValid)
+ {
+ return null;
+ }
+
+ return gridItems[previousIndex];
+ }
+
+ private GridItem FindNextGridItemProperty(System.Collections.Generic.List gridItems, GridItem startItem)
+ {
+ if (gridItems.Count == 0)
+ {
+ return null;
+ }
+ if (startItem == null)
+ {
+ return null;
+ }
+
+ int startIndex = gridItems.IndexOf(startItem);
+
+ if (startItem.GridItemType == GridItemType.Property)
+ {
+ startIndex++;
+ if (startIndex >= gridItems.Count)
+ {
+ startIndex = 0;
+ }
+ }
+
+ int nextIndex = 0;
+ bool nextIndexValid = false;
+ for (int index = startIndex; index <= gridItems.Count - 1; index++)
+ {
+ if (gridItems[index].GridItemType == GridItemType.Property)
+ {
+ nextIndex = index;
+ nextIndexValid = true;
+ break;
+ }
+ }
+
+ if (nextIndexValid)
+ {
+ return gridItems[nextIndex];
+ }
+
+ for (int index = 0; index <= startIndex - 1; index++)
+ {
+ if (gridItems[index].GridItemType == GridItemType.Property)
+ {
+ nextIndex = index;
+ nextIndexValid = true;
+ break;
+ }
+ }
+
+ if (!nextIndexValid)
+ {
+ return null;
+ }
+
+ return gridItems[nextIndex];
+ }
+
+ public void SetPropertyGridObject(object Obj)
+ {
+ try
+ {
+ this.btnShowProperties.Enabled = false;
+ this.btnShowInheritance.Enabled = false;
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = false;
+ this.btnHostStatus.Enabled = false;
+
+ this.btnIcon.Image = null;
+
+ if (Obj is mRemoteNG.Connection.Info) //CONNECTION INFO
+ {
+ if ((Obj as mRemoteNG.Connection.Info).IsContainer == false) //NO CONTAINER
+ {
+ if (this.PropertiesVisible) //Properties selected
+ {
+ this.pGrid.SelectedObject = Obj;
+
+ this.btnShowProperties.Enabled = true;
+ if ((Obj as mRemoteNG.Connection.Info).Parent != null)
+ {
+ this.btnShowInheritance.Enabled = true;
+ }
+ else
+ {
+ this.btnShowInheritance.Enabled = false;
+ }
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = true;
+ }
+ else if (this.DefaultPropertiesVisible) //Defaults selected
+ {
+ this.pGrid.SelectedObject = Obj;
+
+ if ((Obj as mRemoteNG.Connection.Info).IsDefault) //Is the default connection
+ {
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = false;
+ this.btnShowDefaultProperties.Enabled = true;
+ this.btnShowDefaultInheritance.Enabled = true;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = false;
+ }
+ else //is not the default connection
+ {
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = true;
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = true;
+
+ this.PropertiesVisible = true;
+ }
+ }
+ else if (this.InheritanceVisible) //Inheritance selected
+ {
+ this.pGrid.SelectedObject = (Obj as mRemoteNG.Connection.Info).Inherit;
+
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = true;
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = true;
+ }
+ else if (this.DefaultInheritanceVisible) //Default Inhertiance selected
+ {
+ pGrid.SelectedObject = Obj;
+
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = true;
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = true;
+
+ this.PropertiesVisible = true;
+ }
+ }
+ else if ((Obj as mRemoteNG.Connection.Info).IsContainer) //CONTAINER
+ {
+ this.pGrid.SelectedObject = Obj;
+
+ this.btnShowProperties.Enabled = true;
+ if (((Obj as mRemoteNG.Connection.Info).Parent as mRemoteNG.Container.Info).Parent != null)
+ {
+ this.btnShowInheritance.Enabled = true;
+ }
+ else
+ {
+ this.btnShowInheritance.Enabled = false;
+ }
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = false;
+
+ this.PropertiesVisible = true;
+ }
+
+ Icon conIcon = mRemoteNG.Connection.Icon.FromString(System.Convert.ToString((Obj as mRemoteNG.Connection.Info).Icon));
+ if (conIcon != null)
+ {
+ this.btnIcon.Image = conIcon.ToBitmap();
+ }
+ }
+ else if (Obj is Root.Info) //ROOT
+ {
+ Root.Info rootInfo = (Root.Info) Obj;
+ switch (rootInfo.Type)
+ {
+ case Root.Info.RootType.Connection:
+ PropertiesVisible = true;
+ DefaultPropertiesVisible = false;
+ btnShowProperties.Enabled = true;
+ btnShowInheritance.Enabled = false;
+ btnShowDefaultProperties.Enabled = true;
+ btnShowDefaultInheritance.Enabled = true;
+ btnIcon.Enabled = false;
+ btnHostStatus.Enabled = false;
+ break;
+ case Root.Info.RootType.Credential:
+ throw (new NotImplementedException());
+ break;
+ case Root.Info.RootType.PuttySessions:
+ PropertiesVisible = true;
+ DefaultPropertiesVisible = false;
+ btnShowProperties.Enabled = true;
+ btnShowInheritance.Enabled = false;
+ btnShowDefaultProperties.Enabled = false;
+ btnShowDefaultInheritance.Enabled = false;
+ btnIcon.Enabled = false;
+ btnHostStatus.Enabled = false;
+ break;
+ }
+ pGrid.SelectedObject = Obj;
+ }
+ else if (Obj is mRemoteNG.Connection.Info.Inheritance) //INHERITANCE
+ {
+ this.pGrid.SelectedObject = Obj;
+
+ if (this.InheritanceVisible)
+ {
+ this.InheritanceVisible = true;
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = true;
+ this.btnShowDefaultProperties.Enabled = false;
+ this.btnShowDefaultInheritance.Enabled = false;
+ this.btnIcon.Enabled = true;
+ this.btnHostStatus.Enabled = !((Obj as mRemoteNG.Connection.Info.Inheritance).Parent as mRemoteNG.Connection.Info).IsContainer;
+
+ this.InheritanceVisible = true;
+
+ Icon conIcon = mRemoteNG.Connection.Icon.FromString(System.Convert.ToString(((Obj as mRemoteNG.Connection.Info.Inheritance).Parent as mRemoteNG.Connection.Info).Icon));
+ if (conIcon != null)
+ {
+ this.btnIcon.Image = conIcon.ToBitmap();
+ }
+ }
+ else if (this.DefaultInheritanceVisible)
+ {
+ this.btnShowProperties.Enabled = true;
+ this.btnShowInheritance.Enabled = false;
+ this.btnShowDefaultProperties.Enabled = true;
+ this.btnShowDefaultInheritance.Enabled = true;
+ this.btnIcon.Enabled = false;
+ this.btnHostStatus.Enabled = false;
+
+ this.DefaultInheritanceVisible = true;
+ }
+
+ }
+
+ this.ShowHideGridItems();
+ this.SetHostStatus(Obj);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridObjectFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void pGrid_SelectedObjectChanged()
+ {
+ this.ShowHideGridItems();
+ }
+#endregion
+
+#region Private Methods
+ private void ApplyLanguage()
+ {
+ btnShowInheritance.Text = My.Language.strButtonInheritance;
+ btnShowDefaultInheritance.Text = My.Language.strButtonDefaultInheritance;
+ btnShowProperties.Text = My.Language.strButtonProperties;
+ btnShowDefaultProperties.Text = My.Language.strButtonDefaultProperties;
+ btnIcon.Text = My.Language.strButtonIcon;
+ btnHostStatus.Text = My.Language.strStatus;
+ Text = My.Language.strMenuConfig;
+ TabText = My.Language.strMenuConfig;
+ propertyGridContextMenuShowHelpText.Text = Language.strMenuShowHelpText;
+ }
+
+ private void ApplyTheme()
+ {
+ pGrid.BackColor = Themes.ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ pGrid.ForeColor = Themes.ThemeManager.ActiveTheme.ToolbarTextColor;
+ pGrid.ViewBackColor = Themes.ThemeManager.ActiveTheme.ConfigPanelBackgroundColor;
+ pGrid.ViewForeColor = Themes.ThemeManager.ActiveTheme.ConfigPanelTextColor;
+ pGrid.LineColor = Themes.ThemeManager.ActiveTheme.ConfigPanelGridLineColor;
+ pGrid.HelpBackColor = Themes.ThemeManager.ActiveTheme.ConfigPanelHelpBackgroundColor;
+ pGrid.HelpForeColor = Themes.ThemeManager.ActiveTheme.ConfigPanelHelpTextColor;
+ pGrid.CategoryForeColor = Themes.ThemeManager.ActiveTheme.ConfigPanelCategoryTextColor;
+ }
+
+ private bool _originalPropertyGridToolStripItemCountValid;
+ private int _originalPropertyGridToolStripItemCount;
+
+ private void AddToolStripItems()
+ {
+ try
+ {
+ ToolStrip customToolStrip = new ToolStrip();
+ customToolStrip.Items.Add(btnShowProperties);
+ customToolStrip.Items.Add(btnShowInheritance);
+ customToolStrip.Items.Add(btnShowDefaultProperties);
+ customToolStrip.Items.Add(btnShowDefaultInheritance);
+ customToolStrip.Items.Add(btnHostStatus);
+ customToolStrip.Items.Add(btnIcon);
+ customToolStrip.Show();
+
+ ToolStrip propertyGridToolStrip = new ToolStrip();
+
+ ToolStrip toolStrip = null;
+ foreach (System.Windows.Forms.Control control in pGrid.Controls)
+ {
+ toolStrip = control as ToolStrip;
+
+ if (toolStrip != null)
+ {
+ propertyGridToolStrip = toolStrip;
+ break;
+ }
+ }
+
+ if (toolStrip == null)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strCouldNotFindToolStripInFilteredPropertyGrid, true);
+ return ;
+ }
+
+ if (!_originalPropertyGridToolStripItemCountValid)
+ {
+ _originalPropertyGridToolStripItemCount = propertyGridToolStrip.Items.Count;
+ _originalPropertyGridToolStripItemCountValid = true;
+ }
+ Debug.Assert(_originalPropertyGridToolStripItemCount == 5);
+
+ // Hide the "Property Pages" button
+ propertyGridToolStrip.Items[_originalPropertyGridToolStripItemCount - 1].Visible = false;
+
+ int expectedToolStripItemCount = _originalPropertyGridToolStripItemCount + customToolStrip.Items.Count;
+ if (propertyGridToolStrip.Items.Count != expectedToolStripItemCount)
+ {
+ propertyGridToolStrip.AllowMerge = true;
+ ToolStripManager.Merge(customToolStrip, propertyGridToolStrip);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strConfigUiLoadFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void Config_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+
+ Themes.ThemeManager.ThemeChanged += ApplyTheme;
+ ApplyTheme();
+
+ AddToolStripItems();
+
+ pGrid.HelpVisible = Settings.ShowConfigHelpText;
+ }
+
+ private void Config_SystemColorsChanged(System.Object sender, System.EventArgs e)
+ {
+ AddToolStripItems();
+ }
+
+ private void pGrid_PropertyValueChanged(object s, System.Windows.Forms.PropertyValueChangedEventArgs e)
+ {
+ try
+ {
+ if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ if (e.ChangedItem.Label == My.Language.strPropertyNameProtocol)
+ {
+ (this.pGrid.SelectedObject as mRemoteNG.Connection.Info).SetDefaultPort();
+ }
+ else if (e.ChangedItem.Label == My.Language.strPropertyNameName)
+ {
+ App.Runtime.Windows.treeForm.tvConnections.SelectedNode.Text = System.Convert.ToString(this.pGrid.SelectedObject.Name);
+ if (My.Settings.Default.SetHostnameLikeDisplayName && this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ mRemoteNG.Connection.Info connectionInfo = (mRemoteNG.Connection.Info) this.pGrid.SelectedObject;
+ if (!string.IsNullOrEmpty(connectionInfo.Name))
+ {
+ connectionInfo.Hostname = connectionInfo.Name;
+ }
+ }
+ }
+ else if (e.ChangedItem.Label == My.Language.strPropertyNameIcon)
+ {
+ Icon conIcon = mRemoteNG.Connection.Icon.FromString(System.Convert.ToString((this.pGrid.SelectedObject as mRemoteNG.Connection.Info).Icon));
+ if (conIcon != null)
+ {
+ this.btnIcon.Image = conIcon.ToBitmap();
+ }
+ }
+ else if (e.ChangedItem.Label == My.Language.strPropertyNameAddress)
+ {
+ this.SetHostStatus(this.pGrid.SelectedObject);
+ }
+
+ if ((this.pGrid.SelectedObject as mRemoteNG.Connection.Info).IsDefault)
+ {
+ App.Runtime.DefaultConnectionToSettings();
+ }
+ }
+
+ Info rootInfo = pGrid.SelectedObject as Info;
+ if (rootInfo != null)
+ {
+ switch (e.ChangedItem.PropertyDescriptor.Name)
+ {
+ case "Password":
+ if (rootInfo.Password == true)
+ {
+ string passwordName = "";
+ if (Settings.UseSQLServer)
+ {
+ passwordName = Language.strSQLServer.TrimEnd(':');
+ }
+ else
+ {
+ passwordName = Path.GetFileName(GetStartupConnectionFileName());
+ }
+
+ string password = Tools.Misc.PasswordDialog(passwordName);
+
+ if (string.IsNullOrEmpty(password))
+ {
+ rootInfo.Password = System.Convert.ToString(false);
+ }
+ else
+ {
+ rootInfo.PasswordString = password;
+ }
+ }
+ break;
+ case "Name":
+ break;
+ //Windows.treeForm.tvConnections.SelectedNode.Text = pGrid.SelectedObject.Name
+ }
+ }
+
+ if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info.Inheritance)
+ {
+ if ((this.pGrid.SelectedObject as mRemoteNG.Connection.Info.Inheritance).IsDefault)
+ {
+ App.Runtime.DefaultInheritanceToSettings();
+ }
+ }
+
+ this.ShowHideGridItems();
+ App.Runtime.SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridValueFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void pGrid_PropertySortChanged(object sender, EventArgs e)
+ {
+ if (pGrid.PropertySort == PropertySort.CategorizedAlphabetical)
+ {
+ pGrid.PropertySort = PropertySort.Categorized;
+ }
+ }
+
+ private void ShowHideGridItems()
+ {
+ try
+ {
+ System.Collections.Generic.List strHide = new System.Collections.Generic.List();
+
+ if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ mRemoteNG.Connection.Info conI = pGrid.SelectedObject;
+
+ switch (conI.Protocol)
+ {
+ case mRemoteNG.Connection.Protocol.Protocols.RDP:
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("PuttySession");
+ strHide.Add("RenderingEngine");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ if (conI.RDGatewayUsageMethod == mRemoteNG.Connection.Protocol.RDP.RDGatewayUsageMethod.Never)
+ {
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ }
+ else if (conI.RDGatewayUseConnectionCredentials)
+ {
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsername");
+ }
+ if (!(conI.Resolution == RDP.RDPResolutions.FitToWindow || conI.Resolution == RDP.RDPResolutions.Fullscreen))
+ {
+ strHide.Add("AutomaticResize");
+ }
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.VNC:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("PuttySession");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ if (conI.VNCAuthMode == mRemoteNG.Connection.Protocol.VNC.AuthMode.AuthVNC)
+ {
+ strHide.Add("Username");
+ strHide.Add("Domain");
+ }
+ if (conI.VNCProxyType == mRemoteNG.Connection.Protocol.VNC.ProxyType.ProxyNone)
+ {
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyUsername");
+ }
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH1:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.SSH2:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.Telnet:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("Password");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("Username");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.Rlogin:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("Password");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("Username");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.RAW:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("Password");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("Username");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTP:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("PuttySession");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.HTTPS:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ExtApp");
+ strHide.Add("ICAEncryption");
+ strHide.Add("PuttySession");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound;Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.ICA:
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("ExtApp");
+ strHide.Add("Port");
+ strHide.Add("PuttySession");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ case mRemoteNG.Connection.Protocol.Protocols.IntApp:
+ strHide.Add("CacheBitmaps");
+ strHide.Add("Colors");
+ strHide.Add("DisplayThemes");
+ strHide.Add("DisplayWallpaper");
+ strHide.Add("EnableFontSmoothing");
+ strHide.Add("EnableDesktopComposition");
+ strHide.Add("Domain");
+ strHide.Add("ICAEncryption");
+ strHide.Add("PuttySession");
+ strHide.Add("RDGatewayDomain");
+ strHide.Add("RDGatewayHostname");
+ strHide.Add("RDGatewayPassword");
+ strHide.Add("RDGatewayUsageMethod");
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ strHide.Add("RDGatewayUsername");
+ strHide.Add("RDPAuthenticationLevel");
+ strHide.Add("LoadBalanceInfo");
+ strHide.Add("RedirectDiskDrives");
+ strHide.Add("RedirectKeys");
+ strHide.Add("RedirectPorts");
+ strHide.Add("RedirectPrinters");
+ strHide.Add("RedirectSmartCards");
+ strHide.Add("RedirectSound");
+ strHide.Add("RenderingEngine");
+ strHide.Add("Resolution");
+ strHide.Add("AutomaticResize");
+ strHide.Add("UseConsoleSession");
+ strHide.Add("UseCredSsp");
+ strHide.Add("VNCAuthMode");
+ strHide.Add("VNCColors");
+ strHide.Add("VNCCompression");
+ strHide.Add("VNCEncoding");
+ strHide.Add("VNCProxyIP");
+ strHide.Add("VNCProxyPassword");
+ strHide.Add("VNCProxyPort");
+ strHide.Add("VNCProxyType");
+ strHide.Add("VNCProxyUsername");
+ strHide.Add("VNCSmartSizeMode");
+ strHide.Add("VNCViewOnly");
+ break;
+ }
+
+ if (conI.IsDefault == false)
+ {
+ if (conI.Inherit.CacheBitmaps)
+ {
+ strHide.Add("CacheBitmaps");
+ }
+
+ if (conI.Inherit.Colors)
+ {
+ strHide.Add("Colors");
+ }
+
+ if (conI.Inherit.Description)
+ {
+ strHide.Add("Description");
+ }
+
+ if (conI.Inherit.DisplayThemes)
+ {
+ strHide.Add("DisplayThemes");
+ }
+
+ if (conI.Inherit.DisplayWallpaper)
+ {
+ strHide.Add("DisplayWallpaper");
+ }
+
+ if (conI.Inherit.EnableFontSmoothing)
+ {
+ strHide.Add("EnableFontSmoothing");
+ }
+
+ if (conI.Inherit.EnableDesktopComposition)
+ {
+ strHide.Add("EnableDesktopComposition");
+ }
+
+ if (conI.Inherit.Domain)
+ {
+ strHide.Add("Domain");
+ }
+
+ if (conI.Inherit.Icon)
+ {
+ strHide.Add("Icon");
+ }
+
+ if (conI.Inherit.Password)
+ {
+ strHide.Add("Password");
+ }
+
+ if (conI.Inherit.Port)
+ {
+ strHide.Add("Port");
+ }
+
+ if (conI.Inherit.Protocol)
+ {
+ strHide.Add("Protocol");
+ }
+
+ if (conI.Inherit.PuttySession)
+ {
+ strHide.Add("PuttySession");
+ }
+
+ if (conI.Inherit.RedirectDiskDrives)
+ {
+ strHide.Add("RedirectDiskDrives");
+ }
+
+ if (conI.Inherit.RedirectKeys)
+ {
+ strHide.Add("RedirectKeys");
+ }
+
+ if (conI.Inherit.RedirectPorts)
+ {
+ strHide.Add("RedirectPorts");
+ }
+
+ if (conI.Inherit.RedirectPrinters)
+ {
+ strHide.Add("RedirectPrinters");
+ }
+
+ if (conI.Inherit.RedirectSmartCards)
+ {
+ strHide.Add("RedirectSmartCards");
+ }
+
+ if (conI.Inherit.RedirectSound)
+ {
+ strHide.Add("RedirectSound");
+ }
+
+ if (conI.Inherit.Resolution)
+ {
+ strHide.Add("Resolution");
+ }
+
+ if (conI.Inherit.AutomaticResize)
+ {
+ strHide.Add("AutomaticResize");
+ }
+
+ if (conI.Inherit.UseConsoleSession)
+ {
+ strHide.Add("UseConsoleSession");
+ }
+
+ if (conI.Inherit.UseCredSsp)
+ {
+ strHide.Add("UseCredSsp");
+ }
+
+ if (conI.Inherit.RenderingEngine)
+ {
+ strHide.Add("RenderingEngine");
+ }
+
+ if (conI.Inherit.ICAEncryption)
+ {
+ strHide.Add("ICAEncryption");
+ }
+
+ if (conI.Inherit.RDPAuthenticationLevel)
+ {
+ strHide.Add("RDPAuthenticationLevel");
+ }
+
+ if (conI.Inherit.LoadBalanceInfo)
+ {
+ strHide.Add("LoadBalanceInfo");
+ }
+
+ if (conI.Inherit.Username)
+ {
+ strHide.Add("Username");
+ }
+
+ if (conI.Inherit.Panel)
+ {
+ strHide.Add("Panel");
+ }
+
+ if (conI.IsContainer)
+ {
+ strHide.Add("Hostname");
+ }
+
+ if (conI.Inherit.PreExtApp)
+ {
+ strHide.Add("PreExtApp");
+ }
+
+ if (conI.Inherit.PostExtApp)
+ {
+ strHide.Add("PostExtApp");
+ }
+
+ if (conI.Inherit.MacAddress)
+ {
+ strHide.Add("MacAddress");
+ }
+
+ if (conI.Inherit.UserField)
+ {
+ strHide.Add("UserField");
+ }
+
+ if (conI.Inherit.VNCAuthMode)
+ {
+ strHide.Add("VNCAuthMode");
+ }
+
+ if (conI.Inherit.VNCColors)
+ {
+ strHide.Add("VNCColors");
+ }
+
+ if (conI.Inherit.VNCCompression)
+ {
+ strHide.Add("VNCCompression");
+ }
+
+ if (conI.Inherit.VNCEncoding)
+ {
+ strHide.Add("VNCEncoding");
+ }
+
+ if (conI.Inherit.VNCProxyIP)
+ {
+ strHide.Add("VNCProxyIP");
+ }
+
+ if (conI.Inherit.VNCProxyPassword)
+ {
+ strHide.Add("VNCProxyPassword");
+ }
+
+ if (conI.Inherit.VNCProxyPort)
+ {
+ strHide.Add("VNCProxyPort");
+ }
+
+ if (conI.Inherit.VNCProxyType)
+ {
+ strHide.Add("VNCProxyType");
+ }
+
+ if (conI.Inherit.VNCProxyUsername)
+ {
+ strHide.Add("VNCProxyUsername");
+ }
+
+ if (conI.Inherit.VNCViewOnly)
+ {
+ strHide.Add("VNCViewOnly");
+ }
+
+ if (conI.Inherit.VNCSmartSizeMode)
+ {
+ strHide.Add("VNCSmartSizeMode");
+ }
+
+ if (conI.Inherit.ExtApp)
+ {
+ strHide.Add("ExtApp");
+ }
+
+ if (conI.Inherit.RDGatewayUsageMethod)
+ {
+ strHide.Add("RDGatewayUsageMethod");
+ }
+
+ if (conI.Inherit.RDGatewayHostname)
+ {
+ strHide.Add("RDGatewayHostname");
+ }
+
+ if (conI.Inherit.RDGatewayUsername)
+ {
+ strHide.Add("RDGatewayUsername");
+ }
+
+ if (conI.Inherit.RDGatewayPassword)
+ {
+ strHide.Add("RDGatewayPassword");
+ }
+
+ if (conI.Inherit.RDGatewayDomain)
+ {
+ strHide.Add("RDGatewayDomain");
+ }
+
+ if (conI.Inherit.RDGatewayUseConnectionCredentials)
+ {
+ strHide.Add("RDGatewayUseConnectionCredentials");
+ }
+
+ if (conI.Inherit.RDGatewayHostname)
+ {
+ strHide.Add("RDGatewayHostname");
+ }
+ }
+ else
+ {
+ strHide.Add("Hostname");
+ strHide.Add("Name");
+ }
+ }
+ else if (pGrid.SelectedObject is Root.Info)
+ {
+ Root.Info rootInfo = (Root.Info) pGrid.SelectedObject;
+ if (rootInfo.Type == Root.Info.RootType.PuttySessions)
+ {
+ strHide.Add("Password");
+ }
+ }
+
+ this.pGrid.HiddenProperties = strHide.ToArray();
+
+ this.pGrid.Refresh();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridHideItemsFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void btnShowProperties_Click(object sender, System.EventArgs e)
+ {
+ if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info.Inheritance)
+ {
+ if ((this.pGrid.SelectedObject as mRemoteNG.Connection.Info.Inheritance).IsDefault)
+ {
+ this.PropertiesVisible = true;
+ this.InheritanceVisible = false;
+ this.DefaultPropertiesVisible = false;
+ this.DefaultInheritanceVisible = false;
+ this.SetPropertyGridObject(App.Runtime.Windows.treeForm.tvConnections.SelectedNode.Tag as mRemoteNG.Root.Info);
+ }
+ else
+ {
+ this.PropertiesVisible = true;
+ this.InheritanceVisible = false;
+ this.DefaultPropertiesVisible = false;
+ this.DefaultInheritanceVisible = false;
+ this.SetPropertyGridObject((this.pGrid.SelectedObject as mRemoteNG.Connection.Info.Inheritance).Parent);
+ }
+ }
+ else if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ if ((this.pGrid.SelectedObject as mRemoteNG.Connection.Info).IsDefault)
+ {
+ this.PropertiesVisible = true;
+ this.InheritanceVisible = false;
+ this.DefaultPropertiesVisible = false;
+ this.DefaultInheritanceVisible = false;
+ this.SetPropertyGridObject(App.Runtime.Windows.treeForm.tvConnections.SelectedNode.Tag as mRemoteNG.Root.Info);
+ }
+ }
+ }
+
+ private void btnShowDefaultProperties_Click(object sender, System.EventArgs e)
+ {
+ if (this.pGrid.SelectedObject is mRemoteNG.Root.Info|| this.pGrid.SelectedObject is mRemoteNG.Connection.Info.Inheritance)
+ {
+ this.PropertiesVisible = false;
+ this.InheritanceVisible = false;
+ this.DefaultPropertiesVisible = true;
+ this.DefaultInheritanceVisible = false;
+ this.SetPropertyGridObject(App.Runtime.DefaultConnectionFromSettings());
+ }
+ }
+
+ private void btnShowInheritance_Click(object sender, System.EventArgs e)
+ {
+ if (this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ this.PropertiesVisible = false;
+ this.InheritanceVisible = true;
+ this.DefaultPropertiesVisible = false;
+ this.DefaultInheritanceVisible = false;
+ this.SetPropertyGridObject((this.pGrid.SelectedObject as mRemoteNG.Connection.Info).Inherit);
+ }
+ }
+
+ private void btnShowDefaultInheritance_Click(object sender, System.EventArgs e)
+ {
+ if (this.pGrid.SelectedObject is mRemoteNG.Root.Info|| this.pGrid.SelectedObject is mRemoteNG.Connection.Info)
+ {
+ this.PropertiesVisible = false;
+ this.InheritanceVisible = false;
+ this.DefaultPropertiesVisible = false;
+ this.DefaultInheritanceVisible = true;
+ this.SetPropertyGridObject(App.Runtime.DefaultInheritanceFromSettings());
+ }
+ }
+
+ private void btnHostStatus_Click(object sender, System.EventArgs e)
+ {
+ SetHostStatus(this.pGrid.SelectedObject);
+ }
+
+ private void btnIcon_Click(object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ try
+ {
+ if (pGrid.SelectedObject is mRemoteNG.Connection.Info&& !(pGrid.SelectedObject is mRemoteNG.Connection.PuttySession.Info))
+ {
+ this.cMenIcons.Items.Clear();
+
+ foreach (string iStr in mRemoteNG.Connection.Icon.Icons)
+ {
+ ToolStripMenuItem tI = new ToolStripMenuItem();
+ tI.Text = iStr;
+ tI.Image = mRemoteNG.Connection.Icon.FromString(iStr).ToBitmap();
+ tI.Click += IconMenu_Click;
+
+ this.cMenIcons.Items.Add(tI);
+ }
+
+ Point mPos = new Point(PointToScreen(new Point(e.Location.X + this.pGrid.Width - 100, e.Location.Y)));
+ this.cMenIcons.Show(mPos);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridButtonIconClickFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void IconMenu_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ mRemoteNG.Connection.Info connectionInfo = pGrid.SelectedObject as mRemoteNG.Connection.Info;
+ if (connectionInfo == null)
+ {
+ return ;
+ }
+
+ ToolStripMenuItem selectedMenuItem = sender as ToolStripMenuItem;
+ if (selectedMenuItem == null)
+ {
+ return ;
+ }
+
+ string iconName = selectedMenuItem.Text;
+ if (string.IsNullOrEmpty(iconName))
+ {
+ return ;
+ }
+
+ Icon connectionIcon = mRemoteNG.Connection.Icon.FromString(iconName);
+ if (connectionIcon == null)
+ {
+ return ;
+ }
+
+ btnIcon.Image = connectionIcon.ToBitmap();
+
+ connectionInfo.Icon = iconName;
+ pGrid.Refresh();
+
+ SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strConfigPropertyGridMenuClickFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Host Status (Ping)
+ private string HostName;
+ private System.Threading.Thread pThread;
+
+ private void CheckHostAlive()
+ {
+ Ping pingSender = new Ping();
+ PingReply pReply;
+
+ try
+ {
+ pReply = pingSender.Send(HostName);
+
+ if (pReply.Status == IPStatus.Success)
+ {
+ if ((string) this.btnHostStatus.Tag == "checking")
+ {
+ ShowStatusImage(global::My.Resources.HostStatus_On);
+ }
+ }
+ else
+ {
+ if ((string) this.btnHostStatus.Tag == "checking")
+ {
+ ShowStatusImage(global::My.Resources.HostStatus_Off);
+ }
+ }
+ }
+ catch (Exception)
+ {
+ if ((string) this.btnHostStatus.Tag == "checking")
+ {
+ ShowStatusImage(global::My.Resources.HostStatus_Off);
+ }
+ }
+ }
+
+ delegate void ShowStatusImageCB(Image Image);
+ private void ShowStatusImage(Image Image)
+ {
+ if (this.pGrid.InvokeRequired)
+ {
+ ShowStatusImageCB d = new ShowStatusImageCB(ShowStatusImage);
+ this.pGrid.Invoke(d, new object[] {Image});
+ }
+ else
+ {
+ this.btnHostStatus.Image = Image;
+ this.btnHostStatus.Tag = "checkfinished";
+ }
+ }
+
+ public void SetHostStatus(object ConnectionInfo)
+ {
+ try
+ {
+ this.btnHostStatus.Image = global::My.Resources.HostStatus_Check;
+
+ // To check status, ConnectionInfo must be an mRemoteNG.Connection.Info that is not a container
+ if (ConnectionInfo is mRemoteNG.Connection.Info)
+ {
+ if ((ConnectionInfo as mRemoteNG.Connection.Info).IsContainer)
+ {
+ return ;
+ }
+ }
+ else
+ {
+ return ;
+ }
+
+ this.btnHostStatus.Tag = "checking";
+ HostName = (ConnectionInfo as mRemoteNG.Connection.Info).Hostname;
+ pThread = new System.Threading.Thread(new System.Threading.ThreadStart(CheckHostAlive));
+ pThread.SetApartmentState(System.Threading.ApartmentState.STA);
+ pThread.IsBackground = true;
+ pThread.Start();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridSetHostStatusFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+ private void propertyGridContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ try
+ {
+ propertyGridContextMenuShowHelpText.Checked = Settings.ShowConfigHelpText;
+ GridItem gridItem = pGrid.SelectedGridItem;
+ propertyGridContextMenuReset.Enabled = System.Convert.ToBoolean(pGrid.SelectedObject != null && gridItem != null && gridItem.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject));
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("UI.Window.Config.propertyGridContextMenu_Opening() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ private void propertyGridContextMenuReset_Click(System.Object sender, EventArgs e)
+ {
+ try
+ {
+ GridItem gridItem = pGrid.SelectedGridItem;
+ if (pGrid.SelectedObject != null && gridItem != null && gridItem.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject))
+ {
+ pGrid.ResetSelectedProperty();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage("UI.Window.Config.propertyGridContextMenuReset_Click() failed.", ex, MessageClass.ErrorMsg, true);
+ }
+ }
+
+ private void propertyGridContextMenuShowHelpText_Click(object sender, EventArgs e)
+ {
+ propertyGridContextMenuShowHelpText.Checked = !propertyGridContextMenuShowHelpText.Checked;
+ }
+
+ private void propertyGridContextMenuShowHelpText_CheckedChanged(object sender, EventArgs e)
+ {
+ Settings.ShowConfigHelpText = propertyGridContextMenuShowHelpText.Checked;
+ pGrid.HelpVisible = propertyGridContextMenuShowHelpText.Checked;
+ }
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Config.resx b/mRemoteV1/CS/UI/UI.Window.Config.resx
new file mode 100644
index 000000000..f64c01a14
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Config.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 131, 14
+
+
+ 21, 14
+
+
+ 44
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Connection.cs b/mRemoteV1/CS/UI/UI.Window.Connection.cs
new file mode 100644
index 000000000..eda2a6808
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Connection.cs
@@ -0,0 +1,1348 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Windows;
+using mRemoteNG.Connection;
+using mRemoteNG.App;
+using Crownwood;
+using WeifenLuo.WinFormsUI.Docking;
+using PSTaskDialog;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.Config;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class Connection : UI.Window.Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.ContextMenuStrip cmenTab;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabFullscreen;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabScreenshot;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabTransferFile;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabSendSpecialKeys;
+ internal System.Windows.Forms.ToolStripSeparator cmenTabSep1;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabRenameTab;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabDuplicateTab;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabDisconnect;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabSmartSize;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabSendSpecialKeysCtrlAltDel;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabSendSpecialKeysCtrlEsc;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabViewOnly;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabReconnect;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabExternalApps;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabStartChat;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabRefreshScreen;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1;
+ internal System.Windows.Forms.ToolStripMenuItem cmenTabPuttySettings;
+
+ public Crownwood.Magic.Controls.TabControl TabController;
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(Connection_Load);
+ this.DockStateChanged += new System.EventHandler(Connection_DockStateChanged);
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Connection_FormClosing);
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Connection));
+ this.TabController = new Crownwood.Magic.Controls.TabControl();
+ this.TabController.ClosePressed += new System.EventHandler(this.TabController_ClosePressed);
+ this.TabController.DoubleClickTab += new Crownwood.Magic.Controls.TabControl.DoubleClickTabHandler(this.TabController_DoubleClickTab);
+ this.TabController.DragDrop += new System.Windows.Forms.DragEventHandler(this.TabController_DragDrop);
+ this.TabController.DragEnter += new System.Windows.Forms.DragEventHandler(this.TabController_DragEnter);
+ this.TabController.DragOver += new System.Windows.Forms.DragEventHandler(this.TabController_DragOver);
+ this.TabController.SelectionChanged += new System.EventHandler(this.TabController_SelectionChanged);
+ this.TabController.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TabController_MouseUp);
+ this.TabController.PageDragEnd += new System.Windows.Forms.MouseEventHandler(this.TabController_PageDragStart);
+ this.TabController.PageDragStart += new System.Windows.Forms.MouseEventHandler(this.TabController_PageDragStart);
+ this.TabController.PageDragMove += new System.Windows.Forms.MouseEventHandler(this.TabController_PageDragMove);
+ this.TabController.PageDragEnd += new System.Windows.Forms.MouseEventHandler(this.TabController_PageDragEnd);
+ this.TabController.PageDragQuit += new System.Windows.Forms.MouseEventHandler(this.TabController_PageDragEnd);
+ this.cmenTab = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.cmenTabFullscreen = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabFullscreen.Click += new System.EventHandler(this.cmenTabFullscreen_Click);
+ this.cmenTabSmartSize = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabSmartSize.Click += new System.EventHandler(this.cmenTabSmartSize_Click);
+ this.cmenTabViewOnly = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabViewOnly.Click += new System.EventHandler(this.cmenTabViewOnly_Click);
+ this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.cmenTabScreenshot = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabScreenshot.Click += new System.EventHandler(this.cmenTabScreenshot_Click);
+ this.cmenTabStartChat = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabStartChat.Click += new System.EventHandler(this.cmenTabStartChat_Click);
+ this.cmenTabTransferFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabTransferFile.Click += new System.EventHandler(this.cmenTabTransferFile_Click);
+ this.cmenTabRefreshScreen = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabRefreshScreen.Click += new System.EventHandler(this.cmenTabRefreshScreen_Click);
+ this.cmenTabSendSpecialKeys = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabSendSpecialKeysCtrlAltDel = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabSendSpecialKeysCtrlAltDel.Click += new System.EventHandler(this.cmenTabSendSpecialKeysCtrlAltDel_Click);
+ this.cmenTabSendSpecialKeysCtrlEsc = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabSendSpecialKeysCtrlEsc.Click += new System.EventHandler(this.cmenTabSendSpecialKeysCtrlEsc_Click);
+ this.cmenTabExternalApps = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.cmenTabRenameTab = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabRenameTab.Click += new System.EventHandler(this.cmenTabRenameTab_Click);
+ this.cmenTabDuplicateTab = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabDuplicateTab.Click += new System.EventHandler(this.cmenTabDuplicateTab_Click);
+ this.cmenTabReconnect = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabReconnect.Click += new System.EventHandler(this.cmenTabReconnect_Click);
+ this.cmenTabDisconnect = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabDisconnect.Click += new System.EventHandler(this.cmenTabDisconnect_Click);
+ this.cmenTabPuttySettings = new System.Windows.Forms.ToolStripMenuItem();
+ this.cmenTabPuttySettings.Click += new System.EventHandler(this.cmenTabPuttySettings_Click);
+ this.cmenTab.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //TabController
+ //
+ this.TabController.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.TabController.Appearance = Crownwood.Magic.Controls.TabControl.VisualAppearance.MultiDocument;
+ this.TabController.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.TabController.DragFromControl = false;
+ this.TabController.IDEPixelArea = true;
+ this.TabController.IDEPixelBorder = false;
+ this.TabController.Location = new System.Drawing.Point(0, -1);
+ this.TabController.Name = "TabController";
+ this.TabController.Size = new System.Drawing.Size(632, 454);
+ this.TabController.TabIndex = 0;
+ //
+ //cmenTab
+ //
+ this.cmenTab.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cmenTabFullscreen, this.cmenTabSmartSize, this.cmenTabViewOnly, this.ToolStripSeparator1, this.cmenTabScreenshot, this.cmenTabStartChat, this.cmenTabTransferFile, this.cmenTabRefreshScreen, this.cmenTabSendSpecialKeys, this.cmenTabPuttySettings, this.cmenTabExternalApps, this.cmenTabSep1, this.cmenTabRenameTab, this.cmenTabDuplicateTab, this.cmenTabReconnect, this.cmenTabDisconnect});
+ this.cmenTab.Name = "cmenTab";
+ this.cmenTab.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.cmenTab.Size = new System.Drawing.Size(202, 346);
+ //
+ //cmenTabFullscreen
+ //
+ this.cmenTabFullscreen.Image = global::My.Resources.Resources.arrow_out;
+ this.cmenTabFullscreen.Name = "cmenTabFullscreen";
+ this.cmenTabFullscreen.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabFullscreen.Text = "Fullscreen (RDP)";
+ //
+ //cmenTabSmartSize
+ //
+ this.cmenTabSmartSize.Image = global::My.Resources.Resources.SmartSize;
+ this.cmenTabSmartSize.Name = "cmenTabSmartSize";
+ this.cmenTabSmartSize.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabSmartSize.Text = "SmartSize (RDP/VNC)";
+ //
+ //cmenTabViewOnly
+ //
+ this.cmenTabViewOnly.Name = "cmenTabViewOnly";
+ this.cmenTabViewOnly.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabViewOnly.Text = "View Only (VNC)";
+ //
+ //ToolStripSeparator1
+ //
+ this.ToolStripSeparator1.Name = "ToolStripSeparator1";
+ this.ToolStripSeparator1.Size = new System.Drawing.Size(198, 6);
+ //
+ //cmenTabScreenshot
+ //
+ this.cmenTabScreenshot.Image = global::My.Resources.Resources.Screenshot_Add;
+ this.cmenTabScreenshot.Name = "cmenTabScreenshot";
+ this.cmenTabScreenshot.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabScreenshot.Text = "Screenshot";
+ //
+ //cmenTabStartChat
+ //
+ this.cmenTabStartChat.Image = global::My.Resources.Resources.Chat;
+ this.cmenTabStartChat.Name = "cmenTabStartChat";
+ this.cmenTabStartChat.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabStartChat.Text = "Start Chat (VNC)";
+ this.cmenTabStartChat.Visible = false;
+ //
+ //cmenTabTransferFile
+ //
+ this.cmenTabTransferFile.Image = global::My.Resources.Resources.SSHTransfer;
+ this.cmenTabTransferFile.Name = "cmenTabTransferFile";
+ this.cmenTabTransferFile.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabTransferFile.Text = "Transfer File (SSH)";
+ //
+ //cmenTabRefreshScreen
+ //
+ this.cmenTabRefreshScreen.Image = global::My.Resources.Resources.Refresh;
+ this.cmenTabRefreshScreen.Name = "cmenTabRefreshScreen";
+ this.cmenTabRefreshScreen.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabRefreshScreen.Text = "Refresh Screen (VNC)";
+ //
+ //cmenTabSendSpecialKeys
+ //
+ this.cmenTabSendSpecialKeys.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cmenTabSendSpecialKeysCtrlAltDel, this.cmenTabSendSpecialKeysCtrlEsc});
+ this.cmenTabSendSpecialKeys.Image = global::My.Resources.Resources.Keyboard;
+ this.cmenTabSendSpecialKeys.Name = "cmenTabSendSpecialKeys";
+ this.cmenTabSendSpecialKeys.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabSendSpecialKeys.Text = "Send special Keys (VNC)";
+ //
+ //cmenTabSendSpecialKeysCtrlAltDel
+ //
+ this.cmenTabSendSpecialKeysCtrlAltDel.Name = "cmenTabSendSpecialKeysCtrlAltDel";
+ this.cmenTabSendSpecialKeysCtrlAltDel.Size = new System.Drawing.Size(141, 22);
+ this.cmenTabSendSpecialKeysCtrlAltDel.Text = "Ctrl+Alt+Del";
+ //
+ //cmenTabSendSpecialKeysCtrlEsc
+ //
+ this.cmenTabSendSpecialKeysCtrlEsc.Name = "cmenTabSendSpecialKeysCtrlEsc";
+ this.cmenTabSendSpecialKeysCtrlEsc.Size = new System.Drawing.Size(141, 22);
+ this.cmenTabSendSpecialKeysCtrlEsc.Text = "Ctrl+Esc";
+ //
+ //cmenTabExternalApps
+ //
+ this.cmenTabExternalApps.Image = (System.Drawing.Image) (resources.GetObject("cmenTabExternalApps.Image"));
+ this.cmenTabExternalApps.Name = "cmenTabExternalApps";
+ this.cmenTabExternalApps.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabExternalApps.Text = "External Applications";
+ //
+ //cmenTabSep1
+ //
+ this.cmenTabSep1.Name = "cmenTabSep1";
+ this.cmenTabSep1.Size = new System.Drawing.Size(198, 6);
+ //
+ //cmenTabRenameTab
+ //
+ this.cmenTabRenameTab.Image = global::My.Resources.Resources.Rename;
+ this.cmenTabRenameTab.Name = "cmenTabRenameTab";
+ this.cmenTabRenameTab.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabRenameTab.Text = "Rename Tab";
+ //
+ //cmenTabDuplicateTab
+ //
+ this.cmenTabDuplicateTab.Name = "cmenTabDuplicateTab";
+ this.cmenTabDuplicateTab.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabDuplicateTab.Text = "Duplicate Tab";
+ //
+ //cmenTabReconnect
+ //
+ this.cmenTabReconnect.Image = (System.Drawing.Image) (resources.GetObject("cmenTabReconnect.Image"));
+ this.cmenTabReconnect.Name = "cmenTabReconnect";
+ this.cmenTabReconnect.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabReconnect.Text = "Reconnect";
+ //
+ //cmenTabDisconnect
+ //
+ this.cmenTabDisconnect.Image = global::My.Resources.Resources.Pause;
+ this.cmenTabDisconnect.Name = "cmenTabDisconnect";
+ this.cmenTabDisconnect.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabDisconnect.Text = "Disconnect";
+ //
+ //cmenTabPuttySettings
+ //
+ this.cmenTabPuttySettings.Name = "cmenTabPuttySettings";
+ this.cmenTabPuttySettings.Size = new System.Drawing.Size(201, 22);
+ this.cmenTabPuttySettings.Text = "PuTTY Settings";
+ //
+ //Connection
+ //
+ this.ClientSize = new System.Drawing.Size(632, 453);
+ this.Controls.Add(this.TabController);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = global::My.Resources.Resources.mRemote_Icon;
+ this.Name = "Connection";
+ this.TabText = "UI.Window.Connection";
+ this.Text = "UI.Window.Connection";
+ this.cmenTab.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Public Methods
+ public Connection(DockContent Panel, string FormText = "")
+ {
+
+ if (FormText == "")
+ {
+ FormText = My.Language.strNewPanel;
+ }
+
+ this.WindowType = Type.Connection;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ this.Text = FormText;
+ this.TabText = FormText;
+ }
+
+ public Crownwood.Magic.Controls.TabPage AddConnectionTab(Protocol.Info conI)
+ {
+ try
+ {
+ Crownwood.Magic.Controls.TabPage nTab = new Crownwood.Magic.Controls.TabPage();
+ nTab.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
+
+ if (My.Settings.Default.ShowProtocolOnTabs)
+ {
+ nTab.Title = conI.Protocol.ToString() + ": ";
+ }
+ else
+ {
+ nTab.Title = "";
+ }
+
+ nTab.Title += conI.Name;
+
+ if (My.Settings.Default.ShowLogonInfoOnTabs)
+ {
+ nTab.Title += " (";
+
+ if (conI.Domain != "")
+ {
+ nTab.Title += conI.Domain;
+ }
+
+ if (conI.Username != "")
+ {
+ if (conI.Domain != "")
+ {
+ nTab.Title += "\\";
+ }
+
+ nTab.Title += conI.Username;
+ }
+
+ nTab.Title += ")";
+ }
+
+ nTab.Title = nTab.Title.Replace("&", "&&");
+
+ System.Drawing.Icon conIcon = mRemoteNG.Connection.Icon.FromString(conI.Icon);
+ if (conIcon != null)
+ {
+ nTab.Icon = conIcon;
+ }
+
+ if (My.Settings.Default.OpenTabsRightOfSelected)
+ {
+ this.TabController.TabPages.Insert(this.TabController.SelectedIndex + 1, nTab);
+ }
+ else
+ {
+ this.TabController.TabPages.Add(nTab);
+ }
+
+ nTab.Selected = true;
+ _ignoreChangeSelectedTabClick = false;
+
+ return nTab;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddConnectionTab (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ return null;
+ }
+#endregion
+
+#region Private Methods
+ public void UpdateSelectedConnection()
+ {
+ if (TabController.SelectedTab == null)
+ {
+ frmMain.Default.SelectedConnection = null;
+ }
+ else
+ {
+ InterfaceControl interfaceControl = TabController.SelectedTab.Tag as InterfaceControl;
+ if (interfaceControl == null)
+ {
+ frmMain.Default.SelectedConnection = null;
+ }
+ else
+ {
+ frmMain.Default.SelectedConnection = interfaceControl.Info;
+ }
+ }
+ }
+#endregion
+
+#region Form
+ private void Connection_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private bool _documentHandlersAdded = false;
+ private bool _floatHandlersAdded = false;
+ private void Connection_DockStateChanged(System.Object sender, EventArgs e)
+ {
+ if (DockState == DockState.Float)
+ {
+ if (_documentHandlersAdded)
+ {
+ frmMain.Default.ResizeBegin -= Connection_ResizeBegin;
+ frmMain.Default.ResizeEnd -= Connection_ResizeEnd;
+ _documentHandlersAdded = false;
+ }
+ DockHandler.FloatPane.FloatWindow.ResizeBegin += Connection_ResizeBegin;
+ DockHandler.FloatPane.FloatWindow.ResizeEnd += Connection_ResizeEnd;
+ _floatHandlersAdded = true;
+ }
+ else if (DockState == DockState.Document)
+ {
+ if (_floatHandlersAdded)
+ {
+ DockHandler.FloatPane.FloatWindow.ResizeBegin -= Connection_ResizeBegin;
+ DockHandler.FloatPane.FloatWindow.ResizeEnd -= Connection_ResizeEnd;
+ _floatHandlersAdded = false;
+ }
+ frmMain.Default.ResizeBegin += Connection_ResizeBegin;
+ frmMain.Default.ResizeEnd += Connection_ResizeEnd;
+ _documentHandlersAdded = true;
+ }
+ }
+
+ private void ApplyLanguage()
+ {
+ cmenTabFullscreen.Text = My.Language.strMenuFullScreenRDP;
+ cmenTabSmartSize.Text = My.Language.strMenuSmartSize;
+ cmenTabViewOnly.Text = My.Language.strMenuViewOnly;
+ cmenTabScreenshot.Text = My.Language.strMenuScreenshot;
+ cmenTabStartChat.Text = My.Language.strMenuStartChat;
+ cmenTabTransferFile.Text = My.Language.strMenuTransferFile;
+ cmenTabRefreshScreen.Text = My.Language.strMenuRefreshScreen;
+ cmenTabSendSpecialKeys.Text = My.Language.strMenuSendSpecialKeys;
+ cmenTabSendSpecialKeysCtrlAltDel.Text = My.Language.strMenuCtrlAltDel;
+ cmenTabSendSpecialKeysCtrlEsc.Text = My.Language.strMenuCtrlEsc;
+ cmenTabExternalApps.Text = My.Language.strMenuExternalTools;
+ cmenTabRenameTab.Text = My.Language.strMenuRenameTab;
+ cmenTabDuplicateTab.Text = My.Language.strMenuDuplicateTab;
+ cmenTabReconnect.Text = My.Language.strMenuReconnect;
+ cmenTabDisconnect.Text = My.Language.strMenuDisconnect;
+ cmenTabPuttySettings.Text = My.Language.strPuttySettings;
+ }
+
+ private void Connection_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (!frmMain.Default.IsClosing &&
+ ((My.Settings.Default.ConfirmCloseConnection == ConfirmClose.All & TabController.TabPages.Count > 0) ||
+ (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.Multiple & TabController.TabPages.Count > 1)))
+ {
+ DialogResult result = cTaskDialog.MessageBox(this, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, string.Format(My.Language.strConfirmCloseConnectionPanelMainInstruction, this.Text), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, null);
+ if (cTaskDialog.VerificationChecked)
+ {
+ My.Settings.Default.ConfirmCloseConnection--;
+ }
+ if (result == DialogResult.No)
+ {
+ e.Cancel = true;
+ return;
+ }
+ }
+
+ try
+ {
+ foreach (Crownwood.Magic.Controls.TabPage tabP in this.TabController.TabPages)
+ {
+ if (tabP.Tag != null)
+ {
+ mRemoteNG.Connection.InterfaceControl interfaceControl = tabP.Tag;
+ interfaceControl.Protocol.Close();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Connection.Connection_FormClosing() failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private EventHandler ResizeBeginEvent;
+ public new event EventHandler ResizeBegin
+ {
+ add
+ {
+ ResizeBeginEvent = (EventHandler) System.Delegate.Combine(ResizeBeginEvent, value);
+ }
+ remove
+ {
+ ResizeBeginEvent = (EventHandler) System.Delegate.Remove(ResizeBeginEvent, value);
+ }
+ }
+
+ private void Connection_ResizeBegin(System.Object sender, EventArgs e)
+ {
+ if (ResizeBeginEvent != null)
+ ResizeBeginEvent(this, e);
+ }
+
+ private EventHandler ResizeEndEvent;
+ public new event EventHandler ResizeEnd
+ {
+ add
+ {
+ ResizeEndEvent = (EventHandler) System.Delegate.Combine(ResizeEndEvent, value);
+ }
+ remove
+ {
+ ResizeEndEvent = (EventHandler) System.Delegate.Remove(ResizeEndEvent, value);
+ }
+ }
+
+ public void Connection_ResizeEnd(System.Object sender, EventArgs e)
+ {
+ if (ResizeEndEvent != null)
+ ResizeEndEvent(sender, e);
+ }
+#endregion
+
+#region TabController
+ private void TabController_ClosePressed(object sender, System.EventArgs e)
+ {
+ if (this.TabController.SelectedTab == null)
+ {
+ return;
+ }
+
+ this.CloseConnectionTab();
+ }
+
+ private void CloseConnectionTab()
+ {
+ Crownwood.Magic.Controls.TabPage selectedTab = TabController.SelectedTab;
+ if (My.Settings.Default.ConfirmCloseConnection == ConfirmClose.All)
+ {
+ DialogResult result = cTaskDialog.MessageBox(this, (new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.ProductName, string.Format(My.Language.strConfirmCloseConnectionMainInstruction, selectedTab.Title), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, null);
+ if (cTaskDialog.VerificationChecked)
+ {
+ My.Settings.Default.ConfirmCloseConnection--;
+ }
+ if (result == DialogResult.No)
+ {
+ return;
+ }
+ }
+
+ try
+ {
+ if (selectedTab.Tag != null)
+ {
+ mRemoteNG.Connection.InterfaceControl interfaceControl = selectedTab.Tag;
+ interfaceControl.Protocol.Close();
+ }
+ else
+ {
+ CloseTab(selectedTab);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Connection.CloseConnectionTab() failed" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ UpdateSelectedConnection();
+ }
+
+ private void TabController_DoubleClickTab(Crownwood.Magic.Controls.TabControl sender, Crownwood.Magic.Controls.TabPage page)
+ {
+ _firstClickTicks = 0;
+ if (My.Settings.Default.DoubleClickOnTabClosesIt)
+ {
+ this.CloseConnectionTab();
+ }
+ }
+
+#region Drag and Drop
+ private void TabController_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
+ {
+ if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", true))
+ {
+ App.Runtime.OpenConnection(e.Data.GetData("System.Windows.Forms.TreeNode", true).Tag, this, mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+ }
+
+ private void TabController_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
+ {
+ if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", true))
+ {
+ e.Effect = DragDropEffects.Move;
+ }
+ }
+
+ private void TabController_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
+ {
+ e.Effect = DragDropEffects.Move;
+ }
+#endregion
+#endregion
+
+#region Tab Menu
+ private void ShowHideMenuButtons()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab == null)
+ {
+ return;
+ }
+
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC == null)
+ {
+ return;
+ }
+
+ if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP)
+ {
+ mRemoteNG.Connection.Protocol.RDP rdp = IC.Protocol;
+
+ cmenTabFullscreen.Enabled = true;
+ cmenTabFullscreen.Checked = rdp.Fullscreen;
+
+ cmenTabSmartSize.Enabled = true;
+ cmenTabSmartSize.Checked = rdp.SmartSize;
+ }
+ else
+ {
+ cmenTabFullscreen.Enabled = false;
+ cmenTabSmartSize.Enabled = false;
+ }
+
+ if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.VNC)
+ {
+ this.cmenTabSendSpecialKeys.Enabled = true;
+ this.cmenTabViewOnly.Enabled = true;
+
+ this.cmenTabSmartSize.Enabled = true;
+ this.cmenTabStartChat.Enabled = true;
+ this.cmenTabRefreshScreen.Enabled = true;
+ this.cmenTabTransferFile.Enabled = false;
+
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ this.cmenTabSmartSize.Checked = vnc.SmartSize;
+ this.cmenTabViewOnly.Checked = vnc.ViewOnly;
+ }
+ else
+ {
+ this.cmenTabSendSpecialKeys.Enabled = false;
+ this.cmenTabViewOnly.Enabled = false;
+ this.cmenTabStartChat.Enabled = false;
+ this.cmenTabRefreshScreen.Enabled = false;
+ this.cmenTabTransferFile.Enabled = false;
+ }
+
+ if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH1 | IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH2)
+ {
+ this.cmenTabTransferFile.Enabled = true;
+ }
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.PuttyBase)
+ {
+ this.cmenTabPuttySettings.Enabled = true;
+ }
+ else
+ {
+ this.cmenTabPuttySettings.Enabled = false;
+ }
+
+ AddExternalApps();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ShowHideMenuButtons (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void cmenTabScreenshot_Click(System.Object sender, System.EventArgs e)
+ {
+ cmenTab.Close();
+ Application.DoEvents();
+ Windows.screenshotForm.AddScreenshot(Tools.Misc.TakeScreenshot(this));
+ }
+
+ private void cmenTabSmartSize_Click(System.Object sender, System.EventArgs e)
+ {
+ this.ToggleSmartSize();
+ }
+
+ private void cmenTabReconnect_Click(System.Object sender, System.EventArgs e)
+ {
+ this.Reconnect();
+ }
+
+ private void cmenTabTransferFile_Click(System.Object sender, System.EventArgs e)
+ {
+ this.TransferFile();
+ }
+
+ private void cmenTabViewOnly_Click(System.Object sender, System.EventArgs e)
+ {
+ this.ToggleViewOnly();
+ }
+
+ private void cmenTabStartChat_Click(object sender, System.EventArgs e)
+ {
+ this.StartChat();
+ }
+
+ private void cmenTabRefreshScreen_Click(object sender, System.EventArgs e)
+ {
+ this.RefreshScreen();
+ }
+
+ private void cmenTabSendSpecialKeysCtrlAltDel_Click(System.Object sender, System.EventArgs e)
+ {
+ this.SendSpecialKeys(mRemoteNG.Connection.Protocol.VNC.SpecialKeys.CtrlAltDel);
+ }
+
+ private void cmenTabSendSpecialKeysCtrlEsc_Click(System.Object sender, System.EventArgs e)
+ {
+ this.SendSpecialKeys(mRemoteNG.Connection.Protocol.VNC.SpecialKeys.CtrlEsc);
+ }
+
+ private void cmenTabFullscreen_Click(System.Object sender, System.EventArgs e)
+ {
+ this.ToggleFullscreen();
+ }
+
+ private void cmenTabPuttySettings_Click(System.Object sender, System.EventArgs e)
+ {
+ this.ShowPuttySettingsDialog();
+ }
+
+ private void cmenTabExternalAppsEntry_Click(object sender, System.EventArgs e)
+ {
+ StartExternalApp(sender.Tag);
+ }
+
+ private void cmenTabDisconnect_Click(System.Object sender, System.EventArgs e)
+ {
+ this.CloseTabMenu();
+ }
+
+ private void cmenTabDuplicateTab_Click(System.Object sender, System.EventArgs e)
+ {
+ this.DuplicateTab();
+ }
+
+ private void cmenTabRenameTab_Click(System.Object sender, System.EventArgs e)
+ {
+ this.RenameTab();
+ }
+#endregion
+
+#region Tab Actions
+ private void ToggleSmartSize()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.RDP)
+ {
+ mRemoteNG.Connection.Protocol.RDP rdp = IC.Protocol;
+ rdp.ToggleSmartSize();
+ }
+ else if (IC.Protocol is mRemoteNG.Connection.Protocol.VNC)
+ {
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.ToggleSmartSize();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ToggleSmartSize (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void TransferFile()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH1 | IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH2)
+ {
+ SSHTransferFile();
+ }
+ else if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.VNC)
+ {
+ VNCTransferFile();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "TransferFile (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SSHTransferFile()
+ {
+ try
+ {
+
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ Windows.Show(Type.SSHTransfer);
+
+ mRemoteNG.Connection.Info conI = IC.Info;
+
+ Windows.sshtransferForm.Hostname = conI.Hostname;
+ Windows.sshtransferForm.Username = conI.Username;
+ Windows.sshtransferForm.Password = conI.Password;
+ Windows.sshtransferForm.Port = System.Convert.ToString(conI.Port);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SSHTransferFile (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void VNCTransferFile()
+ {
+ try
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.StartFileTransfer();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "VNCTransferFile (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void ToggleViewOnly()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.VNC)
+ {
+ cmenTabViewOnly.Checked = !cmenTabViewOnly.Checked;
+
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.ToggleViewOnly();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ToggleViewOnly (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void StartChat()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.VNC)
+ {
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.StartChat();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StartChat (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void RefreshScreen()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.VNC)
+ {
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.RefreshScreen();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "RefreshScreen (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void SendSpecialKeys(mRemoteNG.Protocol.Protocol.VNC.SpecialKeys Keys)
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.VNC)
+ {
+ mRemoteNG.Connection.Protocol.VNC vnc = IC.Protocol;
+ vnc.SendSpecialKeys(Keys);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SendSpecialKeys (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void ToggleFullscreen()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Protocol is mRemoteNG.Connection.Protocol.RDP)
+ {
+ mRemoteNG.Connection.Protocol.RDP rdp = IC.Protocol;
+ rdp.ToggleFullscreen();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ToggleFullscreen (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void ShowPuttySettingsDialog()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl objInterfaceControl = this.TabController.SelectedTab.Tag;
+
+ if (objInterfaceControl.Protocol is mRemoteNG.Connection.Protocol.PuttyBase)
+ {
+ mRemoteNG.Connection.Protocol.PuttyBase objPuttyBase = objInterfaceControl.Protocol;
+
+ objPuttyBase.ShowSettingsDialog();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ShowPuttySettingsDialog (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void AddExternalApps()
+ {
+ try
+ {
+ //clean up
+ cmenTabExternalApps.DropDownItems.Clear();
+
+ //add ext apps
+ foreach (Tools.ExternalTool extA in Runtime.ExternalTools)
+ {
+ ToolStripMenuItem nItem = new ToolStripMenuItem();
+ nItem.Text = extA.DisplayName;
+ nItem.Tag = extA;
+
+ nItem.Image = extA.Image;
+
+ nItem.Click += cmenTabExternalAppsEntry_Click;
+
+ cmenTabExternalApps.DropDownItems.Add(nItem);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cMenTreeTools_DropDownOpening failed (UI.Window.Tree)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void StartExternalApp(Tools.ExternalTool ExtA)
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ ExtA.Start(IC.Info);
+ }
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cmenTabExternalAppsEntry_Click failed (UI.Window.Tree)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void CloseTabMenu()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ IC.Protocol.Close();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CloseTabMenu (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void DuplicateTab()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ App.Runtime.OpenConnection(IC.Info, mRemoteNG.Connection.Info.Force.DoNotJump);
+ _ignoreChangeSelectedTabClick = false;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "DuplicateTab (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void Reconnect()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+ mRemoteNG.Connection.Info conI = IC.Info;
+
+ IC.Protocol.Close();
+
+ App.Runtime.OpenConnection(conI, mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Reconnect (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void RenameTab()
+ {
+ try
+ {
+ string nTitle = Interaction.InputBox(Prompt: My.Language.strNewTitle + ":", DefaultResponse: this.TabController.SelectedTab.Title.Replace("&&", "&"));
+
+ if (!string.IsNullOrEmpty(nTitle))
+ {
+ this.TabController.SelectedTab.Title = nTitle.Replace("&", "&&");
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "RenameTab (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Protocols
+ public void Prot_Event_Closed(object sender)
+ {
+ mRemoteNG.Connection.Protocol.Base Prot = sender;
+ CloseTab((Crownwood.Magic.Controls.TabPage) Prot.InterfaceControl.Parent);
+ }
+#endregion
+
+#region Tabs
+ private delegate void CloseTabCB(Crownwood.Magic.Controls.TabPage TabToBeClosed);
+ private void CloseTab(Crownwood.Magic.Controls.TabPage TabToBeClosed)
+ {
+ if (this.TabController.InvokeRequired)
+ {
+ CloseTabCB s = new CloseTabCB(CloseTab);
+
+ try
+ {
+ this.TabController.Invoke(s, TabToBeClosed);
+ }
+ catch (System.Runtime.InteropServices.COMException)
+ {
+ this.TabController.Invoke(s, TabToBeClosed);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t close tab" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+ else
+ {
+ try
+ {
+ this.TabController.TabPages.Remove(TabToBeClosed);
+ _ignoreChangeSelectedTabClick = false;
+ }
+ catch (System.Runtime.InteropServices.COMException)
+ {
+ CloseTab(TabToBeClosed);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn\'t close tab" + Constants.vbNewLine + ex.Message, true);
+ }
+
+ if (this.TabController.TabPages.Count == 0)
+ {
+ this.Close();
+ }
+ }
+ }
+
+ private bool _ignoreChangeSelectedTabClick = false;
+ private void TabController_SelectionChanged(object sender, EventArgs e)
+ {
+ _ignoreChangeSelectedTabClick = true;
+ UpdateSelectedConnection();
+ FocusIC();
+ RefreshIC();
+ }
+
+ private int _firstClickTicks = 0;
+ private Rectangle _doubleClickRectangle;
+ private void TabController_MouseUp(object sender, MouseEventArgs e)
+ {
+ try
+ {
+ if (!(Native.GetForegroundWindow() == frmMain.Default.Handle) && !_ignoreChangeSelectedTabClick)
+ {
+ Crownwood.Magic.Controls.TabPage clickedTab = TabController.TabPageFromPoint(e.Location);
+ if (clickedTab != null && TabController.SelectedTab != clickedTab)
+ {
+ Native.SetForegroundWindow(Handle);
+ TabController.SelectedTab = clickedTab;
+ }
+ }
+ _ignoreChangeSelectedTabClick = false;
+
+ switch (e.Button)
+ {
+ case MouseButtons.Left:
+ int currentTicks = Environment.TickCount;
+ int elapsedTicks = currentTicks - _firstClickTicks;
+ if (elapsedTicks > SystemInformation.DoubleClickTime || !_doubleClickRectangle.Contains(MousePosition))
+ {
+ _firstClickTicks = currentTicks;
+ _doubleClickRectangle = new Rectangle(MousePosition.X - ((double) SystemInformation.DoubleClickSize.Width / 2), MousePosition.Y - ((double) SystemInformation.DoubleClickSize.Height / 2), SystemInformation.DoubleClickSize.Width, SystemInformation.DoubleClickSize.Height);
+ FocusIC();
+ }
+ else
+ {
+ TabController.OnDoubleClickTab(TabController.SelectedTab);
+ }
+ break;
+ case MouseButtons.Middle:
+ CloseConnectionTab();
+ break;
+ case MouseButtons.Right:
+ ShowHideMenuButtons();
+ Native.SetForegroundWindow(Handle);
+ cmenTab.Show(TabController, e.Location);
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "TabController_MouseUp (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void FocusIC()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+ IC.Protocol.Focus();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "FocusIC (UI.Window.Connections) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void RefreshIC()
+ {
+ try
+ {
+ if (this.TabController.SelectedTab != null)
+ {
+ if (this.TabController.SelectedTab.Tag is mRemoteNG.Connection.InterfaceControl)
+ {
+ mRemoteNG.Connection.InterfaceControl IC = this.TabController.SelectedTab.Tag;
+
+ if (IC.Info.Protocol == mRemoteNG.Connection.Protocol.Protocols.VNC)
+ {
+ (IC.Protocol as mRemoteNG.Connection.Protocol.VNC).RefreshScreen();
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "RefreshIC (UI.Window.Connection) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Window Overrides
+ protected override void WndProc(ref Message m)
+ {
+ try
+ {
+ if (m.Msg == Native.WM_MOUSEACTIVATE)
+ {
+ Crownwood.Magic.Controls.TabPage selectedTab = TabController.SelectedTab;
+ if (selectedTab != null)
+ {
+ Rectangle tabClientRectangle = selectedTab.RectangleToScreen(selectedTab.ClientRectangle);
+ if (tabClientRectangle.Contains(MousePosition))
+ {
+ InterfaceControl interfaceControl = TabController.SelectedTab.Tag as InterfaceControl;
+ if (interfaceControl != null && interfaceControl.Info != null)
+ {
+ if (interfaceControl.Info.Protocol == Protocol.Protocols.RDP)
+ {
+ interfaceControl.Protocol.Focus();
+ return ; // Do not pass to base class
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.Connection.WndProc() failed.", ex: ex, logOnly: true);
+ }
+
+ base.WndProc(ref m);
+ }
+#endregion
+
+#region Tab drag and drop
+ private bool _InTabDrag = false;
+public bool InTabDrag
+ {
+ get
+ {
+ return _InTabDrag;
+ }
+ set
+ {
+ _InTabDrag = value;
+ }
+ }
+ private void TabController_PageDragStart(object sender, MouseEventArgs e)
+ {
+ Cursor = Cursors.SizeWE;
+ }
+
+ private void TabController_PageDragMove(object sender, MouseEventArgs e)
+ {
+ InTabDrag = true; // For some reason PageDragStart gets raised again after PageDragEnd so set this here instead
+
+ Crownwood.Magic.Controls.TabPage sourceTab = TabController.SelectedTab;
+ Crownwood.Magic.Controls.TabPage destinationTab = TabController.TabPageFromPoint(e.Location);
+
+ if (!TabController.TabPages.Contains(destinationTab) || sourceTab == destinationTab)
+ {
+ return ;
+ }
+
+ int targetIndex = TabController.TabPages.IndexOf(destinationTab);
+
+ TabController.TabPages.SuspendEvents();
+ TabController.TabPages.Remove(sourceTab);
+ TabController.TabPages.Insert(targetIndex, sourceTab);
+ TabController.SelectedTab = sourceTab;
+ TabController.TabPages.ResumeEvents();
+ }
+
+ private void TabController_PageDragEnd(object sender, MouseEventArgs e)
+ {
+ Cursor = Cursors.Default;
+ InTabDrag = false;
+ mRemoteNG.Connection.InterfaceControl interfaceControl = TabController.SelectedTab.Tag as mRemoteNG.Connection.InterfaceControl;
+ if (interfaceControl != null)
+ {
+ interfaceControl.Protocol.Focus();
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Connection.resx b/mRemoteV1/CS/UI/UI.Window.Connection.resx
new file mode 100644
index 000000000..940a426c9
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Connection.resx
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmlJREFUOE+lVN1L
+ k1EcPv9Ft06mzOF0m27qdHOb040cRpubc3PEyKQhTktbVuJAWkUKUr5FkWXSh5pObKTmJK1WYFdjBnVR
+ 7MXogwIvkurCi552DpwoCBK8eC6f3/PFOQQA2Q3IjVv3ri6vJrdXn61h5ekaEo+fYz7xBPcXHmE6voQ7
+ M/MYm5jDlZvTuHjtLgYvjSM6PIq+s8J2e3d/iGTJP1/u24t3sT0wzxnw6s3Gf/H67QY+fdlE6NTgCFlN
+ vsDX5Yf48V7Agw9xfPy8uSNsffuO4PEzAqGWVSoV1Go1SkpKUFpaCo1GA61Wi7KyMlRUVKCyshJVVVXQ
+ 6/Worq6GyWRCTU0NWrsiAllaSTJSTk4OJBIJcnNzIZVKkZeXh/z8fMhkMsjlchQWFkKhUKC4uJgJ1tXV
+ oTsyLBBaGD+QSqUwOTm54wPZDgQSX1xhNrliJpNBT0/PP1VpTB6xvr4eh8NRgczEEyxbQUEB0uk0YrEY
+ ioqKflvlJN5JeXk5dDodGhoacLCzXyATswswm82MoFQqWT5eJiVRcBItk4pROBwOHGjvFcj4VBxWq/Uv
+ Em+fKvEFDAYDW8BoNLIVXC4XfG3dAhm9PQuah6rQLijpz8n4bNQlhcViQW1tLZqamuAOhARyeWyK5eHW
+ uBJVoQS6NyfR6ShsNhu8Xi+c/qBAzo9c36J5nE4nGhsbmTW3280UKDweD5qbmxnB5/OhpaWFwe/3w+4O
+ DJHO3oHOvuiF9b7oiBgeGBaP9g+JHSfOicFjp8VDXREx0HFS9AfDorf1iJi1LGZVxf3eNtHuCqxb7C7j
+ rp4y/QZ+AXhAQe1Sf9VzAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAkpJREFUOE+Fk9tL
+ k3Ecxgf7M2J20JJCurBC1vlkspYnMoNWmz/XdOShgWXOxZq+bu7QDu6k5tiwJKMSBkYjKqttbLgOyxF0
+ 7Z0I3oZ3T9/3pWCn2sV79f5+z/N8n8/vKwIgqvRdfdIy0j4nE5c7V/Eyf6l1tiknmzoT+q/A4Ee15NZb
+ lU7zShFTLXVuXnvahsthOZqDjdA+60L3YwWOGg97ikWEBAMr3VLtG2WUS+jhzdgQ+u5HeC2A2awH/s8P
+ 4V6dxGTShI5AC+oGaifyRUT977okva+vR12rZiz8mMPMNzceZb0IfHHCk7HCkeJgThrx4JMel5xN2KvZ
+ Yy8QoMg644e7mM/NIJT1w5m2QLOoxGmLlI+MQ8MH0eqR4aKjETXqXb6SEZQvOmK2hElwtCc5nHecWD/J
+ NTjzD9b2VOeq2c5I2RKvzDdvUMvb1PKvs9ZjW8dNR7jig7tVVYYqxQ4xmTFCyggpk/vOMTJjImqZXXCd
+ YhSZUWRGkdlQqlesi980FAuRGUdmW3/Mtslso+w7IKQRQprLFyCkTjJbd6UsRMWK4eXbfD+xEgFC6jOn
+ DRiL3wNFBkUGRUbfSzUcCU5AakuNo3O6jUeqKxAgpHYuqcfiz7CANJKbLkA6Hh8VkKoXbuBA374oIZUU
+ CBDSifvvhxBZCwpIg1/dmMrY4UibMbYyiv4lDdq9cuzX1kQJqZQfsWQEiuwZjPZA+5zxSEFI0WCoR/2d
+ uk2KHCOkOkIq+dtP2RL5xSGkBSX+a2PLChBSMSEdqbTm/P/fhKyImURcon4AAAAASUVORK5CYII=
+
+
+
+ 59
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.cs b/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.cs
new file mode 100644
index 000000000..d8f119235
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.cs
@@ -0,0 +1,503 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Text;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class ErrorsAndInfos : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.PictureBox pbError;
+ internal System.Windows.Forms.Label lblMsgDate;
+ internal System.Windows.Forms.ListView lvErrorCollector;
+ internal System.Windows.Forms.ColumnHeader clmMessage;
+ internal System.Windows.Forms.TextBox txtMsgText;
+ internal System.Windows.Forms.ImageList imgListMC;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ContextMenuStrip cMenMC;
+ internal System.Windows.Forms.ToolStripMenuItem cMenMCCopy;
+ internal System.Windows.Forms.ToolStripMenuItem cMenMCDelete;
+ internal System.Windows.Forms.Panel pnlErrorMsg;
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(ErrorsAndInfos_Load);
+ this.Resize += new System.EventHandler(ErrorsAndInfos_Resize);
+ this.pnlErrorMsg = new System.Windows.Forms.Panel();
+ this.txtMsgText = new System.Windows.Forms.TextBox();
+ this.txtMsgText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MC_KeyDown);
+ this.lblMsgDate = new System.Windows.Forms.Label();
+ this.pbError = new System.Windows.Forms.PictureBox();
+ this.lvErrorCollector = new System.Windows.Forms.ListView();
+ this.lvErrorCollector.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MC_KeyDown);
+ this.lvErrorCollector.SelectedIndexChanged += new System.EventHandler(this.lvErrorCollector_SelectedIndexChanged);
+ this.clmMessage = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.cMenMC = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.cMenMC.Opening += new System.ComponentModel.CancelEventHandler(this.cMenMC_Opening);
+ this.cMenMCCopy = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenMCCopy.Click += new System.EventHandler(this.cMenMCCopy_Click);
+ this.cMenMCDelete = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenMCDelete.Click += new System.EventHandler(this.cMenMCDelete_Click);
+ this.imgListMC = new System.Windows.Forms.ImageList(this.components);
+ this.pnlErrorMsg.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbError).BeginInit();
+ this.cMenMC.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //pnlErrorMsg
+ //
+ this.pnlErrorMsg.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlErrorMsg.BackColor = System.Drawing.SystemColors.Control;
+ this.pnlErrorMsg.Controls.Add(this.txtMsgText);
+ this.pnlErrorMsg.Controls.Add(this.lblMsgDate);
+ this.pnlErrorMsg.Controls.Add(this.pbError);
+ this.pnlErrorMsg.Location = new System.Drawing.Point(0, 1);
+ this.pnlErrorMsg.Name = "pnlErrorMsg";
+ this.pnlErrorMsg.Size = new System.Drawing.Size(198, 232);
+ this.pnlErrorMsg.TabIndex = 20;
+ //
+ //txtMsgText
+ //
+ this.txtMsgText.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtMsgText.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtMsgText.Location = new System.Drawing.Point(40, 20);
+ this.txtMsgText.Multiline = true;
+ this.txtMsgText.Name = "txtMsgText";
+ this.txtMsgText.ReadOnly = true;
+ this.txtMsgText.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.txtMsgText.Size = new System.Drawing.Size(158, 211);
+ this.txtMsgText.TabIndex = 30;
+ //
+ //lblMsgDate
+ //
+ this.lblMsgDate.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblMsgDate.Font = new System.Drawing.Font("Tahoma", (float) (8.25F), System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblMsgDate.Location = new System.Drawing.Point(40, 5);
+ this.lblMsgDate.Name = "lblMsgDate";
+ this.lblMsgDate.Size = new System.Drawing.Size(155, 13);
+ this.lblMsgDate.TabIndex = 40;
+ //
+ //pbError
+ //
+ this.pbError.InitialImage = null;
+ this.pbError.Location = new System.Drawing.Point(2, 5);
+ this.pbError.Name = "pbError";
+ this.pbError.Size = new System.Drawing.Size(32, 32);
+ this.pbError.TabIndex = 0;
+ this.pbError.TabStop = false;
+ //
+ //lvErrorCollector
+ //
+ this.lvErrorCollector.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lvErrorCollector.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.lvErrorCollector.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {this.clmMessage});
+ this.lvErrorCollector.ContextMenuStrip = this.cMenMC;
+ this.lvErrorCollector.FullRowSelect = true;
+ this.lvErrorCollector.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+ this.lvErrorCollector.HideSelection = false;
+ this.lvErrorCollector.Location = new System.Drawing.Point(203, 1);
+ this.lvErrorCollector.Name = "lvErrorCollector";
+ this.lvErrorCollector.ShowGroups = false;
+ this.lvErrorCollector.Size = new System.Drawing.Size(413, 232);
+ this.lvErrorCollector.SmallImageList = this.imgListMC;
+ this.lvErrorCollector.TabIndex = 10;
+ this.lvErrorCollector.UseCompatibleStateImageBehavior = false;
+ this.lvErrorCollector.View = System.Windows.Forms.View.Details;
+ //
+ //clmMessage
+ //
+ this.clmMessage.Text = global::mRemoteNG.My.Language.strColumnMessage;
+ this.clmMessage.Width = 184;
+ //
+ //cMenMC
+ //
+ this.cMenMC.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.cMenMC.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenMCCopy, this.cMenMCDelete});
+ this.cMenMC.Name = "cMenMC";
+ this.cMenMC.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.cMenMC.Size = new System.Drawing.Size(153, 70);
+ //
+ //cMenMCCopy
+ //
+ this.cMenMCCopy.Image = global::My.Resources.Resources.Copy;
+ this.cMenMCCopy.Name = "cMenMCCopy";
+ this.cMenMCCopy.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C);
+ this.cMenMCCopy.Size = new System.Drawing.Size(152, 22);
+ this.cMenMCCopy.Text = global::mRemoteNG.My.Language.strMenuCopy;
+ //
+ //cMenMCDelete
+ //
+ this.cMenMCDelete.Image = global::My.Resources.Resources.Delete;
+ this.cMenMCDelete.Name = "cMenMCDelete";
+ this.cMenMCDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.cMenMCDelete.Size = new System.Drawing.Size(152, 22);
+ this.cMenMCDelete.Text = global::mRemoteNG.My.Language.strMenuDelete;
+ //
+ //imgListMC
+ //
+ this.imgListMC.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+ this.imgListMC.ImageSize = new System.Drawing.Size(16, 16);
+ this.imgListMC.TransparentColor = System.Drawing.Color.Transparent;
+ //
+ //ErrorsAndInfos
+ //
+ this.ClientSize = new System.Drawing.Size(617, 233);
+ this.Controls.Add(this.lvErrorCollector);
+ this.Controls.Add(this.pnlErrorMsg);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.HideOnClose = true;
+ this.Icon = global::My.Resources.Resources.Info_Icon;
+ this.Name = "ErrorsAndInfos";
+ this.TabText = global::mRemoteNG.My.Language.strMenuNotifications;
+ this.Text = "Notifications";
+ this.pnlErrorMsg.ResumeLayout(false);
+ this.pnlErrorMsg.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbError).EndInit();
+ this.cMenMC.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Public Properties
+ private DockContent _PreviousActiveForm;
+public DockContent PreviousActiveForm
+ {
+ get
+ {
+ return this._PreviousActiveForm;
+ }
+ set
+ {
+ this._PreviousActiveForm = value;
+ }
+ }
+#endregion
+
+#region Form Stuff
+ private void ErrorsAndInfos_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private void ApplyLanguage()
+ {
+ clmMessage.Text = My.Language.strColumnMessage;
+ cMenMCCopy.Text = My.Language.strMenuNotificationsCopyAll;
+ cMenMCDelete.Text = My.Language.strMenuNotificationsDeleteAll;
+ TabText = My.Language.strMenuNotifications;
+ Text = My.Language.strMenuNotifications;
+ }
+#endregion
+
+#region Public Methods
+ public ErrorsAndInfos(DockContent Panel)
+ {
+ this.WindowType = Type.ErrorsAndInfos;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ this.LayoutVertical();
+ this.FillImageList();
+ }
+#endregion
+
+#region Private Methods
+ private void FillImageList()
+ {
+ this.imgListMC.Images.Add(global::My.Resources.InformationSmall);
+ this.imgListMC.Images.Add(global::My.Resources.WarningSmall);
+ this.imgListMC.Images.Add(global::My.Resources.ErrorSmall);
+ }
+
+
+ private ControlLayout _Layout = ControlLayout.Vertical;
+
+ private void LayoutVertical()
+ {
+ try
+ {
+ this.pnlErrorMsg.Location = new Point(0, this.Height - 200);
+ this.pnlErrorMsg.Size = new Size(this.Width, this.Height - this.pnlErrorMsg.Top);
+ this.pnlErrorMsg.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right);
+ this.txtMsgText.Size = new Size(this.pnlErrorMsg.Width - this.pbError.Width - 8, this.pnlErrorMsg.Height - 20);
+ this.lvErrorCollector.Location = new Point(0, 0);
+ this.lvErrorCollector.Size = new Size(this.Width, this.Height - this.pnlErrorMsg.Height - 5);
+ this.lvErrorCollector.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
+
+ this._Layout = ControlLayout.Vertical;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "LayoutVertical (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void LayoutHorizontal()
+ {
+ try
+ {
+ this.pnlErrorMsg.Location = new Point(0, 0);
+ this.pnlErrorMsg.Size = new Size(200, this.Height);
+ this.pnlErrorMsg.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Top);
+ this.txtMsgText.Size = new Size(this.pnlErrorMsg.Width - this.pbError.Width - 8, this.pnlErrorMsg.Height - 20);
+ this.lvErrorCollector.Location = new Point(this.pnlErrorMsg.Width + 5, 0);
+ this.lvErrorCollector.Size = new Size(this.Width - this.pnlErrorMsg.Width - 5, this.Height);
+ this.lvErrorCollector.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
+
+ this._Layout = ControlLayout.Horizontal;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "LayoutHorizontal (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void ErrorsAndInfos_Resize(object sender, System.EventArgs e)
+ {
+ try
+ {
+ if (this.Width > this.Height)
+ {
+ if (this._Layout == ControlLayout.Vertical)
+ {
+ this.LayoutHorizontal();
+ }
+ }
+ else
+ {
+ if (this._Layout == ControlLayout.Horizontal)
+ {
+ this.LayoutVertical();
+ }
+ }
+
+ this.lvErrorCollector.Columns[0].Width = this.lvErrorCollector.Width - 20;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ErrorsAndInfos_Resize (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void pnlErrorMsg_ResetDefaultStyle()
+ {
+ try
+ {
+ this.pnlErrorMsg.BackColor = Color.FromKnownColor(KnownColor.Control);
+ this.pbError.Image = null;
+ this.txtMsgText.Text = "";
+ this.txtMsgText.BackColor = Color.FromKnownColor(KnownColor.Control);
+ this.lblMsgDate.Text = "";
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "pnlErrorMsg_ResetDefaultStyle (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void MC_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
+ {
+ try
+ {
+ if (e.KeyCode == Keys.Escape)
+ {
+ try
+ {
+ if (this._PreviousActiveForm != null)
+ {
+ this._PreviousActiveForm.Show(frmMain.Default.pnlDock);
+ }
+ else
+ {
+ App.Runtime.Windows.treeForm.Show(frmMain.Default.pnlDock);
+ }
+ }
+ catch (Exception)
+ {
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "MC_KeyDown (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void lvErrorCollector_SelectedIndexChanged(System.Object sender, System.EventArgs e)
+ {
+ try
+ {
+ if (this.lvErrorCollector.SelectedItems.Count == 0 | this.lvErrorCollector.SelectedItems.Count > 1)
+ {
+ this.pnlErrorMsg_ResetDefaultStyle();
+ return;
+ }
+
+ ListViewItem sItem = this.lvErrorCollector.SelectedItems[0];
+ Messages.Message eMsg = sItem.Tag;
+ switch (eMsg.MsgClass)
+ {
+ case Messages.MessageClass.InformationMsg:
+ this.pbError.Image = global::My.Resources.Information;
+ this.pnlErrorMsg.BackColor = Color.LightSteelBlue;
+ this.txtMsgText.BackColor = Color.LightSteelBlue;
+ break;
+ case Messages.MessageClass.WarningMsg:
+ this.pbError.Image = global::My.Resources.Warning;
+ this.pnlErrorMsg.BackColor = Color.Gold;
+ this.txtMsgText.BackColor = Color.Gold;
+ break;
+ case Messages.MessageClass.ErrorMsg:
+ this.pbError.Image = global::My.Resources._Error;
+ this.pnlErrorMsg.BackColor = Color.IndianRed;
+ this.txtMsgText.BackColor = Color.IndianRed;
+ break;
+ }
+
+ this.lblMsgDate.Text = eMsg.MsgDate.ToString();
+ this.txtMsgText.Text = eMsg.MsgText;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "lvErrorCollector_SelectedIndexChanged (UI.Window.ErrorsAndInfos) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void cMenMC_Opening(System.Object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ if (lvErrorCollector.Items.Count)
+ {
+ cMenMCCopy.Enabled = true;
+ cMenMCDelete.Enabled = true;
+ }
+ else
+ {
+ cMenMCCopy.Enabled = false;
+ cMenMCDelete.Enabled = false;
+ }
+
+ if (lvErrorCollector.SelectedItems.Count)
+ {
+ cMenMCCopy.Text = My.Language.strMenuCopy;
+ cMenMCDelete.Text = My.Language.strMenuNotificationsDelete;
+ }
+ else
+ {
+ cMenMCCopy.Text = My.Language.strMenuNotificationsCopyAll;
+ cMenMCDelete.Text = My.Language.strMenuNotificationsDeleteAll;
+ }
+ }
+
+ private void cMenMCCopy_Click(System.Object sender, System.EventArgs e)
+ {
+ CopyMessagesToClipboard();
+ }
+
+ private void CopyMessagesToClipboard()
+ {
+ try
+ {
+ IEnumerable items = default(IEnumerable);
+ if (lvErrorCollector.SelectedItems.Count)
+ {
+ items = lvErrorCollector.SelectedItems;
+ }
+ else
+ {
+ items = lvErrorCollector.Items;
+ }
+
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.AppendLine("----------");
+
+ lvErrorCollector.BeginUpdate();
+
+ Messages.Message message = default(Messages.Message);
+ foreach (ListViewItem item in items)
+ {
+ message = item.Tag as Messages.Message;
+ if (message == null)
+ {
+ continue;
+ }
+
+ stringBuilder.AppendLine(message.MsgClass.ToString());
+ stringBuilder.AppendLine(message.MsgDate.ToString());
+ stringBuilder.AppendLine(message.MsgText);
+ stringBuilder.AppendLine("----------");
+ }
+
+ Clipboard.SetText(stringBuilder.ToString());
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.CopyMessagesToClipboard() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ finally
+ {
+ lvErrorCollector.EndUpdate();
+ }
+ }
+
+ private void cMenMCDelete_Click(System.Object sender, System.EventArgs e)
+ {
+ DeleteMessages();
+ }
+
+ private void DeleteMessages()
+ {
+ try
+ {
+ lvErrorCollector.BeginUpdate();
+
+ if (lvErrorCollector.SelectedItems.Count)
+ {
+ foreach (ListViewItem item in lvErrorCollector.SelectedItems)
+ {
+ item.Remove();
+ }
+ }
+ else
+ {
+ lvErrorCollector.Items.Clear();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.DeleteMessages() failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ finally
+ {
+ lvErrorCollector.EndUpdate();
+ }
+ }
+#endregion
+
+ public enum ControlLayout
+ {
+ Vertical = 0,
+ Horizontal = 1
+ }
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.resx b/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.resx
new file mode 100644
index 000000000..99606fc8f
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ErrorsAndInfos.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 119, 17
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.ExternalTools.Designer.cs b/mRemoteV1/CS/UI/UI.Window.ExternalTools.Designer.cs
new file mode 100644
index 000000000..92f009a01
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ExternalTools.Designer.cs
@@ -0,0 +1,389 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class ExternalTools : Base
+ {
+#region Windows Form Designer generated code
+ internal System.Windows.Forms.ColumnHeader FilenameColumnHeader;
+ internal System.Windows.Forms.ColumnHeader ArgumentsColumnHeader;
+ internal System.Windows.Forms.GroupBox PropertiesGroupBox;
+ internal System.Windows.Forms.TextBox DisplayNameTextBox;
+ internal System.Windows.Forms.Label DisplayNameLabel;
+ internal System.Windows.Forms.TextBox ArgumentsCheckBox;
+ internal System.Windows.Forms.TextBox FilenameTextBox;
+ internal System.Windows.Forms.Label ArgumentsLabel;
+ internal System.Windows.Forms.Label FilenameLabel;
+ internal System.Windows.Forms.Button BrowseButton;
+ internal System.Windows.Forms.ColumnHeader DisplayNameColumnHeader;
+ internal System.Windows.Forms.ContextMenuStrip ToolsContextMenuStrip;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ToolStripMenuItem NewToolMenuItem;
+ internal System.Windows.Forms.ToolStripMenuItem DeleteToolMenuItem;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1;
+ internal System.Windows.Forms.ToolStripMenuItem LaunchToolMenuItem;
+ internal System.Windows.Forms.ColumnHeader WaitForExitColumnHeader;
+ internal System.Windows.Forms.CheckBox WaitForExitCheckBox;
+ internal System.Windows.Forms.Label OptionsLabel;
+ internal System.Windows.Forms.CheckBox TryToIntegrateCheckBox;
+ internal System.Windows.Forms.ColumnHeader TryToIntegrateColumnHeader;
+ internal System.Windows.Forms.ListView ToolsListView;
+
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(ExternalTools_Load);
+ base.FormClosed += new System.Windows.Forms.FormClosedEventHandler(ExternalTools_FormClosed);
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExternalTools));
+ this.ToolsListView = new System.Windows.Forms.ListView();
+ this.ToolsListView.SelectedIndexChanged += new System.EventHandler(this.ToolsListView_SelectedIndexChanged);
+ this.ToolsListView.DoubleClick += new System.EventHandler(this.ToolsListView_DoubleClick);
+ this.DisplayNameColumnHeader = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.FilenameColumnHeader = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.ArgumentsColumnHeader = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.WaitForExitColumnHeader = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.TryToIntegrateColumnHeader = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.ToolsContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.NewToolMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.NewToolMenuItem.Click += new System.EventHandler(this.NewTool_Click);
+ this.DeleteToolMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.DeleteToolMenuItem.Click += new System.EventHandler(this.DeleteTool_Click);
+ this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.LaunchToolMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.LaunchToolMenuItem.Click += new System.EventHandler(this.LaunchTool_Click);
+ this.PropertiesGroupBox = new System.Windows.Forms.GroupBox();
+ this.TryToIntegrateCheckBox = new System.Windows.Forms.CheckBox();
+ this.TryToIntegrateCheckBox.Click += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.TryToIntegrateCheckBox.CheckedChanged += new System.EventHandler(this.TryToIntegrateCheckBox_CheckedChanged);
+ this.OptionsLabel = new System.Windows.Forms.Label();
+ this.WaitForExitCheckBox = new System.Windows.Forms.CheckBox();
+ this.WaitForExitCheckBox.LostFocus += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.WaitForExitCheckBox.Click += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.BrowseButton = new System.Windows.Forms.Button();
+ this.BrowseButton.LostFocus += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.BrowseButton.Click += new System.EventHandler(this.BrowseButton_Click);
+ this.ArgumentsCheckBox = new System.Windows.Forms.TextBox();
+ this.ArgumentsCheckBox.LostFocus += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.FilenameTextBox = new System.Windows.Forms.TextBox();
+ this.FilenameTextBox.LostFocus += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.DisplayNameTextBox = new System.Windows.Forms.TextBox();
+ this.DisplayNameTextBox.LostFocus += new System.EventHandler(this.PropertyControl_ChangedOrLostFocus);
+ this.ArgumentsLabel = new System.Windows.Forms.Label();
+ this.FilenameLabel = new System.Windows.Forms.Label();
+ this.DisplayNameLabel = new System.Windows.Forms.Label();
+ this.ToolStripContainer = new System.Windows.Forms.ToolStripContainer();
+ this.ToolStrip = new System.Windows.Forms.ToolStrip();
+ this.NewToolToolstripButton = new System.Windows.Forms.ToolStripButton();
+ this.NewToolToolstripButton.Click += new System.EventHandler(this.NewTool_Click);
+ this.DeleteToolToolstripButton = new System.Windows.Forms.ToolStripButton();
+ this.DeleteToolToolstripButton.Click += new System.EventHandler(this.DeleteTool_Click);
+ this.ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.LaunchToolToolstripButton = new System.Windows.Forms.ToolStripButton();
+ this.LaunchToolToolstripButton.Click += new System.EventHandler(this.LaunchTool_Click);
+ this.ToolsContextMenuStrip.SuspendLayout();
+ this.PropertiesGroupBox.SuspendLayout();
+ this.ToolStripContainer.ContentPanel.SuspendLayout();
+ this.ToolStripContainer.TopToolStripPanel.SuspendLayout();
+ this.ToolStripContainer.SuspendLayout();
+ this.ToolStrip.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //ToolsListView
+ //
+ this.ToolsListView.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.ToolsListView.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.ToolsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {this.DisplayNameColumnHeader, this.FilenameColumnHeader, this.ArgumentsColumnHeader, this.WaitForExitColumnHeader, this.TryToIntegrateColumnHeader});
+ this.ToolsListView.ContextMenuStrip = this.ToolsContextMenuStrip;
+ this.ToolsListView.FullRowSelect = true;
+ this.ToolsListView.GridLines = true;
+ this.ToolsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+ this.ToolsListView.HideSelection = false;
+ this.ToolsListView.Location = new System.Drawing.Point(0, 0);
+ this.ToolsListView.Name = "ToolsListView";
+ this.ToolsListView.Size = new System.Drawing.Size(684, 157);
+ this.ToolsListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
+ this.ToolsListView.TabIndex = 0;
+ this.ToolsListView.UseCompatibleStateImageBehavior = false;
+ this.ToolsListView.View = System.Windows.Forms.View.Details;
+ //
+ //DisplayNameColumnHeader
+ //
+ this.DisplayNameColumnHeader.Text = "Display Name";
+ this.DisplayNameColumnHeader.Width = 130;
+ //
+ //FilenameColumnHeader
+ //
+ this.FilenameColumnHeader.Text = "Filename";
+ this.FilenameColumnHeader.Width = 200;
+ //
+ //ArgumentsColumnHeader
+ //
+ this.ArgumentsColumnHeader.Text = "Arguments";
+ this.ArgumentsColumnHeader.Width = 160;
+ //
+ //WaitForExitColumnHeader
+ //
+ this.WaitForExitColumnHeader.Text = "Wait for exit";
+ this.WaitForExitColumnHeader.Width = 75;
+ //
+ //TryToIntegrateColumnHeader
+ //
+ this.TryToIntegrateColumnHeader.Text = "Try To Integrate";
+ this.TryToIntegrateColumnHeader.Width = 95;
+ //
+ //ToolsContextMenuStrip
+ //
+ this.ToolsContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.NewToolMenuItem, this.DeleteToolMenuItem, this.ToolStripSeparator1, this.LaunchToolMenuItem});
+ this.ToolsContextMenuStrip.Name = "cMenApps";
+ this.ToolsContextMenuStrip.Size = new System.Drawing.Size(221, 76);
+ //
+ //NewToolMenuItem
+ //
+ this.NewToolMenuItem.Image = global::My.Resources.Resources.ExtApp_Add;
+ this.NewToolMenuItem.Name = "NewToolMenuItem";
+ this.NewToolMenuItem.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.F4);
+ this.NewToolMenuItem.Size = new System.Drawing.Size(220, 22);
+ this.NewToolMenuItem.Text = "New External Tool";
+ //
+ //DeleteToolMenuItem
+ //
+ this.DeleteToolMenuItem.Image = global::My.Resources.Resources.ExtApp_Delete;
+ this.DeleteToolMenuItem.Name = "DeleteToolMenuItem";
+ this.DeleteToolMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.DeleteToolMenuItem.Size = new System.Drawing.Size(220, 22);
+ this.DeleteToolMenuItem.Text = "Delete External Tool...";
+ //
+ //ToolStripSeparator1
+ //
+ this.ToolStripSeparator1.Name = "ToolStripSeparator1";
+ this.ToolStripSeparator1.Size = new System.Drawing.Size(217, 6);
+ //
+ //LaunchToolMenuItem
+ //
+ this.LaunchToolMenuItem.Image = global::My.Resources.Resources.ExtApp_Start;
+ this.LaunchToolMenuItem.Name = "LaunchToolMenuItem";
+ this.LaunchToolMenuItem.Size = new System.Drawing.Size(220, 22);
+ this.LaunchToolMenuItem.Text = "Launch External Tool";
+ //
+ //PropertiesGroupBox
+ //
+ this.PropertiesGroupBox.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.PropertiesGroupBox.Controls.Add(this.TryToIntegrateCheckBox);
+ this.PropertiesGroupBox.Controls.Add(this.OptionsLabel);
+ this.PropertiesGroupBox.Controls.Add(this.WaitForExitCheckBox);
+ this.PropertiesGroupBox.Controls.Add(this.BrowseButton);
+ this.PropertiesGroupBox.Controls.Add(this.ArgumentsCheckBox);
+ this.PropertiesGroupBox.Controls.Add(this.FilenameTextBox);
+ this.PropertiesGroupBox.Controls.Add(this.DisplayNameTextBox);
+ this.PropertiesGroupBox.Controls.Add(this.ArgumentsLabel);
+ this.PropertiesGroupBox.Controls.Add(this.FilenameLabel);
+ this.PropertiesGroupBox.Controls.Add(this.DisplayNameLabel);
+ this.PropertiesGroupBox.Enabled = false;
+ this.PropertiesGroupBox.Location = new System.Drawing.Point(3, 163);
+ this.PropertiesGroupBox.Name = "PropertiesGroupBox";
+ this.PropertiesGroupBox.Size = new System.Drawing.Size(678, 132);
+ this.PropertiesGroupBox.TabIndex = 1;
+ this.PropertiesGroupBox.TabStop = false;
+ this.PropertiesGroupBox.Text = "External Tool Properties";
+ //
+ //TryToIntegrateCheckBox
+ //
+ this.TryToIntegrateCheckBox.AutoSize = true;
+ this.TryToIntegrateCheckBox.Location = new System.Drawing.Point(280, 106);
+ this.TryToIntegrateCheckBox.Name = "TryToIntegrateCheckBox";
+ this.TryToIntegrateCheckBox.Size = new System.Drawing.Size(97, 17);
+ this.TryToIntegrateCheckBox.TabIndex = 9;
+ this.TryToIntegrateCheckBox.Text = "Try to integrate";
+ this.TryToIntegrateCheckBox.UseVisualStyleBackColor = true;
+ //
+ //OptionsLabel
+ //
+ this.OptionsLabel.AutoSize = true;
+ this.OptionsLabel.Location = new System.Drawing.Point(58, 107);
+ this.OptionsLabel.Name = "OptionsLabel";
+ this.OptionsLabel.Size = new System.Drawing.Size(46, 13);
+ this.OptionsLabel.TabIndex = 7;
+ this.OptionsLabel.Text = "Options:";
+ this.OptionsLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //WaitForExitCheckBox
+ //
+ this.WaitForExitCheckBox.AutoSize = true;
+ this.WaitForExitCheckBox.Location = new System.Drawing.Point(110, 106);
+ this.WaitForExitCheckBox.Name = "WaitForExitCheckBox";
+ this.WaitForExitCheckBox.Size = new System.Drawing.Size(82, 17);
+ this.WaitForExitCheckBox.TabIndex = 8;
+ this.WaitForExitCheckBox.Text = "Wait for exit";
+ this.WaitForExitCheckBox.UseVisualStyleBackColor = true;
+ //
+ //BrowseButton
+ //
+ this.BrowseButton.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.BrowseButton.Location = new System.Drawing.Point(574, 45);
+ this.BrowseButton.Name = "BrowseButton";
+ this.BrowseButton.Size = new System.Drawing.Size(95, 23);
+ this.BrowseButton.TabIndex = 4;
+ this.BrowseButton.Text = "Browse...";
+ this.BrowseButton.UseVisualStyleBackColor = true;
+ //
+ //ArgumentsCheckBox
+ //
+ this.ArgumentsCheckBox.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.ArgumentsCheckBox.Location = new System.Drawing.Point(110, 76);
+ this.ArgumentsCheckBox.Name = "ArgumentsCheckBox";
+ this.ArgumentsCheckBox.Size = new System.Drawing.Size(559, 20);
+ this.ArgumentsCheckBox.TabIndex = 6;
+ //
+ //FilenameTextBox
+ //
+ this.FilenameTextBox.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.FilenameTextBox.Location = new System.Drawing.Point(110, 47);
+ this.FilenameTextBox.Name = "FilenameTextBox";
+ this.FilenameTextBox.Size = new System.Drawing.Size(458, 20);
+ this.FilenameTextBox.TabIndex = 3;
+ //
+ //DisplayNameTextBox
+ //
+ this.DisplayNameTextBox.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.DisplayNameTextBox.Location = new System.Drawing.Point(110, 19);
+ this.DisplayNameTextBox.Name = "DisplayNameTextBox";
+ this.DisplayNameTextBox.Size = new System.Drawing.Size(559, 20);
+ this.DisplayNameTextBox.TabIndex = 1;
+ //
+ //ArgumentsLabel
+ //
+ this.ArgumentsLabel.AutoSize = true;
+ this.ArgumentsLabel.Location = new System.Drawing.Point(44, 79);
+ this.ArgumentsLabel.Name = "ArgumentsLabel";
+ this.ArgumentsLabel.Size = new System.Drawing.Size(60, 13);
+ this.ArgumentsLabel.TabIndex = 5;
+ this.ArgumentsLabel.Text = "Arguments:";
+ this.ArgumentsLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //FilenameLabel
+ //
+ this.FilenameLabel.AutoSize = true;
+ this.FilenameLabel.Location = new System.Drawing.Point(52, 50);
+ this.FilenameLabel.Name = "FilenameLabel";
+ this.FilenameLabel.Size = new System.Drawing.Size(52, 13);
+ this.FilenameLabel.TabIndex = 2;
+ this.FilenameLabel.Text = "Filename:";
+ this.FilenameLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //DisplayNameLabel
+ //
+ this.DisplayNameLabel.AutoSize = true;
+ this.DisplayNameLabel.Location = new System.Drawing.Point(29, 22);
+ this.DisplayNameLabel.Name = "DisplayNameLabel";
+ this.DisplayNameLabel.Size = new System.Drawing.Size(75, 13);
+ this.DisplayNameLabel.TabIndex = 0;
+ this.DisplayNameLabel.Text = "Display Name:";
+ this.DisplayNameLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ //ToolStripContainer
+ //
+ //
+ //ToolStripContainer.ContentPanel
+ //
+ this.ToolStripContainer.ContentPanel.Controls.Add(this.PropertiesGroupBox);
+ this.ToolStripContainer.ContentPanel.Controls.Add(this.ToolsListView);
+ this.ToolStripContainer.ContentPanel.Size = new System.Drawing.Size(684, 298);
+ this.ToolStripContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ToolStripContainer.Location = new System.Drawing.Point(0, 0);
+ this.ToolStripContainer.Name = "ToolStripContainer";
+ this.ToolStripContainer.Size = new System.Drawing.Size(684, 323);
+ this.ToolStripContainer.TabIndex = 0;
+ this.ToolStripContainer.Text = "ToolStripContainer";
+ //
+ //ToolStripContainer.TopToolStripPanel
+ //
+ this.ToolStripContainer.TopToolStripPanel.Controls.Add(this.ToolStrip);
+ //
+ //ToolStrip
+ //
+ this.ToolStrip.Dock = System.Windows.Forms.DockStyle.None;
+ this.ToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+ this.ToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.NewToolToolstripButton, this.DeleteToolToolstripButton, this.ToolStripSeparator2, this.LaunchToolToolstripButton});
+ this.ToolStrip.Location = new System.Drawing.Point(3, 0);
+ this.ToolStrip.Name = "ToolStrip";
+ this.ToolStrip.Size = new System.Drawing.Size(186, 25);
+ this.ToolStrip.TabIndex = 0;
+ //
+ //NewToolToolstripButton
+ //
+ this.NewToolToolstripButton.Image = global::My.Resources.Resources.ExtApp_Add;
+ this.NewToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.NewToolToolstripButton.Name = "NewToolToolstripButton";
+ this.NewToolToolstripButton.Size = new System.Drawing.Size(51, 22);
+ this.NewToolToolstripButton.Text = "New";
+ //
+ //DeleteToolToolstripButton
+ //
+ this.DeleteToolToolstripButton.Image = global::My.Resources.Resources.ExtApp_Delete;
+ this.DeleteToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.DeleteToolToolstripButton.Name = "DeleteToolToolstripButton";
+ this.DeleteToolToolstripButton.Size = new System.Drawing.Size(60, 22);
+ this.DeleteToolToolstripButton.Text = "Delete";
+ //
+ //ToolStripSeparator2
+ //
+ this.ToolStripSeparator2.Name = "ToolStripSeparator2";
+ this.ToolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+ //
+ //LaunchToolToolstripButton
+ //
+ this.LaunchToolToolstripButton.Image = global::My.Resources.Resources.ExtApp_Start;
+ this.LaunchToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.LaunchToolToolstripButton.Name = "LaunchToolToolstripButton";
+ this.LaunchToolToolstripButton.Size = new System.Drawing.Size(66, 22);
+ this.LaunchToolToolstripButton.Text = "Launch";
+ //
+ //ExternalTools
+ //
+ this.ClientSize = new System.Drawing.Size(684, 323);
+ this.Controls.Add(this.ToolStripContainer);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = (System.Drawing.Icon) (resources.GetObject("$this.Icon"));
+ this.Name = "ExternalTools";
+ this.TabText = "External Applications";
+ this.Text = "External Tools";
+ this.ToolsContextMenuStrip.ResumeLayout(false);
+ this.PropertiesGroupBox.ResumeLayout(false);
+ this.PropertiesGroupBox.PerformLayout();
+ this.ToolStripContainer.ContentPanel.ResumeLayout(false);
+ this.ToolStripContainer.TopToolStripPanel.ResumeLayout(false);
+ this.ToolStripContainer.TopToolStripPanel.PerformLayout();
+ this.ToolStripContainer.ResumeLayout(false);
+ this.ToolStripContainer.PerformLayout();
+ this.ToolStrip.ResumeLayout(false);
+ this.ToolStrip.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.ToolStripContainer ToolStripContainer;
+ internal System.Windows.Forms.ToolStrip ToolStrip;
+ internal System.Windows.Forms.ToolStripButton NewToolToolstripButton;
+ internal System.Windows.Forms.ToolStripButton DeleteToolToolstripButton;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator2;
+ internal System.Windows.Forms.ToolStripButton LaunchToolToolstripButton;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ExternalTools.cs b/mRemoteV1/CS/UI/UI.Window.ExternalTools.cs
new file mode 100644
index 000000000..e46cef06e
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ExternalTools.cs
@@ -0,0 +1,310 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.App;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+using mRemoteNG.My;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class ExternalTools : Base
+ {
+#region Constructors
+ public ExternalTools(DockContent panel)
+ {
+ InitializeComponent();
+
+ WindowType = Type.ExternalApps;
+ DockPnl = panel;
+ }
+#endregion
+
+#region Private Fields
+ private Tools.ExternalTool _selectedTool = null;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void ExternalTools_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+ UpdateToolsListView();
+ }
+
+ static public void ExternalTools_FormClosed(System.Object sender, FormClosedEventArgs e)
+ {
+ mRemoteNG.Config.Settings.Save.SaveExternalAppsToXML();
+ }
+
+ public void NewTool_Click(System.Object sender, EventArgs e)
+ {
+ try
+ {
+ Tools.ExternalTool externalTool = new Tools.ExternalTool(Language.strExternalToolDefaultName);
+ Runtime.ExternalTools.Add(externalTool);
+ UpdateToolsListView(externalTool);
+ DisplayNameTextBox.Focus();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.NewTool_Click() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public void DeleteTool_Click(System.Object sender, EventArgs e)
+ {
+ try
+ {
+ string message = "";
+ if (ToolsListView.SelectedItems.Count == 1)
+ {
+ message = string.Format(Language.strConfirmDeleteExternalTool, ToolsListView.SelectedItems[0].Text);
+ }
+ else if (ToolsListView.SelectedItems.Count > 1)
+ {
+ message = string.Format(Language.strConfirmDeleteExternalToolMultiple, ToolsListView.SelectedItems.Count);
+ }
+ else
+ {
+ return ;
+ }
+
+ if (!(Interaction.MsgBox(message, (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.Question | MsgBoxStyle.YesNo), null) == MsgBoxResult.Yes))
+ {
+ return ;
+ }
+
+ foreach (ListViewItem listViewItem in ToolsListView.SelectedItems)
+ {
+ Tools.ExternalTool externalTool = listViewItem.Tag as Tools.ExternalTool;
+ if (externalTool == null)
+ {
+ continue;
+ }
+
+ Runtime.ExternalTools.Remove(listViewItem.Tag);
+ listViewItem.Remove();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.DeleteTool_Click() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public void LaunchTool_Click(System.Object sender, EventArgs e)
+ {
+ LaunchTool();
+ }
+
+ public void ToolsListView_SelectedIndexChanged(System.Object sender, EventArgs e)
+ {
+ try
+ {
+ if (ToolsListView.SelectedItems.Count == 1)
+ {
+ PropertiesGroupBox.Enabled = true;
+ _selectedTool = ToolsListView.SelectedItems[0].Tag as Tools.ExternalTool;
+ if (_selectedTool == null)
+ {
+ return ;
+ }
+
+ DisplayNameTextBox.Text = _selectedTool.DisplayName;
+ FilenameTextBox.Text = _selectedTool.FileName;
+ ArgumentsCheckBox.Text = _selectedTool.Arguments;
+ WaitForExitCheckBox.Checked = _selectedTool.WaitForExit;
+ TryToIntegrateCheckBox.Checked = _selectedTool.TryIntegrate;
+ }
+ else
+ {
+ PropertiesGroupBox.Enabled = false;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.ToolsListView_SelectedIndexChanged() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public void ToolsListView_DoubleClick(object sender, EventArgs e)
+ {
+ if (ToolsListView.SelectedItems.Count > 0)
+ {
+ LaunchTool();
+ }
+ }
+
+ public void PropertyControl_ChangedOrLostFocus(object sender, EventArgs e)
+ {
+ if (_selectedTool == null)
+ {
+ return ;
+ }
+
+ try
+ {
+ _selectedTool.DisplayName = DisplayNameTextBox.Text;
+ _selectedTool.FileName = FilenameTextBox.Text;
+ _selectedTool.Arguments = ArgumentsCheckBox.Text;
+ _selectedTool.WaitForExit = WaitForExitCheckBox.Checked;
+ _selectedTool.TryIntegrate = TryToIntegrateCheckBox.Checked;
+
+ UpdateToolsListView();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.PropertyControl_ChangedOrLostFocus() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public void BrowseButton_Click(System.Object sender, EventArgs e)
+ {
+ try
+ {
+ using (OpenFileDialog browseDialog = new OpenFileDialog())
+ {
+ browseDialog.Filter = string.Join("|", new string[] {Language.strFilterApplication, "*.exe", Language.strFilterAll, "*.*"});
+ if (browseDialog.ShowDialog() == DialogResult.OK)
+ {
+ FilenameTextBox.Text = browseDialog.FileName;
+ }
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.BrowseButton_Click() failed.", ex: ex, logOnly: true);
+ }
+ }
+
+ public void TryToIntegrateCheckBox_CheckedChanged(System.Object sender, EventArgs e)
+ {
+ if (TryToIntegrateCheckBox.Checked)
+ {
+ WaitForExitCheckBox.Enabled = false;
+ WaitForExitCheckBox.Checked = false;
+ }
+ else
+ {
+ WaitForExitCheckBox.Enabled = true;
+ }
+ }
+#endregion
+
+ private void ApplyLanguage()
+ {
+ Text = Language.strMenuExternalTools;
+ TabText = Language.strMenuExternalTools;
+
+ NewToolToolstripButton.Text = Language.strButtonNew;
+ DeleteToolToolstripButton.Text = Language.strOptionsKeyboardButtonDelete;
+ LaunchToolToolstripButton.Text = Language.strButtonLaunch;
+
+ DisplayNameColumnHeader.Text = Language.strColumnDisplayName;
+ FilenameColumnHeader.Text = Language.strColumnFilename;
+ ArgumentsColumnHeader.Text = Language.strColumnArguments;
+ WaitForExitColumnHeader.Text = Language.strColumnWaitForExit;
+ TryToIntegrateCheckBox.Text = Language.strTryIntegrate;
+
+ PropertiesGroupBox.Text = Language.strGroupboxExternalToolProperties;
+
+ DisplayNameLabel.Text = Language.strLabelDisplayName;
+ FilenameLabel.Text = Language.strLabelFilename;
+ ArgumentsLabel.Text = Language.strLabelArguments;
+ OptionsLabel.Text = Language.strLabelOptions;
+ WaitForExitCheckBox.Text = Language.strCheckboxWaitForExit;
+ BrowseButton.Text = Language.strButtonBrowse;
+
+ NewToolMenuItem.Text = Language.strMenuNewExternalTool;
+ DeleteToolMenuItem.Text = Language.strMenuDeleteExternalTool;
+ LaunchToolMenuItem.Text = Language.strMenuLaunchExternalTool;
+ }
+
+ private void UpdateToolsListView(Tools.ExternalTool selectTool = null)
+ {
+ try
+ {
+ List selectedTools = new List();
+ if (selectTool == null)
+ {
+ foreach (ListViewItem listViewItem in ToolsListView.SelectedItems)
+ {
+ Tools.ExternalTool externalTool = listViewItem.Tag as Tools.ExternalTool;
+ if (externalTool != null)
+ {
+ selectedTools.Add(externalTool);
+ }
+ }
+ }
+ else
+ {
+ selectedTools.Add(selectTool);
+ }
+
+ ToolsListView.BeginUpdate();
+ ToolsListView.Items.Clear();
+
+ foreach (Tools.ExternalTool externalTool in Runtime.ExternalTools)
+ {
+ ListViewItem listViewItem = new ListViewItem();
+ listViewItem.Text = externalTool.DisplayName;
+ listViewItem.SubItems.Add(externalTool.FileName);
+ listViewItem.SubItems.Add(externalTool.Arguments);
+ listViewItem.SubItems.Add(externalTool.WaitForExit);
+ listViewItem.SubItems.Add(externalTool.TryIntegrate);
+ listViewItem.Tag = externalTool;
+
+ ToolsListView.Items.Add(listViewItem);
+
+ if (selectedTools.Contains(externalTool))
+ {
+ listViewItem.Selected = true;
+ }
+ }
+
+ ToolsListView.EndUpdate();
+
+ frmMain.Default.AddExternalToolsToToolBar();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.PopulateToolsListView()", ex: ex, logOnly: true);
+ }
+ }
+
+ private void LaunchTool()
+ {
+ try
+ {
+ foreach (ListViewItem listViewItem in ToolsListView.SelectedItems)
+ {
+ Tools.ExternalTool externalTool = listViewItem.Tag as Tools.ExternalTool;
+ if (externalTool == null)
+ {
+ continue;
+ }
+
+ externalTool.Start();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(message: "UI.Window.ExternalTools.LaunchTool() failed.", ex: ex, logOnly: true);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ExternalTools.resx b/mRemoteV1/CS/UI/UI.Window.ExternalTools.resx
new file mode 100644
index 000000000..f2d94fc4b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ExternalTools.resx
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 197, 17
+
+
+ 54
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAgXdub5CEe9KShHvfjoF134t9cd+HeGzfg3Ro335vZN95bGDfdWhc33BjWd9tYFXfaFxS32VZ
+ UN9gVEvSVEtDQJySifJRUVH/UlJS/1NTU/9UVFT/VVVV/1ZWVv9WVlb/V1dX/1hYWP9ZWVn/Wlpa/1tb
+ W/9bW1v/XFxc/2BVS4yonpX/TU1N/zw8PP88PDz/PT09/z4+Pv9AQED/QUFB/0JCQv9DQ0P/RERE/0VF
+ Rf9FRUX/R0dH/1lZWf9oXFKUraOb/0pKSv83Nzf/ODg4/zk5Of87Ozv/PDw8/z4+Pv8+Pj7/QEBA/0FB
+ Qf9BQUH/Q0ND/0RERP9WVlb/bWBVlLGooP9GRkb/MjIy/zMzM/81NTX/NjY2/zg4OP85OTn/Ojo6/zs7
+ O/89PT3/Pj4+/z8/P/9AQED/VFRU/3JlWpS1rab/QUFB/y4uLv8vLy//MDAw/zIyMv8zMzP/NTU1/zU1
+ Nf83Nzf/OTk5/zo6Ov88PDz/PDw8/1FRUf93al6UubGr/zw8PP8oKCj/0dHR/6ysrP8tLS3/Li4u/zAw
+ MP8xMTH/MzMz/zU1Nf82Njb/Nzc3/zk5Of9NTU3/fW5ilL22sf84ODj/JCQk/yUlJf/e3t7/c3Nz/ykp
+ Kf8rKyv/LCws/y4uLv8wMDD/MTEx/zMzM/80NDT/SkpK/4R1Z5TAubT/MzMz/x8fH//Pz8//p6en/yMj
+ I/8kJCT/JSUl/ycnJ/8pKSn/Kysr/ywsLP8uLi7/MDAw/0VFRf+Kem2Uwr24/zMzM/8fHx//ICAg/yEh
+ If8jIyP/JCQk/yUlJf8nJyf/KSkp/ysrK/8sLCz/Li4u/zAwMP9FRUX/jn5ylMS/uf8wMDD/MTEx/zIy
+ Mv8zMzP/NDQ0/zU1Nf82Njb/ODg4/zo6Ov87Ozv/PDw8/z4+Pv9AQED/QkJC/35vY5TJwr7/t7rx/5Pk
+ 9v+x5bP/7enm/+3p5v/t6eb/7enm/+3p5v/t6eb/7enm/+3p5v/t6eb/7enm//X08v+FdmiUwr66/klO
+ 0/8WrOL/Pa9B/+Hb1v/h29b/4dvW/+Hb1v/h29b/4dvW/+Hb1v/h29b/4dvW/+Hc1//t6uf/inptk6mi
+ nZnCvrr6yMO+/8jBvf/Ev7n/wLm0/7y1sP+4sar/tKuk/6+mnv+qn5f/pZqR/6CUiv+bjoT/k4Z7+n1y
+ am4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA//+cQQAAnEEAAJxBAACcQQAAnEEAAJxBAACcQQAAnEEAAJxBAACcQQAAnEEAAJxBAACcQQAA
+ nEEAAJxB//+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Help.cs b/mRemoteV1/CS/UI/UI.Window.Help.cs
new file mode 100644
index 000000000..ca7f8a5e2
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Help.cs
@@ -0,0 +1,300 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class Help : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.TreeView tvIndex;
+ internal System.Windows.Forms.ImageList imgListHelp;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.SplitContainer pnlSplitter;
+ internal System.Windows.Forms.Label lblDocName;
+ internal System.Windows.Forms.WebBrowser wbHelp;
+
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(Help_Load);
+ this.Shown += new System.EventHandler(Help_Shown);
+ System.Windows.Forms.TreeNode TreeNode1 = new System.Windows.Forms.TreeNode("Introduction");
+ System.Windows.Forms.TreeNode TreeNode2 = new System.Windows.Forms.TreeNode("Prerequisites");
+ System.Windows.Forms.TreeNode TreeNode3 = new System.Windows.Forms.TreeNode("Installation");
+ System.Windows.Forms.TreeNode TreeNode4 = new System.Windows.Forms.TreeNode("Configuration");
+ System.Windows.Forms.TreeNode TreeNode5 = new System.Windows.Forms.TreeNode("SQL Configuration");
+ System.Windows.Forms.TreeNode TreeNode6 = new System.Windows.Forms.TreeNode("Command-Line Switches");
+ System.Windows.Forms.TreeNode TreeNode7 = new System.Windows.Forms.TreeNode("Getting Started", new System.Windows.Forms.TreeNode[] {TreeNode2, TreeNode3, TreeNode4, TreeNode5, TreeNode6});
+ System.Windows.Forms.TreeNode TreeNode8 = new System.Windows.Forms.TreeNode("Main Menu");
+ System.Windows.Forms.TreeNode TreeNode9 = new System.Windows.Forms.TreeNode("Connections");
+ System.Windows.Forms.TreeNode TreeNode10 = new System.Windows.Forms.TreeNode("Config");
+ System.Windows.Forms.TreeNode TreeNode11 = new System.Windows.Forms.TreeNode("Errors and Infos");
+ System.Windows.Forms.TreeNode TreeNode12 = new System.Windows.Forms.TreeNode("Save As / Export");
+ System.Windows.Forms.TreeNode TreeNode13 = new System.Windows.Forms.TreeNode("Sessions");
+ System.Windows.Forms.TreeNode TreeNode14 = new System.Windows.Forms.TreeNode("Screenshot Manager");
+ System.Windows.Forms.TreeNode TreeNode15 = new System.Windows.Forms.TreeNode("Connection");
+ System.Windows.Forms.TreeNode TreeNode16 = new System.Windows.Forms.TreeNode("Options");
+ System.Windows.Forms.TreeNode TreeNode17 = new System.Windows.Forms.TreeNode("Update");
+ System.Windows.Forms.TreeNode TreeNode18 = new System.Windows.Forms.TreeNode("SSH File Transfer");
+ System.Windows.Forms.TreeNode TreeNode19 = new System.Windows.Forms.TreeNode("Quick Connect");
+ System.Windows.Forms.TreeNode TreeNode20 = new System.Windows.Forms.TreeNode("Import From Active Directory");
+ System.Windows.Forms.TreeNode TreeNode21 = new System.Windows.Forms.TreeNode("External Applications");
+ System.Windows.Forms.TreeNode TreeNode22 = new System.Windows.Forms.TreeNode("Port Scan");
+ System.Windows.Forms.TreeNode TreeNode23 = new System.Windows.Forms.TreeNode("User Interface", new System.Windows.Forms.TreeNode[] {TreeNode8, TreeNode9, TreeNode10, TreeNode11, TreeNode12, TreeNode13, TreeNode14, TreeNode15, TreeNode16, TreeNode17, TreeNode18, TreeNode19, TreeNode20, TreeNode21, TreeNode22});
+ System.Windows.Forms.TreeNode TreeNode24 = new System.Windows.Forms.TreeNode("Quick Reference");
+ System.Windows.Forms.TreeNode TreeNode25 = new System.Windows.Forms.TreeNode("Help", new System.Windows.Forms.TreeNode[] {TreeNode1, TreeNode7, TreeNode23, TreeNode24});
+ this.wbHelp = new System.Windows.Forms.WebBrowser();
+ this.wbHelp.DocumentTitleChanged += new System.EventHandler(this.wbHelp_DocumentTitleChanged);
+ this.tvIndex = new System.Windows.Forms.TreeView();
+ this.tvIndex.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvIndex_NodeMouseClick);
+ this.tvIndex.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvIndex_AfterSelect);
+ this.imgListHelp = new System.Windows.Forms.ImageList(this.components);
+ this.pnlSplitter = new System.Windows.Forms.SplitContainer();
+ this.lblDocName = new System.Windows.Forms.Label();
+ this.pnlSplitter.Panel1.SuspendLayout();
+ this.pnlSplitter.Panel2.SuspendLayout();
+ this.pnlSplitter.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //wbHelp
+ //
+ this.wbHelp.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.wbHelp.Location = new System.Drawing.Point(1, 36);
+ this.wbHelp.MinimumSize = new System.Drawing.Size(20, 20);
+ this.wbHelp.Name = "wbHelp";
+ this.wbHelp.ScriptErrorsSuppressed = true;
+ this.wbHelp.Size = new System.Drawing.Size(327, 286);
+ this.wbHelp.TabIndex = 1;
+ //
+ //tvIndex
+ //
+ this.tvIndex.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.tvIndex.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.tvIndex.HideSelection = false;
+ this.tvIndex.Location = new System.Drawing.Point(1, 1);
+ this.tvIndex.Name = "tvIndex";
+ TreeNode1.Name = "Node0";
+ TreeNode1.Tag = "Introduction";
+ TreeNode1.Text = "Introduction";
+ TreeNode2.Name = "Node0";
+ TreeNode2.Tag = "Prerequisites";
+ TreeNode2.Text = "Prerequisites";
+ TreeNode3.Name = "Node3";
+ TreeNode3.Tag = "Installation";
+ TreeNode3.Text = "Installation";
+ TreeNode4.Name = "Node4";
+ TreeNode4.Tag = "Configuration";
+ TreeNode4.Text = "Configuration";
+ TreeNode5.Name = "Node0";
+ TreeNode5.Tag = "ConfigurationSQL";
+ TreeNode5.Text = "SQL Configuration";
+ TreeNode6.Name = "Node5";
+ TreeNode6.Tag = "CMDSwitches";
+ TreeNode6.Text = "Command-Line Switches";
+ TreeNode7.Name = "Node1";
+ TreeNode7.Text = "Getting Started";
+ TreeNode8.Name = "Node7";
+ TreeNode8.Tag = "MainMenu";
+ TreeNode8.Text = "Main Menu";
+ TreeNode9.Name = "Node8";
+ TreeNode9.Tag = "Connections";
+ TreeNode9.Text = "Connections";
+ TreeNode10.Name = "Node9";
+ TreeNode10.Tag = "Config";
+ TreeNode10.Text = "Config";
+ TreeNode11.Name = "Node10";
+ TreeNode11.Tag = "ErrorsAndInfos";
+ TreeNode11.Text = "Errors and Infos";
+ TreeNode12.Name = "Node11";
+ TreeNode12.Tag = "SaveAsExport";
+ TreeNode12.Text = "Save As / Export";
+ TreeNode13.Name = "Node12";
+ TreeNode13.Tag = "Sessions";
+ TreeNode13.Text = "Sessions";
+ TreeNode14.Name = "Node13";
+ TreeNode14.Tag = "ScreenshotManager";
+ TreeNode14.Text = "Screenshot Manager";
+ TreeNode15.Name = "Node14";
+ TreeNode15.Tag = "Connection";
+ TreeNode15.Text = "Connection";
+ TreeNode16.Name = "Node15";
+ TreeNode16.Tag = "Options";
+ TreeNode16.Text = "Options";
+ TreeNode17.Name = "Node16";
+ TreeNode17.Tag = "Update";
+ TreeNode17.Text = "Update";
+ TreeNode18.Name = "Node17";
+ TreeNode18.Tag = "SSHFileTransfer";
+ TreeNode18.Text = "SSH File Transfer";
+ TreeNode19.Name = "Node18";
+ TreeNode19.Tag = "QuickConnect";
+ TreeNode19.Text = "Quick Connect";
+ TreeNode20.Name = "Node19";
+ TreeNode20.Tag = "ImportFromAD";
+ TreeNode20.Text = "Import From Active Directory";
+ TreeNode21.Name = "Node1";
+ TreeNode21.Tag = "ExternalTools";
+ TreeNode21.Text = "External Tools";
+ TreeNode22.Name = "Node0";
+ TreeNode22.Tag = "PortScan";
+ TreeNode22.Text = "Port Scan";
+ TreeNode23.Name = "Node6";
+ TreeNode23.Text = "User Interface";
+ TreeNode24.Name = "Node20";
+ TreeNode24.Tag = "QuickReference";
+ TreeNode24.Text = "Quick Reference";
+ TreeNode25.Name = "Node0";
+ TreeNode25.Text = "Help";
+ this.tvIndex.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {TreeNode25});
+ this.tvIndex.ShowRootLines = false;
+ this.tvIndex.Size = new System.Drawing.Size(207, 321);
+ this.tvIndex.TabIndex = 0;
+ //
+ //imgListHelp
+ //
+ this.imgListHelp.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+ this.imgListHelp.ImageSize = new System.Drawing.Size(16, 16);
+ this.imgListHelp.TransparentColor = System.Drawing.Color.Transparent;
+ //
+ //pnlSplitter
+ //
+ this.pnlSplitter.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlSplitter.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+ this.pnlSplitter.Location = new System.Drawing.Point(0, 0);
+ this.pnlSplitter.Name = "pnlSplitter";
+ //
+ //pnlSplitter.Panel1
+ //
+ this.pnlSplitter.Panel1.Controls.Add(this.tvIndex);
+ //
+ //pnlSplitter.Panel2
+ //
+ this.pnlSplitter.Panel2.Controls.Add(this.lblDocName);
+ this.pnlSplitter.Panel2.Controls.Add(this.wbHelp);
+ this.pnlSplitter.Size = new System.Drawing.Size(542, 323);
+ this.pnlSplitter.SplitterDistance = 209;
+ this.pnlSplitter.TabIndex = 2;
+ //
+ //lblDocName
+ //
+ this.lblDocName.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lblDocName.BackColor = System.Drawing.Color.DimGray;
+ this.lblDocName.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblDocName.ForeColor = System.Drawing.Color.White;
+ this.lblDocName.Location = new System.Drawing.Point(1, 1);
+ this.lblDocName.Name = "lblDocName";
+ this.lblDocName.Size = new System.Drawing.Size(327, 35);
+ this.lblDocName.TabIndex = 2;
+ this.lblDocName.Text = "Introduction";
+ this.lblDocName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ //Help
+ //
+ this.ClientSize = new System.Drawing.Size(542, 323);
+ this.Controls.Add(this.pnlSplitter);
+ this.Icon = global::My.Resources.Resources.Help_Icon;
+ this.Name = "Help";
+ this.TabText = "Help";
+ this.Text = "Help";
+ this.pnlSplitter.Panel1.ResumeLayout(false);
+ this.pnlSplitter.Panel2.ResumeLayout(false);
+ this.pnlSplitter.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Public Methods
+ public Help(DockContent Panel)
+ {
+ this.WindowType = Type.Help;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+
+ this.FillImageList();
+ this.tvIndex.ImageList = this.imgListHelp;
+ this.SetImages(this.tvIndex.Nodes[0]);
+ }
+#endregion
+
+#region Private Methods
+ private void Help_Load(object sender, EventArgs e)
+ {
+ tvIndex.Nodes[0].ExpandAll();
+ tvIndex.SelectedNode = tvIndex.Nodes[0].Nodes[0];
+ }
+
+ private void Help_Shown(object sender, EventArgs e)
+ {
+ // This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
+ wbHelp.AllowWebBrowserDrop = false;
+ }
+
+ private void tvIndex_NodeMouseClick(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs e)
+ {
+ this.tvIndex.SelectedNode = e.Node;
+ }
+
+ private void tvIndex_AfterSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
+ {
+ if (e.Node.Tag != "")
+ {
+ this.wbHelp.Navigate((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.DirectoryPath + "\\Help\\" + System.Convert.ToString(e.Node.Tag) +".htm");
+ }
+ }
+
+ private void wbHelp_DocumentTitleChanged(object sender, System.EventArgs e)
+ {
+ this.lblDocName.Text = this.wbHelp.DocumentTitle;
+ }
+
+ private void FillImageList()
+ {
+ this.imgListHelp.Images.Add("File", global::My.Resources.Page);
+ this.imgListHelp.Images.Add("Folder", global::My.Resources.Folder);
+ this.imgListHelp.Images.Add("Help", global::My.Resources.Help);
+ }
+
+ private void SetImages(TreeNode node)
+ {
+ node.ImageIndex = 2;
+ node.SelectedImageIndex = 2;
+
+ foreach (TreeNode n in node.Nodes)
+ {
+ if (n.Nodes.Count > 0)
+ {
+ n.ImageIndex = 1;
+ n.SelectedImageIndex = 1;
+ }
+ else
+ {
+ n.ImageIndex = 0;
+ n.SelectedImageIndex = 0;
+ }
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Help.resx b/mRemoteV1/CS/UI/UI.Window.Help.resx
new file mode 100644
index 000000000..510497c37
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Help.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 19, 14
+
+
+ 48
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.List.cs b/mRemoteV1/CS/UI/UI.Window.List.cs
new file mode 100644
index 000000000..630a54b04
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.List.cs
@@ -0,0 +1,122 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class List : CollectionBase
+ {
+
+#region Public Properties
+public UI.Window.Base this[object Index]
+ {
+ get
+ {
+ this.CleanUp();
+ if (Index is UI.Window.Base)
+ {
+ if (Index as UI.Window.Base != null)
+ {
+ return Index;
+ }
+ }
+ else
+ {
+ if (List.Count - 1 >= Index)
+ {
+ if (List[System.Convert.ToInt32(Index)] != null)
+ {
+ return List[System.Convert.ToInt32(Index)] as UI.Window.Base.Default;
+ }
+ }
+ }
+
+ return null;
+ }
+ }
+
+public new int Count
+ {
+ get
+ {
+ this.CleanUp();
+ return List.Count;
+ }
+ }
+#endregion
+
+#region Public Methods
+ public void Add(UI.Window.Base uiWindow)
+ {
+ this.List.Add(uiWindow);
+ //AddHandler uiWindow.FormClosing, AddressOf uiFormClosing
+ }
+
+ public void AddRange(UI.Window.Base[] uiWindow)
+ {
+ foreach (Form uW in uiWindow)
+ {
+ this.List.Add(uW);
+ }
+ }
+
+ public void Remove(UI.Window.Base uiWindow)
+ {
+ this.List.Remove(uiWindow);
+ }
+
+ public UI.Window.Base FromString(string uiWindow)
+ {
+ this.CleanUp();
+
+ for (int i = 0; i <= this.List.Count() - 1; i++)
+ {
+ if (this[i].Text == uiWindow.Replace("&", "&&"))
+ {
+ return this[i];
+ }
+ }
+
+ return null;
+ }
+#endregion
+
+#region Private Methods
+ private void CleanUp()
+ {
+ for (int i = 0; i <= this.List.Count() - 1; i++)
+ {
+ if (i > this.List.Count() - 1)
+ {
+ CleanUp();
+ return;
+ }
+ if ((this.List[i] as UI.Window.Base).IsDisposed)
+ {
+ this.List.RemoveAt(i);
+ CleanUp();
+ return;
+ }
+ }
+ }
+#endregion
+
+#region Event Handlers
+ private void uiFormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
+ {
+ this.List.Remove(sender);
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.PortScan.Designer.cs b/mRemoteV1/CS/UI/UI.Window.PortScan.Designer.cs
new file mode 100644
index 000000000..17d5c8681
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.PortScan.Designer.cs
@@ -0,0 +1,328 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class PortScan : Base
+ {
+#region Windows Form Designer generated code
+
+ internal System.Windows.Forms.Label lblEndIP;
+ internal System.Windows.Forms.Label lblStartIP;
+ internal System.Windows.Forms.Button btnScan;
+ internal IPTextBox.IPTextBox ipEnd;
+ internal System.Windows.Forms.ListView lvHosts;
+ internal System.Windows.Forms.ColumnHeader clmHost;
+ internal System.Windows.Forms.ColumnHeader clmSSH;
+ internal System.Windows.Forms.ColumnHeader clmTelnet;
+ internal System.Windows.Forms.ColumnHeader clmHTTP;
+ internal System.Windows.Forms.ColumnHeader clmHTTPS;
+ internal System.Windows.Forms.ColumnHeader clmRlogin;
+ internal System.Windows.Forms.ColumnHeader clmRDP;
+ internal System.Windows.Forms.ColumnHeader clmVNC;
+ internal System.Windows.Forms.ColumnHeader clmOpenPorts;
+ internal System.Windows.Forms.ColumnHeader clmClosedPorts;
+ internal System.Windows.Forms.ProgressBar prgBar;
+ internal System.Windows.Forms.Label lblOnlyImport;
+ internal System.Windows.Forms.ComboBox cbProtocol;
+ internal System.Windows.Forms.Panel pnlPorts;
+ internal System.Windows.Forms.NumericUpDown portEnd;
+ internal System.Windows.Forms.NumericUpDown portStart;
+ internal System.Windows.Forms.Label Label2;
+ internal System.Windows.Forms.Label Label1;
+ internal System.Windows.Forms.Button btnImport;
+ internal IPTextBox.IPTextBox ipStart;
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PortScan));
+ this.ipStart = new IPTextBox.IPTextBox();
+ base.Load += new System.EventHandler(PortScan_Load);
+ this.ipEnd = new IPTextBox.IPTextBox();
+ this.lblStartIP = new System.Windows.Forms.Label();
+ this.lblEndIP = new System.Windows.Forms.Label();
+ this.btnScan = new System.Windows.Forms.Button();
+ this.btnScan.Click += new System.EventHandler(this.btnScan_Click);
+ this.lvHosts = new System.Windows.Forms.ListView();
+ this.btnImport = new System.Windows.Forms.Button();
+ this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
+ this.cbProtocol = new System.Windows.Forms.ComboBox();
+ this.lblOnlyImport = new System.Windows.Forms.Label();
+ this.clmHost = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmSSH = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmTelnet = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmHTTP = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmHTTPS = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmRlogin = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmRDP = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmVNC = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmOpenPorts = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.clmClosedPorts = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.prgBar = new System.Windows.Forms.ProgressBar();
+ this.pnlPorts = new System.Windows.Forms.Panel();
+ this.portEnd = new System.Windows.Forms.NumericUpDown();
+ this.portEnd.Enter += new System.EventHandler(this.portEnd_Enter);
+ this.portStart = new System.Windows.Forms.NumericUpDown();
+ this.portStart.Enter += new System.EventHandler(this.portStart_Enter);
+ this.Label2 = new System.Windows.Forms.Label();
+ this.Label1 = new System.Windows.Forms.Label();
+ this.pnlImport = new System.Windows.Forms.Panel();
+ this.pnlPorts.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.portEnd).BeginInit();
+ ((System.ComponentModel.ISupportInitialize) this.portStart).BeginInit();
+ this.pnlImport.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //ipStart
+ //
+ this.ipStart.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.ipStart.Location = new System.Drawing.Point(12, 25);
+ this.ipStart.Name = "ipStart";
+ this.ipStart.Size = new System.Drawing.Size(113, 20);
+ this.ipStart.TabIndex = 10;
+ //
+ //ipEnd
+ //
+ this.ipEnd.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.ipEnd.Location = new System.Drawing.Point(131, 25);
+ this.ipEnd.Name = "ipEnd";
+ this.ipEnd.Size = new System.Drawing.Size(113, 20);
+ this.ipEnd.TabIndex = 15;
+ //
+ //lblStartIP
+ //
+ this.lblStartIP.AutoSize = true;
+ this.lblStartIP.Location = new System.Drawing.Point(9, 9);
+ this.lblStartIP.Name = "lblStartIP";
+ this.lblStartIP.Size = new System.Drawing.Size(45, 13);
+ this.lblStartIP.TabIndex = 0;
+ this.lblStartIP.Text = "Start IP:";
+ //
+ //lblEndIP
+ //
+ this.lblEndIP.AutoSize = true;
+ this.lblEndIP.Location = new System.Drawing.Point(128, 9);
+ this.lblEndIP.Name = "lblEndIP";
+ this.lblEndIP.Size = new System.Drawing.Size(42, 13);
+ this.lblEndIP.TabIndex = 5;
+ this.lblEndIP.Text = "End IP:";
+ //
+ //btnScan
+ //
+ this.btnScan.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.btnScan.Image = global::My.Resources.Resources.Search;
+ this.btnScan.Location = new System.Drawing.Point(420, 9);
+ this.btnScan.Name = "btnScan";
+ this.btnScan.Size = new System.Drawing.Size(86, 58);
+ this.btnScan.TabIndex = 20;
+ this.btnScan.Text = "&Scan";
+ this.btnScan.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+ this.btnScan.UseVisualStyleBackColor = true;
+ //
+ //lvHosts
+ //
+ this.lvHosts.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.lvHosts.FullRowSelect = true;
+ this.lvHosts.GridLines = true;
+ this.lvHosts.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+ this.lvHosts.HideSelection = false;
+ this.lvHosts.Location = new System.Drawing.Point(12, 73);
+ this.lvHosts.Name = "lvHosts";
+ this.lvHosts.Size = new System.Drawing.Size(494, 214);
+ this.lvHosts.TabIndex = 26;
+ this.lvHosts.UseCompatibleStateImageBehavior = false;
+ this.lvHosts.View = System.Windows.Forms.View.Details;
+ //
+ //btnImport
+ //
+ this.btnImport.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnImport.Location = new System.Drawing.Point(419, 6);
+ this.btnImport.Name = "btnImport";
+ this.btnImport.Size = new System.Drawing.Size(75, 23);
+ this.btnImport.TabIndex = 101;
+ this.btnImport.Text = "&Import";
+ this.btnImport.UseVisualStyleBackColor = true;
+ //
+ //cbProtocol
+ //
+ this.cbProtocol.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left);
+ this.cbProtocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cbProtocol.FormattingEnabled = true;
+ this.cbProtocol.Items.AddRange(new object[] {"SSH2", "Telnet", "HTTP", "HTTPS", "Rlogin", "RDP", "VNC"});
+ this.cbProtocol.Location = new System.Drawing.Point(98, 8);
+ this.cbProtocol.Name = "cbProtocol";
+ this.cbProtocol.Size = new System.Drawing.Size(122, 21);
+ this.cbProtocol.TabIndex = 28;
+ //
+ //lblOnlyImport
+ //
+ this.lblOnlyImport.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left);
+ this.lblOnlyImport.AutoSize = true;
+ this.lblOnlyImport.Location = new System.Drawing.Point(0, 11);
+ this.lblOnlyImport.Name = "lblOnlyImport";
+ this.lblOnlyImport.Size = new System.Drawing.Size(92, 13);
+ this.lblOnlyImport.TabIndex = 1;
+ this.lblOnlyImport.Text = "Protocol to import:";
+ //
+ //clmHost
+ //
+ this.clmHost.Text = "Hostname/IP";
+ this.clmHost.Width = 130;
+ //
+ //clmSSH
+ //
+ this.clmSSH.Text = "SSH";
+ this.clmSSH.Width = 50;
+ //
+ //clmTelnet
+ //
+ this.clmTelnet.Text = "Telnet";
+ this.clmTelnet.Width = 50;
+ //
+ //clmHTTP
+ //
+ this.clmHTTP.Text = "HTTP";
+ this.clmHTTP.Width = 50;
+ //
+ //clmHTTPS
+ //
+ this.clmHTTPS.Text = "HTTPS";
+ this.clmHTTPS.Width = 50;
+ //
+ //clmRlogin
+ //
+ this.clmRlogin.Text = "Rlogin";
+ this.clmRlogin.Width = 50;
+ //
+ //clmRDP
+ //
+ this.clmRDP.Text = "RDP";
+ this.clmRDP.Width = 50;
+ //
+ //clmVNC
+ //
+ this.clmVNC.Text = "VNC";
+ this.clmVNC.Width = 50;
+ //
+ //clmOpenPorts
+ //
+ this.clmOpenPorts.Text = "Open Ports";
+ this.clmOpenPorts.Width = 150;
+ //
+ //clmClosedPorts
+ //
+ this.clmClosedPorts.Text = "Closed Ports";
+ this.clmClosedPorts.Width = 150;
+ //
+ //prgBar
+ //
+ this.prgBar.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.prgBar.Location = new System.Drawing.Point(12, 51);
+ this.prgBar.Name = "prgBar";
+ this.prgBar.Size = new System.Drawing.Size(402, 16);
+ this.prgBar.Step = 1;
+ this.prgBar.TabIndex = 28;
+ //
+ //pnlPorts
+ //
+ this.pnlPorts.Controls.Add(this.portEnd);
+ this.pnlPorts.Controls.Add(this.portStart);
+ this.pnlPorts.Controls.Add(this.Label2);
+ this.pnlPorts.Controls.Add(this.Label1);
+ this.pnlPorts.Location = new System.Drawing.Point(268, 7);
+ this.pnlPorts.Name = "pnlPorts";
+ this.pnlPorts.Size = new System.Drawing.Size(152, 38);
+ this.pnlPorts.TabIndex = 18;
+ //
+ //portEnd
+ //
+ this.portEnd.Location = new System.Drawing.Point(79, 18);
+ this.portEnd.Maximum = new decimal(new int[] {65535, 0, 0, 0});
+ this.portEnd.Name = "portEnd";
+ this.portEnd.Size = new System.Drawing.Size(67, 20);
+ this.portEnd.TabIndex = 15;
+ //
+ //portStart
+ //
+ this.portStart.Location = new System.Drawing.Point(6, 18);
+ this.portStart.Maximum = new decimal(new int[] {65535, 0, 0, 0});
+ this.portStart.Name = "portStart";
+ this.portStart.Size = new System.Drawing.Size(67, 20);
+ this.portStart.TabIndex = 5;
+ //
+ //Label2
+ //
+ this.Label2.AutoSize = true;
+ this.Label2.Location = new System.Drawing.Point(76, 2);
+ this.Label2.Name = "Label2";
+ this.Label2.Size = new System.Drawing.Size(51, 13);
+ this.Label2.TabIndex = 10;
+ this.Label2.Text = "End Port:";
+ //
+ //Label1
+ //
+ this.Label1.AutoSize = true;
+ this.Label1.Location = new System.Drawing.Point(3, 2);
+ this.Label1.Name = "Label1";
+ this.Label1.Size = new System.Drawing.Size(54, 13);
+ this.Label1.TabIndex = 0;
+ this.Label1.Text = "Start Port:";
+ //
+ //pnlImport
+ //
+ this.pnlImport.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlImport.Controls.Add(this.btnImport);
+ this.pnlImport.Controls.Add(this.lblOnlyImport);
+ this.pnlImport.Controls.Add(this.cbProtocol);
+ this.pnlImport.Location = new System.Drawing.Point(12, 287);
+ this.pnlImport.Name = "pnlImport";
+ this.pnlImport.Size = new System.Drawing.Size(494, 29);
+ this.pnlImport.TabIndex = 102;
+ //
+ //PortScan
+ //
+ this.AcceptButton = this.btnImport;
+ this.ClientSize = new System.Drawing.Size(518, 328);
+ this.Controls.Add(this.pnlImport);
+ this.Controls.Add(this.lvHosts);
+ this.Controls.Add(this.pnlPorts);
+ this.Controls.Add(this.prgBar);
+ this.Controls.Add(this.btnScan);
+ this.Controls.Add(this.lblEndIP);
+ this.Controls.Add(this.lblStartIP);
+ this.Controls.Add(this.ipEnd);
+ this.Controls.Add(this.ipStart);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = (System.Drawing.Icon) (resources.GetObject("$this.Icon"));
+ this.Name = "PortScan";
+ this.TabText = "Port Scan";
+ this.Text = "Port Scan";
+ this.pnlPorts.ResumeLayout(false);
+ this.pnlPorts.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.portEnd).EndInit();
+ ((System.ComponentModel.ISupportInitialize) this.portStart).EndInit();
+ this.pnlImport.ResumeLayout(false);
+ this.pnlImport.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.Panel pnlImport;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.PortScan.cs b/mRemoteV1/CS/UI/UI.Window.PortScan.cs
new file mode 100644
index 000000000..76d34ee64
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.PortScan.cs
@@ -0,0 +1,291 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+//using mRemoteNG.Tools.PortScan;
+using mRemoteNG.My;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class PortScan : Base
+ {
+#region Constructors
+ public PortScan(DockContent panel, bool import)
+ {
+ InitializeComponent();
+
+ WindowType = Type.PortScan;
+ DockPnl = panel;
+ _import = import;
+ }
+#endregion
+
+#region Private Properties
+private bool IpsValid
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(ipStart.Octet1))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipStart.Octet2))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipStart.Octet3))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipStart.Octet4))
+ {
+ return false;
+ }
+
+ if (string.IsNullOrEmpty(ipEnd.Octet1))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipEnd.Octet2))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipEnd.Octet3))
+ {
+ return false;
+ }
+ if (string.IsNullOrEmpty(ipEnd.Octet4))
+ {
+ return false;
+ }
+
+ return true;
+ }
+ }
+#endregion
+
+#region Private Fields
+ private bool _import;
+ private Tools.PortScan.Scanner _portScanner;
+ private bool _scanning = false;
+#endregion
+
+#region Private Methods
+#region Event Handlers
+ public void PortScan_Load(System.Object sender, EventArgs e)
+ {
+ ApplyLanguage();
+
+ try
+ {
+ if (_import)
+ {
+ lvHosts.Columns.AddRange(new ColumnHeader[] {clmHost, clmSSH, clmTelnet, clmHTTP, clmHTTPS, clmRlogin, clmRDP, clmVNC});
+ ShowImportControls(true);
+ cbProtocol.SelectedIndex = 0;
+ }
+ else
+ {
+ lvHosts.Columns.AddRange(new ColumnHeader[] {clmHost, clmOpenPorts, clmClosedPorts});
+ ShowImportControls(false);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(My.Language.strPortScanCouldNotLoadPanel, ex);
+ }
+ }
+
+ public void portStart_Enter(System.Object sender, EventArgs e)
+ {
+ portStart.Select(0, portStart.Text.Length);
+ }
+
+ public void portEnd_Enter(System.Object sender, EventArgs e)
+ {
+ portEnd.Select(0, portEnd.Text.Length);
+ }
+
+ public void btnScan_Click(System.Object sender, EventArgs e)
+ {
+ if (_scanning)
+ {
+ StopScan();
+ }
+ else
+ {
+ if (IpsValid)
+ {
+ StartScan();
+ }
+ else
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strCannotStartPortScan);
+ }
+ }
+ }
+
+ public void btnImport_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Connection.Protocol.Protocols protocol = Tools.Misc.StringToEnum(typeof(mRemoteNG.Connection.Protocol.Protocols), System.Convert.ToString(cbProtocol.SelectedItem));
+
+ List hosts = new List();
+ foreach (ListViewItem item in lvHosts.SelectedItems)
+ {
+ Tools.PortScan.ScanHost scanHost = item.Tag as Tools.PortScan.ScanHost;
+ if (scanHost != null)
+ {
+ hosts.Add(item.Tag);
+ }
+ }
+
+ App.Import.ImportFromPortScan(hosts, protocol);
+
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+#endregion
+
+ private void ApplyLanguage()
+ {
+ lblStartIP.Text = string.Format("{0}:", My.Language.strStartIP);
+ lblEndIP.Text = string.Format("{0}:", My.Language.strEndIP);
+ btnScan.Text = My.Language.strButtonScan;
+ btnImport.Text = My.Language.strButtonImport;
+ lblOnlyImport.Text = string.Format("{0}:", My.Language.strProtocolToImport);
+ clmHost.Text = My.Language.strColumnHostnameIP;
+ clmOpenPorts.Text = My.Language.strOpenPorts;
+ clmClosedPorts.Text = My.Language.strClosedPorts;
+ Label2.Text = string.Format("{0}:", My.Language.strEndPort);
+ Label1.Text = string.Format("{0}:", My.Language.strStartPort);
+ TabText = My.Language.strMenuPortScan;
+ Text = My.Language.strMenuPortScan;
+ }
+
+ private void ShowImportControls(bool controlsVisible)
+ {
+ pnlPorts.Visible = controlsVisible;
+ pnlImport.Visible = controlsVisible;
+ if (controlsVisible)
+ {
+ lvHosts.Height = pnlImport.Top - lvHosts.Top;
+ }
+ else
+ {
+ lvHosts.Height = pnlImport.Bottom - lvHosts.Top;
+ }
+ }
+
+ private void StartScan()
+ {
+ try
+ {
+ _scanning = true;
+ SwitchButtonText();
+ lvHosts.Items.Clear();
+
+ System.Net.IPAddress ipAddressStart = System.Net.IPAddress.Parse(ipStart.Text);
+ System.Net.IPAddress ipAddressEnd = System.Net.IPAddress.Parse(ipEnd.Text);
+
+ if (_import)
+ {
+ _portScanner = new Tools.PortScan.Scanner(ipAddressStart, ipAddressEnd);
+ }
+ else
+ {
+ _portScanner = new Tools.PortScan.Scanner(ipAddressStart, ipAddressEnd, (int) portStart.Value, (int) portEnd.Value);
+ }
+
+ _portScanner.BeginHostScan += PortScanner_BeginHostScan;
+ _portScanner.HostScanned += PortScanner_HostScanned;
+ _portScanner.ScanComplete += PortScanner_ScanComplete;
+
+ _portScanner.StartScan();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StartScan failed (UI.Window.PortScan)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void StopScan()
+ {
+ if (_portScanner != null)
+ {
+ _portScanner.StopScan();
+ }
+ _scanning = false;
+ SwitchButtonText();
+ }
+
+ private void SwitchButtonText()
+ {
+ if (_scanning)
+ {
+ btnScan.Text = My.Language.strButtonStop;
+ }
+ else
+ {
+ btnScan.Text = My.Language.strButtonScan;
+ }
+
+ prgBar.Maximum = 100;
+ prgBar.Value = 0;
+ }
+
+ private static void PortScanner_BeginHostScan(string host)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Scanning " + host, true);
+ }
+
+ private delegate void PortScannerHostScannedDelegate(Tools.PortScan.ScanHost host, int scannedCount, int totalCount);
+ private void PortScanner_HostScanned(Tools.PortScan.ScanHost host, int scannedCount, int totalCount)
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new PortScannerHostScannedDelegate(PortScanner_HostScanned), new object[] {host, scannedCount, totalCount});
+ return ;
+ }
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Host scanned " + host.HostIp, true);
+
+ ListViewItem listViewItem = host.ToListViewItem(_import);
+ if (listViewItem != null)
+ {
+ lvHosts.Items.Add(listViewItem);
+ listViewItem.EnsureVisible();
+ }
+
+ prgBar.Maximum = totalCount;
+ prgBar.Value = scannedCount;
+ }
+
+ private delegate void PortScannerScanComplete(List hosts);
+ private void PortScanner_ScanComplete(List hosts)
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new PortScannerScanComplete(PortScanner_ScanComplete), new object[] {hosts});
+ return ;
+ }
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, Language.strPortScanComplete);
+
+ _scanning = false;
+ SwitchButtonText();
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.PortScan.resx b/mRemoteV1/CS/UI/UI.Window.PortScan.resx
new file mode 100644
index 000000000..30354dc10
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.PortScan.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAGxsbP9sbGz/EVuT/xRclP8XX5f/GmGZ/x1jm/8hZp7/JGig/yhro/8sbqb/MHGp/66u
+ rv+3t7f/AAAAAAAAAAAAAAAAAAAAABVdlf90qNH/dqrS/3mr0/97rdT/fa/V/4Gy1v+Ds9f/hrbY/zZ1
+ rf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZYJj/d6vT/1SVx/9Yl8j/W5rJ/1+dy/9ioM3/ZqLO/4u5
+ 2v88ebH/IGqqAiZqoJMbYpl3AAAAAAAAAAAAAAAAHmSc/3ut1P9Zmcn/XJvK/2CezP9koc3/Z6TP/3an
+ yf+buMv/Tn+u/0OEv5t6qNL/MnKotwAAAAAAAAAAAAAAACNnn/9/sNX/XpzL/2KfzP9mos7/aaXP/4+u
+ wP/bxK//682z/9y9o/+sr7b/UYzCvSJopBgAAAAAAAAAAAAAAAAoa6P/gbTX/1TC7f9bt+P/a6fQ/2+p
+ 0v/ezrz/9+PQ//Xcw//64cf/4cGm/WGCpCoAAAAAAAAAAAAAAAAAAAAALm+n/3y74P9L1P//X7rk/3Gr
+ 0v91rdT/8d3J//bizv/03MP/9t3E/+3Qtv/TpH4qAAAAAAAAAAAAAAAAAAAAADNzq/+Mutr/bavU/3Os
+ 0/93r9X/erLW/+LYy//46dr/9uPQ//jl0//qzLLr3bGNGQAAAAAAAAAAAAAAAAAAAAA5d6//j73c/3St
+ 1P95sNX/fLPX/4C22P+bwNX/49nN//Phzv/czcH/58KhSgAAAAAAAAAAAAAAAAAAAAAAAAAAP3y0/5TB
+ 3f96stb/frTX/4G32f+Futv/iL3c/4y/3f+oz+X/Y5XN/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWA
+ uP+ZxOD/gLbY/4O42v+Hu9v/ir7c/43A3v+Qwt//q9Hn/2eY0P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABLhLz/ncfh/6DJ4v+iy+T/pc3k/6jP5f+q0ef/q9Po/67U6P9rm9P/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAUYjA/1WLw/9Zjsb/XJDI/2CTy/9jlc3/ZpfP/2ma0v9sm9P/bp3V/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA//+cQYABnEHgB5xB4ACcQeAAnEHgAJxB4AGcQeABnEHgAZxB4AOcQeAHnEHgB5xB4AecQeAH
+ nEH//5xB//+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.SSHTransfer.cs b/mRemoteV1/CS/UI/UI.Window.SSHTransfer.cs
new file mode 100644
index 000000000..162cae957
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.SSHTransfer.cs
@@ -0,0 +1,624 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+using Tamir.SharpSsh;
+using System.IO;
+using System.Threading;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class SSHTransfer : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.ProgressBar pbStatus;
+ internal System.Windows.Forms.Button btnTransfer;
+ internal System.Windows.Forms.TextBox txtUser;
+ internal System.Windows.Forms.TextBox txtPassword;
+ internal System.Windows.Forms.TextBox txtHost;
+ internal System.Windows.Forms.TextBox txtPort;
+ internal System.Windows.Forms.Label lblHost;
+ internal System.Windows.Forms.Label lblPort;
+ internal System.Windows.Forms.Label lblUser;
+ internal System.Windows.Forms.Label lblPassword;
+ internal System.Windows.Forms.Label lblProtocol;
+ internal System.Windows.Forms.RadioButton radProtSCP;
+ internal System.Windows.Forms.RadioButton radProtSFTP;
+ internal System.Windows.Forms.GroupBox grpConnection;
+ internal System.Windows.Forms.Button btnBrowse;
+ internal System.Windows.Forms.Label lblRemoteFile;
+ internal System.Windows.Forms.TextBox txtRemoteFile;
+ internal System.Windows.Forms.TextBox txtLocalFile;
+ internal System.Windows.Forms.Label lblLocalFile;
+ internal System.Windows.Forms.GroupBox grpFiles;
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SSHTransfer));
+ this.grpFiles = new System.Windows.Forms.GroupBox();
+ this.Load += new System.EventHandler(SSHTransfer_Load);
+ this.lblLocalFile = new System.Windows.Forms.Label();
+ this.txtLocalFile = new System.Windows.Forms.TextBox();
+ this.txtRemoteFile = new System.Windows.Forms.TextBox();
+ this.lblRemoteFile = new System.Windows.Forms.Label();
+ this.btnBrowse = new System.Windows.Forms.Button();
+ this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
+ this.grpConnection = new System.Windows.Forms.GroupBox();
+ this.radProtSFTP = new System.Windows.Forms.RadioButton();
+ this.radProtSCP = new System.Windows.Forms.RadioButton();
+ this.lblProtocol = new System.Windows.Forms.Label();
+ this.lblPassword = new System.Windows.Forms.Label();
+ this.lblUser = new System.Windows.Forms.Label();
+ this.lblPort = new System.Windows.Forms.Label();
+ this.lblHost = new System.Windows.Forms.Label();
+ this.txtPort = new System.Windows.Forms.TextBox();
+ this.txtHost = new System.Windows.Forms.TextBox();
+ this.txtPassword = new System.Windows.Forms.TextBox();
+ this.txtUser = new System.Windows.Forms.TextBox();
+ this.btnTransfer = new System.Windows.Forms.Button();
+ this.btnTransfer.Click += new System.EventHandler(this.btnTransfer_Click);
+ this.pbStatus = new System.Windows.Forms.ProgressBar();
+ this.grpFiles.SuspendLayout();
+ this.grpConnection.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //grpFiles
+ //
+ this.grpFiles.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.grpFiles.Controls.Add(this.lblLocalFile);
+ this.grpFiles.Controls.Add(this.txtLocalFile);
+ this.grpFiles.Controls.Add(this.txtRemoteFile);
+ this.grpFiles.Controls.Add(this.lblRemoteFile);
+ this.grpFiles.Controls.Add(this.btnBrowse);
+ this.grpFiles.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.grpFiles.Location = new System.Drawing.Point(12, 153);
+ this.grpFiles.Name = "grpFiles";
+ this.grpFiles.Size = new System.Drawing.Size(668, 194);
+ this.grpFiles.TabIndex = 2000;
+ this.grpFiles.TabStop = false;
+ this.grpFiles.Text = "Files";
+ //
+ //lblLocalFile
+ //
+ this.lblLocalFile.AutoSize = true;
+ this.lblLocalFile.Location = new System.Drawing.Point(20, 25);
+ this.lblLocalFile.Name = "lblLocalFile";
+ this.lblLocalFile.Size = new System.Drawing.Size(52, 13);
+ this.lblLocalFile.TabIndex = 10;
+ this.lblLocalFile.Text = "Local file:";
+ //
+ //txtLocalFile
+ //
+ this.txtLocalFile.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtLocalFile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtLocalFile.Location = new System.Drawing.Point(105, 23);
+ this.txtLocalFile.Name = "txtLocalFile";
+ this.txtLocalFile.Size = new System.Drawing.Size(455, 20);
+ this.txtLocalFile.TabIndex = 20;
+ //
+ //txtRemoteFile
+ //
+ this.txtRemoteFile.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtRemoteFile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtRemoteFile.Location = new System.Drawing.Point(105, 49);
+ this.txtRemoteFile.Name = "txtRemoteFile";
+ this.txtRemoteFile.Size = new System.Drawing.Size(542, 20);
+ this.txtRemoteFile.TabIndex = 50;
+ //
+ //lblRemoteFile
+ //
+ this.lblRemoteFile.AutoSize = true;
+ this.lblRemoteFile.Location = new System.Drawing.Point(20, 51);
+ this.lblRemoteFile.Name = "lblRemoteFile";
+ this.lblRemoteFile.Size = new System.Drawing.Size(63, 13);
+ this.lblRemoteFile.TabIndex = 40;
+ this.lblRemoteFile.Text = "Remote file:";
+ //
+ //btnBrowse
+ //
+ this.btnBrowse.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.btnBrowse.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnBrowse.Location = new System.Drawing.Point(566, 21);
+ this.btnBrowse.Name = "btnBrowse";
+ this.btnBrowse.Size = new System.Drawing.Size(81, 23);
+ this.btnBrowse.TabIndex = 30;
+ this.btnBrowse.Text = "Browse";
+ this.btnBrowse.UseVisualStyleBackColor = true;
+ //
+ //grpConnection
+ //
+ this.grpConnection.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.grpConnection.Controls.Add(this.radProtSFTP);
+ this.grpConnection.Controls.Add(this.radProtSCP);
+ this.grpConnection.Controls.Add(this.lblProtocol);
+ this.grpConnection.Controls.Add(this.lblPassword);
+ this.grpConnection.Controls.Add(this.lblUser);
+ this.grpConnection.Controls.Add(this.lblPort);
+ this.grpConnection.Controls.Add(this.lblHost);
+ this.grpConnection.Controls.Add(this.txtPort);
+ this.grpConnection.Controls.Add(this.txtHost);
+ this.grpConnection.Controls.Add(this.txtPassword);
+ this.grpConnection.Controls.Add(this.txtUser);
+ this.grpConnection.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.grpConnection.Location = new System.Drawing.Point(12, 12);
+ this.grpConnection.Name = "grpConnection";
+ this.grpConnection.Size = new System.Drawing.Size(668, 135);
+ this.grpConnection.TabIndex = 1000;
+ this.grpConnection.TabStop = false;
+ this.grpConnection.Text = "Connection";
+ //
+ //radProtSFTP
+ //
+ this.radProtSFTP.AutoSize = true;
+ this.radProtSFTP.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.radProtSFTP.Location = new System.Drawing.Point(153, 103);
+ this.radProtSFTP.Name = "radProtSFTP";
+ this.radProtSFTP.Size = new System.Drawing.Size(51, 17);
+ this.radProtSFTP.TabIndex = 110;
+ this.radProtSFTP.Text = "SFTP";
+ this.radProtSFTP.UseVisualStyleBackColor = true;
+ //
+ //radProtSCP
+ //
+ this.radProtSCP.AutoSize = true;
+ this.radProtSCP.Checked = true;
+ this.radProtSCP.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.radProtSCP.Location = new System.Drawing.Point(92, 103);
+ this.radProtSCP.Name = "radProtSCP";
+ this.radProtSCP.Size = new System.Drawing.Size(45, 17);
+ this.radProtSCP.TabIndex = 100;
+ this.radProtSCP.TabStop = true;
+ this.radProtSCP.Text = "SCP";
+ this.radProtSCP.UseVisualStyleBackColor = true;
+ //
+ //lblProtocol
+ //
+ this.lblProtocol.AutoSize = true;
+ this.lblProtocol.Location = new System.Drawing.Point(20, 105);
+ this.lblProtocol.Name = "lblProtocol";
+ this.lblProtocol.Size = new System.Drawing.Size(49, 13);
+ this.lblProtocol.TabIndex = 90;
+ this.lblProtocol.Text = "Protocol:";
+ //
+ //lblPassword
+ //
+ this.lblPassword.AutoSize = true;
+ this.lblPassword.Location = new System.Drawing.Point(20, 79);
+ this.lblPassword.Name = "lblPassword";
+ this.lblPassword.Size = new System.Drawing.Size(56, 13);
+ this.lblPassword.TabIndex = 70;
+ this.lblPassword.Text = "Password:";
+ //
+ //lblUser
+ //
+ this.lblUser.AutoSize = true;
+ this.lblUser.Location = new System.Drawing.Point(20, 53);
+ this.lblUser.Name = "lblUser";
+ this.lblUser.Size = new System.Drawing.Size(32, 13);
+ this.lblUser.TabIndex = 50;
+ this.lblUser.Text = "User:";
+ //
+ //lblPort
+ //
+ this.lblPort.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.lblPort.AutoSize = true;
+ this.lblPort.Location = new System.Drawing.Point(582, 27);
+ this.lblPort.Name = "lblPort";
+ this.lblPort.Size = new System.Drawing.Size(29, 13);
+ this.lblPort.TabIndex = 30;
+ this.lblPort.Text = "Port:";
+ //
+ //lblHost
+ //
+ this.lblHost.AutoSize = true;
+ this.lblHost.Location = new System.Drawing.Point(20, 27);
+ this.lblHost.Name = "lblHost";
+ this.lblHost.Size = new System.Drawing.Size(32, 13);
+ this.lblHost.TabIndex = 10;
+ this.lblHost.Text = "Host:";
+ //
+ //txtPort
+ //
+ this.txtPort.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.txtPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtPort.Location = new System.Drawing.Point(617, 25);
+ this.txtPort.Name = "txtPort";
+ this.txtPort.Size = new System.Drawing.Size(30, 20);
+ this.txtPort.TabIndex = 40;
+ //
+ //txtHost
+ //
+ this.txtHost.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtHost.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtHost.Location = new System.Drawing.Point(105, 25);
+ this.txtHost.Name = "txtHost";
+ this.txtHost.Size = new System.Drawing.Size(471, 20);
+ this.txtHost.TabIndex = 20;
+ //
+ //txtPassword
+ //
+ this.txtPassword.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtPassword.Location = new System.Drawing.Point(105, 77);
+ this.txtPassword.Name = "txtPassword";
+ this.txtPassword.PasswordChar = global::Microsoft.VisualBasic.Strings.ChrW(42);
+ this.txtPassword.Size = new System.Drawing.Size(471, 20);
+ this.txtPassword.TabIndex = 80;
+ //
+ //txtUser
+ //
+ this.txtUser.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtUser.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtUser.Location = new System.Drawing.Point(105, 51);
+ this.txtUser.Name = "txtUser";
+ this.txtUser.Size = new System.Drawing.Size(471, 20);
+ this.txtUser.TabIndex = 60;
+ //
+ //btnTransfer
+ //
+ this.btnTransfer.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
+ this.btnTransfer.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnTransfer.Image = global::My.Resources.Resources.SSHTransfer;
+ this.btnTransfer.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btnTransfer.Location = new System.Drawing.Point(597, 382);
+ this.btnTransfer.Name = "btnTransfer";
+ this.btnTransfer.Size = new System.Drawing.Size(83, 29);
+ this.btnTransfer.TabIndex = 10000;
+ this.btnTransfer.Text = "Transfer";
+ this.btnTransfer.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.btnTransfer.UseVisualStyleBackColor = true;
+ //
+ //pbStatus
+ //
+ this.pbStatus.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pbStatus.Location = new System.Drawing.Point(12, 353);
+ this.pbStatus.Name = "pbStatus";
+ this.pbStatus.Size = new System.Drawing.Size(668, 23);
+ this.pbStatus.TabIndex = 3000;
+ //
+ //SSHTransfer
+ //
+ this.ClientSize = new System.Drawing.Size(692, 423);
+ this.Controls.Add(this.grpFiles);
+ this.Controls.Add(this.grpConnection);
+ this.Controls.Add(this.btnTransfer);
+ this.Controls.Add(this.pbStatus);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = (System.Drawing.Icon) (resources.GetObject("$this.Icon"));
+ this.Name = "SSHTransfer";
+ this.TabText = "SSH File Transfer";
+ this.Text = "SSH File Transfer";
+ this.grpFiles.ResumeLayout(false);
+ this.grpFiles.PerformLayout();
+ this.grpConnection.ResumeLayout(false);
+ this.grpConnection.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+#endregion
+
+#region Private Properties
+ private SshTransferProtocolBase sshT;
+ private OpenFileDialog oDlg;
+#endregion
+
+#region Public Properties
+public string Hostname
+ {
+ get
+ {
+ return this.txtHost.Text;
+ }
+ set
+ {
+ this.txtHost.Text = value;
+ }
+ }
+
+public string Port
+ {
+ get
+ {
+ return this.txtPort.Text;
+ }
+ set
+ {
+ this.txtPort.Text = value;
+ }
+ }
+
+public string Username
+ {
+ get
+ {
+ return this.txtUser.Text;
+ }
+ set
+ {
+ this.txtUser.Text = value;
+ }
+ }
+
+public string Password
+ {
+ get
+ {
+ return this.txtPassword.Text;
+ }
+ set
+ {
+ this.txtPassword.Text = value;
+ }
+ }
+#endregion
+
+#region Form Stuff
+ private void SSHTransfer_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private void ApplyLanguage()
+ {
+ grpFiles.Text = My.Language.strGroupboxFiles;
+ lblLocalFile.Text = My.Language.strLocalFile + ":";
+ lblRemoteFile.Text = My.Language.strRemoteFile + ":";
+ btnBrowse.Text = My.Language.strButtonBrowse;
+ grpConnection.Text = My.Language.strGroupboxConnection;
+ lblProtocol.Text = My.Language.strLabelProtocol;
+ lblPassword.Text = My.Language.strLabelPassword;
+ lblUser.Text = My.Language.strUser + ":";
+ lblPort.Text = My.Language.strLabelPort;
+ lblHost.Text = My.Language.strHost + ":";
+ btnTransfer.Text = My.Language.strTransfer;
+ TabText = My.Language.strMenuSSHFileTransfer;
+ Text = My.Language.strMenuSSHFileTransfer;
+ }
+#endregion
+
+#region Private Methods
+ private void StartTransfer(SSHTransferProtocol Protocol)
+ {
+ if (AllFieldsSet() == false)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPleaseFillAllFields);
+ return;
+ }
+
+ if (File.Exists(this.txtLocalFile.Text) == false)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strLocalFileDoesNotExist);
+ return;
+ }
+
+ try
+ {
+ if (Protocol == SSHTransferProtocol.SCP)
+ {
+ this.sshT = new Scp(txtHost.Text, txtUser.Text, txtPassword.Text);
+ }
+ else if (Protocol == SSHTransferProtocol.SFTP)
+ {
+ this.sshT = new Sftp(txtHost.Text, txtUser.Text, txtPassword.Text);
+ }
+
+ sshT.OnTransferStart += SshTransfer_Start;
+ sshT.OnTransferProgress += SshTransfer_Progress;
+ sshT.OnTransferEnd += SshTransfer_End;
+
+ this.sshT.Connect((int) this.txtPort.Text);
+
+ LocalFile = this.txtLocalFile.Text;
+ RemoteFile = this.txtRemoteFile.Text;
+
+ Thread t = new Thread(new System.Threading.ThreadStart(StartTransferBG));
+ t.SetApartmentState(ApartmentState.STA);
+ t.IsBackground = true;
+ t.Start();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSSHTransferFailed + Constants.vbNewLine + ex.Message);
+ this.sshT.Close();
+ }
+ }
+
+ private string LocalFile;
+ private string RemoteFile;
+
+ private void StartTransferBG()
+ {
+ try
+ {
+ DisableButtons();
+ this.sshT.Put(LocalFile, RemoteFile);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSSHStartTransferBG + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private bool AllFieldsSet()
+ {
+ if (this.txtHost.Text != "" && this.txtPort.Text != "" && this.txtUser.Text != "" && this.txtLocalFile.Text != "" && this.txtRemoteFile.Text != "")
+ {
+ if (this.txtPassword.Text == "")
+ {
+ if (Interaction.MsgBox(My.Language.strEmptyPasswordContinue, (Microsoft.VisualBasic.MsgBoxStyle) (MsgBoxStyle.Question | MsgBoxStyle.YesNo), null) == MsgBoxResult.No)
+ {
+ return false;
+ }
+ }
+
+ if (this.txtRemoteFile.Text.EndsWith("/") || this.txtRemoteFile.Text.EndsWith("\\"))
+ {
+ this.txtRemoteFile.Text += this.txtLocalFile.Text.Substring(this.txtLocalFile.Text.LastIndexOf("\\") + 1);
+ }
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ private long maxVal;
+ private long curVal;
+
+ delegate void SetStatusCB();
+ private void SetStatus()
+ {
+ if (pbStatus.InvokeRequired)
+ {
+ SetStatusCB d = new SetStatusCB(SetStatus);
+ this.pbStatus.Invoke(d);
+ }
+ else
+ {
+ pbStatus.Maximum = maxVal;
+ pbStatus.Value = curVal;
+ }
+ }
+
+ delegate void EnableButtonsCB();
+ private void EnableButtons()
+ {
+ if (btnTransfer.InvokeRequired)
+ {
+ EnableButtonsCB d = new EnableButtonsCB(EnableButtons);
+ this.btnTransfer.Invoke(d);
+ }
+ else
+ {
+ btnTransfer.Enabled = true;
+ }
+ }
+
+ delegate void DisableButtonsCB();
+ private void DisableButtons()
+ {
+ if (btnTransfer.InvokeRequired)
+ {
+ DisableButtonsCB d = new DisableButtonsCB(DisableButtons);
+ this.btnTransfer.Invoke(d);
+ }
+ else
+ {
+ btnTransfer.Enabled = false;
+ }
+ }
+
+ private void SshTransfer_Start(string src, string dst, int transferredBytes, int totalBytes, string message)
+ {
+ maxVal = totalBytes;
+ curVal = transferredBytes;
+
+ SetStatus();
+ }
+
+ private void SshTransfer_Progress(string src, string dst, int transferredBytes, int totalBytes, string message)
+ {
+ maxVal = totalBytes;
+ curVal = transferredBytes;
+
+ SetStatus();
+ }
+
+ private void SshTransfer_End(string src, string dst, int transferredBytes, int totalBytes, string message)
+ {
+ try
+ {
+ maxVal = totalBytes;
+ curVal = transferredBytes;
+
+ EnableButtons();
+ SetStatus();
+
+ MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strSSHTransferFailed);
+
+ if (this.sshT != null)
+ {
+ this.sshT.Close();
+ }
+ else if (this.sshT != null)
+ {
+ this.sshT.Close();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSSHTransferEndFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Public Methods
+ public SSHTransfer(DockContent Panel)
+ {
+ this.WindowType = Type.SSHTransfer;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+
+ this.oDlg = new OpenFileDialog();
+ this.oDlg.Filter = "All Files (*.*)|*.*";
+ this.oDlg.CheckFileExists = true;
+ }
+#endregion
+
+#region Form Stuff
+ private void btnBrowse_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.oDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ if (this.oDlg.FileName != "")
+ {
+ this.txtLocalFile.Text = this.oDlg.FileName;
+ }
+ }
+ }
+
+ private void btnTransfer_Click(System.Object sender, System.EventArgs e)
+ {
+ if (this.radProtSCP.Checked)
+ {
+ this.StartTransfer(SSHTransferProtocol.SCP);
+ }
+ else if (this.radProtSFTP.Checked)
+ {
+ this.StartTransfer(SSHTransferProtocol.SFTP);
+ }
+ }
+#endregion
+
+ private enum SSHTransferProtocol
+ {
+ SCP = 0,
+ SFTP = 1
+ }
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.SSHTransfer.resx b/mRemoteV1/CS/UI/UI.Window.SSHTransfer.resx
new file mode 100644
index 000000000..4069c499c
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.SSHTransfer.resx
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQxa4Ej8TBgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZTBw4FkgZ9xRE
+ FtkAAAAAAAAAAAAAAABElUz/QJBI/zyKQ/84hD//NH86/zB6NsYtczJAJ2IskCNdKNggVyT/NWw5/2Kb
+ Zv9GfEr/FEQXzwAAAAAAAAAASZxR/4jKj/+FyIz/gsWJ/3/Dhv9iqWj/NXg7/1yXYf+EvYr/k86Y/5HM
+ lv+Py5P/jcqR/0d9Sv8VRRfEAAAAAE2iVv+NzJT/isuR/4bJjv+Dx4r/cLN2/0yNU/+b0qH/l8+d/5fP
+ nP+Vzpr/ksyX/5DMlf9KgU7/GEobyQAAAABSqFv/TqNX/0qeU/9JmlL/Yqxq/1SbXP97tYL/n9Sl/3y2
+ g/9NilL/KWYu/1ONWf9RiVX/HlUi0QAAAAAAAAAAAAAAAAAAAAAAAAAAS59UDEeZT4VCjUv/n9Om/6HU
+ p/81eTz8MXM4SwAAAAApZy/9JmEr3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEudVQxImFGFcrJ6/6na
+ sP94tYD/OoVC/DiEP0sAAAAAL3E1/S11MtwAAAAAAAAAAAAAAABWr2L/VKxf/1GoXP9Upl7/eruD/6bX
+ rv+s3LP/VJtc/2uwcv9SnVr/OYVA/1ScWv9QmFf/LXYz0QAAAAAAAAAAWLNk/7jjv/+24r7/teG9/7Pg
+ u/+y37n/mc+i/0+cWP+NzZX/i8uT/4jKj/+FyIz/gsWJ/1KZWP8udzTJAAAAAFm0Zf+548H/uOPA/7fi
+ v/+24b3/kMuY/2Subf9grGn/iMmQ/4/PmP+NzJT/isuR/4bJjv9Wnl3/M305xAAAAABZtGX/WbRl/1m0
+ Zf9XsWP/Va5h/1OqXsZRp1xAU6lckE+kWNhLn1T/V6Vf/3K3ev9ep2b/O4lCzwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEygVThIm1D3RJVM2QAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATaFWuEmcUQYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA//+cQf/nnEH/x5xBAAOcQQABnEEAAZxBAAOcQeAnnEHgJ5xBAAOcQQABnEEAAZxBAAOcQf/H
+ nEH/55xB//+cQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.cs b/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.cs
new file mode 100644
index 000000000..89d820847
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.cs
@@ -0,0 +1,401 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+using System.IO;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class ScreenshotManager : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.MenuStrip msMain;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFile;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileSaveAll;
+ internal System.Windows.Forms.ToolStripMenuItem mMenFileRemoveAll;
+ internal System.Windows.Forms.ContextMenuStrip cMenScreenshot;
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ToolStripMenuItem cMenScreenshotCopy;
+ internal System.Windows.Forms.ToolStripMenuItem cMenScreenshotSave;
+ internal System.Windows.Forms.SaveFileDialog dlgSaveSingleImage;
+ internal System.Windows.Forms.FolderBrowserDialog dlgSaveAllImages;
+ internal System.Windows.Forms.FlowLayoutPanel flpScreenshots;
+
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(ScreenshotManager_Load);
+ this.flpScreenshots = new System.Windows.Forms.FlowLayoutPanel();
+ this.msMain = new System.Windows.Forms.MenuStrip();
+ this.mMenFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFile.DropDownOpening += new System.EventHandler(this.mMenFile_DropDownOpening);
+ this.mMenFileSaveAll = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileSaveAll.Click += new System.EventHandler(this.mMenFileSaveAll_Click);
+ this.mMenFileRemoveAll = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenFileRemoveAll.Click += new System.EventHandler(this.mMenFileRemoveAll_Click);
+ this.cMenScreenshot = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.cMenScreenshotCopy = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenScreenshotCopy.Click += new System.EventHandler(this.cMenScreenshotCopy_Click);
+ this.cMenScreenshotSave = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenScreenshotSave.Click += new System.EventHandler(this.cMenScreenshotSave_Click);
+ this.dlgSaveSingleImage = new System.Windows.Forms.SaveFileDialog();
+ this.dlgSaveAllImages = new System.Windows.Forms.FolderBrowserDialog();
+ this.msMain.SuspendLayout();
+ this.cMenScreenshot.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //flpScreenshots
+ //
+ this.flpScreenshots.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.flpScreenshots.AutoScroll = true;
+ this.flpScreenshots.Location = new System.Drawing.Point(0, 26);
+ this.flpScreenshots.Name = "flpScreenshots";
+ this.flpScreenshots.Size = new System.Drawing.Size(542, 296);
+ this.flpScreenshots.TabIndex = 0;
+ //
+ //msMain
+ //
+ this.msMain.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenFile});
+ this.msMain.Location = new System.Drawing.Point(0, 0);
+ this.msMain.Name = "msMain";
+ this.msMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.msMain.Size = new System.Drawing.Size(542, 24);
+ this.msMain.TabIndex = 1;
+ this.msMain.Text = "MenuStrip1";
+ //
+ //mMenFile
+ //
+ this.mMenFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenFileSaveAll, this.mMenFileRemoveAll});
+ this.mMenFile.Image = global::My.Resources.Resources.File;
+ this.mMenFile.Name = "mMenFile";
+ this.mMenFile.Size = new System.Drawing.Size(51, 20);
+ this.mMenFile.Text = "&File";
+ //
+ //mMenFileSaveAll
+ //
+ this.mMenFileSaveAll.Image = global::My.Resources.Resources.Screenshot_Save;
+ this.mMenFileSaveAll.Name = "mMenFileSaveAll";
+ this.mMenFileSaveAll.Size = new System.Drawing.Size(128, 22);
+ this.mMenFileSaveAll.Text = "Save All";
+ //
+ //mMenFileRemoveAll
+ //
+ this.mMenFileRemoveAll.Image = global::My.Resources.Resources.Screenshot_Delete;
+ this.mMenFileRemoveAll.Name = "mMenFileRemoveAll";
+ this.mMenFileRemoveAll.Size = new System.Drawing.Size(128, 22);
+ this.mMenFileRemoveAll.Text = "Remove All";
+ //
+ //cMenScreenshot
+ //
+ this.cMenScreenshot.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenScreenshotCopy, this.cMenScreenshotSave});
+ this.cMenScreenshot.Name = "cMenScreenshot";
+ this.cMenScreenshot.Size = new System.Drawing.Size(100, 48);
+ //
+ //cMenScreenshotCopy
+ //
+ this.cMenScreenshotCopy.Image = global::My.Resources.Resources.Screenshot_Copy;
+ this.cMenScreenshotCopy.Name = "cMenScreenshotCopy";
+ this.cMenScreenshotCopy.Size = new System.Drawing.Size(99, 22);
+ this.cMenScreenshotCopy.Text = "Copy";
+ //
+ //cMenScreenshotSave
+ //
+ this.cMenScreenshotSave.Image = global::My.Resources.Resources.Screenshot_Save;
+ this.cMenScreenshotSave.Name = "cMenScreenshotSave";
+ this.cMenScreenshotSave.Size = new System.Drawing.Size(99, 22);
+ this.cMenScreenshotSave.Text = "Save";
+ //
+ //dlgSaveSingleImage
+ //
+ this.dlgSaveSingleImage.Filter = "Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group Fi" +
+ "le (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Ne" +
+ "twork Graphics File (.png)|*.png";
+ this.dlgSaveSingleImage.FilterIndex = 4;
+ //
+ //ScreenshotManager
+ //
+ this.ClientSize = new System.Drawing.Size(542, 323);
+ this.Controls.Add(this.flpScreenshots);
+ this.Controls.Add(this.msMain);
+ this.HideOnClose = true;
+ this.Icon = global::My.Resources.Resources.Screenshot_Icon;
+ this.MainMenuStrip = this.msMain;
+ this.Name = "ScreenshotManager";
+ this.TabText = "Screenshots";
+ this.Text = "Screenshots";
+ this.msMain.ResumeLayout(false);
+ this.msMain.PerformLayout();
+ this.cMenScreenshot.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+#endregion
+
+#region Form Stuff
+ private void ScreenshotManager_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private void ApplyLanguage()
+ {
+ mMenFile.Text = My.Language.strMenuFile;
+ mMenFileSaveAll.Text = My.Language.strSaveAll;
+ mMenFileRemoveAll.Text = My.Language.strRemoveAll;
+ cMenScreenshotCopy.Text = My.Language.strMenuCopy;
+ cMenScreenshotSave.Text = My.Language.strSave;
+ dlgSaveSingleImage.Filter = My.Language.strSaveImageFilter;
+ TabText = My.Language.strScreenshots;
+ Text = My.Language.strScreenshots;
+ }
+#endregion
+
+#region Public Methods
+ public ScreenshotManager(DockContent Panel)
+ {
+ this.WindowType = Type.ScreenshotManager;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ }
+
+ public void AddScreenshot(Image Screenshot)
+ {
+ try
+ {
+ PictureBox nPB = new PictureBox();
+ nPB.MouseDown += this.pbScreenshot_MouseDown;
+
+ nPB.Parent = this.flpScreenshots;
+ nPB.SizeMode = PictureBoxSizeMode.StretchImage;
+ nPB.BorderStyle = BorderStyle.FixedSingle;
+ nPB.ContextMenuStrip = this.cMenScreenshot;
+ nPB.Image = Screenshot;
+ nPB.Size = new Size(100, 100); //New Size((Screenshot.Width / 100) * 20, (Screenshot.Height / 100) * 20)
+ nPB.Show();
+
+ Button nBtn = new Button();
+ nBtn.Click += btnCloseScreenshot_Click;
+
+ nBtn.Parent = nPB;
+ nBtn.FlatStyle = FlatStyle.Flat;
+ nBtn.Text = "×";
+ nBtn.Size = new Size(22, 22);
+ nBtn.Location = new Point(nPB.Width - nBtn.Width, -1);
+ nBtn.Show();
+
+ this.Show(frmMain.Default.pnlDock);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddScreenshot (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Methods
+ private void pbScreenshot_MouseDown(System.Object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ this.cMenScreenshot.Tag = sender;
+
+ if (e.Button == System.Windows.Forms.MouseButtons.Left)
+ {
+ this.OpenScreenshot(sender);
+ }
+ }
+
+ private void pbScreenshotOpen_MouseDown(System.Object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (e.Button == System.Windows.Forms.MouseButtons.Left)
+ {
+ this.CloseOpenedScreenshot(sender.Parent);
+ }
+ }
+
+ private void CloseOpenedScreenshot(Form form)
+ {
+ form.Close();
+ }
+
+ private void OpenScreenshot(PictureBox sender)
+ {
+ try
+ {
+ Image mImage = sender.Image;
+
+ Form nForm = new Form();
+ nForm.StartPosition = FormStartPosition.CenterParent;
+ nForm.ShowInTaskbar = false;
+ nForm.ShowIcon = false;
+ nForm.MaximizeBox = false;
+ nForm.MinimizeBox = false;
+ nForm.Width = mImage.Width + 2;
+ nForm.Height = mImage.Height + 2;
+ nForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+
+ PictureBox nPB = new PictureBox();
+ nPB.Parent = nForm;
+ nPB.BorderStyle = BorderStyle.FixedSingle;
+ nPB.Location = new Point(0, 0);
+ nPB.SizeMode = PictureBoxSizeMode.AutoSize;
+ nPB.Anchor = (System.Windows.Forms.AnchorStyles) (AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Top);
+ nPB.Image = mImage;
+ nPB.ContextMenuStrip = this.cMenScreenshot;
+ nPB.Show();
+
+ nPB.MouseDown += this.pbScreenshotOpen_MouseDown;
+
+ nForm.ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "OpenScreenshot (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void btnCloseScreenshot_Click(System.Object sender, System.EventArgs e)
+ {
+ try
+ {
+ sender.Parent.Dispose();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "btnCloseScreenshot_Click (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void mMenFileRemoveAll_Click(System.Object sender, System.EventArgs e)
+ {
+ this.RemoveAllImages();
+ }
+
+ private void RemoveAllImages()
+ {
+ this.flpScreenshots.Controls.Clear();
+ }
+
+ private void mMenFileSaveAll_Click(System.Object sender, System.EventArgs e)
+ {
+ this.SaveAllImages();
+ }
+
+ private void SaveAllImages()
+ {
+ try
+ {
+ int pCount = 1;
+
+ if (this.dlgSaveAllImages.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ foreach (string fPath in Directory.GetFiles(this.dlgSaveAllImages.SelectedPath, "Screenshot_*", SearchOption.TopDirectoryOnly))
+ {
+ FileInfo f = new FileInfo(fPath);
+
+ string fCount = f.Name;
+ fCount = fCount.Replace(f.Extension, "");
+ fCount = fCount.Replace("Screenshot_", "");
+
+ pCount = (int) (double.Parse(fCount) + 1);
+ }
+
+ foreach (System.Windows.Forms.Control ctrl in this.flpScreenshots.Controls)
+ {
+ if (ctrl is PictureBox)
+ {
+ (ctrl as PictureBox).Image.Save(this.dlgSaveAllImages.SelectedPath + "\\Screenshot_" + Tools.Misc.LeadingZero(System.Convert.ToString(pCount)) +".png", System.Drawing.Imaging.ImageFormat.Png);
+ pCount++;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveAllImages (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void cMenScreenshotCopy_Click(System.Object sender, System.EventArgs e)
+ {
+ this.CopyImageToClipboard();
+ }
+
+ private void CopyImageToClipboard()
+ {
+ try
+ {
+ Clipboard.SetImage((cMenScreenshot.Tag as PictureBox).Image);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CopyImageToClipboard (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void cMenScreenshotSave_Click(System.Object sender, System.EventArgs e)
+ {
+ this.SaveSingleImage();
+ }
+
+ private void SaveSingleImage()
+ {
+ try
+ {
+ if (this.dlgSaveSingleImage.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ switch (this.dlgSaveSingleImage.FileName.Substring(this.dlgSaveSingleImage.FileName.LastIndexOf(".") + 1).ToLower())
+ {
+ case "gif":
+ (this.cMenScreenshot.Tag as PictureBox).Image.Save(this.dlgSaveSingleImage.FileName, System.Drawing.Imaging.ImageFormat.Gif);
+ break;
+ case "jpeg":
+ (this.cMenScreenshot.Tag as PictureBox).Image.Save(this.dlgSaveSingleImage.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
+ break;
+ case "jpg":
+ (this.cMenScreenshot.Tag as PictureBox).Image.Save(this.dlgSaveSingleImage.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
+ break;
+ case "png":
+ (this.cMenScreenshot.Tag as PictureBox).Image.Save(this.dlgSaveSingleImage.FileName, System.Drawing.Imaging.ImageFormat.Png);
+ break;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveSingleImage (UI.Window.ScreenshotManager) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void mMenFile_DropDownOpening(object sender, System.EventArgs e)
+ {
+ if (this.flpScreenshots.Controls.Count < 1)
+ {
+ this.mMenFileSaveAll.Enabled = false;
+ this.mMenFileRemoveAll.Enabled = false;
+ }
+ else
+ {
+ this.mMenFileSaveAll.Enabled = true;
+ this.mMenFileRemoveAll.Enabled = true;
+ }
+ }
+#endregion
+
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.resx b/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.resx
new file mode 100644
index 000000000..93b153caa
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.ScreenshotManager.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 19, 45
+
+
+ 146, 16
+
+
+ 146, 45
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Sessions.Designer.cs b/mRemoteV1/CS/UI/UI.Window.Sessions.Designer.cs
new file mode 100644
index 000000000..319a469cc
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Sessions.Designer.cs
@@ -0,0 +1,124 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Wi
+ {
+ namespace Window
+ {
+ public partial class Sessions
+ {
+#region Windows Form Designer generated code
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.ToolStripMenuItem sessionMenuRetrieve;
+ internal System.Windows.Forms.ToolStripMenuItem sessionMenuLogoff;
+ internal System.Windows.Forms.ListView sessionList;
+
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(Sessions_Load);
+ System.Windows.Forms.ContextMenuStrip sessionMenu = default(System.Windows.Forms.ContextMenuStrip);
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Sessions));
+ this.sessionMenuRetrieve = new System.Windows.Forms.ToolStripMenuItem();
+ this.sessionMenuRetrieve.Click += new System.EventHandler(this.sessionMenuRetrieve_Click);
+ this.sessionMenuLogoff = new System.Windows.Forms.ToolStripMenuItem();
+ this.sessionMenuLogoff.Click += new System.EventHandler(this.sessionMenuLogoff_Click);
+ this.sessionList = new System.Windows.Forms.ListView();
+ this.sessionUsernameColumn = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.sessionActivityColumn = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ this.sessionTypeColumn = (System.Windows.Forms.ColumnHeader) (new System.Windows.Forms.ColumnHeader());
+ sessionMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+ sessionMenu.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //sessionMenu
+ //
+ sessionMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.sessionMenuRetrieve, this.sessionMenuLogoff});
+ sessionMenu.Name = "cMenSession";
+ sessionMenu.Size = new System.Drawing.Size(153, 70);
+ sessionMenu.Opening += this.menuSession_Opening;
+ //
+ //sessionMenuRetrieve
+ //
+ this.sessionMenuRetrieve.Image = global::My.Resources.Resources.Refresh;
+ this.sessionMenuRetrieve.Name = "sessionMenuRetrieve";
+ this.sessionMenuRetrieve.Size = new System.Drawing.Size(152, 22);
+ this.sessionMenuRetrieve.Text = "Retrieve";
+ //
+ //sessionMenuLogoff
+ //
+ this.sessionMenuLogoff.Image = global::My.Resources.Resources.Session_LogOff;
+ this.sessionMenuLogoff.Name = "sessionMenuLogoff";
+ this.sessionMenuLogoff.Size = new System.Drawing.Size(152, 22);
+ this.sessionMenuLogoff.Text = global::mRemoteNG.My.Language.strLogOff;
+ //
+ //sessionList
+ //
+ this.sessionList.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.sessionList.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.sessionList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {this.sessionUsernameColumn, this.sessionActivityColumn, this.sessionTypeColumn});
+ this.sessionList.ContextMenuStrip = sessionMenu;
+ this.sessionList.FullRowSelect = true;
+ this.sessionList.GridLines = true;
+ this.sessionList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+ this.sessionList.Location = new System.Drawing.Point(0, -1);
+ this.sessionList.MultiSelect = false;
+ this.sessionList.Name = "sessionList";
+ this.sessionList.ShowGroups = false;
+ this.sessionList.Size = new System.Drawing.Size(242, 174);
+ this.sessionList.TabIndex = 0;
+ this.sessionList.UseCompatibleStateImageBehavior = false;
+ this.sessionList.View = System.Windows.Forms.View.Details;
+ //
+ //sessionUsernameColumn
+ //
+ this.sessionUsernameColumn.Text = global::mRemoteNG.My.Language.strColumnUsername;
+ this.sessionUsernameColumn.Width = 80;
+ //
+ //sessionActivityColumn
+ //
+ this.sessionActivityColumn.Text = global::mRemoteNG.My.Language.strActivity;
+ //
+ //sessionTypeColumn
+ //
+ this.sessionTypeColumn.Text = global::mRemoteNG.My.Language.strType;
+ this.sessionTypeColumn.Width = 80;
+ //
+ //Sessions
+ //
+ this.ClientSize = new System.Drawing.Size(242, 173);
+ this.Controls.Add(this.sessionList);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.HideOnClose = true;
+ this.Icon = (System.Drawing.Icon) (resources.GetObject("$this.Icon"));
+ this.Name = "Sessions";
+ this.TabText = global::mRemoteNG.My.Language.strMenuSessions;
+ this.Text = "Sessions";
+ sessionMenu.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+ internal System.Windows.Forms.ColumnHeader sessionUsernameColumn;
+ internal System.Windows.Forms.ColumnHeader sessionActivityColumn;
+ internal System.Windows.Forms.ColumnHeader sessionTypeColumn;
+#endregion
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Sessions.cs b/mRemoteV1/CS/UI/UI.Window.Sessions.cs
new file mode 100644
index 000000000..c57f2a4a1
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Sessions.cs
@@ -0,0 +1,375 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.Threading;
+using mRemoteNG.My;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class Sessions : Base
+ {
+#region Private Fields
+ private Thread _getSessionsThread;
+ private bool _retrieved = false;
+#endregion
+
+#region Public Methods
+ public Sessions(DockContent panel)
+ {
+ WindowType = Type.Sessions;
+ DockPnl = panel;
+ InitializeComponent();
+ }
+
+ public void GetSessions(bool Auto = false)
+ {
+ ClearList();
+ if (Auto)
+ {
+ _retrieved = false;
+ if (!Settings.AutomaticallyGetSessionInfo)
+ {
+ return ;
+ }
+ }
+
+ try
+ {
+ mRemoteNG.Connection.Info connectionInfo = mRemoteNG.Tree.Node.SelectedNode.Tag as mRemoteNG.Connection.Info;
+ if (connectionInfo == null)
+ {
+ return ;
+ }
+
+ if (!(connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP | connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.ICA))
+ {
+ return ;
+ }
+
+ BackgroundData data = new BackgroundData();
+ data.Hostname = connectionInfo.Hostname;
+ data.Username = connectionInfo.Username;
+ data.Password = connectionInfo.Password;
+ data.Domain = connectionInfo.Domain;
+
+ if (Settings.EmptyCredentials == "custom")
+ {
+ if (string.IsNullOrEmpty(data.Username))
+ {
+ data.Username = Settings.DefaultUsername;
+ }
+
+ if (string.IsNullOrEmpty(data.Password))
+ {
+ data.Password = Security.Crypt.Decrypt(Settings.DefaultPassword, App.Info.General.EncryptionKey);
+ }
+
+ if (string.IsNullOrEmpty(data.Domain))
+ {
+ data.Domain = Settings.DefaultDomain;
+ }
+ }
+
+ if (_getSessionsThread != null)
+ {
+ if (_getSessionsThread.IsAlive)
+ {
+ _getSessionsThread.Abort();
+ }
+ }
+ _getSessionsThread = new Thread(new System.Threading.ThreadStart(GetSessionsBackground));
+ _getSessionsThread.SetApartmentState(ApartmentState.STA);
+ _getSessionsThread.IsBackground = true;
+ _getSessionsThread.Start(data);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Sessions.GetSessions() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void KillSession()
+ {
+ if (sessionList.SelectedItems.Count == 0)
+ {
+ return ;
+ }
+
+ mRemoteNG.Connection.Info connectionInfo = mRemoteNG.Tree.Node.SelectedNode.Tag as mRemoteNG.Connection.Info;
+ if (connectionInfo == null)
+ {
+ return ;
+ }
+
+ if (!(connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP))
+ {
+ return ;
+ }
+
+ foreach (ListViewItem lvItem in sessionList.SelectedItems)
+ {
+ KillSession(connectionInfo.Hostname, connectionInfo.Username, connectionInfo.Password, connectionInfo.Domain, System.Convert.ToString(lvItem.Tag));
+ }
+ }
+
+ public void KillSession(string hostname, string username, string password, string domain, string sessionId)
+ {
+ try
+ {
+ BackgroundData data = new BackgroundData();
+ data.Hostname = hostname;
+ data.Username = username;
+ data.Password = password;
+ data.Domain = domain;
+ data.SessionId = long.Parse(sessionId);
+
+ Thread thread = new Thread(new System.Threading.ThreadStart(KillSessionBackground));
+ thread.SetApartmentState(ApartmentState.STA);
+ thread.IsBackground = true;
+ thread.Start(data);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Sessions.KillSession() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Private Methods
+#region Form Stuff
+ public void Sessions_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+ }
+
+ private void ApplyLanguage()
+ {
+ TabText = Language.strMenuSessions;
+ Text = Language.strMenuSessions;
+ sessionActivityColumn.Text = Language.strActivity;
+ sessionMenuLogoff.Text = Language.strLogOff;
+ sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve;
+ sessionTypeColumn.Text = Language.strType;
+ sessionUsernameColumn.Text = Language.strColumnUsername;
+ }
+#endregion
+
+ private void GetSessionsBackground(object dataObject)
+ {
+ BackgroundData data = dataObject as BackgroundData;
+ if (data == null)
+ {
+ return ;
+ }
+
+ Security.Impersonator impersonator = new Security.Impersonator();
+ mRemoteNG.Connection.Protocol.RDP.TerminalSessions terminalSessions = new mRemoteNG.Connection.Protocol.RDP.TerminalSessions();
+ long serverHandle = 0;
+ try
+ {
+ impersonator.StartImpersonation(data.Domain, data.Username, data.Password);
+
+ serverHandle = terminalSessions.OpenConnection(data.Hostname);
+ if (serverHandle == 0)
+ {
+ return ;
+ }
+
+ GetSessions(terminalSessions, serverHandle);
+
+ _retrieved = true;
+ }
+ catch (ThreadAbortException)
+ {
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSessionGetFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ finally
+ {
+ impersonator.StopImpersonation();
+ if (!(serverHandle == 0))
+ {
+ terminalSessions.CloseConnection(serverHandle);
+ }
+ }
+ }
+
+ // Get sessions from an already impersonated and connected TerminalSessions object
+ private void GetSessions(mRemoteNG.Protocol.Protocol.RDP.TerminalSessions terminalSessions, long serverHandle)
+ {
+ mRemoteNG.Connection.Protocol.RDP.SessionsCollection rdpSessions = terminalSessions.GetSessions(serverHandle);
+ foreach (mRemoteNG.Connection.Protocol.RDP.Session session in rdpSessions)
+ {
+ ListViewItem item = new ListViewItem();
+ item.Tag = session.SessionId;
+ item.Text = session.SessionUser;
+ item.SubItems.Add(session.SessionState);
+ item.SubItems.Add(session.SessionName.Replace(Constants.vbNewLine, ""));
+ AddToList(item);
+ }
+ }
+
+ private void KillSessionBackground(object dataObject)
+ {
+ BackgroundData data = dataObject as BackgroundData;
+ if (data == null)
+ {
+ return ;
+ }
+
+ Security.Impersonator impersonator = new Security.Impersonator();
+ mRemoteNG.Connection.Protocol.RDP.TerminalSessions terminalSessions = new mRemoteNG.Connection.Protocol.RDP.TerminalSessions();
+ long serverHandle = 0;
+ try
+ {
+ if (string.IsNullOrEmpty(data.Username) || string.IsNullOrEmpty(data.Password))
+ {
+ return ;
+ }
+
+ impersonator.StartImpersonation(data.Domain, data.Username, data.Password);
+
+ serverHandle = terminalSessions.OpenConnection(data.Hostname);
+ if (!(serverHandle == 0))
+ {
+ terminalSessions.KillSession(serverHandle, data.SessionId);
+ }
+
+ ClearList();
+ GetSessions(terminalSessions, serverHandle);
+
+ _retrieved = true;
+ }
+ catch (ThreadAbortException)
+ {
+
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSessionKillFailed + Constants.vbNewLine + ex.Message, true);
+ }
+ finally
+ {
+ impersonator.StopImpersonation();
+ if (!(serverHandle == 0))
+ {
+ terminalSessions.CloseConnection(serverHandle);
+ }
+ }
+ }
+
+ delegate void AddToListCallback(ListViewItem item);
+ private void AddToList(ListViewItem item)
+ {
+ if (sessionList.InvokeRequired)
+ {
+ AddToListCallback callback = new AddToListCallback(AddToList);
+ sessionList.Invoke(callback, new object[] {item});
+ }
+ else
+ {
+ sessionList.Items.Add(item);
+ }
+ }
+
+ delegate void ClearListCallback();
+ private void ClearList()
+ {
+ if (sessionList.InvokeRequired)
+ {
+ ClearListCallback callback = new ClearListCallback(ClearList);
+ sessionList.Invoke(callback);
+ }
+ else
+ {
+ sessionList.Items.Clear();
+ }
+ }
+
+ private void menuSession_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ mRemoteNG.Connection.Info connectionInfo = default(mRemoteNG.Connection.Info);
+ if (mRemoteNG.Tree.Node.TreeView == null || mRemoteNG.Tree.Node.SelectedNode == null)
+ {
+ connectionInfo = null;
+ }
+ else
+ {
+ connectionInfo = mRemoteNG.Tree.Node.SelectedNode.Tag as mRemoteNG.Connection.Info;
+ }
+
+ if (connectionInfo == null)
+ {
+ sessionMenuLogoff.Enabled = false;
+ sessionMenuRetrieve.Enabled = false;
+ sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve;
+ return ;
+ }
+
+ if (connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP & sessionList.SelectedItems.Count > 0)
+ {
+ sessionMenuLogoff.Enabled = true;
+ }
+ else
+ {
+ sessionMenuLogoff.Enabled = false;
+ }
+
+ if (connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP | connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.ICA)
+ {
+ sessionMenuRetrieve.Enabled = true;
+ }
+ else
+ {
+ sessionMenuRetrieve.Enabled = false;
+ }
+
+ if (!_retrieved)
+ {
+ sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve;
+ }
+ else
+ {
+ sessionMenuRetrieve.Text = Language.strRefresh;
+ }
+ }
+
+ public void sessionMenuRetrieve_Click(System.Object sender, EventArgs e)
+ {
+ GetSessions();
+ }
+
+ public void sessionMenuLogoff_Click(System.Object sender, EventArgs e)
+ {
+ KillSession();
+ }
+#endregion
+
+#region Private Classes
+ private class BackgroundData
+ {
+ public string Hostname;
+ public string Username;
+ public string Password;
+ public string Domain;
+ public long SessionId;
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Sessions.resx b/mRemoteV1/CS/UI/UI.Window.Sessions.resx
new file mode 100644
index 000000000..e42d30c83
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Sessions.resx
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+ 14, 16
+
+
+ 49
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABtqNwNW4y4K0lEPoJKSkrgVVVV709PT/dKSkr3U1NT9EBAQN1KSEhkXprRKm+n2g0AAAAAAAAAAAAA
+ AAAAAAAAU5jbr0Z7sv9gWVL/eXl5/4eHh/95eXn/Xl5e/4qKiv9ubm7/SUhH/0aIyf9YmNenAAAAAAAA
+ AAAAAAAAAAAAADGN6f9/qM3/fHdy/4yMjP9tbW3/TU1N/0hISP9nZ2f/dXV1/2dmZP9+t+v/K4He+gAA
+ AAAAAAAAAAAAAAAAAABCX3uuf42a/4WDgv9ZWVn/Wlpa/5GRkf+KiYn/TExM/1FRUf93dnX/a36P/z9Z
+ dqEAAAAAAAAAAAAAAAAAAAAAUk1HHG9tasFOTk//dXR0/2ZlZP+wsLD/lpaW/19eXf9wcG//VlZX/3JJ
+ N/SkSynkrkYd1ppWPWtklMMYbKfcCQAAAABLSkkoRD88vnh7ff1udXv/Y4er/1t4lP9xdXj/bm1t/4lp
+ Sf/knFT/7aZX/9+FQP+XTTvlR323y2Cg2XUAAAAAAAAAAFhAM0tFbJP0lsbz/7LZ/f+53v//jb3o/1Nn
+ dv/nmlP//6RY//+nVv//qFz/z3pS/4Ocwf8zi+L8AAAAAAAAAAAsRWRmgKrU/7vc+P+q0vj/msXu/7jZ
+ 9/9fjr3/26Bl//6oWv/9nlP//5VG/++bZf+aobj/RnGn2gAAAAAAAAAABTVrezxcgf9zl7v/X4at/zZh
+ iv9QdJn/I0Vm/8+2c///wFv//7JS///Bg//4tZD/rksk3pI/DzsAAAAAAAAAAC9Jc3wjTYD/FUZ9/x1L
+ e/8OO2z/GkVx/wgoTP9vgob/go6L/5qclv/9xKD/vVUw3Zs4BUMAAAAAAAAAAAAAAABiZGk0PVZ32yNV
+ jf8VTYr/IFSK/w47av9JY33/i7jl/5TC8P+Buu//WW2K94g1CmYAAAAAAAAAAAAAAAAAAAAAYmVoAVtg
+ Z1khR3rgDD9/6gw8dussS2/5oLvU/6rR9P+s1Pr/t9n4/3yy4v5VU2FkAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAALTJQcTXmq/cXe9v+Rv+3/ZI63/3SZvv90lbT/MnKsggAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAACUGQIBlQlv9MfrH/SHqv/xNEef8MO27/By9c/y5WgIYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7dg8PQYLGBk2W/wdMjf8PUZH/EUyJ/w04Z/QbOVhPAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzJlJxNCgMERT5b3D0uO9xFBfOkUMldpEStGBAAA
+ AAAAAAAAAA+cQQAPnEEAD5xBAA+cQQAAnEGAAJxBwACcQcAAnEHAAJxBwAGcQcADnEHAA5xB/AOcQfwD
+ nEH8A5xB/gOcQQ==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Tree.Designer.cs b/mRemoteV1/CS/UI/UI.Window.Tree.Designer.cs
new file mode 100644
index 000000000..6aa27e3f2
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Tree.Designer.cs
@@ -0,0 +1,516 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class Tree : Base
+ {
+#region Windows Form Designer generated code
+ private System.ComponentModel.Container components = null;
+ internal System.Windows.Forms.TextBox txtSearch;
+ internal System.Windows.Forms.Panel pnlConnections;
+ internal System.Windows.Forms.ImageList imgListTree;
+ internal System.Windows.Forms.MenuStrip msMain;
+ internal System.Windows.Forms.ToolStripMenuItem mMenView;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewExpandAllFolders;
+ internal System.Windows.Forms.ToolStripMenuItem mMenViewCollapseAllFolders;
+ internal System.Windows.Forms.ContextMenuStrip cMenTree;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeAddConnection;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeAddFolder;
+ internal System.Windows.Forms.ToolStripSeparator cMenTreeSep1;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnect;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptions;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptionsConnectToConsoleSession;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptionsNoCredentials;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptionsConnectInFullscreen;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeDisconnect;
+ internal System.Windows.Forms.ToolStripSeparator cMenTreeSep2;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeToolsTransferFile;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeToolsSort;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeToolsSortAscending;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeToolsSortDescending;
+ internal System.Windows.Forms.ToolStripSeparator cMenTreeSep3;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeRename;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeDelete;
+ internal System.Windows.Forms.ToolStripSeparator cMenTreeSep4;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeMoveUp;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeMoveDown;
+ internal System.Windows.Forms.PictureBox PictureBox1;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeToolsExternalApps;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeDuplicate;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptionsChoosePanelBeforeConnecting;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeConnectWithOptionsDontConnectToConsoleSession;
+ internal System.Windows.Forms.ToolStripMenuItem mMenSortAscending;
+ internal System.Windows.Forms.ToolStripMenuItem mMenAddConnection;
+ internal System.Windows.Forms.ToolStripMenuItem mMenAddFolder;
+ public System.Windows.Forms.TreeView tvConnections;
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Load += new System.EventHandler(Tree_Load);
+ System.Windows.Forms.TreeNode TreeNode1 = new System.Windows.Forms.TreeNode("Connections");
+ this.tvConnections = new System.Windows.Forms.TreeView();
+ this.tvConnections.BeforeLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.tvConnections_BeforeLabelEdit);
+ this.tvConnections.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.tvConnections_AfterLabelEdit);
+ this.tvConnections.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvConnections_AfterSelect);
+ this.tvConnections.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvConnections_NodeMouseClick);
+ this.tvConnections.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvConnections_NodeMouseDoubleClick);
+ this.tvConnections.MouseMove += new System.Windows.Forms.MouseEventHandler(this.tvConnections_MouseMove);
+ this.tvConnections.DragDrop += new System.Windows.Forms.DragEventHandler(this.tvConnections_DragDrop);
+ this.tvConnections.DragEnter += new System.Windows.Forms.DragEventHandler(this.tvConnections_DragEnter);
+ this.tvConnections.DragOver += new System.Windows.Forms.DragEventHandler(this.tvConnections_DragOver);
+ this.tvConnections.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.tvConnections_ItemDrag);
+ this.tvConnections.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tvConnections_KeyPress);
+ this.tvConnections.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tvConnections_KeyDown);
+ this.cMenTree = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.cMenTree.Opening += new System.ComponentModel.CancelEventHandler(this.cMenTree_DropDownOpening);
+ this.cMenTreeConnect = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnect.Click += new System.EventHandler(this.cMenTreeConnect_Click);
+ this.cMenTreeConnectWithOptions = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession.Click += new System.EventHandler(this.cMenTreeConnectWithOptionsConnectToConsoleSession_Click);
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Click += new System.EventHandler(this.cMenTreeConnectWithOptionsDontConnectToConsoleSession_Click);
+ this.cMenTreeConnectWithOptionsConnectInFullscreen = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsConnectInFullscreen.Click += new System.EventHandler(this.cMenTreeConnectWithOptionsConnectInFullscreen_Click);
+ this.cMenTreeConnectWithOptionsNoCredentials = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsNoCredentials.Click += new System.EventHandler(this.cMenTreeConnectWithOptionsNoCredentials_Click);
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Click += new System.EventHandler(this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting_Click);
+ this.cMenTreeDisconnect = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeDisconnect.Click += new System.EventHandler(this.cMenTreeDisconnect_Click);
+ this.cMenTreeSep1 = new System.Windows.Forms.ToolStripSeparator();
+ this.cMenTreeToolsExternalApps = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeToolsTransferFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeToolsTransferFile.Click += new System.EventHandler(this.cMenTreeToolsTransferFile_Click);
+ this.cMenTreeSep2 = new System.Windows.Forms.ToolStripSeparator();
+ this.cMenTreeDuplicate = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeDuplicate.Click += new System.EventHandler(this.cMenTreeDuplicate_Click);
+ this.cMenTreeRename = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeRename.Click += new System.EventHandler(this.cMenTreeRename_Click);
+ this.cMenTreeDelete = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeDelete.Click += new System.EventHandler(this.cMenTreeDelete_Click);
+ this.cMenTreeSep3 = new System.Windows.Forms.ToolStripSeparator();
+ this.cMenTreeImport = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeImportFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeImportFile.Click += new System.EventHandler(this.cMenTreeImportFile_Click);
+ this.cMenTreeImportActiveDirectory = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeImportActiveDirectory.Click += new System.EventHandler(this.cMenTreeImportActiveDirectory_Click);
+ this.cMenTreeImportPortScan = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeImportPortScan.Click += new System.EventHandler(this.cMenTreeImportPortScan_Click);
+ this.cMenTreeExportFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeExportFile.Click += new System.EventHandler(this.cMenTreeExportFile_Click);
+ this.cMenTreeSep4 = new System.Windows.Forms.ToolStripSeparator();
+ this.cMenTreeAddConnection = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeAddConnection.Click += new System.EventHandler(this.cMenTreeAddConnection_Click);
+ this.cMenTreeAddFolder = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeAddFolder.Click += new System.EventHandler(this.cMenTreeAddFolder_Click);
+ this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.cMenTreeToolsSort = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeToolsSortAscending = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeToolsSortAscending.Click += new System.EventHandler(this.cMenTreeToolsSortAscending_Click);
+ this.cMenTreeToolsSortDescending = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeToolsSortDescending.Click += new System.EventHandler(this.cMenTreeToolsSortDescending_Click);
+ this.cMenTreeMoveUp = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeMoveUp.Click += new System.EventHandler(this.cMenTreeMoveUp_Click);
+ this.cMenTreeMoveDown = new System.Windows.Forms.ToolStripMenuItem();
+ this.cMenTreeMoveDown.Click += new System.EventHandler(this.cMenTreeMoveDown_Click);
+ this.imgListTree = new System.Windows.Forms.ImageList(this.components);
+ this.pnlConnections = new System.Windows.Forms.Panel();
+ this.PictureBox1 = new System.Windows.Forms.PictureBox();
+ this.txtSearch = new System.Windows.Forms.TextBox();
+ this.txtSearch.GotFocus += new System.EventHandler(this.txtSearch_GotFocus);
+ this.txtSearch.LostFocus += new System.EventHandler(this.txtSearch_LostFocus);
+ this.txtSearch.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown);
+ this.txtSearch.TextChanged += new System.EventHandler(this.txtSearch_TextChanged);
+ this.msMain = new System.Windows.Forms.MenuStrip();
+ this.mMenAddConnection = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenAddConnection.Click += new System.EventHandler(this.cMenTreeAddConnection_Click);
+ this.mMenAddFolder = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenAddFolder.Click += new System.EventHandler(this.cMenTreeAddFolder_Click);
+ this.mMenView = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewExpandAllFolders = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewExpandAllFolders.Click += new System.EventHandler(this.mMenViewExpandAllFolders_Click);
+ this.mMenViewCollapseAllFolders = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenViewCollapseAllFolders.Click += new System.EventHandler(this.mMenViewCollapseAllFolders_Click);
+ this.mMenSortAscending = new System.Windows.Forms.ToolStripMenuItem();
+ this.mMenSortAscending.Click += new System.EventHandler(this.mMenSortAscending_Click);
+ this.cMenTree.SuspendLayout();
+ this.pnlConnections.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.PictureBox1).BeginInit();
+ this.msMain.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //tvConnections
+ //
+ this.tvConnections.AllowDrop = true;
+ this.tvConnections.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.tvConnections.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.tvConnections.ContextMenuStrip = this.cMenTree;
+ this.tvConnections.HideSelection = false;
+ this.tvConnections.ImageIndex = 0;
+ this.tvConnections.ImageList = this.imgListTree;
+ this.tvConnections.LabelEdit = true;
+ this.tvConnections.Location = new System.Drawing.Point(0, 0);
+ this.tvConnections.Name = "tvConnections";
+ TreeNode1.Name = "nodeRoot";
+ TreeNode1.Text = "Connections";
+ this.tvConnections.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {TreeNode1});
+ this.tvConnections.SelectedImageIndex = 0;
+ this.tvConnections.Size = new System.Drawing.Size(192, 410);
+ this.tvConnections.TabIndex = 20;
+ //
+ //cMenTree
+ //
+ this.cMenTree.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.cMenTree.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenTreeConnect, this.cMenTreeConnectWithOptions, this.cMenTreeDisconnect, this.cMenTreeSep1, this.cMenTreeToolsExternalApps, this.cMenTreeToolsTransferFile, this.cMenTreeSep2, this.cMenTreeDuplicate, this.cMenTreeRename, this.cMenTreeDelete, this.cMenTreeSep3, this.cMenTreeImport, this.cMenTreeExportFile, this.cMenTreeSep4, this.cMenTreeAddConnection, this.cMenTreeAddFolder, this.ToolStripSeparator1, this.cMenTreeToolsSort, this.cMenTreeMoveUp, this.cMenTreeMoveDown});
+ this.cMenTree.Name = "cMenTree";
+ this.cMenTree.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.cMenTree.Size = new System.Drawing.Size(187, 386);
+ //
+ //cMenTreeConnect
+ //
+ this.cMenTreeConnect.Image = global::My.Resources.Resources.Play;
+ this.cMenTreeConnect.Name = "cMenTreeConnect";
+ this.cMenTreeConnect.ShortcutKeys = (System.Windows.Forms.Keys) ((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.C);
+ this.cMenTreeConnect.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeConnect.Text = "Connect";
+ //
+ //cMenTreeConnectWithOptions
+ //
+ this.cMenTreeConnectWithOptions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenTreeConnectWithOptionsConnectToConsoleSession, this.cMenTreeConnectWithOptionsDontConnectToConsoleSession, this.cMenTreeConnectWithOptionsConnectInFullscreen, this.cMenTreeConnectWithOptionsNoCredentials, this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting});
+ this.cMenTreeConnectWithOptions.Name = "cMenTreeConnectWithOptions";
+ this.cMenTreeConnectWithOptions.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeConnectWithOptions.Text = "Connect (with options)";
+ //
+ //cMenTreeConnectWithOptionsConnectToConsoleSession
+ //
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession.Image = global::My.Resources.Resources.monitor_go;
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession.Name = "cMenTreeConnectWithOptionsConnectToConsoleSession";
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession.Size = new System.Drawing.Size(231, 22);
+ this.cMenTreeConnectWithOptionsConnectToConsoleSession.Text = "Connect to console session";
+ //
+ //cMenTreeConnectWithOptionsDontConnectToConsoleSession
+ //
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Image = global::My.Resources.Resources.monitor_delete;
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Name = "cMenTreeConnectWithOptionsDontConnectToConsoleSession";
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Size = new System.Drawing.Size(231, 22);
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Text = "Don\'t connect to console session";
+ this.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Visible = false;
+ //
+ //cMenTreeConnectWithOptionsConnectInFullscreen
+ //
+ this.cMenTreeConnectWithOptionsConnectInFullscreen.Image = global::My.Resources.Resources.arrow_out;
+ this.cMenTreeConnectWithOptionsConnectInFullscreen.Name = "cMenTreeConnectWithOptionsConnectInFullscreen";
+ this.cMenTreeConnectWithOptionsConnectInFullscreen.Size = new System.Drawing.Size(231, 22);
+ this.cMenTreeConnectWithOptionsConnectInFullscreen.Text = "Connect in fullscreen";
+ //
+ //cMenTreeConnectWithOptionsNoCredentials
+ //
+ this.cMenTreeConnectWithOptionsNoCredentials.Image = global::My.Resources.Resources.key_delete;
+ this.cMenTreeConnectWithOptionsNoCredentials.Name = "cMenTreeConnectWithOptionsNoCredentials";
+ this.cMenTreeConnectWithOptionsNoCredentials.Size = new System.Drawing.Size(231, 22);
+ this.cMenTreeConnectWithOptionsNoCredentials.Text = "Connect without credentials";
+ //
+ //cMenTreeConnectWithOptionsChoosePanelBeforeConnecting
+ //
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Image = global::My.Resources.Resources.Panels;
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Name = "cMenTreeConnectWithOptionsChoosePanelBeforeConnecting";
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Size = new System.Drawing.Size(231, 22);
+ this.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Text = "Choose panel before connecting";
+ //
+ //cMenTreeDisconnect
+ //
+ this.cMenTreeDisconnect.Image = global::My.Resources.Resources.Pause;
+ this.cMenTreeDisconnect.Name = "cMenTreeDisconnect";
+ this.cMenTreeDisconnect.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeDisconnect.Text = "Disconnect";
+ //
+ //cMenTreeSep1
+ //
+ this.cMenTreeSep1.Name = "cMenTreeSep1";
+ this.cMenTreeSep1.Size = new System.Drawing.Size(183, 6);
+ //
+ //cMenTreeToolsExternalApps
+ //
+ this.cMenTreeToolsExternalApps.Image = global::My.Resources.Resources.ExtApp;
+ this.cMenTreeToolsExternalApps.Name = "cMenTreeToolsExternalApps";
+ this.cMenTreeToolsExternalApps.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeToolsExternalApps.Text = "External Applications";
+ //
+ //cMenTreeToolsTransferFile
+ //
+ this.cMenTreeToolsTransferFile.Image = global::My.Resources.Resources.SSHTransfer;
+ this.cMenTreeToolsTransferFile.Name = "cMenTreeToolsTransferFile";
+ this.cMenTreeToolsTransferFile.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeToolsTransferFile.Text = "Transfer File (SSH)";
+ //
+ //cMenTreeSep2
+ //
+ this.cMenTreeSep2.Name = "cMenTreeSep2";
+ this.cMenTreeSep2.Size = new System.Drawing.Size(183, 6);
+ //
+ //cMenTreeDuplicate
+ //
+ this.cMenTreeDuplicate.Image = global::My.Resources.Resources.page_copy;
+ this.cMenTreeDuplicate.Name = "cMenTreeDuplicate";
+ this.cMenTreeDuplicate.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D);
+ this.cMenTreeDuplicate.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeDuplicate.Text = "Duplicate";
+ //
+ //cMenTreeRename
+ //
+ this.cMenTreeRename.Image = global::My.Resources.Resources.Rename;
+ this.cMenTreeRename.Name = "cMenTreeRename";
+ this.cMenTreeRename.ShortcutKeys = System.Windows.Forms.Keys.F2;
+ this.cMenTreeRename.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeRename.Text = "Rename";
+ //
+ //cMenTreeDelete
+ //
+ this.cMenTreeDelete.Image = global::My.Resources.Resources.Delete;
+ this.cMenTreeDelete.Name = "cMenTreeDelete";
+ this.cMenTreeDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.cMenTreeDelete.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeDelete.Text = "Delete";
+ //
+ //cMenTreeSep3
+ //
+ this.cMenTreeSep3.Name = "cMenTreeSep3";
+ this.cMenTreeSep3.Size = new System.Drawing.Size(183, 6);
+ //
+ //cMenTreeImport
+ //
+ this.cMenTreeImport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenTreeImportFile, this.cMenTreeImportActiveDirectory, this.cMenTreeImportPortScan});
+ this.cMenTreeImport.Name = "cMenTreeImport";
+ this.cMenTreeImport.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeImport.Text = "&Import";
+ //
+ //cMenTreeImportFile
+ //
+ this.cMenTreeImportFile.Name = "cMenTreeImportFile";
+ this.cMenTreeImportFile.Size = new System.Drawing.Size(213, 22);
+ this.cMenTreeImportFile.Text = "Import from &File...";
+ //
+ //cMenTreeImportActiveDirectory
+ //
+ this.cMenTreeImportActiveDirectory.Name = "cMenTreeImportActiveDirectory";
+ this.cMenTreeImportActiveDirectory.Size = new System.Drawing.Size(213, 22);
+ this.cMenTreeImportActiveDirectory.Text = "Import from &Active Directory...";
+ //
+ //cMenTreeImportPortScan
+ //
+ this.cMenTreeImportPortScan.Name = "cMenTreeImportPortScan";
+ this.cMenTreeImportPortScan.Size = new System.Drawing.Size(213, 22);
+ this.cMenTreeImportPortScan.Text = "Import from &Port Scan...";
+ //
+ //cMenTreeExportFile
+ //
+ this.cMenTreeExportFile.Name = "cMenTreeExportFile";
+ this.cMenTreeExportFile.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeExportFile.Text = "&Export to File...";
+ //
+ //cMenTreeSep4
+ //
+ this.cMenTreeSep4.Name = "cMenTreeSep4";
+ this.cMenTreeSep4.Size = new System.Drawing.Size(183, 6);
+ //
+ //cMenTreeAddConnection
+ //
+ this.cMenTreeAddConnection.Image = global::My.Resources.Resources.Connection_Add;
+ this.cMenTreeAddConnection.Name = "cMenTreeAddConnection";
+ this.cMenTreeAddConnection.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeAddConnection.Text = "New Connection";
+ //
+ //cMenTreeAddFolder
+ //
+ this.cMenTreeAddFolder.Image = global::My.Resources.Resources.Folder_Add;
+ this.cMenTreeAddFolder.Name = "cMenTreeAddFolder";
+ this.cMenTreeAddFolder.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeAddFolder.Text = "New Folder";
+ //
+ //ToolStripSeparator1
+ //
+ this.ToolStripSeparator1.Name = "ToolStripSeparator1";
+ this.ToolStripSeparator1.Size = new System.Drawing.Size(183, 6);
+ //
+ //cMenTreeToolsSort
+ //
+ this.cMenTreeToolsSort.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.cMenTreeToolsSortAscending, this.cMenTreeToolsSortDescending});
+ this.cMenTreeToolsSort.Name = "cMenTreeToolsSort";
+ this.cMenTreeToolsSort.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeToolsSort.Text = "Sort";
+ //
+ //cMenTreeToolsSortAscending
+ //
+ this.cMenTreeToolsSortAscending.Image = global::My.Resources.Resources.Sort_AZ;
+ this.cMenTreeToolsSortAscending.Name = "cMenTreeToolsSortAscending";
+ this.cMenTreeToolsSortAscending.Size = new System.Drawing.Size(157, 22);
+ this.cMenTreeToolsSortAscending.Text = "Ascending (A-Z)";
+ //
+ //cMenTreeToolsSortDescending
+ //
+ this.cMenTreeToolsSortDescending.Image = global::My.Resources.Resources.Sort_ZA;
+ this.cMenTreeToolsSortDescending.Name = "cMenTreeToolsSortDescending";
+ this.cMenTreeToolsSortDescending.Size = new System.Drawing.Size(157, 22);
+ this.cMenTreeToolsSortDescending.Text = "Descending (Z-A)";
+ //
+ //cMenTreeMoveUp
+ //
+ this.cMenTreeMoveUp.Image = global::My.Resources.Resources.Arrow_Up;
+ this.cMenTreeMoveUp.Name = "cMenTreeMoveUp";
+ this.cMenTreeMoveUp.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up);
+ this.cMenTreeMoveUp.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeMoveUp.Text = "Move up";
+ //
+ //cMenTreeMoveDown
+ //
+ this.cMenTreeMoveDown.Image = global::My.Resources.Resources.Arrow_Down;
+ this.cMenTreeMoveDown.Name = "cMenTreeMoveDown";
+ this.cMenTreeMoveDown.ShortcutKeys = (System.Windows.Forms.Keys) (System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down);
+ this.cMenTreeMoveDown.Size = new System.Drawing.Size(186, 22);
+ this.cMenTreeMoveDown.Text = "Move down";
+ //
+ //imgListTree
+ //
+ this.imgListTree.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+ this.imgListTree.ImageSize = new System.Drawing.Size(16, 16);
+ this.imgListTree.TransparentColor = System.Drawing.Color.Transparent;
+ //
+ //pnlConnections
+ //
+ this.pnlConnections.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlConnections.Controls.Add(this.PictureBox1);
+ this.pnlConnections.Controls.Add(this.txtSearch);
+ this.pnlConnections.Controls.Add(this.tvConnections);
+ this.pnlConnections.Location = new System.Drawing.Point(0, 25);
+ this.pnlConnections.Name = "pnlConnections";
+ this.pnlConnections.Size = new System.Drawing.Size(192, 428);
+ this.pnlConnections.TabIndex = 9;
+ //
+ //PictureBox1
+ //
+ this.PictureBox1.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left);
+ this.PictureBox1.Image = global::My.Resources.Resources.Search;
+ this.PictureBox1.Location = new System.Drawing.Point(2, 412);
+ this.PictureBox1.Name = "PictureBox1";
+ this.PictureBox1.Size = new System.Drawing.Size(16, 16);
+ this.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.PictureBox1.TabIndex = 1;
+ this.PictureBox1.TabStop = false;
+ //
+ //txtSearch
+ //
+ this.txtSearch.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtSearch.ForeColor = System.Drawing.SystemColors.GrayText;
+ this.txtSearch.Location = new System.Drawing.Point(19, 413);
+ this.txtSearch.Name = "txtSearch";
+ this.txtSearch.Size = new System.Drawing.Size(171, 13);
+ this.txtSearch.TabIndex = 30;
+ this.txtSearch.TabStop = false;
+ this.txtSearch.Text = "Search";
+ //
+ //msMain
+ //
+ this.msMain.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenAddConnection, this.mMenAddFolder, this.mMenView, this.mMenSortAscending});
+ this.msMain.Location = new System.Drawing.Point(0, 0);
+ this.msMain.Name = "msMain";
+ this.msMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
+ this.msMain.ShowItemToolTips = true;
+ this.msMain.Size = new System.Drawing.Size(192, 24);
+ this.msMain.TabIndex = 10;
+ this.msMain.Text = "MenuStrip1";
+ //
+ //mMenAddConnection
+ //
+ this.mMenAddConnection.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.mMenAddConnection.Image = global::My.Resources.Resources.Connection_Add;
+ this.mMenAddConnection.Name = "mMenAddConnection";
+ this.mMenAddConnection.Size = new System.Drawing.Size(28, 20);
+ //
+ //mMenAddFolder
+ //
+ this.mMenAddFolder.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.mMenAddFolder.Image = global::My.Resources.Resources.Folder_Add;
+ this.mMenAddFolder.Name = "mMenAddFolder";
+ this.mMenAddFolder.Size = new System.Drawing.Size(28, 20);
+ //
+ //mMenView
+ //
+ this.mMenView.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.mMenView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mMenViewExpandAllFolders, this.mMenViewCollapseAllFolders});
+ this.mMenView.Image = global::My.Resources.Resources.View;
+ this.mMenView.Name = "mMenView";
+ this.mMenView.Size = new System.Drawing.Size(28, 20);
+ this.mMenView.Text = "&View";
+ //
+ //mMenViewExpandAllFolders
+ //
+ this.mMenViewExpandAllFolders.Image = global::My.Resources.Resources.Expand;
+ this.mMenViewExpandAllFolders.Name = "mMenViewExpandAllFolders";
+ this.mMenViewExpandAllFolders.Size = new System.Drawing.Size(161, 22);
+ this.mMenViewExpandAllFolders.Text = "Expand all folders";
+ //
+ //mMenViewCollapseAllFolders
+ //
+ this.mMenViewCollapseAllFolders.Image = global::My.Resources.Resources.Collapse;
+ this.mMenViewCollapseAllFolders.Name = "mMenViewCollapseAllFolders";
+ this.mMenViewCollapseAllFolders.Size = new System.Drawing.Size(161, 22);
+ this.mMenViewCollapseAllFolders.Text = "Collapse all folders";
+ //
+ //mMenSortAscending
+ //
+ this.mMenSortAscending.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.mMenSortAscending.Image = global::My.Resources.Resources.Sort_AZ;
+ this.mMenSortAscending.Name = "mMenSortAscending";
+ this.mMenSortAscending.Size = new System.Drawing.Size(28, 20);
+ //
+ //Tree
+ //
+ this.ClientSize = new System.Drawing.Size(192, 453);
+ this.Controls.Add(this.msMain);
+ this.Controls.Add(this.pnlConnections);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.HideOnClose = true;
+ this.Icon = global::My.Resources.Resources.Root_Icon;
+ this.Name = "Tree";
+ this.TabText = "Connections";
+ this.Text = "Connections";
+ this.cMenTree.ResumeLayout(false);
+ this.pnlConnections.ResumeLayout(false);
+ this.pnlConnections.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.PictureBox1).EndInit();
+ this.msMain.ResumeLayout(false);
+ this.msMain.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeImport;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeExportFile;
+ internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeImportFile;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeImportActiveDirectory;
+ internal System.Windows.Forms.ToolStripMenuItem cMenTreeImportPortScan;
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Tree.cs b/mRemoteV1/CS/UI/UI.Window.Tree.cs
new file mode 100644
index 000000000..ae75a1216
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Tree.cs
@@ -0,0 +1,1036 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using mRemoteNG.App;
+using mRemoteNG.My;
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class Tree : Base
+ {
+#region Form Stuff
+ public void Tree_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+
+ Themes.ThemeManager.ThemeChanged += ApplyTheme;
+ ApplyTheme();
+
+ txtSearch.Multiline = true;
+ txtSearch.MinimumSize = new Size(0, 14);
+ txtSearch.Size = new Size(txtSearch.Size.Width, 14);
+ txtSearch.Multiline = false;
+ }
+
+ private void ApplyLanguage()
+ {
+ Text = Language.strConnections;
+ TabText = Language.strConnections;
+
+ mMenAddConnection.ToolTipText = Language.strAddConnection;
+ mMenAddFolder.ToolTipText = Language.strAddFolder;
+ mMenView.ToolTipText = Language.strMenuView.Replace("&", "");
+ mMenViewExpandAllFolders.Text = Language.strExpandAllFolders;
+ mMenViewCollapseAllFolders.Text = Language.strCollapseAllFolders;
+ mMenSortAscending.ToolTipText = Language.strSortAsc;
+
+ cMenTreeConnect.Text = Language.strConnect;
+ cMenTreeConnectWithOptions.Text = Language.strConnectWithOptions;
+ cMenTreeConnectWithOptionsConnectToConsoleSession.Text = Language.strConnectToConsoleSession;
+ cMenTreeConnectWithOptionsDontConnectToConsoleSession.Text = Language.strDontConnectToConsoleSessionMenuItem;
+ cMenTreeConnectWithOptionsConnectInFullscreen.Text = Language.strConnectInFullscreen;
+ cMenTreeConnectWithOptionsNoCredentials.Text = Language.strConnectNoCredentials;
+ cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Text = Language.strChoosePanelBeforeConnecting;
+ cMenTreeDisconnect.Text = Language.strMenuDisconnect;
+
+ cMenTreeToolsExternalApps.Text = Language.strMenuExternalTools;
+ cMenTreeToolsTransferFile.Text = Language.strMenuTransferFile;
+
+ cMenTreeDuplicate.Text = Language.strDuplicate;
+ cMenTreeRename.Text = Language.strRename;
+ cMenTreeDelete.Text = Language.strMenuDelete;
+
+ cMenTreeImport.Text = Language.strImportMenuItem;
+ cMenTreeImportFile.Text = Language.strImportFromFileMenuItem;
+ cMenTreeImportActiveDirectory.Text = Language.strImportAD;
+ cMenTreeImportPortScan.Text = Language.strImportPortScan;
+ cMenTreeExportFile.Text = Language.strExportToFileMenuItem;
+
+ cMenTreeAddConnection.Text = Language.strAddConnection;
+ cMenTreeAddFolder.Text = Language.strAddFolder;
+
+ cMenTreeToolsSort.Text = Language.strSort;
+ cMenTreeToolsSortAscending.Text = Language.strSortAsc;
+ cMenTreeToolsSortDescending.Text = Language.strSortDesc;
+ cMenTreeMoveUp.Text = Language.strMoveUp;
+ cMenTreeMoveDown.Text = Language.strMoveDown;
+
+ txtSearch.Text = Language.strSearchPrompt;
+ }
+
+ public void ApplyTheme()
+ {
+ msMain.BackColor = Themes.ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ msMain.ForeColor = Themes.ThemeManager.ActiveTheme.ToolbarTextColor;
+ tvConnections.BackColor = Themes.ThemeManager.ActiveTheme.ConnectionsPanelBackgroundColor;
+ tvConnections.ForeColor = Themes.ThemeManager.ActiveTheme.ConnectionsPanelTextColor;
+ tvConnections.LineColor = Themes.ThemeManager.ActiveTheme.ConnectionsPanelTreeLineColor;
+ BackColor = Themes.ThemeManager.ActiveTheme.ToolbarBackgroundColor;
+ txtSearch.BackColor = Themes.ThemeManager.ActiveTheme.SearchBoxBackgroundColor;
+ txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextPromptColor;
+ }
+#endregion
+
+#region Public Methods
+ public Tree(DockContent panel)
+ {
+ WindowType = Type.Tree;
+ DockPnl = panel;
+ InitializeComponent();
+ FillImageList();
+
+ DescriptionTooltip = new ToolTip();
+ DescriptionTooltip.InitialDelay = 300;
+ DescriptionTooltip.ReshowDelay = 0;
+ }
+
+ public void InitialRefresh()
+ {
+ tvConnections_AfterSelect(tvConnections, new TreeViewEventArgs(tvConnections.SelectedNode, TreeViewAction.ByMouse));
+ }
+#endregion
+
+#region Public Properties
+ public ToolTip DescriptionTooltip {get; set;}
+#endregion
+
+#region Private Methods
+ private void FillImageList()
+ {
+ try
+ {
+ imgListTree.Images.Add(Resources.Root);
+ imgListTree.Images.Add(Resources.Folder);
+ imgListTree.Images.Add(Resources.Play);
+ imgListTree.Images.Add(Resources.Pause);
+ imgListTree.Images.Add(Resources.PuttySessions);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "FillImageList (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void tvConnections_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
+ {
+ cMenTreeDelete.ShortcutKeys = Keys.None;
+ }
+
+ public void tvConnections_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
+ {
+ try
+ {
+ cMenTreeDelete.ShortcutKeys = Keys.Delete;
+
+ mRemoteNG.Tree.Node.FinishRenameSelectedNode(e.Label);
+ Windows.configForm.pGrid_SelectedObjectChanged();
+ ShowHideTreeContextMenuItems(e.Node);
+ SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_AfterLabelEdit (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void tvConnections_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ try
+ {
+ if ((mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.Connection) || (mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.PuttySession))
+ {
+ Windows.configForm.SetPropertyGridObject(e.Node.Tag);
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ Windows.configForm.SetPropertyGridObject((e.Node.Tag as Container.Info).ConnectionInfo);
+ }
+ else if ((mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.Root) || (mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.PuttyRoot))
+ {
+ Windows.configForm.SetPropertyGridObject(e.Node.Tag);
+ }
+ else
+ {
+ return;
+ }
+
+ Windows.configForm.pGrid_SelectedObjectChanged();
+ ShowHideTreeContextMenuItems(e.Node);
+ Windows.sessionsForm.GetSessions(true);
+
+ LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_AfterSelect (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void tvConnections_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
+ {
+ try
+ {
+ ShowHideTreeContextMenuItems(tvConnections.SelectedNode);
+ tvConnections.SelectedNode = e.Node;
+
+ if (e.Button == MouseButtons.Left)
+ {
+ if (Settings.SingleClickOnConnectionOpensIt &&
+ (mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.Connection |
+ mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.PuttySession))
+ {
+ OpenConnection();
+ }
+
+ if (Settings.SingleClickSwitchesToOpenConnection && mRemoteNG.Tree.Node.GetNodeType(e.Node) == mRemoteNG.Tree.Node.Type.Connection)
+ {
+ SwitchToOpenConnection(e.Node.Tag);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_NodeMouseClick (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ static public void tvConnections_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+ {
+ if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Connection |
+ mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession)
+ {
+ OpenConnection();
+ }
+ }
+
+ public void tvConnections_MouseMove(object sender, MouseEventArgs e)
+ {
+ try
+ {
+ mRemoteNG.Tree.Node.SetNodeToolTip(e, DescriptionTooltip);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_MouseMove (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private static void EnableMenuItemsRecursive(ToolStripItemCollection items, bool enable = true)
+ {
+ ToolStripMenuItem menuItem = default(ToolStripMenuItem);
+ foreach (ToolStripItem item in items)
+ {
+ menuItem = item as ToolStripMenuItem;
+ if (menuItem == null)
+ {
+ continue;
+ }
+ menuItem.Enabled = enable;
+ if (menuItem.HasDropDownItems)
+ {
+ EnableMenuItemsRecursive(menuItem.DropDownItems, enable);
+ }
+ }
+ }
+
+ private void ShowHideTreeContextMenuItems(TreeNode selectedNode)
+ {
+ if (selectedNode == null)
+ {
+ return ;
+ }
+
+ try
+ {
+ cMenTree.Enabled = true;
+ EnableMenuItemsRecursive(cMenTree.Items);
+
+ if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.Connection)
+ {
+ mRemoteNG.Connection.Info connectionInfo = selectedNode.Tag;
+
+ if (connectionInfo.OpenConnections.Count == 0)
+ {
+ cMenTreeDisconnect.Enabled = false;
+ }
+
+ if (!(connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH1 |
+ connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH2))
+ {
+ cMenTreeToolsTransferFile.Enabled = false;
+ }
+
+ if (!(connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.RDP | connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.ICA))
+ {
+ cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = false;
+ cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = false;
+ }
+
+ if (connectionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.IntApp)
+ {
+ cMenTreeConnectWithOptionsNoCredentials.Enabled = false;
+ }
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.PuttySession)
+ {
+ mRemoteNG.Connection.PuttySession.Info puttySessionInfo = selectedNode.Tag;
+
+ cMenTreeAddConnection.Enabled = false;
+ cMenTreeAddFolder.Enabled = false;
+
+ if (puttySessionInfo.OpenConnections.Count == 0)
+ {
+ cMenTreeDisconnect.Enabled = false;
+ }
+
+ if (!(puttySessionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH1 | puttySessionInfo.Protocol == mRemoteNG.Connection.Protocol.Protocols.SSH2))
+ {
+ cMenTreeToolsTransferFile.Enabled = false;
+ }
+
+ cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = false;
+ cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = false;
+ cMenTreeToolsSort.Enabled = false;
+ cMenTreeDuplicate.Enabled = false;
+ cMenTreeRename.Enabled = false;
+ cMenTreeDelete.Enabled = false;
+ cMenTreeMoveUp.Enabled = false;
+ cMenTreeMoveDown.Enabled = false;
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = false;
+ cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = false;
+ cMenTreeDisconnect.Enabled = false;
+
+ int openConnections = 0;
+ mRemoteNG.Connection.Info connectionInfo = default(mRemoteNG.Connection.Info);
+ foreach (TreeNode node in selectedNode.Nodes)
+ {
+ if (node.Tag is mRemoteNG.Connection.Info)
+ {
+ connectionInfo = node.Tag;
+ openConnections = openConnections + connectionInfo.OpenConnections.Count;
+ }
+ }
+ if (openConnections == 0)
+ {
+ cMenTreeDisconnect.Enabled = false;
+ }
+
+ cMenTreeToolsTransferFile.Enabled = false;
+ cMenTreeToolsExternalApps.Enabled = false;
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.Root)
+ {
+ cMenTreeConnect.Enabled = false;
+ cMenTreeConnectWithOptions.Enabled = false;
+ cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = false;
+ cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = false;
+ cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = false;
+ cMenTreeDisconnect.Enabled = false;
+ cMenTreeToolsTransferFile.Enabled = false;
+ cMenTreeToolsExternalApps.Enabled = false;
+ cMenTreeDuplicate.Enabled = false;
+ cMenTreeDelete.Enabled = false;
+ cMenTreeMoveUp.Enabled = false;
+ cMenTreeMoveDown.Enabled = false;
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.PuttyRoot)
+ {
+ cMenTreeAddConnection.Enabled = false;
+ cMenTreeAddFolder.Enabled = false;
+ cMenTreeConnect.Enabled = false;
+ cMenTreeConnectWithOptions.Enabled = false;
+ cMenTreeDisconnect.Enabled = false;
+ cMenTreeToolsTransferFile.Enabled = false;
+ cMenTreeConnectWithOptions.Enabled = false;
+ cMenTreeToolsSort.Enabled = false;
+ cMenTreeToolsExternalApps.Enabled = false;
+ cMenTreeDuplicate.Enabled = false;
+ cMenTreeRename.Enabled = true;
+ cMenTreeDelete.Enabled = false;
+ cMenTreeMoveUp.Enabled = false;
+ cMenTreeMoveDown.Enabled = false;
+ }
+ else
+ {
+ cMenTree.Enabled = false;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ShowHideTreeContextMenuItems (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Drag and Drop
+ static public void tvConnections_DragDrop(object sender, DragEventArgs e)
+ {
+ try
+ {
+ //Check that there is a TreeNode being dragged
+ if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", true) == false)
+ {
+ return;
+ }
+
+ //Get the TreeView raising the event (in case multiple on form)
+ TreeView selectedTreeview = (TreeView) sender;
+
+ //Get the TreeNode being dragged
+ System.Windows.Forms.TreeNode dropNode = (System.Windows.Forms.TreeNode) (e.Data.GetData("System.Windows.Forms.TreeNode"));
+
+ //The target node should be selected from the DragOver event
+ TreeNode targetNode = selectedTreeview.SelectedNode;
+
+ if (dropNode == targetNode)
+ {
+ return;
+ }
+
+ if (mRemoteNG.Tree.Node.GetNodeType(dropNode) == mRemoteNG.Tree.Node.Type.Root)
+ {
+ return;
+ }
+
+ if (dropNode == targetNode.Parent)
+ {
+ return;
+ }
+
+ //Remove the drop node from its current location
+ dropNode.Remove();
+
+ //If there is no targetNode add dropNode to the bottom of
+ //the TreeView root nodes, otherwise add it to the end of
+ //the dropNode child nodes
+
+ if (mRemoteNG.Tree.Node.GetNodeType(targetNode) == mRemoteNG.Tree.Node.Type.Root | mRemoteNG.Tree.Node.GetNodeType(targetNode) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ targetNode.Nodes.Insert(0, dropNode);
+ }
+ else
+ {
+ targetNode.Parent.Nodes.Insert(targetNode.Index + 1, dropNode);
+ }
+
+ if (mRemoteNG.Tree.Node.GetNodeType(dropNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(dropNode) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ if (mRemoteNG.Tree.Node.GetNodeType(dropNode.Parent) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ dropNode.Tag.Parent = dropNode.Parent.Tag;
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(dropNode.Parent) == mRemoteNG.Tree.Node.Type.Root)
+ {
+ dropNode.Tag.Parent = null;
+ if (mRemoteNG.Tree.Node.GetNodeType(dropNode) == mRemoteNG.Tree.Node.Type.Connection)
+ {
+ dropNode.Tag.Inherit.TurnOffInheritanceCompletely();
+ }
+ else if (mRemoteNG.Tree.Node.GetNodeType(dropNode) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ dropNode.Tag.ConnectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+ }
+ }
+
+ //Ensure the newly created node is visible to
+ //the user and select it
+ dropNode.EnsureVisible();
+ selectedTreeview.SelectedNode = dropNode;
+
+ SaveConnectionsBG();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragDrop (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ static public void tvConnections_DragEnter(object sender, DragEventArgs e)
+ {
+ try
+ {
+ //See if there is a TreeNode being dragged
+ if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", true))
+ {
+ //TreeNode found allow move effect
+ e.Effect = DragDropEffects.Move;
+ }
+ else
+ {
+ //No TreeNode found, prevent move
+ e.Effect = DragDropEffects.None;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragEnter (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ static public void tvConnections_DragOver(object sender, DragEventArgs e)
+ {
+ try
+ {
+ //Check that there is a TreeNode being dragged
+ if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", true) == false)
+ {
+ return;
+ }
+
+ //Get the TreeView raising the event (in case multiple on form)
+ TreeView selectedTreeview = (TreeView) sender;
+
+ //As the mouse moves over nodes, provide feedback to
+ //the user by highlighting the node that is the
+ //current drop target
+ Point pt = ((TreeView) sender).PointToClient(new Point(e.X, e.Y));
+ TreeNode targetNode = selectedTreeview.GetNodeAt(pt);
+
+ //Select the node currently under the cursor
+ selectedTreeview.SelectedNode = targetNode;
+
+ //Check that the selected node is not the dropNode and
+ //also that it is not a child of the dropNode and
+ //therefore an invalid target
+ TreeNode dropNode = (TreeNode) (e.Data.GetData("System.Windows.Forms.TreeNode"));
+
+ Root.PuttySessions.Info puttyRootInfo = default(Root.PuttySessions.Info);
+ while (!(targetNode == null))
+ {
+ puttyRootInfo = targetNode.Tag as Root.PuttySessions.Info;
+ if (puttyRootInfo != null || targetNode == dropNode)
+ {
+ e.Effect = DragDropEffects.None;
+ return ;
+ }
+ targetNode = targetNode.Parent;
+ }
+
+ //Currently selected node is a suitable target
+ e.Effect = DragDropEffects.Move;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragOver (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void tvConnections_ItemDrag(object sender, ItemDragEventArgs e)
+ {
+ try
+ {
+ TreeNode dragTreeNode = e.Item as TreeNode;
+ if (dragTreeNode == null)
+ {
+ return ;
+ }
+
+ if (dragTreeNode.Tag == null)
+ {
+ return ;
+ }
+ if (dragTreeNode.Tag is mRemoteNG.Connection.PuttySession.Info|| !(dragTreeNode.Tag is mRemoteNG.Connection.Info|| dragTreeNode.Tag is Container.Info))
+ {
+ tvConnections.SelectedNode = dragTreeNode;
+ return ;
+ }
+
+ //Set the drag node and initiate the DragDrop
+ DoDragDrop(e.Item, DragDropEffects.Move);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_ItemDrag (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Tree Context Menu
+ public void cMenTreeAddConnection_Click(System.Object sender, EventArgs e)
+ {
+ AddConnection();
+ SaveConnectionsBG();
+ }
+
+ public void cMenTreeAddFolder_Click(System.Object sender, EventArgs e)
+ {
+ AddFolder();
+ SaveConnectionsBG();
+ }
+
+ static public void cMenTreeConnect_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ static public void cMenTreeConnectWithOptionsConnectToConsoleSession_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.UseConsoleSession | mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ static public void cMenTreeConnectWithOptionsNoCredentials_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.NoCredentials);
+ }
+
+ static public void cMenTreeConnectWithOptionsDontConnectToConsoleSession_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.DontUseConsoleSession | mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ static public void cMenTreeConnectWithOptionsConnectInFullscreen_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.Fullscreen | mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ static public void cMenTreeConnectWithOptionsChoosePanelBeforeConnecting_Click(System.Object sender, EventArgs e)
+ {
+ OpenConnection(mRemoteNG.Connection.Info.Force.OverridePanel | mRemoteNG.Connection.Info.Force.DoNotJump);
+ }
+
+ public void cMenTreeDisconnect_Click(System.Object sender, EventArgs e)
+ {
+ DisconnectConnection();
+ }
+
+ static public void cMenTreeToolsTransferFile_Click(System.Object sender, EventArgs e)
+ {
+ SshTransferFile();
+ }
+
+ public void mMenSortAscending_Click(System.Object sender, EventArgs e)
+ {
+ tvConnections.BeginUpdate();
+ mRemoteNG.Tree.Node.Sort(tvConnections.Nodes[0], SortOrder.Ascending);
+ tvConnections.EndUpdate();
+ SaveConnectionsBG();
+ }
+
+ public void cMenTreeToolsSortAscending_Click(System.Object sender, EventArgs e)
+ {
+ tvConnections.BeginUpdate();
+ mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, SortOrder.Ascending);
+ tvConnections.EndUpdate();
+ SaveConnectionsBG();
+ }
+
+ public void cMenTreeToolsSortDescending_Click(System.Object sender, EventArgs e)
+ {
+ tvConnections.BeginUpdate();
+ mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, SortOrder.Descending);
+ tvConnections.EndUpdate();
+ SaveConnectionsBG();
+ }
+
+ public void cMenTree_DropDownOpening(object sender, EventArgs e)
+ {
+ AddExternalApps();
+ }
+
+ private static void cMenTreeToolsExternalAppsEntry_Click(object sender, EventArgs e)
+ {
+ StartExternalApp(sender.Tag);
+ }
+
+ public void cMenTreeDuplicate_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.CloneNode(tvConnections.SelectedNode);
+ SaveConnectionsBG();
+ }
+
+ static public void cMenTreeRename_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.StartRenameSelectedNode();
+ SaveConnectionsBG();
+ }
+
+ static public void cMenTreeDelete_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.DeleteSelectedNode();
+ SaveConnectionsBG();
+ }
+
+ static public void cMenTreeImportFile_Click(System.Object sender, EventArgs e)
+ {
+ Import.ImportFromFile(Windows.treeForm.tvConnections.Nodes[0], Windows.treeForm.tvConnections.SelectedNode, true);
+ }
+
+ static public void cMenTreeImportActiveDirectory_Click(System.Object sender, EventArgs e)
+ {
+ Windows.Show(Type.ActiveDirectoryImport);
+ }
+
+ static public void cMenTreeImportPortScan_Click(System.Object sender, EventArgs e)
+ {
+ Windows.Show(UI.Window.Type.PortScan, true);
+ }
+
+ static public void cMenTreeExportFile_Click(System.Object sender, EventArgs e)
+ {
+ Export.ExportToFile(Windows.treeForm.tvConnections.Nodes[0], Windows.treeForm.tvConnections.SelectedNode);
+ }
+ static public void cMenTreeMoveUp_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.MoveNodeUp();
+ SaveConnectionsBG();
+ }
+
+ static public void cMenTreeMoveDown_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.MoveNodeDown();
+ SaveConnectionsBG();
+ }
+#endregion
+
+#region Context Menu Actions
+ public void AddConnection()
+ {
+ try
+ {
+ if (tvConnections.SelectedNode == null)
+ {
+ tvConnections.SelectedNode = tvConnections.Nodes[0];
+ }
+
+ TreeNode newTreeNode = mRemoteNG.Tree.Node.AddNode(mRemoteNG.Tree.Node.Type.Connection);
+ if (newTreeNode == null)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Tree.AddConnection() failed." + Constants.vbNewLine + "mRemoteNG.Tree.Node.AddNode() returned Nothing.", true);
+ return ;
+ }
+
+ TreeNode containerNode = tvConnections.SelectedNode;
+ if (mRemoteNG.Tree.Node.GetNodeType(containerNode) == mRemoteNG.Tree.Node.Type.Connection)
+ {
+ containerNode = containerNode.Parent;
+ }
+
+ mRemoteNG.Connection.Info newConnectionInfo = new mRemoteNG.Connection.Info();
+ if (mRemoteNG.Tree.Node.GetNodeType(containerNode) == mRemoteNG.Tree.Node.Type.Root)
+ {
+ newConnectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+ else
+ {
+ newConnectionInfo.Parent = containerNode.Tag;
+ }
+
+ newConnectionInfo.TreeNode = newTreeNode;
+ newTreeNode.Tag = newConnectionInfo;
+ ConnectionList.Add(newConnectionInfo);
+
+ containerNode.Nodes.Add(newTreeNode);
+
+ tvConnections.SelectedNode = newTreeNode;
+ tvConnections.SelectedNode.BeginEdit();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Tree.AddConnection() failed." + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void AddFolder()
+ {
+ try
+ {
+ TreeNode newNode = mRemoteNG.Tree.Node.AddNode(mRemoteNG.Tree.Node.Type.Container);
+ Container.Info newContainerInfo = new Container.Info();
+ newNode.Tag = newContainerInfo;
+ newContainerInfo.TreeNode = newNode;
+
+ TreeNode selectedNode = mRemoteNG.Tree.Node.SelectedNode;
+ TreeNode parentNode = default(TreeNode);
+ if (selectedNode == null)
+ {
+ parentNode = tvConnections.Nodes[0];
+ }
+ else
+ {
+ if (mRemoteNG.Tree.Node.GetNodeType(selectedNode) == mRemoteNG.Tree.Node.Type.Connection)
+ {
+ parentNode = selectedNode.Parent;
+ }
+ else
+ {
+ parentNode = selectedNode;
+ }
+ }
+
+ newContainerInfo.ConnectionInfo = new mRemoteNG.Connection.Info(newContainerInfo);
+ newContainerInfo.ConnectionInfo.Name = newNode.Text;
+
+ // We can only inherit from a container node, not the root node or connection nodes
+ if (mRemoteNG.Tree.Node.GetNodeType(parentNode) == mRemoteNG.Tree.Node.Type.Container)
+ {
+ newContainerInfo.Parent = parentNode.Tag;
+ }
+ else
+ {
+ newContainerInfo.ConnectionInfo.Inherit.TurnOffInheritanceCompletely();
+ }
+
+ ContainerList.Add(newContainerInfo);
+ parentNode.Nodes.Add(newNode);
+
+ tvConnections.SelectedNode = newNode;
+ tvConnections.SelectedNode.BeginEdit();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, string.Format(Language.strErrorAddFolderFailed, ex.Message), true);
+ }
+ }
+
+ private void DisconnectConnection()
+ {
+ try
+ {
+ if (tvConnections.SelectedNode != null)
+ {
+ if (tvConnections.SelectedNode.Tag is mRemoteNG.Connection.Info)
+ {
+ mRemoteNG.Connection.Info conI = tvConnections.SelectedNode.Tag;
+ for (int i = 0; i <= conI.OpenConnections.Count - 1; i++)
+ {
+ conI.OpenConnections[i].Disconnect();
+ }
+ }
+
+ if (tvConnections.SelectedNode.Tag is Container.Info)
+ {
+ foreach (TreeNode n in tvConnections.SelectedNode.Nodes)
+ {
+ if (n.Tag is mRemoteNG.Connection.Info)
+ {
+ mRemoteNG.Connection.Info conI = n.Tag;
+ for (int i = 0; i <= conI.OpenConnections.Count - 1; i++)
+ {
+ conI.OpenConnections[i].Disconnect();
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "DisconnectConnection (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private static void SshTransferFile()
+ {
+ try
+ {
+ Windows.Show(Type.SSHTransfer);
+
+ mRemoteNG.Connection.Info conI = mRemoteNG.Tree.Node.SelectedNode.Tag;
+
+ Windows.sshtransferForm.Hostname = conI.Hostname;
+ Windows.sshtransferForm.Username = conI.Username;
+ Windows.sshtransferForm.Password = conI.Password;
+ Windows.sshtransferForm.Port = System.Convert.ToString(conI.Port);
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SSHTransferFile (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private void AddExternalApps()
+ {
+ try
+ {
+ //clean up
+ cMenTreeToolsExternalApps.DropDownItems.Clear();
+
+ //add ext apps
+ foreach (Tools.ExternalTool extA in Runtime.ExternalTools)
+ {
+ ToolStripMenuItem nItem = new ToolStripMenuItem();
+ nItem.Text = extA.DisplayName;
+ nItem.Tag = extA;
+
+ nItem.Image = extA.Image;
+
+ nItem.Click += cMenTreeToolsExternalAppsEntry_Click;
+
+ cMenTreeToolsExternalApps.DropDownItems.Add(nItem);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cMenTreeTools_DropDownOpening failed (UI.Window.Tree)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ private static void StartExternalApp(Tools.ExternalTool externalTool)
+ {
+ try
+ {
+ if (mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.Connection | mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) == mRemoteNG.Tree.Node.Type.PuttySession)
+ {
+ externalTool.Start(mRemoteNG.Tree.Node.SelectedNode.Tag);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cMenTreeToolsExternalAppsEntry_Click failed (UI.Window.Tree)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+
+#region Menu
+ static public void mMenViewExpandAllFolders_Click(System.Object sender, EventArgs e)
+ {
+ mRemoteNG.Tree.Node.ExpandAllNodes();
+ }
+
+ public void mMenViewCollapseAllFolders_Click(System.Object sender, EventArgs e)
+ {
+ if (tvConnections.SelectedNode != null)
+ {
+ if (tvConnections.SelectedNode.IsEditing)
+ {
+ tvConnections.SelectedNode.EndEdit(false);
+ }
+ }
+ mRemoteNG.Tree.Node.CollapseAllNodes();
+ }
+#endregion
+
+#region Search
+ public void txtSearch_GotFocus(object sender, EventArgs e)
+ {
+ txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextColor;
+ if (txtSearch.Text == Language.strSearchPrompt)
+ {
+ txtSearch.Text = "";
+ }
+ }
+
+ public void txtSearch_LostFocus(object sender, EventArgs e)
+ {
+ if (txtSearch.Text == "")
+ {
+ txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextPromptColor;
+ txtSearch.Text = Language.strSearchPrompt;
+ }
+ }
+
+ public void txtSearch_KeyDown(object sender, KeyEventArgs e)
+ {
+ try
+ {
+ if (e.KeyCode == Keys.Escape)
+ {
+ e.Handled = true;
+ tvConnections.Focus();
+ }
+ else if (e.KeyCode == Keys.Up)
+ {
+ tvConnections.SelectedNode = tvConnections.SelectedNode.PrevVisibleNode;
+ }
+ else if (e.KeyCode == Keys.Down)
+ {
+ tvConnections.SelectedNode = tvConnections.SelectedNode.NextVisibleNode;
+ }
+ else
+ {
+ tvConnections_KeyDown(sender, e);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "txtSearch_KeyDown (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void txtSearch_TextChanged(System.Object sender, EventArgs e)
+ {
+ tvConnections.SelectedNode = mRemoteNG.Tree.Node.Find(tvConnections.Nodes[0], txtSearch.Text);
+ }
+
+ public void tvConnections_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ try
+ {
+ if (char.IsLetterOrDigit(e.KeyChar))
+ {
+ txtSearch.Text = e.KeyChar.ToString();
+
+ txtSearch.Focus();
+ txtSearch.SelectionStart = txtSearch.TextLength;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_KeyPress (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ public void tvConnections_KeyDown(object sender, KeyEventArgs e)
+ {
+ try
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ if (tvConnections.SelectedNode.Tag is mRemoteNG.Connection.Info)
+ {
+ e.Handled = true;
+ OpenConnection();
+ }
+ else
+ {
+ if (tvConnections.SelectedNode.IsExpanded)
+ {
+ tvConnections.SelectedNode.Collapse(true);
+ }
+ else
+ {
+ tvConnections.SelectedNode.Expand();
+ }
+ }
+ }
+ else if (e.KeyCode == Keys.Escape ^ e.KeyCode == Keys.Control | e.KeyCode == Keys.F)
+ {
+ txtSearch.Focus();
+ txtSearch.SelectionStart = txtSearch.TextLength;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_KeyDown (UI.Window.Tree) failed" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Tree.resx b/mRemoteV1/CS/UI/UI.Window.Tree.resx
new file mode 100644
index 000000000..4c0f58aeb
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Tree.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 208, 19
+
+
+ 17, 17
+
+
+ 119, 19
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Type.cs b/mRemoteV1/CS/UI/UI.Window.Type.cs
new file mode 100644
index 000000000..f0f99347d
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Type.cs
@@ -0,0 +1,37 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG.UI.Window
+{
+ public enum Type
+ {
+ Tree = 0,
+ Connection = 1,
+ Config = 2,
+ Sessions = 3,
+ ErrorsAndInfos = 4,
+ ScreenshotManager = 5,
+ Options = 6,
+ About = 8,
+ Update = 9,
+ SSHTransfer = 10,
+ ActiveDirectoryImport = 11,
+ Help = 12,
+ ExternalApps = 13,
+ PortScan = 14,
+ UltraVNCSC = 16,
+ ComponentsCheck = 17,
+ Announcement = 18
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.cs b/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.cs
new file mode 100644
index 000000000..fde13c4b2
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.cs
@@ -0,0 +1,170 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using WeifenLuo.WinFormsUI.Docking;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public class UltraVNCSC : Base
+ {
+
+#region Form Init
+ internal System.Windows.Forms.ToolStrip tsMain;
+ internal System.Windows.Forms.Panel pnlContainer;
+ internal System.Windows.Forms.ToolStripButton btnDisconnect;
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UltraVNCSC));
+ this.tsMain = new System.Windows.Forms.ToolStrip();
+ this.Load += new System.EventHandler(UltraVNCSC_Load);
+ this.btnDisconnect = new System.Windows.Forms.ToolStripButton();
+ this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
+ this.pnlContainer = new System.Windows.Forms.Panel();
+ this.tsMain.SuspendLayout();
+ this.SuspendLayout();
+ //
+ //tsMain
+ //
+ this.tsMain.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+ this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.btnDisconnect});
+ this.tsMain.Location = new System.Drawing.Point(0, 0);
+ this.tsMain.Name = "tsMain";
+ this.tsMain.Size = new System.Drawing.Size(446, 25);
+ this.tsMain.TabIndex = 0;
+ this.tsMain.Text = "ToolStrip1";
+ //
+ //btnDisconnect
+ //
+ this.btnDisconnect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.btnDisconnect.Image = (System.Drawing.Image) (resources.GetObject("btnDisconnect.Image"));
+ this.btnDisconnect.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnDisconnect.Name = "btnDisconnect";
+ this.btnDisconnect.Size = new System.Drawing.Size(63, 22);
+ this.btnDisconnect.Text = "Disconnect";
+ //
+ //pnlContainer
+ //
+ this.pnlContainer.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlContainer.Location = new System.Drawing.Point(0, 27);
+ this.pnlContainer.Name = "pnlContainer";
+ this.pnlContainer.Size = new System.Drawing.Size(446, 335);
+ this.pnlContainer.TabIndex = 1;
+ //
+ //UltraVNCSC
+ //
+ this.ClientSize = new System.Drawing.Size(446, 362);
+ this.Controls.Add(this.pnlContainer);
+ this.Controls.Add(this.tsMain);
+ this.Icon = global::My.Resources.UVNC_SC_Icon;
+ this.Name = "UltraVNCSC";
+ this.TabText = "UltraVNC SC";
+ this.Text = "UltraVNC SC";
+ this.tsMain.ResumeLayout(false);
+ this.tsMain.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+#endregion
+
+#region Declarations
+ //Private WithEvents vnc As AxCSC_ViewerXControl
+#endregion
+
+#region Public Methods
+ public UltraVNCSC(DockContent Panel)
+ {
+ this.WindowType = Type.UltraVNCSC;
+ this.DockPnl = Panel;
+ this.InitializeComponent();
+ }
+#endregion
+
+#region Private Methods
+ private void UltraVNCSC_Load(object sender, System.EventArgs e)
+ {
+ ApplyLanguage();
+
+ StartListening();
+ }
+
+ private void ApplyLanguage()
+ {
+ btnDisconnect.Text = My.Language.strButtonDisconnect;
+ }
+
+ private void StartListening()
+ {
+ try
+ {
+ //If vnc IsNot Nothing Then
+ // vnc.Dispose()
+ // vnc = Nothing
+ //End If
+
+ //vnc = New AxCSC_ViewerXControl()
+ //SetupLicense()
+
+ //vnc.Parent = pnlContainer
+ //vnc.Dock = DockStyle.Fill
+ //vnc.Show()
+
+ //vnc.StretchMode = ViewerX.ScreenStretchMode.SSM_ASPECT
+ //vnc.ListeningText = My.Language.strInheritListeningForIncomingVNCConnections & " " & My.Settings.UVNCSCPort
+
+ //vnc.ListenEx(My.Settings.UVNCSCPort)
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StartListening (UI.Window.UltraVNCSC) failed" + Constants.vbNewLine + ex.Message, false);
+ Close();
+ }
+ }
+
+ private void SetupLicense()
+ {
+ try
+ {
+ //Dim f As System.Reflection.FieldInfo
+ //f = GetType(AxHost).GetField("licenseKey", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
+ //f.SetValue(vnc, "{072169039103041044176252035252117103057101225235137221179204110241121074}")
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "VNC SetupLicense failed (UI.Window.UltraVNCSC)" + Constants.vbNewLine + ex.Message, true);
+ }
+ }
+
+ //Private Sub vnc_ConnectionAccepted(ByVal sender As Object, ByVal e As AxViewerX._ISmartCodeVNCViewerEvents_ConnectionAcceptedEvent) Handles vnc.ConnectionAccepted
+ // mC.AddMessage(Messages.MessageClass.InformationMsg, e.bstrServerAddress & " is now connected to your UltraVNC SingleClick panel!")
+ //End Sub
+
+ //Private Sub vnc_Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) Handles vnc.Disconnected
+ // StartListening()
+ //End Sub
+
+ private void btnDisconnect_Click(System.Object sender, System.EventArgs e)
+ {
+ //vnc.Dispose()
+ Dispose();
+ App.Runtime.Windows.Show(Type.UltraVNCSC);
+ }
+#endregion
+
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.resx b/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.resx
new file mode 100644
index 000000000..284325778
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.UltraVNCSC.resx
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 18, 14
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+
+
+
+ 53
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/UI/UI.Window.Update.Designer.cs b/mRemoteV1/CS/UI/UI.Window.Update.Designer.cs
new file mode 100644
index 000000000..492064682
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Update.Designer.cs
@@ -0,0 +1,218 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+
+namespace mRemoteNG
+{
+ namespace Wi
+ {
+ namespace Window
+ {
+ public partial class Update
+ {
+#region Windows Form Designer generated code
+ internal System.Windows.Forms.Label lblStatus;
+ internal System.Windows.Forms.TextBox txtChangeLog;
+ internal System.Windows.Forms.ProgressBar prgbDownload;
+ internal System.Windows.Forms.Button btnDownload;
+ internal System.Windows.Forms.Label lblChangeLogLabel;
+ internal System.Windows.Forms.Panel pnlUpdate;
+ internal System.Windows.Forms.Label lblLatestVersionLabel;
+ internal System.Windows.Forms.Label lblInstalledVersionLabel;
+ internal System.Windows.Forms.Label lblLatestVersion;
+ internal System.Windows.Forms.Label lblInstalledVersion;
+ internal System.Windows.Forms.PictureBox pbUpdateImage;
+ internal System.Windows.Forms.Button btnCheckForUpdate;
+
+ private void InitializeComponent()
+ {
+ this.btnCheckForUpdate = new System.Windows.Forms.Button();
+ this.btnCheckForUpdate.Click += new System.EventHandler(this.btnCheckForUpdate_Click);
+ this.pnlUpdate = new System.Windows.Forms.Panel();
+ this.lblChangeLogLabel = new System.Windows.Forms.Label();
+ this.btnDownload = new System.Windows.Forms.Button();
+ this.btnDownload.Click += new System.EventHandler(this.btnDownload_Click);
+ this.prgbDownload = new System.Windows.Forms.ProgressBar();
+ this.txtChangeLog = new System.Windows.Forms.TextBox();
+ this.lblStatus = new System.Windows.Forms.Label();
+ this.lblLatestVersionLabel = new System.Windows.Forms.Label();
+ this.lblInstalledVersionLabel = new System.Windows.Forms.Label();
+ this.lblLatestVersion = new System.Windows.Forms.Label();
+ this.lblInstalledVersion = new System.Windows.Forms.Label();
+ this.pbUpdateImage = new System.Windows.Forms.PictureBox();
+ this.pbUpdateImage.Click += new System.EventHandler(this.pbUpdateImage_Click);
+ this.pnlUpdate.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbUpdateImage).BeginInit();
+ this.SuspendLayout();
+ //
+ //btnCheckForUpdate
+ //
+ this.btnCheckForUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnCheckForUpdate.Location = new System.Drawing.Point(16, 104);
+ this.btnCheckForUpdate.Name = "btnCheckForUpdate";
+ this.btnCheckForUpdate.Size = new System.Drawing.Size(104, 32);
+ this.btnCheckForUpdate.TabIndex = 5;
+ this.btnCheckForUpdate.Text = "Check Again";
+ this.btnCheckForUpdate.UseVisualStyleBackColor = true;
+ //
+ //pnlUpdate
+ //
+ this.pnlUpdate.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlUpdate.Controls.Add(this.lblChangeLogLabel);
+ this.pnlUpdate.Controls.Add(this.btnDownload);
+ this.pnlUpdate.Controls.Add(this.prgbDownload);
+ this.pnlUpdate.Controls.Add(this.txtChangeLog);
+ this.pnlUpdate.Location = new System.Drawing.Point(16, 152);
+ this.pnlUpdate.Name = "pnlUpdate";
+ this.pnlUpdate.Size = new System.Drawing.Size(718, 248);
+ this.pnlUpdate.TabIndex = 6;
+ this.pnlUpdate.Visible = false;
+ //
+ //lblChangeLogLabel
+ //
+ this.lblChangeLogLabel.AutoSize = true;
+ this.lblChangeLogLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblChangeLogLabel.Location = new System.Drawing.Point(0, 0);
+ this.lblChangeLogLabel.Name = "lblChangeLogLabel";
+ this.lblChangeLogLabel.Size = new System.Drawing.Size(79, 13);
+ this.lblChangeLogLabel.TabIndex = 0;
+ this.lblChangeLogLabel.Text = "Change Log:";
+ //
+ //btnDownload
+ //
+ this.btnDownload.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left);
+ this.btnDownload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnDownload.Location = new System.Drawing.Point(0, 216);
+ this.btnDownload.Name = "btnDownload";
+ this.btnDownload.Size = new System.Drawing.Size(144, 32);
+ this.btnDownload.TabIndex = 2;
+ this.btnDownload.Text = "Download and Install";
+ this.btnDownload.UseVisualStyleBackColor = true;
+ //
+ //prgbDownload
+ //
+ this.prgbDownload.Anchor = (System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.prgbDownload.Location = new System.Drawing.Point(160, 224);
+ this.prgbDownload.Name = "prgbDownload";
+ this.prgbDownload.Size = new System.Drawing.Size(542, 23);
+ this.prgbDownload.TabIndex = 3;
+ this.prgbDownload.Visible = false;
+ //
+ //txtChangeLog
+ //
+ this.txtChangeLog.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right);
+ this.txtChangeLog.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Arrow;
+ this.txtChangeLog.Location = new System.Drawing.Point(16, 24);
+ this.txtChangeLog.Multiline = true;
+ this.txtChangeLog.Name = "txtChangeLog";
+ this.txtChangeLog.ReadOnly = true;
+ this.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.txtChangeLog.Size = new System.Drawing.Size(699, 181);
+ this.txtChangeLog.TabIndex = 1;
+ this.txtChangeLog.TabStop = false;
+ //
+ //lblStatus
+ //
+ this.lblStatus.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (12.0F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblStatus.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lblStatus.Location = new System.Drawing.Point(12, 16);
+ this.lblStatus.Name = "lblStatus";
+ this.lblStatus.Size = new System.Drawing.Size(660, 23);
+ this.lblStatus.TabIndex = 0;
+ this.lblStatus.Text = "Status";
+ this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ //lblLatestVersionLabel
+ //
+ this.lblLatestVersionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblLatestVersionLabel.Location = new System.Drawing.Point(16, 72);
+ this.lblLatestVersionLabel.Name = "lblLatestVersionLabel";
+ this.lblLatestVersionLabel.Size = new System.Drawing.Size(120, 16);
+ this.lblLatestVersionLabel.TabIndex = 3;
+ this.lblLatestVersionLabel.Text = "Current version:";
+ this.lblLatestVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //lblInstalledVersionLabel
+ //
+ this.lblInstalledVersionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.lblInstalledVersionLabel.Location = new System.Drawing.Point(16, 48);
+ this.lblInstalledVersionLabel.Name = "lblInstalledVersionLabel";
+ this.lblInstalledVersionLabel.Size = new System.Drawing.Size(120, 16);
+ this.lblInstalledVersionLabel.TabIndex = 1;
+ this.lblInstalledVersionLabel.Text = "Installed version:";
+ this.lblInstalledVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ //lblLatestVersion
+ //
+ this.lblLatestVersion.Location = new System.Drawing.Point(136, 72);
+ this.lblLatestVersion.Name = "lblLatestVersion";
+ this.lblLatestVersion.Size = new System.Drawing.Size(104, 16);
+ this.lblLatestVersion.TabIndex = 4;
+ this.lblLatestVersion.Text = "Version";
+ this.lblLatestVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ //lblInstalledVersion
+ //
+ this.lblInstalledVersion.Location = new System.Drawing.Point(136, 48);
+ this.lblInstalledVersion.Name = "lblInstalledVersion";
+ this.lblInstalledVersion.Size = new System.Drawing.Size(104, 16);
+ this.lblInstalledVersion.TabIndex = 2;
+ this.lblInstalledVersion.Text = "Version";
+ this.lblInstalledVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ //pbUpdateImage
+ //
+ this.pbUpdateImage.Anchor = (System.Windows.Forms.AnchorStyles) (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
+ this.pbUpdateImage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pbUpdateImage.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.pbUpdateImage.Location = new System.Drawing.Point(246, 48);
+ this.pbUpdateImage.Name = "pbUpdateImage";
+ this.pbUpdateImage.Size = new System.Drawing.Size(468, 60);
+ this.pbUpdateImage.TabIndex = 45;
+ this.pbUpdateImage.TabStop = false;
+ this.pbUpdateImage.Visible = false;
+ //
+ //Update
+ //
+ this.ClientSize = new System.Drawing.Size(734, 418);
+ this.Controls.Add(this.pbUpdateImage);
+ this.Controls.Add(this.lblLatestVersionLabel);
+ this.Controls.Add(this.lblInstalledVersionLabel);
+ this.Controls.Add(this.lblLatestVersion);
+ this.Controls.Add(this.btnCheckForUpdate);
+ this.Controls.Add(this.lblInstalledVersion);
+ this.Controls.Add(this.pnlUpdate);
+ this.Controls.Add(this.lblStatus);
+ this.Font = new System.Drawing.Font("Microsoft Sans Serif", (float) (8.25F), System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
+ this.Icon = global::My.Resources.Resources.Update_Icon;
+ this.Name = "Update";
+ this.TabText = "Update";
+ this.Text = "Update";
+ this.pnlUpdate.ResumeLayout(false);
+ this.pnlUpdate.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize) this.pbUpdateImage).EndInit();
+ this.ResumeLayout(false);
+
+ }
+#endregion
+ }
+ }
+ }
+
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Update.cs b/mRemoteV1/CS/UI/UI.Window.Update.cs
new file mode 100644
index 000000000..29ab8977f
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Update.cs
@@ -0,0 +1,281 @@
+// VBConversions Note: VB project level imports
+using System.Collections.Generic;
+using System;
+using AxWFICALib;
+using System.Drawing;
+using System.Diagnostics;
+using System.Data;
+using AxMSTSCLib;
+using Microsoft.VisualBasic;
+using System.Collections;
+using System.Windows.Forms;
+// End of VB project level imports
+
+using System.ComponentModel;
+using mRemoteNG.My;
+using WeifenLuo.WinFormsUI.Docking;
+using System.IO;
+//using mRemoteNG.App.Runtime;
+
+
+namespace mRemoteNG.UI.Window
+{
+ public partial class Update : Base
+ {
+#region Public Methods
+ public Update(DockContent panel)
+ {
+ WindowType = Type.Update;
+ DockPnl = panel;
+ InitializeComponent();
+ FontOverride(this);
+ }
+#endregion
+
+#region Form Stuff
+ public void Update_Load(object sender, EventArgs e)
+ {
+ ApplyLanguage();
+ CheckForUpdate();
+ }
+
+ private void ApplyLanguage()
+ {
+ Text = Language.strMenuCheckForUpdates;
+ TabText = Language.strMenuCheckForUpdates;
+ btnCheckForUpdate.Text = Language.strCheckForUpdate;
+ btnDownload.Text = Language.strDownloadAndInstall;
+ lblChangeLogLabel.Text = Language.strLabelChangeLog;
+ lblInstalledVersion.Text = Language.strVersion;
+ lblInstalledVersionLabel.Text = string.Format("{0}:", Language.strCurrentVersion);
+ lblLatestVersion.Text = Language.strVersion;
+ lblLatestVersionLabel.Text = string.Format("{0}:", Language.strAvailableVersion);
+ }
+
+ public void btnCheckForUpdate_Click(System.Object sender, EventArgs e)
+ {
+ CheckForUpdate();
+ }
+
+ public void btnDownload_Click(System.Object sender, EventArgs e)
+ {
+ DownloadUpdate();
+ }
+
+ public void pbUpdateImage_Click(System.Object sender, EventArgs e)
+ {
+ Uri linkUri = pbUpdateImage.Tag as Uri;
+ if (linkUri == null || linkUri.IsFile || linkUri.IsUnc || linkUri.IsLoopback)
+ {
+ return ;
+ }
+ Process.Start(linkUri.ToString());
+ }
+#endregion
+
+#region Private Fields
+ private App.Update _appUpdate;
+ private bool _isUpdateDownloadHandlerDeclared = false;
+#endregion
+
+#region Private Methods
+ private void CheckForUpdate()
+ {
+ if (_appUpdate == null)
+ {
+ _appUpdate = new App.Update();
+ _appUpdate.Load += _appUpdate.Update_Load;
+ }
+ else if (_appUpdate.IsGetUpdateInfoRunning)
+ {
+ return ;
+ }
+
+ lblStatus.Text = Language.strUpdateCheckingLabel;
+ lblStatus.ForeColor = SystemColors.WindowText;
+ lblLatestVersionLabel.Visible = false;
+ lblInstalledVersion.Visible = false;
+ lblInstalledVersionLabel.Visible = false;
+ lblLatestVersion.Visible = false;
+ btnCheckForUpdate.Visible = false;
+ pnlUpdate.Visible = false;
+
+ _appUpdate.GetUpdateInfoCompletedEvent += GetUpdateInfoCompleted;
+
+ _appUpdate.GetUpdateInfoAsync();
+ }
+
+ private void GetUpdateInfoCompleted(object sender, AsyncCompletedEventArgs e)
+ {
+ if (InvokeRequired)
+ {
+ AsyncCompletedEventHandler myDelegate = new AsyncCompletedEventHandler(GetUpdateInfoCompleted);
+ Invoke(myDelegate, new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetUpdateInfoCompletedEvent -= GetUpdateInfoCompleted;
+
+ lblInstalledVersion.Text = System.Convert.ToString(Application.Info.Version.ToString());
+ lblInstalledVersion.Visible = true;
+ lblInstalledVersionLabel.Visible = true;
+ btnCheckForUpdate.Visible = true;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ if (_appUpdate.IsUpdateAvailable())
+ {
+ lblStatus.Text = Language.strUpdateAvailable;
+ lblStatus.ForeColor = Color.OrangeRed;
+ pnlUpdate.Visible = true;
+
+ App.Update.UpdateInfo updateInfo = _appUpdate.CurrentUpdateInfo;
+ lblLatestVersion.Text = updateInfo.Version.ToString();
+ lblLatestVersionLabel.Visible = true;
+ lblLatestVersion.Visible = true;
+
+ if (updateInfo.ImageAddress == null || string.IsNullOrEmpty(updateInfo.ImageAddress.ToString()))
+ {
+ pbUpdateImage.Visible = false;
+ }
+ else
+ {
+ pbUpdateImage.ImageLocation = updateInfo.ImageAddress.ToString();
+ pbUpdateImage.Tag = updateInfo.ImageLinkAddress;
+ pbUpdateImage.Visible = true;
+ }
+
+ _appUpdate.GetChangeLogCompletedEvent += GetChangeLogCompleted;
+ _appUpdate.GetChangeLogAsync();
+
+ btnDownload.Focus();
+ }
+ else
+ {
+ lblStatus.Text = Language.strNoUpdateAvailable;
+ lblStatus.ForeColor = Color.ForestGreen;
+
+ if (_appUpdate.CurrentUpdateInfo != null)
+ {
+ App.Update.UpdateInfo updateInfo = _appUpdate.CurrentUpdateInfo;
+ if (updateInfo.IsValid && updateInfo.Version != null)
+ {
+ lblLatestVersion.Text = updateInfo.Version.ToString();
+ lblLatestVersionLabel.Visible = true;
+ lblLatestVersion.Visible = true;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ lblStatus.Text = Language.strUpdateCheckFailedLabel;
+ lblStatus.ForeColor = Color.OrangeRed;
+
+ MessageCollector.AddExceptionMessage(Language.strUpdateCheckCompleteFailed, ex);
+ }
+ }
+
+ private void GetChangeLogCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
+ {
+ if (InvokeRequired)
+ {
+ AsyncCompletedEventHandler myDelegate = new AsyncCompletedEventHandler(GetChangeLogCompleted);
+ Invoke(myDelegate, new object[] {sender, e});
+ return ;
+ }
+
+ try
+ {
+ _appUpdate.GetChangeLogCompletedEvent -= GetChangeLogCompleted;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ txtChangeLog.Text = _appUpdate.ChangeLog;
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(Language.strUpdateGetChangeLogFailed, ex);
+ }
+ }
+
+ private void DownloadUpdate()
+ {
+ try
+ {
+ btnDownload.Enabled = false;
+ prgbDownload.Visible = true;
+ prgbDownload.Value = 0;
+
+ if (_isUpdateDownloadHandlerDeclared == false)
+ {
+ _appUpdate.DownloadUpdateProgressChangedEvent += DownloadUpdateProgressChanged;
+ _appUpdate.DownloadUpdateCompletedEvent += DownloadUpdateCompleted;
+ _isUpdateDownloadHandlerDeclared = true;
+ }
+
+ _appUpdate.DownloadUpdateAsync();
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(Language.strUpdateDownloadFailed, ex);
+ }
+ }
+#endregion
+
+#region Events
+ private void DownloadUpdateProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
+ {
+ prgbDownload.Value = e.ProgressPercentage;
+ }
+
+ private void DownloadUpdateCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
+ {
+ try
+ {
+ btnDownload.Enabled = true;
+ prgbDownload.Visible = false;
+
+ if (e.Cancelled)
+ {
+ return ;
+ }
+ if (e.Error != null)
+ {
+ throw (e.Error);
+ }
+
+ if (MessageBox.Show(Language.strUpdateDownloadComplete, Language.strMenuCheckForUpdates, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.OK)
+ {
+ Shutdown.Quit(_appUpdate.CurrentUpdateInfo.UpdateFilePath);
+ return ;
+ }
+ else
+ {
+ File.Delete(_appUpdate.CurrentUpdateInfo.UpdateFilePath);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageCollector.AddExceptionMessage(Language.strUpdateDownloadCompleteFailed, ex);
+ }
+ }
+#endregion
+ }
+}
diff --git a/mRemoteV1/CS/UI/UI.Window.Update.resx b/mRemoteV1/CS/UI/UI.Window.Update.resx
new file mode 100644
index 000000000..19dc0dd8b
--- /dev/null
+++ b/mRemoteV1/CS/UI/UI.Window.Update.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/app.config b/mRemoteV1/CS/app.config
new file mode 100644
index 000000000..df982df95
--- /dev/null
+++ b/mRemoteV1/CS/app.config
@@ -0,0 +1,622 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+ release
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+
+
diff --git a/mRemoteV1/CS/bin/Debug Portable/ADTree.dll b/mRemoteV1/CS/bin/Debug Portable/ADTree.dll
new file mode 100644
index 000000000..98e435b33
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/ADTree.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/AxInterop.MSTSCLib.dll b/mRemoteV1/CS/bin/Debug Portable/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..c0da0a918
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/AxInterop.WFICALib.dll b/mRemoteV1/CS/bin/Debug Portable/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..4cdd784ab
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/DiffieHellman.dll b/mRemoteV1/CS/bin/Debug Portable/DiffieHellman.dll
new file mode 100644
index 000000000..aa3105110
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/DiffieHellman.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/FilteredPropertyGrid.dll b/mRemoteV1/CS/bin/Debug Portable/FilteredPropertyGrid.dll
new file mode 100644
index 000000000..4561e8a9b
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/FilteredPropertyGrid.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/IPTextBox.dll b/mRemoteV1/CS/bin/Debug Portable/IPTextBox.dll
new file mode 100644
index 000000000..e340f4856
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/IPTextBox.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Interop.EOLWTSCOM.dll b/mRemoteV1/CS/bin/Debug Portable/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..95995ebd6
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Interop.MSTSCLib.dll b/mRemoteV1/CS/bin/Debug Portable/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..f53087b4d
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Interop.SHDocVw.dll b/mRemoteV1/CS/bin/Debug Portable/Interop.SHDocVw.dll
new file mode 100644
index 000000000..9e8396f98
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Interop.WFICALib.dll b/mRemoteV1/CS/bin/Debug Portable/Interop.WFICALib.dll
new file mode 100644
index 000000000..f0b43e0df
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Interop.WFICALib.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/MagicLibrary.dll b/mRemoteV1/CS/bin/Debug Portable/MagicLibrary.dll
new file mode 100644
index 000000000..24cfa5d0a
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/MagicLibrary.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/MiniGeckoBrowser.dll b/mRemoteV1/CS/bin/Debug Portable/MiniGeckoBrowser.dll
new file mode 100644
index 000000000..901b73cfc
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/MiniGeckoBrowser.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/MiniTabControl.dll b/mRemoteV1/CS/bin/Debug Portable/MiniTabControl.dll
new file mode 100644
index 000000000..04bb12dd7
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/MiniTabControl.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Org.Mentalis.Security.dll b/mRemoteV1/CS/bin/Debug Portable/Org.Mentalis.Security.dll
new file mode 100644
index 000000000..bac39dd9c
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Org.Mentalis.Security.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/PSTaskDialog.dll b/mRemoteV1/CS/bin/Debug Portable/PSTaskDialog.dll
new file mode 100644
index 000000000..7d74bce32
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/PSTaskDialog.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.dll b/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.dll
new file mode 100644
index 000000000..c34ec1bb1
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.pdb b/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.pdb
new file mode 100644
index 000000000..838e9e472
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/SharedLibraryNG.pdb differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Skybound.Gecko.dll b/mRemoteV1/CS/bin/Debug Portable/Skybound.Gecko.dll
new file mode 100644
index 000000000..19abc441e
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Skybound.Gecko.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/Tamir.SharpSSH.dll b/mRemoteV1/CS/bin/Debug Portable/Tamir.SharpSSH.dll
new file mode 100644
index 000000000..9d217c26f
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/Tamir.SharpSSH.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.dll b/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.dll
new file mode 100644
index 000000000..f9c9dc1d1
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.pdb b/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.pdb
new file mode 100644
index 000000000..15ee70043
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/VncSharpNG.pdb differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll b/mRemoteV1/CS/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll
new file mode 100644
index 000000000..ea1da8876
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/confCons.xml b/mRemoteV1/CS/bin/Debug Portable/confCons.xml
new file mode 100644
index 000000000..5734e3b8d
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/confCons.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/confCons.xml.20160217-2019568612.backup b/mRemoteV1/CS/bin/Debug Portable/confCons.xml.20160217-2019568612.backup
new file mode 100644
index 000000000..3a6e8830d
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/confCons.xml.20160217-2019568612.backup
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/confCons.xml.backup b/mRemoteV1/CS/bin/Debug Portable/confCons.xml.backup
new file mode 100644
index 000000000..3a6e8830d
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/confCons.xml.backup
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/extApps.xml b/mRemoteV1/CS/bin/Debug Portable/extApps.xml
new file mode 100644
index 000000000..b6c8fce11
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/extApps.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/log4net.dll b/mRemoteV1/CS/bin/Debug Portable/log4net.dll
new file mode 100644
index 000000000..ffc57e112
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/log4net.dll differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.application b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.application
new file mode 100644
index 000000000..bff5ff52f
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.application
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A/wbdAnBu2I9YWjjlr+j/hB63C8=
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe
new file mode 100644
index 000000000..97cca3c72
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.config b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.config
new file mode 100644
index 000000000..df982df95
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.config
@@ -0,0 +1,622 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+ release
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+
+
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.manifest b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.manifest
new file mode 100644
index 000000000..1176f9f0b
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.exe.manifest
@@ -0,0 +1,1400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44Gd5pLxAatONvAv9C9PcHjWBYM=
+
+
+
+
+
+
+
+
+
+
+
+ 9EGiZHuXvcSF2vHIzLX89aXCy7I=
+
+
+
+
+
+
+
+
+
+
+
+ xYQvomzivCqJIiNLX95buRW5wV4=
+
+
+
+
+
+
+
+
+
+
+
+ QwvHIN0aGsFCzM00kZNv1tydcNM=
+
+
+
+
+
+
+
+
+
+
+
+ U7a5JrhXRXjiE2RrMarZWUlrPSk=
+
+
+
+
+
+
+
+
+
+
+
+ 5oQA/1NmzsmjKGPv8FQQcYoJrko=
+
+
+
+
+
+
+
+
+
+
+
+ cbfSzV060gLV+uz5ofaV66gpEj0=
+
+
+
+
+
+
+
+
+
+
+
+ wSDSQRGU4kxtkEvU14XWQjv4/9c=
+
+
+
+
+
+
+
+
+
+
+
+ 4mJAkNcSLqyNhizjL+iwj4dRmtE=
+
+
+
+
+
+
+
+
+
+
+
+ PNDA94yLxP9gc5yWusjDatytyWE=
+
+
+
+
+
+
+
+
+
+
+
+ gs3mWnUUwORl7g1QW+VsVmOf8LE=
+
+
+
+
+
+
+
+
+
+
+
+ ITm6gkCPRguqc7bIWOXHacjE4+0=
+
+
+
+
+
+
+
+
+
+
+
+ lV/9eij84QMc2/JMBEg37pzb+yc=
+
+
+
+
+
+
+
+
+
+
+
+ ISJBL0ruabjQc5aOyrVQ8ioqYoU=
+
+
+
+
+
+
+
+
+
+
+
+ 8W1kRQPiGlcdZIQnOGPNhk5G4aw=
+
+
+
+
+
+
+
+
+
+
+
+ 2ofJ6ZRIdtzCVcDQGKPMt/hcoRU=
+
+
+
+
+
+
+
+
+
+
+
+ WbY51SA1eVeZrsMtbAr+G0D1MfE=
+
+
+
+
+
+
+
+
+
+
+
+ kQHgQr5CwWZ+A4S59aV7oS60TPE=
+
+
+
+
+
+
+
+
+
+
+
+ RLcl+zQBaN5/zSLnALtj2PPV1Bc=
+
+
+
+
+
+
+
+
+
+
+
+ jK/SqFKHneGkcDHCY7QBwrhz0hE=
+
+
+
+
+
+
+
+
+
+
+
+ 9BcUnB80DnOnHtnIY59xgy0lI3o=
+
+
+
+
+
+
+
+
+
+
+
+ yAartnJqjN5+joi4GNFEF1eFF98=
+
+
+
+
+
+
+
+
+
+
+
+ cFCUi/HcFgYkwu6ktj8T6A9Wk38=
+
+
+
+
+
+
+
+
+
+
+
+ /809pVrqIGeL8CoaL87eSvIkfVs=
+
+
+
+
+
+
+
+
+
+
+
+ 03LCcbo8s4Bw+LEfIrNBj9QnYn0=
+
+
+
+
+
+
+
+
+
+
+
+ CCzi0+jwGmWvleC+B0Laxf9IEBw=
+
+
+
+
+
+
+
+
+
+
+
+ GU0xclnbzPjNAaVTNhEFPgLL8LI=
+
+
+
+
+
+
+
+
+
+
+
+ X7iUU+P+yq8s+GAiTY3Jq9joir8=
+
+
+
+
+
+
+
+
+
+
+
+ axykFSsEKhFYf9vwuulPo/t237s=
+
+
+
+
+
+
+
+
+
+
+
+ 5AalIZJV/NSO7Rla+mNGIOzFyyI=
+
+
+
+
+
+
+
+
+
+
+
+ 3n8WVIglkP4UnG90TZ1SoEX+/MA=
+
+
+
+
+
+
+
+
+
+
+
+ JynictPu+vwR1O6JLPcSEQGn3XI=
+
+
+
+
+
+
+
+
+
+
+
+ XCT50lZfYw9E71w2e3jAPHadwuE=
+
+
+
+
+
+
+
+
+
+
+
+ ZddmDhtIn1wumPIIy8XY2vpzf8U=
+
+
+
+
+
+
+
+
+
+
+
+ k9yQjlarF0WY7JPngrlZppOoXS0=
+
+
+
+
+
+
+
+
+
+
+
+ UqAT+BwwJYJpl2WjZvjhdH+ii1Q=
+
+
+
+
+
+
+
+
+
+
+
+ SfcfbYJ2BRAQVpbGYlBiqor2s54=
+
+
+
+
+
+
+
+
+
+
+
+ qQLkGAWy/IQxZuqUC5k18s6gQM8=
+
+
+
+
+
+
+
+
+
+
+
+ Hicx0KcBWfTOEs9NwGDg8/31498=
+
+
+
+
+
+
+
+
+
+ Z2WWO3jdjS1G6Btr8vxyvaiWv0c=
+
+
+
+
+
+
+
+
+ TsFkhAE239c+FGjT2wP/uiGhfZE=
+
+
+
+
+
+
+
+
+ 1XZh+BCoIN/cpwqYIlV2mVyOdk0=
+
+
+
+
+
+
+
+
+ aPviwDpCrn3d9YRH00xpta4qq3s=
+
+
+
+
+
+
+
+
+ Wt3+prKWq7hdvBVeNEKOLHmcALY=
+
+
+
+
+
+
+
+
+ dCql5WpLYENwxfsQJw10cWZbiN4=
+
+
+
+
+
+
+
+
+ mSrxtt7MUqRnuUou+F7p+Vne3kI=
+
+
+
+
+
+
+
+
+ FCz2yNTlp9kuIQgkxpxH9vmoa6I=
+
+
+
+
+
+
+
+
+ dEMm/1Ju7gWyAYjwsf/7DbwY4NY=
+
+
+
+
+
+
+
+
+ tfwZqf/JEvHKFNaYMafwB9tVksw=
+
+
+
+
+
+
+
+
+ RXSdPoV1pFjacwgyT81xD2Ridds=
+
+
+
+
+
+
+
+
+ X3Jjz0pJRC0Dnc0oaobxJ6WRTbA=
+
+
+
+
+
+
+
+
+ UHt5aNn67X0oZVnzSbkCaNJq2r4=
+
+
+
+
+
+
+
+
+ Qu/sFEcJzAkS+E0MdPb7TayHm/s=
+
+
+
+
+
+
+
+
+ y4n8uC7KUDbTzzexJePESr26idk=
+
+
+
+
+
+
+
+
+ jgFk0iyeolCcXK46tonesuBbQIg=
+
+
+
+
+
+
+
+
+ lhNwxdhROobYViGAjCe16BSR3u8=
+
+
+
+
+
+
+
+
+ 5YVcUSRR03kVljdZSuLa4JAD55U=
+
+
+
+
+
+
+
+
+ ZW/688yGGCwh8dCDwGh6pOAP1pU=
+
+
+
+
+
+
+
+
+ ZbymUQpDu5skapQVtRF5XbqH11U=
+
+
+
+
+
+
+
+
+ 9sOrUchxEAnpPXAQrxL/6XqYbR4=
+
+
+
+
+
+
+
+
+ ORPyJ2W7A+fpIDG4b5gBTnArqFM=
+
+
+
+
+
+
+
+
+ 4z6s830BETTBvhl5Hkp/cVYjyu4=
+
+
+
+
+
+
+
+
+ hvY7/2NAk19oElDCaBJ3+X7ZojU=
+
+
+
+
+
+
+
+
+ 73V5WwipRxfrgHRUby/GK2ZUfWc=
+
+
+
+
+
+
+
+
+ z+wKfy7dSXF/MVOcQQpVd9t94a4=
+
+
+
+
+
+
+
+
+ sNSQD9oKpERbElO0o9Pk5zjtTBM=
+
+
+
+
+
+
+
+
+ dtI0bovygR/2QKy68MB2NYUsVtY=
+
+
+
+
+
+
+
+
+ cC+PvszW/lHsRvmdnk5low3SJe0=
+
+
+
+
+
+
+
+
+ L9QFvAOfOYCR2odvzPVSDHxgIlw=
+
+
+
+
+
+
+
+
+ JL8zua8vJPEkqGWyAS7ZN653Ma8=
+
+
+
+
+
+
+
+
+ CsxzxcCGHn2eeE9uxuVnkJCjB6s=
+
+
+
+
+
+
+
+
+ 1IyVdFgPUBeVCErJ4GSMJQ2sxEI=
+
+
+
+
+
+
+
+
+ rFu/nf304nKXb1Od7DbhQR/B+Zw=
+
+
+
+
+
+
+
+
+ tVUMzLTt2Xg/fEi4VEasQ/UQsis=
+
+
+
+
+
+
+
+
+ Mni4Be6LDo42CQbnRGo7sJcjPIQ=
+
+
+
+
+
+
+
+
+ y/dT9VClLN9NYtv8vSYUmeclePA=
+
+
+
+
+
+
+
+
+ 5yJlaIZLD9D1ASpOuV/DIpHYLvw=
+
+
+
+
+
+
+
+
+ oJSegPNNFzX48bCW2JYFO5jaTDo=
+
+
+
+
+
+
+
+
+ RPHKMcA1U3Fo1xeaUmb3GciXZMg=
+
+
+
+
+
+
+
+
+ AbZ6+yp6D1SeTZWJqe25CiASWYs=
+
+
+
+
+
+
+
+
+ kDulrCj+YlxKwUO7eHEVT2ldoHI=
+
+
+
+
+
+
+
+
+ 8S+4VIrRRcK5VxIf/0pYWcotmVA=
+
+
+
+
+
+
+
+
+ WsKIiwUwU3jQfa56fpYlTHsFOiI=
+
+
+
+
+
+
+
+
+ 1cZep+Fs/rxuexZCO1FeMffCTGE=
+
+
+
+
+
+
+
+
+ zdM1GdjKpEby/yv8aNL40Nje/1I=
+
+
+
+
+
+
+
+
+ UtGjbt0mL/uFhu8XIfgxmIlZ6HU=
+
+
+
+
+
+
+
+
+ LlZXlA1vOsWqxzGe0jDBy7hy08w=
+
+
+
+
+
+
+
+
+ hUcORMcLBPWq5PbYlMINkapJ9bM=
+
+
+
+
+
+
+
+
+ VW0FbaMW0IRM16qj/QDmC3pPs9s=
+
+
+
+
+
+
+
+
+ SMV0IQlH9ZV9dWn3lcf74WPliho=
+
+
+
+
+
+
+
+
+ /xgtkLN87bIPHceNoWs552hJDYA=
+
+
+
+
+
+
+
+
+ xSqV79k610KxJwXzF922eHIMMr4=
+
+
+
+
+
+
+
+
+ WKyBDumqVKAkACjFu0m1lCjkqiM=
+
+
+
+
+
+
+
+
+ QDWVoOao7//JS07s5iu1V65rKls=
+
+
+
+
+
+
+
+
+ Aw20Q1s1ZPKx/mpIcT5eypFI6+4=
+
+
+
+
+
+
+
+
+ b+fK26M/AHhELTpnf45PNZTUVRI=
+
+
+
+
+
+
+
+
+ Dlq4n4uxMjlhNHrOh0VUNgdkcX8=
+
+
+
+
+
+
+
+
+ EPSPg6YmXJiIF6dw3CeFCFP+Leo=
+
+
+
+
+
+
+
+
+ eSFQ0X1HNef+255curfQxuDNI3w=
+
+
+
+
+
+
+
+
+ un/5XUSGBitEqb6KTlr8IhZ48EI=
+
+
+
+
+
+
+
+
+ apr97XVG4gBj9rx2s/TThPcnW/0=
+
+
+
+
+
+
+
+
+ f/IZnVtEQFb11V6gPx4zLVQlUZc=
+
+
+
+
+
+
+
+
+ 6XJEPfos1t1DKningtZBQu0TLBk=
+
+
+
+
+
+
+
+
+ JUhl+D6K5ybZyRidqB/BmiPWiYs=
+
+
+
+
+
+
+
+
+ KQbICb7J9N+BOjNhlYB13EBc6wA=
+
+
+
+
+
+
+
+
+ aVpeoI56/QuIohrAGdb9SmVwyNs=
+
+
+
+
+
+
+
+
+ rVzZHhNTuQzjBCIkU/haefJ7Yio=
+
+
+
+
+
+
+
+
+ yRw3VsY1vQjHGuFSITYhc7Xm6r8=
+
+
+
+
+
+
+
+
+ RUUKtPH2UgChciklxziy5+fFmJg=
+
+
+
+
+
+
+
+
+ JdQ8+Um/maukuYamRfa62IahPVQ=
+
+
+
+
+
+
+
+
+ 6dcvXXY7483gJAYPgSswQWQlAoc=
+
+
+
+
+
+
+
+
+ H1wIIDdliqxf6V62D82XaR2H64Y=
+
+
+
+
+
+
+
+
+ 8Hjua1Rqfd1QWn2YkZg8BG6egpA=
+
+
+
+
+
+
+
+
+ VuNd/ZKU6ntr3dCuDFrsLEF5e2g=
+
+
+
+
+
+
+
+
+ YFaszV11usrf3DpSqpa/A2lDRfY=
+
+
+
+
+
+
+
+
+ Yd1A/fyUDlBzecYHDuTaJ8ZpgbE=
+
+
+
+
+
+
+
+
+ gyvdHO4N6XsmW6MJYoV37IaCutY=
+
+
+
+
+
+
+
+
+ HocHiBihMkZlcrcj+9K9Bku+6u0=
+
+
+
+
+
+
+
+
+ 0oqWSyJ64/7Fyuqi61ihkuOJn10=
+
+
+
+
+
+
+
+
+ pqN3dj3uTnHbLzLOcM5Gr9q82J8=
+
+
+
+
+
+
+
+
+ tqo787vzUtLlBzNVQLV2s+7y0hA=
+
+
+
+
+
+
+
+
+ CQTlGUxetxZ6VjqGTJxLz3c61kc=
+
+
+
+
+
+
+
+
+ G+JRL40DRopUzjz2i17L+GnYKKU=
+
+
+
+
+
+
+
+
+ 7MKmTKXcRJ6SR4ArO/DvsNcta1c=
+
+
+
+
+
+
+
+
+ Y6Q02Yh15EGqerg+VB8EjE7MFag=
+
+
+
+
+
+
+
+
+ +9nN63Z0RAe5jzEZuZwDNVtKUJY=
+
+
+
+
+
+
+
+
+ RriiRQ1AHTrZkWV5ZPL83Py+Qts=
+
+
+
+
+
+
+
+
+ 2d0xYqxMFYs1xxYdS3QzeDwfXOE=
+
+
+
+
+
+
+
+
+ 8x5wO0vjLDfLSCA1abNVJQVvEiA=
+
+
+
+
+
+
+
+
+ lB0gBC6l3tWvpKQuRhOir2/jaW4=
+
+
+
+
+
+
+
+
+ 821KZm3q0SZbedLZimlyKYGWft0=
+
+
+
+
+
+
+
+
+ vaGaXj40onkJ7nn1nEBC6/sSmUw=
+
+
+
+
+
+
+
+
+ mbw8WxL0OlSP9J1Z5k47VG8a3N8=
+
+
+
+
+
+
+
+
+ jwAV6MCea2vjYdx6EDmmoDiRdd4=
+
+
+
+
+
+
+
+
+ 8WGfw5oYc7+KrBVExegUIYjJgG8=
+
+
+
+
+
+
+
+
+ wQv8MojssTcNIdl+KQapUOKyX4Q=
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.log b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.pdb b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.pdb
new file mode 100644
index 000000000..0512eedef
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.pdb differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.application b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.application
new file mode 100644
index 000000000..bff5ff52f
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.application
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A/wbdAnBu2I9YWjjlr+j/hB63C8=
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe
new file mode 100644
index 000000000..a2140ff29
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.config b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.config
new file mode 100644
index 000000000..df982df95
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.config
@@ -0,0 +1,622 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+ release
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+
+
diff --git a/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.manifest b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.manifest
new file mode 100644
index 000000000..1176f9f0b
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/mRemoteNG.vshost.exe.manifest
@@ -0,0 +1,1400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44Gd5pLxAatONvAv9C9PcHjWBYM=
+
+
+
+
+
+
+
+
+
+
+
+ 9EGiZHuXvcSF2vHIzLX89aXCy7I=
+
+
+
+
+
+
+
+
+
+
+
+ xYQvomzivCqJIiNLX95buRW5wV4=
+
+
+
+
+
+
+
+
+
+
+
+ QwvHIN0aGsFCzM00kZNv1tydcNM=
+
+
+
+
+
+
+
+
+
+
+
+ U7a5JrhXRXjiE2RrMarZWUlrPSk=
+
+
+
+
+
+
+
+
+
+
+
+ 5oQA/1NmzsmjKGPv8FQQcYoJrko=
+
+
+
+
+
+
+
+
+
+
+
+ cbfSzV060gLV+uz5ofaV66gpEj0=
+
+
+
+
+
+
+
+
+
+
+
+ wSDSQRGU4kxtkEvU14XWQjv4/9c=
+
+
+
+
+
+
+
+
+
+
+
+ 4mJAkNcSLqyNhizjL+iwj4dRmtE=
+
+
+
+
+
+
+
+
+
+
+
+ PNDA94yLxP9gc5yWusjDatytyWE=
+
+
+
+
+
+
+
+
+
+
+
+ gs3mWnUUwORl7g1QW+VsVmOf8LE=
+
+
+
+
+
+
+
+
+
+
+
+ ITm6gkCPRguqc7bIWOXHacjE4+0=
+
+
+
+
+
+
+
+
+
+
+
+ lV/9eij84QMc2/JMBEg37pzb+yc=
+
+
+
+
+
+
+
+
+
+
+
+ ISJBL0ruabjQc5aOyrVQ8ioqYoU=
+
+
+
+
+
+
+
+
+
+
+
+ 8W1kRQPiGlcdZIQnOGPNhk5G4aw=
+
+
+
+
+
+
+
+
+
+
+
+ 2ofJ6ZRIdtzCVcDQGKPMt/hcoRU=
+
+
+
+
+
+
+
+
+
+
+
+ WbY51SA1eVeZrsMtbAr+G0D1MfE=
+
+
+
+
+
+
+
+
+
+
+
+ kQHgQr5CwWZ+A4S59aV7oS60TPE=
+
+
+
+
+
+
+
+
+
+
+
+ RLcl+zQBaN5/zSLnALtj2PPV1Bc=
+
+
+
+
+
+
+
+
+
+
+
+ jK/SqFKHneGkcDHCY7QBwrhz0hE=
+
+
+
+
+
+
+
+
+
+
+
+ 9BcUnB80DnOnHtnIY59xgy0lI3o=
+
+
+
+
+
+
+
+
+
+
+
+ yAartnJqjN5+joi4GNFEF1eFF98=
+
+
+
+
+
+
+
+
+
+
+
+ cFCUi/HcFgYkwu6ktj8T6A9Wk38=
+
+
+
+
+
+
+
+
+
+
+
+ /809pVrqIGeL8CoaL87eSvIkfVs=
+
+
+
+
+
+
+
+
+
+
+
+ 03LCcbo8s4Bw+LEfIrNBj9QnYn0=
+
+
+
+
+
+
+
+
+
+
+
+ CCzi0+jwGmWvleC+B0Laxf9IEBw=
+
+
+
+
+
+
+
+
+
+
+
+ GU0xclnbzPjNAaVTNhEFPgLL8LI=
+
+
+
+
+
+
+
+
+
+
+
+ X7iUU+P+yq8s+GAiTY3Jq9joir8=
+
+
+
+
+
+
+
+
+
+
+
+ axykFSsEKhFYf9vwuulPo/t237s=
+
+
+
+
+
+
+
+
+
+
+
+ 5AalIZJV/NSO7Rla+mNGIOzFyyI=
+
+
+
+
+
+
+
+
+
+
+
+ 3n8WVIglkP4UnG90TZ1SoEX+/MA=
+
+
+
+
+
+
+
+
+
+
+
+ JynictPu+vwR1O6JLPcSEQGn3XI=
+
+
+
+
+
+
+
+
+
+
+
+ XCT50lZfYw9E71w2e3jAPHadwuE=
+
+
+
+
+
+
+
+
+
+
+
+ ZddmDhtIn1wumPIIy8XY2vpzf8U=
+
+
+
+
+
+
+
+
+
+
+
+ k9yQjlarF0WY7JPngrlZppOoXS0=
+
+
+
+
+
+
+
+
+
+
+
+ UqAT+BwwJYJpl2WjZvjhdH+ii1Q=
+
+
+
+
+
+
+
+
+
+
+
+ SfcfbYJ2BRAQVpbGYlBiqor2s54=
+
+
+
+
+
+
+
+
+
+
+
+ qQLkGAWy/IQxZuqUC5k18s6gQM8=
+
+
+
+
+
+
+
+
+
+
+
+ Hicx0KcBWfTOEs9NwGDg8/31498=
+
+
+
+
+
+
+
+
+
+ Z2WWO3jdjS1G6Btr8vxyvaiWv0c=
+
+
+
+
+
+
+
+
+ TsFkhAE239c+FGjT2wP/uiGhfZE=
+
+
+
+
+
+
+
+
+ 1XZh+BCoIN/cpwqYIlV2mVyOdk0=
+
+
+
+
+
+
+
+
+ aPviwDpCrn3d9YRH00xpta4qq3s=
+
+
+
+
+
+
+
+
+ Wt3+prKWq7hdvBVeNEKOLHmcALY=
+
+
+
+
+
+
+
+
+ dCql5WpLYENwxfsQJw10cWZbiN4=
+
+
+
+
+
+
+
+
+ mSrxtt7MUqRnuUou+F7p+Vne3kI=
+
+
+
+
+
+
+
+
+ FCz2yNTlp9kuIQgkxpxH9vmoa6I=
+
+
+
+
+
+
+
+
+ dEMm/1Ju7gWyAYjwsf/7DbwY4NY=
+
+
+
+
+
+
+
+
+ tfwZqf/JEvHKFNaYMafwB9tVksw=
+
+
+
+
+
+
+
+
+ RXSdPoV1pFjacwgyT81xD2Ridds=
+
+
+
+
+
+
+
+
+ X3Jjz0pJRC0Dnc0oaobxJ6WRTbA=
+
+
+
+
+
+
+
+
+ UHt5aNn67X0oZVnzSbkCaNJq2r4=
+
+
+
+
+
+
+
+
+ Qu/sFEcJzAkS+E0MdPb7TayHm/s=
+
+
+
+
+
+
+
+
+ y4n8uC7KUDbTzzexJePESr26idk=
+
+
+
+
+
+
+
+
+ jgFk0iyeolCcXK46tonesuBbQIg=
+
+
+
+
+
+
+
+
+ lhNwxdhROobYViGAjCe16BSR3u8=
+
+
+
+
+
+
+
+
+ 5YVcUSRR03kVljdZSuLa4JAD55U=
+
+
+
+
+
+
+
+
+ ZW/688yGGCwh8dCDwGh6pOAP1pU=
+
+
+
+
+
+
+
+
+ ZbymUQpDu5skapQVtRF5XbqH11U=
+
+
+
+
+
+
+
+
+ 9sOrUchxEAnpPXAQrxL/6XqYbR4=
+
+
+
+
+
+
+
+
+ ORPyJ2W7A+fpIDG4b5gBTnArqFM=
+
+
+
+
+
+
+
+
+ 4z6s830BETTBvhl5Hkp/cVYjyu4=
+
+
+
+
+
+
+
+
+ hvY7/2NAk19oElDCaBJ3+X7ZojU=
+
+
+
+
+
+
+
+
+ 73V5WwipRxfrgHRUby/GK2ZUfWc=
+
+
+
+
+
+
+
+
+ z+wKfy7dSXF/MVOcQQpVd9t94a4=
+
+
+
+
+
+
+
+
+ sNSQD9oKpERbElO0o9Pk5zjtTBM=
+
+
+
+
+
+
+
+
+ dtI0bovygR/2QKy68MB2NYUsVtY=
+
+
+
+
+
+
+
+
+ cC+PvszW/lHsRvmdnk5low3SJe0=
+
+
+
+
+
+
+
+
+ L9QFvAOfOYCR2odvzPVSDHxgIlw=
+
+
+
+
+
+
+
+
+ JL8zua8vJPEkqGWyAS7ZN653Ma8=
+
+
+
+
+
+
+
+
+ CsxzxcCGHn2eeE9uxuVnkJCjB6s=
+
+
+
+
+
+
+
+
+ 1IyVdFgPUBeVCErJ4GSMJQ2sxEI=
+
+
+
+
+
+
+
+
+ rFu/nf304nKXb1Od7DbhQR/B+Zw=
+
+
+
+
+
+
+
+
+ tVUMzLTt2Xg/fEi4VEasQ/UQsis=
+
+
+
+
+
+
+
+
+ Mni4Be6LDo42CQbnRGo7sJcjPIQ=
+
+
+
+
+
+
+
+
+ y/dT9VClLN9NYtv8vSYUmeclePA=
+
+
+
+
+
+
+
+
+ 5yJlaIZLD9D1ASpOuV/DIpHYLvw=
+
+
+
+
+
+
+
+
+ oJSegPNNFzX48bCW2JYFO5jaTDo=
+
+
+
+
+
+
+
+
+ RPHKMcA1U3Fo1xeaUmb3GciXZMg=
+
+
+
+
+
+
+
+
+ AbZ6+yp6D1SeTZWJqe25CiASWYs=
+
+
+
+
+
+
+
+
+ kDulrCj+YlxKwUO7eHEVT2ldoHI=
+
+
+
+
+
+
+
+
+ 8S+4VIrRRcK5VxIf/0pYWcotmVA=
+
+
+
+
+
+
+
+
+ WsKIiwUwU3jQfa56fpYlTHsFOiI=
+
+
+
+
+
+
+
+
+ 1cZep+Fs/rxuexZCO1FeMffCTGE=
+
+
+
+
+
+
+
+
+ zdM1GdjKpEby/yv8aNL40Nje/1I=
+
+
+
+
+
+
+
+
+ UtGjbt0mL/uFhu8XIfgxmIlZ6HU=
+
+
+
+
+
+
+
+
+ LlZXlA1vOsWqxzGe0jDBy7hy08w=
+
+
+
+
+
+
+
+
+ hUcORMcLBPWq5PbYlMINkapJ9bM=
+
+
+
+
+
+
+
+
+ VW0FbaMW0IRM16qj/QDmC3pPs9s=
+
+
+
+
+
+
+
+
+ SMV0IQlH9ZV9dWn3lcf74WPliho=
+
+
+
+
+
+
+
+
+ /xgtkLN87bIPHceNoWs552hJDYA=
+
+
+
+
+
+
+
+
+ xSqV79k610KxJwXzF922eHIMMr4=
+
+
+
+
+
+
+
+
+ WKyBDumqVKAkACjFu0m1lCjkqiM=
+
+
+
+
+
+
+
+
+ QDWVoOao7//JS07s5iu1V65rKls=
+
+
+
+
+
+
+
+
+ Aw20Q1s1ZPKx/mpIcT5eypFI6+4=
+
+
+
+
+
+
+
+
+ b+fK26M/AHhELTpnf45PNZTUVRI=
+
+
+
+
+
+
+
+
+ Dlq4n4uxMjlhNHrOh0VUNgdkcX8=
+
+
+
+
+
+
+
+
+ EPSPg6YmXJiIF6dw3CeFCFP+Leo=
+
+
+
+
+
+
+
+
+ eSFQ0X1HNef+255curfQxuDNI3w=
+
+
+
+
+
+
+
+
+ un/5XUSGBitEqb6KTlr8IhZ48EI=
+
+
+
+
+
+
+
+
+ apr97XVG4gBj9rx2s/TThPcnW/0=
+
+
+
+
+
+
+
+
+ f/IZnVtEQFb11V6gPx4zLVQlUZc=
+
+
+
+
+
+
+
+
+ 6XJEPfos1t1DKningtZBQu0TLBk=
+
+
+
+
+
+
+
+
+ JUhl+D6K5ybZyRidqB/BmiPWiYs=
+
+
+
+
+
+
+
+
+ KQbICb7J9N+BOjNhlYB13EBc6wA=
+
+
+
+
+
+
+
+
+ aVpeoI56/QuIohrAGdb9SmVwyNs=
+
+
+
+
+
+
+
+
+ rVzZHhNTuQzjBCIkU/haefJ7Yio=
+
+
+
+
+
+
+
+
+ yRw3VsY1vQjHGuFSITYhc7Xm6r8=
+
+
+
+
+
+
+
+
+ RUUKtPH2UgChciklxziy5+fFmJg=
+
+
+
+
+
+
+
+
+ JdQ8+Um/maukuYamRfa62IahPVQ=
+
+
+
+
+
+
+
+
+ 6dcvXXY7483gJAYPgSswQWQlAoc=
+
+
+
+
+
+
+
+
+ H1wIIDdliqxf6V62D82XaR2H64Y=
+
+
+
+
+
+
+
+
+ 8Hjua1Rqfd1QWn2YkZg8BG6egpA=
+
+
+
+
+
+
+
+
+ VuNd/ZKU6ntr3dCuDFrsLEF5e2g=
+
+
+
+
+
+
+
+
+ YFaszV11usrf3DpSqpa/A2lDRfY=
+
+
+
+
+
+
+
+
+ Yd1A/fyUDlBzecYHDuTaJ8ZpgbE=
+
+
+
+
+
+
+
+
+ gyvdHO4N6XsmW6MJYoV37IaCutY=
+
+
+
+
+
+
+
+
+ HocHiBihMkZlcrcj+9K9Bku+6u0=
+
+
+
+
+
+
+
+
+ 0oqWSyJ64/7Fyuqi61ihkuOJn10=
+
+
+
+
+
+
+
+
+ pqN3dj3uTnHbLzLOcM5Gr9q82J8=
+
+
+
+
+
+
+
+
+ tqo787vzUtLlBzNVQLV2s+7y0hA=
+
+
+
+
+
+
+
+
+ CQTlGUxetxZ6VjqGTJxLz3c61kc=
+
+
+
+
+
+
+
+
+ G+JRL40DRopUzjz2i17L+GnYKKU=
+
+
+
+
+
+
+
+
+ 7MKmTKXcRJ6SR4ArO/DvsNcta1c=
+
+
+
+
+
+
+
+
+ Y6Q02Yh15EGqerg+VB8EjE7MFag=
+
+
+
+
+
+
+
+
+ +9nN63Z0RAe5jzEZuZwDNVtKUJY=
+
+
+
+
+
+
+
+
+ RriiRQ1AHTrZkWV5ZPL83Py+Qts=
+
+
+
+
+
+
+
+
+ 2d0xYqxMFYs1xxYdS3QzeDwfXOE=
+
+
+
+
+
+
+
+
+ 8x5wO0vjLDfLSCA1abNVJQVvEiA=
+
+
+
+
+
+
+
+
+ lB0gBC6l3tWvpKQuRhOir2/jaW4=
+
+
+
+
+
+
+
+
+ 821KZm3q0SZbedLZimlyKYGWft0=
+
+
+
+
+
+
+
+
+ vaGaXj40onkJ7nn1nEBC6/sSmUw=
+
+
+
+
+
+
+
+
+ mbw8WxL0OlSP9J1Z5k47VG8a3N8=
+
+
+
+
+
+
+
+
+ jwAV6MCea2vjYdx6EDmmoDiRdd4=
+
+
+
+
+
+
+
+
+ 8WGfw5oYc7+KrBVExegUIYjJgG8=
+
+
+
+
+
+
+
+
+ wQv8MojssTcNIdl+KQapUOKyX4Q=
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/bin/Debug Portable/pnlLayout.xml b/mRemoteV1/CS/bin/Debug Portable/pnlLayout.xml
new file mode 100644
index 000000000..7a5a2e770
Binary files /dev/null and b/mRemoteV1/CS/bin/Debug Portable/pnlLayout.xml differ
diff --git a/mRemoteV1/CS/bin/Debug Portable/portable.config b/mRemoteV1/CS/bin/Debug Portable/portable.config
new file mode 100644
index 000000000..412fcde13
--- /dev/null
+++ b/mRemoteV1/CS/bin/Debug Portable/portable.config
@@ -0,0 +1,226 @@
+
+
+ False
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+ False
+
+
+ 1980-01-01
+ False
+
+
+ False
+
+
+ 3, 24
+ True
+
+
+ Never
+ release
+
+
+ False
+ True
+ Top
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+ False
+
+
+ False
+ False
+
+
+ False
+
+
+ Colors16Bit
+ False
+ True
+ False
+ SmartSAspect
+ AuthVNC
+ 5
+ False
+ https://update.mremoteng.org/announcement.txt
+ True
+ False
+ False
+
+
+ Normal
+
+
+ False
+ False
+ 0
+
+
+ False
+ EncrBasic
+ RDP
+ FitToWindow
+ NoAuth
+ False
+ False
+
+
+ False
+ https://update.mremoteng.org/
+
+
+
+
+ False
+ False
+
+
+ Default Settings
+ IE
+
+
+
+
+ False
+ False
+ False
+ ProxyNone
+ False
+ False
+ RDP
+ False
+ False
+
+
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ 10
+ EncHextile
+ False
+ False
+
+
+ 3, 0
+
+
+ False
+
+
+ False
+ False
+ False
+ False
+ False
+ False
+
+
+ False
+ noinfo
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+
+
+ DoNotPlay
+ False
+ 0
+ True
+ False
+ Bottom
+
+
+ CompNone
+ True
+ True
+ 9/9, 33/8
+ False
+
+
+ False
+ ColNormal
+
+
+ False
+ False
+
+
+ 5500
+
+
+ False
+ False
+ False
+ False
+ False
+ 80
+ False
+ mRemoteNG
+ False
+ False
+ 175, 175
+ False
+ False
+ False
+
+
+ True
+ True
+ 2
+ 9/8, 34/8
+ False
+ False
+ False
+ True
+ 4
+ False
+ False
+
+
+ mRemoteNG
+ True
+ False
+ False
+ 7
+ False
+ False
+
+
+ False
+ False
+
+
+ False
+
+
+ False
+ Yes
+ True
+ False
+ True
+ False
+ 858, 561
+ False
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/mRemoteV1.csproj b/mRemoteV1/CS/mRemoteV1.csproj
new file mode 100644
index 000000000..3c878e6c2
--- /dev/null
+++ b/mRemoteV1/CS/mRemoteV1.csproj
@@ -0,0 +1,1180 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {4934A491-40BC-4E5B-9166-EA1169A220F6}
+ WinExe
+ mRemoteNG.My.MyApplication
+ mRemoteNG
+ mRemoteNG
+ WindowsForms
+ On
+
+
+ 3.5
+
+
+ false
+ Properties\app.manifest
+ Resources\Icons\mRemote_Icon.ico
+ Off
+ B249710A6BB08171F8E75082CF2355AE2890911A
+ mRemoteV1_TemporaryKey.pfx
+ true
+ false
+ v3.0
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 1
+ 1.64.0.%2a
+ false
+ true
+ true
+
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+
+
+ 1591,660,661
+ x86
+ AllRules.ruleset
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+
+
+ 1591,660,661
+ true
+ x86
+ AllRules.ruleset
+
+
+ true
+ bin\Release Portable\
+ true
+ 1591,660,661
+ pdbonly
+ x86
+ PORTABLE
+ true
+ AllRules.ruleset
+
+
+ true
+ true
+ true
+ bin\Debug Portable\
+ 1591,660,661
+ full
+ x86
+ PORTABLE
+ AllRules.ruleset
+
+
+
+
+
+
+ False
+ References\ADTree.dll
+
+
+ False
+ References\DiffieHellman.dll
+
+
+ False
+ References\FilteredPropertyGrid.dll
+
+
+ False
+ References\IPTextBox.dll
+
+
+ False
+ References\log4net.dll
+
+
+ False
+ References\MagicLibrary.dll
+ True
+
+
+
+ False
+ References\MiniGeckoBrowser.dll
+
+
+ False
+ References\MiniTabControl.dll
+
+
+ False
+ References\Org.Mentalis.Security.dll
+
+
+ False
+ References\PSTaskDialog.dll
+
+
+ False
+ References\Skybound.Gecko.dll
+
+
+
+
+
+
+
+
+
+
+
+ False
+ References\Tamir.SharpSSH.dll
+
+
+ False
+ References\VncSharpNG.dll
+
+
+ False
+ References\WeifenLuo.WinFormsUI.Docking.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+
+ AdvancedPage.cs
+
+
+ UserControl
+
+
+ AppearancePage.cs
+
+
+ UserControl
+
+
+ ConnectionsPage.cs
+
+
+ UserControl
+
+
+ OptionsForm.cs
+
+
+ Form
+
+
+ KeyboardPage.cs
+
+
+ UserControl
+
+
+ UserControl
+
+
+ SqlServerPage.cs
+
+
+ UserControl
+
+
+ StartupExitPage.cs
+
+
+ UserControl
+
+
+ TabsPanelsPage.cs
+
+
+ UserControl
+
+
+ ThemePage.cs
+
+
+ UserControl
+
+
+ UpdatesPage.cs
+
+
+ UserControl
+
+
+
+
+
+
+
+
+
+
+
+
+ Connection.InterfaceControl.cs
+
+
+ Component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ frmChoosePanel.cs
+
+
+ Form
+
+
+ frmMain.cs
+
+
+ Form
+
+
+ PasswordForm.cs
+
+
+ Form
+
+
+
+ True
+ True
+ Language.resx
+
+
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ True
+ Settings.settings
+
+
+
+
+
+
+
+
+
+
+ ReconnectGroup.cs
+
+
+ UserControl
+
+
+
+
+
+
+
+
+
+
+
+
+ UI.Window.ActiveDirectoryImport.cs
+
+
+
+ UI.Window.Announcement.cs
+
+
+
+ Form
+
+
+ Form
+
+
+ Form
+
+
+
+ Form
+
+
+ ExportForm.cs
+
+
+ UI.Window.ExternalTools.cs
+
+
+ Form
+
+
+ Form
+
+
+
+ UI.Window.PortScan.cs
+
+
+ Form
+
+
+ Form
+
+
+ Form
+
+
+ UI.Window.Sessions.cs
+
+
+ Form
+
+
+ Form
+
+
+ UI.Window.Tree.cs
+
+
+ Form
+
+
+
+ Form
+
+
+ UI.Window.Update.cs
+
+
+ Form
+
+
+
+
+ frmChoosePanel.cs
+ Designer
+
+
+ frmMain.cs
+ Designer
+
+
+ PasswordForm.cs
+ Designer
+
+
+ AdvancedPage.cs
+
+
+ AppearancePage.cs
+
+
+ ConnectionsPage.cs
+
+
+ OptionsForm.cs
+
+
+ KeyboardPage.cs
+
+
+ SqlServerPage.cs
+
+
+ StartupExitPage.cs
+
+
+ TabsPanelsPage.cs
+
+
+ ThemePage.cs
+
+
+ UpdatesPage.cs
+
+
+ Designer
+
+
+
+ Designer
+
+
+
+ Designer
+
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+
+ Designer
+
+
+ ResXFileCodeGenerator
+ Language.Designer.cs
+ My
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ My.Resources
+ Designer
+
+
+ ReconnectGroup.cs
+ Designer
+
+
+ UI.Window.About.cs
+ Designer
+
+
+ UI.Window.ActiveDirectoryImport.cs
+ Designer
+
+
+ UI.Window.Announcement.cs
+ Designer
+
+
+ UI.Window.ComponentsCheck.cs
+ Designer
+
+
+ Designer
+ UI.Window.Config.cs
+
+
+ UI.Window.Connection.cs
+ Designer
+
+
+ UI.Window.ErrorsAndInfos.cs
+ Designer
+
+
+ UI.Window.ExternalTools.cs
+ Designer
+
+
+ UI.Window.Help.cs
+ Designer
+
+
+ UI.Window.PortScan.cs
+ Designer
+
+
+ ExportForm.cs
+ Designer
+
+
+ UI.Window.ScreenshotManager.cs
+ Designer
+
+
+ UI.Window.Sessions.cs
+ Designer
+
+
+ UI.Window.SSHTransfer.cs
+ Designer
+
+
+ UI.Window.Tree.cs
+ Designer
+
+
+ UI.Window.UltraVNCSC.cs
+ Designer
+
+
+ UI.Window.Update.cs
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.cs
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
+
+
+ {8C11EFA1-92C3-11D1-BC1E-00C04FA31489}
+ 1
+ 0
+ 0
+ aximp
+ False
+
+
+ {238F6F80-B8B4-11CF-8771-00A024541EE3}
+ 2
+ 7
+ 0
+ aximp
+ False
+
+
+ {96C3FA7A-3211-4D93-BFEA-4589DA4ABDE2}
+ 1
+ 0
+ 0
+ tlbimp
+ False
+
+
+ {8C11EFA1-92C3-11D1-BC1E-00C04FA31489}
+ 1
+ 0
+ 0
+ tlbimp
+ False
+
+
+ {EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}
+ 1
+ 1
+ 0
+ tlbimp
+ False
+
+
+ {00020430-0000-0000-C000-000000000046}
+ 2
+ 0
+ 0
+ primary
+ False
+
+
+ {238F6F80-B8B4-11CF-8771-00A024541EE3}
+ 2
+ 7
+ 0
+ tlbimp
+ False
+
+
+
+
+
+
+
+
+
+ call "$(DevEnvDir)..\tools\vsvars32.bat"
+editbin.exe /LARGEADDRESSAWARE "$(TargetPath)"
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/CS/mRemoteV1.v12.suo b/mRemoteV1/CS/mRemoteV1.v12.suo
new file mode 100644
index 000000000..a37184a05
Binary files /dev/null and b/mRemoteV1/CS/mRemoteV1.v12.suo differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/AxInterop.MSTSCLib.dll b/mRemoteV1/CS/obj/Debug Portable/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..e83e0d833
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/AxInterop.WFICALib.dll b/mRemoteV1/CS/obj/Debug Portable/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..73558a327
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache b/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 000000000..fcb6da7c7
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache b/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 000000000..4755e215e
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/Interop.EOLWTSCOM.dll b/mRemoteV1/CS/obj/Debug Portable/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..f0381891e
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/Interop.MSTSCLib.dll b/mRemoteV1/CS/obj/Debug Portable/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..94129d6a3
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/Interop.SHDocVw.dll b/mRemoteV1/CS/obj/Debug Portable/Interop.SHDocVw.dll
new file mode 100644
index 000000000..096cbb045
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/Interop.WFICALib.dll b/mRemoteV1/CS/obj/Debug Portable/Interop.WFICALib.dll
new file mode 100644
index 000000000..c48c38332
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/Interop.WFICALib.dll differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 000000000..e69de29bb
diff --git a/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 000000000..e69de29bb
diff --git a/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/mRemoteV1/CS/obj/Debug Portable/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 000000000..e69de29bb
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources
new file mode 100644
index 000000000..46a06663e
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources
new file mode 100644
index 000000000..9a4070dc5
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources
new file mode 100644
index 000000000..d021ee446
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources
new file mode 100644
index 000000000..18f151a9f
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources
new file mode 100644
index 000000000..1973ecc93
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources
new file mode 100644
index 000000000..be27e01d1
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources
new file mode 100644
index 000000000..854236080
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources
new file mode 100644
index 000000000..87813e49e
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources
new file mode 100644
index 000000000..4e62ba366
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources
new file mode 100644
index 000000000..0a485917f
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.de.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.de.resources
new file mode 100644
index 000000000..389dad360
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.de.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.el.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.el.resources
new file mode 100644
index 000000000..6cefe7fae
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.el.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.en-US.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.en-US.resources
new file mode 100644
index 000000000..1c40f0f43
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.en-US.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es-AR.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es-AR.resources
new file mode 100644
index 000000000..dc7952cff
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es-AR.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es.resources
new file mode 100644
index 000000000..d8f747138
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.es.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.fr.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.fr.resources
new file mode 100644
index 000000000..a2d556643
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.fr.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.hu.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.hu.resources
new file mode 100644
index 000000000..75528cb6c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.hu.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.it.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.it.resources
new file mode 100644
index 000000000..abd65ee68
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.it.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nb-NO.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nb-NO.resources
new file mode 100644
index 000000000..3bda5110d
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nb-NO.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nl.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nl.resources
new file mode 100644
index 000000000..4dd4e7711
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.nl.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pl.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pl.resources
new file mode 100644
index 000000000..c620b24b7
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pl.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt-BR.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt-BR.resources
new file mode 100644
index 000000000..52989c7f7
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt-BR.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt.resources
new file mode 100644
index 000000000..04cf0b2b0
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.pt.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.resources
new file mode 100644
index 000000000..088114310
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.ru.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.ru.resources
new file mode 100644
index 000000000..d910e5d96
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.ru.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.uk.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.uk.resources
new file mode 100644
index 000000000..b00d18b5c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.uk.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-CN.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-CN.resources
new file mode 100644
index 000000000..c50cd1ea8
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-CN.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-TW.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-TW.resources
new file mode 100644
index 000000000..0642e5a3d
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Language.Language.zh-TW.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Properties.Resources.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Properties.Resources.resources
new file mode 100644
index 000000000..c09e6cf27
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Properties.Resources.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.About.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.About.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.About.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources
new file mode 100644
index 000000000..d683f1bc6
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources
new file mode 100644
index 000000000..835c6e3ae
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources
new file mode 100644
index 000000000..ee8745cac
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources
new file mode 100644
index 000000000..bf76a9163
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources
new file mode 100644
index 000000000..adca77a1a
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources
new file mode 100644
index 000000000..a5345de63
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.About.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.About.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.About.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ActiveDirectoryImport.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ActiveDirectoryImport.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ActiveDirectoryImport.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Announcement.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Announcement.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Announcement.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ComponentsCheck.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ComponentsCheck.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ComponentsCheck.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Config.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Config.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Config.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ErrorsAndInfos.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ErrorsAndInfos.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ErrorsAndInfos.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ExternalTools.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ExternalTools.resources
new file mode 100644
index 000000000..835c6e3ae
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ExternalTools.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Help.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Help.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Help.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.PortScan.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.PortScan.resources
new file mode 100644
index 000000000..ee8745cac
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.PortScan.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.SSHTransfer.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.SSHTransfer.resources
new file mode 100644
index 000000000..bf76a9163
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.SSHTransfer.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ScreenshotManager.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ScreenshotManager.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.ScreenshotManager.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Sessions.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Sessions.resources
new file mode 100644
index 000000000..adca77a1a
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Sessions.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Tree.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Tree.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Tree.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.UltraVNCSC.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.UltraVNCSC.resources
new file mode 100644
index 000000000..a5345de63
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.UltraVNCSC.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Update.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Update.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.Wi.Window.Update.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmMain.resources b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmMain.resources
new file mode 100644
index 000000000..6d7b2f0ea
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteNG.frmMain.resources differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.FileListAbsolute.txt b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.FileListAbsolute.txt
new file mode 100644
index 000000000..d144612c0
--- /dev/null
+++ b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.FileListAbsolute.txt
@@ -0,0 +1,75 @@
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\bin\Debug Portable\mRemoteNG.exe.config
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\Interop.EOLWTSCOM.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\Interop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\Interop.SHDocVw.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\Interop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\AxInterop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\AxInterop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteV1.csproj.ResolveComReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteV1.csprojResolveAssemblyReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.frmChoosePanel.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.frmMain.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.PasswordForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.AdvancedPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.AppearancePage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.KeyboardPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.SqlServerPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.StartupExitPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.ThemePage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.UpdatesPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Properties.Resources.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.ReconnectGroup.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.About.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.ActiveDirectoryImport.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Announcement.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.ComponentsCheck.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Config.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Connection.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.ErrorsAndInfos.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.ExternalTools.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Help.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.PortScan.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Forms.ExportForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.ScreenshotManager.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Sessions.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.SSHTransfer.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Tree.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.UltraVNCSC.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Wi.Window.Update.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.de.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.el.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.en-US.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.es-AR.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.es.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.hu.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.it.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.nb-NO.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.nl.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.pt-BR.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.pt.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.fr.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.pl.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.ru.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.uk.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.zh-CN.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.Language.Language.zh-TW.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteV1.csproj.GenerateResource.Cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.About.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.ActiveDirectoryImport.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Announcement.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.ComponentsCheck.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Config.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.ErrorsAndInfos.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.ExternalTools.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Help.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.PortScan.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.ScreenshotManager.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Sessions.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.SSHTransfer.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Tree.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.UltraVNCSC.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\CS\obj\Debug Portable\mRemoteNG.UI.Window.Update.resources
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.GenerateResource.Cache b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.GenerateResource.Cache
new file mode 100644
index 000000000..7396922fe
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.GenerateResource.Cache differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.ResolveComReference.cache b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.ResolveComReference.cache
new file mode 100644
index 000000000..f02aa7572
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csproj.ResolveComReference.cache differ
diff --git a/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csprojResolveAssemblyReference.cache b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csprojResolveAssemblyReference.cache
new file mode 100644
index 000000000..e5edf2996
Binary files /dev/null and b/mRemoteV1/CS/obj/Debug Portable/mRemoteV1.csprojResolveAssemblyReference.cache differ
diff --git a/mRemoteV1/bin/Debug Portable/ADTree.dll b/mRemoteV1/bin/Debug Portable/ADTree.dll
new file mode 100644
index 000000000..98e435b33
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/ADTree.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/AxInterop.MSTSCLib.dll b/mRemoteV1/bin/Debug Portable/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..c0da0a918
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/AxInterop.WFICALib.dll b/mRemoteV1/bin/Debug Portable/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..4cdd784ab
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/DiffieHellman.dll b/mRemoteV1/bin/Debug Portable/DiffieHellman.dll
new file mode 100644
index 000000000..aa3105110
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/DiffieHellman.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/FilteredPropertyGrid.dll b/mRemoteV1/bin/Debug Portable/FilteredPropertyGrid.dll
new file mode 100644
index 000000000..4561e8a9b
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/FilteredPropertyGrid.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/CMDSwitches.htm b/mRemoteV1/bin/Debug Portable/Help/CMDSwitches.htm
new file mode 100644
index 000000000..842deea0b
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/CMDSwitches.htm
@@ -0,0 +1,28 @@
+
+
+
+ Command-Line Switches
+
+
+
+
+
+ The following is a list of command line switches supported by mRemote.
+
+ /cons :PathToConnectionsFile or /c :PathToConnectionsFile
+ Loads the connections file from the given path
+ /reset
+ Resets window position, panels and toolbars
+ /resetpos or /rp
+ Resets the window position
+ /resetpanels or /rpnl
+ Resets all panel's positions
+ Use this if you have troubles with panel layouts
+ /resettoolbar or /rtbr
+ Resets the positions of all toolbars
+ /noreconnect or /norc Temporary disables reconnect to previously opened sessions Use this if you have problems opening mRemote after you enabled the setting and
+ restarted mRemote
+
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Config.htm b/mRemoteV1/bin/Debug Portable/Help/Config.htm
new file mode 100644
index 000000000..ce9389855
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Config.htm
@@ -0,0 +1,13 @@
+
+
+
+ Config
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Configuration.htm b/mRemoteV1/bin/Debug Portable/Help/Configuration.htm
new file mode 100644
index 000000000..b7e0d1101
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Configuration.htm
@@ -0,0 +1,163 @@
+
+
+
+ Configuration
+
+
+
+
+
+ First start
+
+ Once you got mRemote installed and run it for the first time you should see a
+ screen like on the following screenshot.
+
+
+
+ The first thing that catches your attention will probably be the info box
+ popping up.
+ Don't freak out just yet, this is not a error message and it's totally ok to
+ show up on the first run.
+ It just tells you that the connections file could not be found at the default
+ location and that mRemote will create a new one for you at this location.
+ If you click anywhere else in the application the panel will hide itself again.
+ (Tip: You can also hit Escape to hide the Errors and Infos panel)
+
+
+
+ Now that we now about the Errors and Infos panel take a deep breath and just
+ stare at the gorgeous about screen for a few seconds. =)
+ No, seriously, to create your first connection continue reading.
+
+ Creating Connections
+
+ Right click the root item (the blue ball labeled "Connections") in the
+ Connections panel and select "Add Connection".
+
+
+
+ A new item shows up under the root item. You can give it a name now (or rename
+ it later). I just named mine "Test".
+
+
+
+ Now have a look at the Config panel in the bottom left, just under the
+ Connections panel.
+
+
+
+ As you may notice this is where you configure all the properties of connections
+ and folders.
+ There are a lot of values that can be set but for our first connection we will
+ keep things simple.
+
+ The most important things right now are that we tell the application which host
+ we want to connect to and which protocol we want to use.
+ In this example I will use a Windows 2003 server that has RDP (Remote Desktop
+ Protocol) enabled.
+ As RDP is the default protocol whenever you create a new connection I don't have
+ to change anything there.
+
+ The next thing I'll do is to fill the Hostname/IP field with the hostname I
+ want to connect to.
+
+
+
+ I'll also fill the Username and Password fields so I will be automatically
+ logged on to the server.
+
+
+
+ Ok, that's it, we are ready for our first connection test.
+
+ Opening and Closing Connections
+
+ There are multiple ways to open a connection in mRemote, but the easiest is to
+ just double-click the connection in the Connections panel.
+
+ If I do that now, a new panel named "General" with one tab inside named "Test"
+ will show up.
+
+
+
+ Alright, mRemote is now trying to connect to the specified host.
+
+ If it cannot connect you will see a message popping up like on the following
+ screenshot.
+
+
+
+ This for example means the hostname cannot be resolved.
+
+ Instead, if all goes well you should see the remote desktop.
+
+
+
+ If you do not want to log off from the remote machine but just close it you can
+ do this by simply double-clicking the tab labeled "test" or just close the whole
+ "General" panel by clicking the small "x" in the upper right corner.
+
+ Folders and Inheritance
+
+ Folders in mRemote cannot only be used to categorize connections but also to
+ apply properties to the underlying connections.
+
+ Example:
+ You have 10 Remote Desktop enabled servers in one domain and 15 in another
+ domain.
+ Normally you would spend a lot of time creating all those connections and
+ setting the individual properties like username, password, etc.
+ In mRemote there is an easier way. You just create two folders, one for domain A
+ and one for domain B and set all properties there.
+ Then create the Connections and let them inherit every property. The only
+ properties left to fill on Connection basis are the Connection's name and
+ hostname. Everything else will be inherited from the parent folder.
+
+ "Sounds cool, but how to do it?"
+ I'll show you how to do it!
+
+ First add a new folder.
+
+
+
+ Then give it a name and fill all the properties you need (just like you did with
+ the test Connection).
+
+
+
+
+
+ When you're done setting the values you can either just drag the test Connection
+ inside the folder or create a new one.
+
+
+
+ Right now nothing has changed and nothing will be inherited.
+ To enable inheritance switch to the inheritance view by clicking the dedicated
+ button.
+
+
+
+ The properties that show up now are almost the same as before, but you can only
+ select yes or no.
+
+
+
+ When no is selected the property will not be inherited, yes indicates an
+ inherited property.
+ For this test set "Inherit Everything" to Yes.
+
+ Now if you switch back to the properties view (the button left of the
+ inheritance button) you should see that not much is left of all those
+ properties.
+
+
+
+ Only the Name and Hostname/IP properties are left over, everything else will be
+ inherited from the parent folder.
+ Of course you can also only let some of the properties be inherited.
+
+ Just play around with this a bit and you'll get the hang of it.
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/ConfigurationSQL.htm b/mRemoteV1/bin/Debug Portable/Help/ConfigurationSQL.htm
new file mode 100644
index 000000000..419ec236f
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/ConfigurationSQL.htm
@@ -0,0 +1,49 @@
+
+
+
+ SQL Configuration
+
+
+
+
+
+ Warning
+
+ The SQL feature is in an early beta stage and not intended for use in an
+ productive environment!
+ I recommend you to do a full backup of your connections and settings before
+ switching to SQL Server.
+
+ Steps to configure your SQL Server
+
+ Create a new Database called "mRemoteNG" on your SQL Server.
+ Run the SQL Script below on the newly created Database.
+ Give the users that you want to grant access to the mRemote Connections Database
+ Read/Write permissions on the Database.
+
+
+ Steps to configure mRemoteNG for SQL
+
+ Start mRemoteNG if it's not already running.
+ Go to Options - Connections.
+ Check the box that says "Use SQL Server to load & save connections".
+ Fill in your SQL Server hostname or ip address.
+ If you do not use your Windows logon info to authenticate against the SQL Server
+ fill in the correct Username and Password.
+ Click OK to apply the changes. The main window title should now change to
+ "mRemoteNG | SQL Server".
+ Now click on File - Save to update the tables on your SQL Server with the data
+ from the loaded connections xml file. (Do not click File - New, this doesn't
+ work yet)
+ You should now be able to do everything you were able to do with the XML storage
+ plus see the changes live on another mRemoteNG instance that is connected to the
+ same Database.
+
+
+
+ SQL Table creation Script
+
+ Click here to view the SQL script
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Connection.htm b/mRemoteV1/bin/Debug Portable/Help/Connection.htm
new file mode 100644
index 000000000..22e2784eb
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Connection.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connection
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/Connections.htm b/mRemoteV1/bin/Debug Portable/Help/Connections.htm
new file mode 100644
index 000000000..6c2e919a8
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Connections.htm
@@ -0,0 +1,13 @@
+
+
+
+ Connections
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/ErrorsAndInfos.htm b/mRemoteV1/bin/Debug Portable/Help/ErrorsAndInfos.htm
new file mode 100644
index 000000000..8659fe062
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/ErrorsAndInfos.htm
@@ -0,0 +1,13 @@
+
+
+
+ Errors and Infos
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/ExternalTools.htm b/mRemoteV1/bin/Debug Portable/Help/ExternalTools.htm
new file mode 100644
index 000000000..5f9a91af5
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/ExternalTools.htm
@@ -0,0 +1,245 @@
+
+
+
+ External Tools
+
+
+
+
+
+
+ Introduction to External Tools
+
+ External Tools can help you get things done that can't be done in
+ mRemoteNG.
+ You can for example start a command prompt or launch your favorite FTP tool from
+ within mRemoteNG.
+ This wouldn't make much sense by itself because you can already launch your
+ applications by using the Windows Start Menu, Quick Launch or whatever you
+ prefer to use
+ to start your apps.
+
+ But there's more!
+
+ In mRemoteNG, you can launch applications and tell them what to do with the use of
+ arguments (parameters) and variables of the currently selected Connection.
+ You can, for example, select your home router's SSH Connection entry and do a
+ traceroute (tracert) on that host.
+ This is much quicker and more powerful than opening the console and typing
+ "tracert yourhost".
+
+ The external tools configuration is stored in %APPDATA%\mRemoteNG\extApps.xml
+
+
+ Variables
+
+
+
+ Variables and arguments can be used to tell the external tool what to do.
+
+ This is the list of variables supported by mRemoteNG:
+
+
+
+ %NAME%
+ %HOSTNAME%
+ %PORT%
+ %USERNAME%
+ %PASSWORD%
+ %DOMAIN%
+ %DESCRIPTION%
+ %MACADDRESS%
+ %USERFIELD%
+
+
+
+ Variables always refer to the currently selected connection. Variable names are case-insensitive.
+ Variables can be used in both the Filename and Arguments fields.
+
+
+ mRemoteNG will also expand environment variables such as %PATH% and
+ %USERPROFILE%.
+ If you need to use an environment variable with the same name as an mRemoteNG
+ variable, use \% instead of %. The most common use of this is for the USERNAME
+ environment variable. %USERNAME% will be expanded to the username set in the
+ currently selected connection. \%USERNAME\% will be expanded to the value set in
+ the USERNAME environment variable.
+
+ If you need to send a variable name to a program without mRemoteNG expanding it,
+ use ^% instead of %. mRemoteNG will remove the caret (^) and leave the rest
+ unchanged. For example, ^%USERNAME^% will be sent to the program as %USERNAME%
+ and will not be expanded.
+
+
+ Special Character Escaping
+
+
+
+ Expanded variables will be escaped using the rules below. There are two levels
+ of escaping that are done. The first is escaping for standard argument splitting
+ (C/C++ argv, CommandLineToArgvW, etc). The second is escaping shell
+ metacharacters for ShellExecute.
+
+ Argument splitting escaping:
+
+
+ Each quotation mark will be escaped by a backslash.
+ One or more backslashes (\) followed by a quotation mark ("):
+
+ Each backslash will be escaped by another backslash.
+ The quotation mark will be escaped by a backslash.
+ If the connection's user field contains
+ "This" is a \"test\".
+ Then %USERFIELD% is replaced with
+ \"This\" is a \\\"test\\\".
+
+
+ A variable name followed by a quotation mark (for example, %USERFIELD%") with
+ a value ending in one or more backslashes:
+
+ Each backslash will be escaped by another backslash.
+ Example:
+ If the connection's user field contains c:\Example\
+ Then "%USERFIELD%" is replaced with "c:\Example\\"
+
+
+
+
+
+ To disable
+ argument splitting escaping for a variable, precede its name with a minus (-)
+ sign. For example, %-USERFIELD%.
+
+ Shell metacharacter escaping:
+
+
+ The shell metacharacters are ( ) % ! ^ " < > & |
+ Each shell metacharacter will be escaped by a caret (^).
+
+
+ To disable both argument splitting and shell metacharacter escaping for a
+ variable, precede its name with an exclamation point (!). For example,
+ %!USERFIELD%. This is not recommended and may cause unexpected results.
+
+ Only variables that have been expanded will be escaped. It is up to you to
+ escape the rest of the arguments.
+
+
+ Variable Examples
+
+
+ Arguments User Field Result
+
+ %USERFIELD% "Example" Text
+ \^"Example\^" Text
+
+
+ %-USERFIELD% "Example" Text
+ ^"Example^" Text
+
+
+ %!USERFIELD% "Example" Text
+ "Example" Text
+
+
+ ^%USERFIELD^% "Example" Text
+ %USERFIELD%
+
+
+ ^^%USERFIELD^^% "Example" Text
+ ^%USERFIELD^%
+
+
+ -d "%USERFIELD%" c:\Example\ -d "c:\Example\\"
+
+
+ -d "%-USERFIELD%" c:\Example\ -d "c:\Example\"
+
+
+ -d "%USERFIELD%" Left
+ & Right -d "Left ^& Right"
+
+
+ -d "%!USERFIELD%" Left
+ & Right -d "Left & Right"
+
+
+ %WINDIR% N/A c:\Windows\
+
+
+ \%WINDIR\% N/A c:\Windows\
+
+
+ \^%WINDIR\^% N/A
+ \%WINDIR\%
+
+
+ \\%WINDIR\\% N/A \\%WINDIR\\%
+
+
+
+
+ Example
+
+ First of all, start the external tools editor. To do this, click Tools in the main menu and
+ select External Tools.
+ You will see a screen like on the following screenshot.
+
+
+
+ The fields below the list are greyed out because you haven't created an external tool
+ entry yet.
+ To create one, right click the blank area in the list and select Add, as in the
+ screenshot below.
+
+
+
+ This is what you'll get:
+
+
+
+ So the three fields are now available and need to be filled.
+ The Display Name is simply the name you will see when you want to launch that
+ tool, so give it a descriptive name.
+ I named mine Traceroute as I will create a external tool that will start the
+ tracert command in the console.
+
+
+
+ Ok, the next thing we'll need is a filename. This is the program that we
+ want to be executed.
+ I simply type in cmd for a Windows cmd console.
+
+
+
+ Now the fun part comes in—the arguments.
+ The Windows cmd has a command line argument that tells the console to launch the
+ command followed by that argument and stay open.
+ It's /K. (There's also /C, this is useful when you want the console to close
+ after the command was executed)
+ In this case, I'll use /K as I want to look through the result when the command
+ completes.
+ After that, I just type tracert %HostName%. This tells the console to do a
+ traceroute on the hostname of the currently selected Connection.
+
+
+
+ Alright! That's all we'll need.
+ Now right click one of you connections, click Tools, External Tools
+ and select Traceroute.
+
+
+
+ Voil! A console window will popup and execute your tracert command.
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/ImportFromAD.htm b/mRemoteV1/bin/Debug Portable/Help/ImportFromAD.htm
new file mode 100644
index 000000000..fb9585b99
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/ImportFromAD.htm
@@ -0,0 +1,13 @@
+
+
+
+ Import from Active Directory
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/Index.htm b/mRemoteV1/bin/Debug Portable/Help/Index.htm
new file mode 100644
index 000000000..388465618
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Index.htm
@@ -0,0 +1,38 @@
+
+
+
+mRemote Help
+
+
+
+
+ Introduction
+ Getting started:
+
+ User Interface:
+
+ Quick Reference
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Installation.htm b/mRemoteV1/bin/Debug Portable/Help/Installation.htm
new file mode 100644
index 000000000..f9cd6feaa
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Installation.htm
@@ -0,0 +1,48 @@
+
+
+
+ Installation
+
+
+
+
+
+ Downloads are provided in four different packages, the setup package, binary package,
+ portable package and
+ the source package. They are described below.
+
+ Setup Package
+
+ The setup package is the compiled version of mRemote which comes in the form of
+ a NSIS generated setup.
+ The common way to get mRemote up and running
+
+ Bin Package
+
+ The binary package is a zip package and contains the same files as the setup
+ package but has no automated installer.
+
+ Portable Package
+
+ The portable package consists of the same files as the bin package but contains
+ an modified version of the executable which stores and loads all your settings
+ from files in the application's directory.
+ This package can be used to run mRemote from an USB stick an preserve your
+ configuration wherever you go.
+
+ Source Package
+
+
+ The source package is a zip package and contains the source code in form of a
+ Visual Studio 2008 solution.
+
+
+
+ Updating and Uninstalling
+
+ mRemote can be updated without uninstalling it before.
+ There are no user preferences stored in the application directory (except if you
+ put them there), so uninstalling doesn't wipe your settings.
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Introduction.htm b/mRemoteV1/bin/Debug Portable/Help/Introduction.htm
new file mode 100644
index 000000000..8fa9f8fe2
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Introduction.htm
@@ -0,0 +1,45 @@
+
+
+
+ Introduction
+
+
+
+
+
+ Introduction
+
+ mRemote is a multi-protocol remote connections manager.
+ As of Version 1.00 it supports the RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S protocols.
+ The main goal is to minimize window clutter and to provide a easy gui for managing all your remote connections.
+
+
+ Features
+
+ Free and Open Source, released under the GPL
+ Panels and tabs allow to group certain connections together, dock them to any side of the window or completely undock them and move them to another screen for example
+ Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)
+ Easy to organize and maintain list of connections
+ Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info
+ Support for importing connections from Active Directory
+ Allows creating nested containers (folders) to categorize connections
+ "Quick Connect" feature to quickly open a connection without creating an entry
+ "Quick Search" feature to quickly find a connection while typing
+ Support for SCP/SFTP (SSH) file transfers
+ Assign icons to connections to easily identify purpose
+ Screenshot manager allows to collect multiple screenshots and save them all together or copy them to the clipboard
+ View remote session info and log off sessions (RDP)
+ Portable (with the use of command line switches)
+ "Auto-Update" feature
+ Show description tooltips when hoovering over connections
+ System tray icon with connection menu
+ Fullscreen (Kiosk) mode
+ Assign global credentials to use when no information is provided on connection basis
+ Host Up/Down (Ping) feature shows if the selected host answers to a ping
+
+ License
+
+ The application is released under the GPL (V2)
+ Binary and source code packages are available for download.
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Main.css b/mRemoteV1/bin/Debug Portable/Help/Main.css
new file mode 100644
index 000000000..b2b8afd18
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Main.css
@@ -0,0 +1,148 @@
+/* COMMON STUFF */
+
+body
+{
+ background-color: #FFFFFF;
+ margin-left: 10px;
+ margin-top: 10px;
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+
+body, td, th
+{
+ font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #333333;
+}
+
+img
+{
+ border: none;
+}
+
+ul
+{
+ list-style: square;
+}
+
+
+
+/* HEADINGS */
+
+.heading1
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 16px;
+ color: Black;
+}
+.heading1 a:link
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:visited
+{
+ color: Black;
+ text-decoration: none;
+}
+.heading1 a:hover
+{
+ color: Black;
+ text-decoration: none;
+ border-bottom: 5px solid #e9e9e9;
+}
+
+.heading2
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 15px;
+ color: Black;
+}
+
+.heading3
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 14px;
+ color: Black;
+}
+
+.heading4
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: Black;
+}
+
+.heading5
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ color: Black;
+}
+
+
+
+
+/* LINKS */
+
+a:link
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:visited
+{
+ color: #5d6b70;
+ text-decoration: none;
+}
+
+a:hover
+{
+ color: Black;
+ text-decoration: underline;
+}
+
+
+
+
+/* TABLES */
+
+table {
+ border-collapse: collapse;
+}
+
+table, th, td {
+ border: 1px solid black;
+}
+
+th,td {
+ padding: 5px;
+}
+
+th {
+ background-color: lightgrey;
+ text-align: left;
+}
+
+
+/* MISC STYLES */
+
+.Code
+{
+ padding-right: 5px;
+ padding-left: 5px;
+ color: #000000;
+ font-family: 'Courier New' , Monospace;
+ background-color: #C1C1C1;
+}
+
+.monospace {
+ white-space: nowrap;
+ font-family: 'Courier New', monospace;
+}
+
+.nowrap {
+ white-space: nowrap
+}
diff --git a/mRemoteV1/bin/Debug Portable/Help/MainMenu.htm b/mRemoteV1/bin/Debug Portable/Help/MainMenu.htm
new file mode 100644
index 000000000..1b8ac409a
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/MainMenu.htm
@@ -0,0 +1,13 @@
+
+
+
+ Main Menu
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Options.htm b/mRemoteV1/bin/Debug Portable/Help/Options.htm
new file mode 100644
index 000000000..90535aa16
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Options.htm
@@ -0,0 +1,13 @@
+
+
+
+ Options
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/PortScan.htm b/mRemoteV1/bin/Debug Portable/Help/PortScan.htm
new file mode 100644
index 000000000..5d96e08f4
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/PortScan.htm
@@ -0,0 +1,13 @@
+
+
+
+ Port Scan
+
+
+
+
+
+ Sorry, not yet...
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/Prerequisites.htm b/mRemoteV1/bin/Debug Portable/Help/Prerequisites.htm
new file mode 100644
index 000000000..68e24ee3a
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Prerequisites.htm
@@ -0,0 +1,35 @@
+
+
+
+ Prerequisites
+
+
+
+
+
+ Supported Operating Systems:
+
+
+ Prerequisites:
+
+
+ ATTENTION!
+ mRemote was only tested under 32bit environments, so
+ 64bit systems are
+ unsupported but may run mRemote just as usual.
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/QuickConnect.htm b/mRemoteV1/bin/Debug Portable/Help/QuickConnect.htm
new file mode 100644
index 000000000..943e82e9a
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/QuickConnect.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Connect
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/QuickReference.htm b/mRemoteV1/bin/Debug Portable/Help/QuickReference.htm
new file mode 100644
index 000000000..c088ed03a
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/QuickReference.htm
@@ -0,0 +1,13 @@
+
+
+
+ Quick Reference
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/SQLScript.txt b/mRemoteV1/bin/Debug Portable/Help/SQLScript.txt
new file mode 100644
index 000000000..a70599561
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/SQLScript.txt
@@ -0,0 +1,141 @@
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblCons]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblRoot]
+GO
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblUpdate]
+GO
+
+CREATE TABLE [dbo].[tblCons] (
+ [ID] [int] IDENTITY (1001, 1) NOT NULL ,
+ [ConstantID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PositionID] [int] NOT NULL ,
+ [ParentID] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [LastChange] [datetime] NOT NULL ,
+ [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Type] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Expanded] [bit] NOT NULL ,
+ [Description] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Icon] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Panel] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Username] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [DomainName] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Password] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Hostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Protocol] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [PuttySession] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [Port] [int] NOT NULL ,
+ [ConnectToConsole] [bit] NOT NULL ,
+ [UseCredSsp] [bit] NOT NULL ,
+ [RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ICAEncryptionStrength] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Colors] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Resolution] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [DisplayWallpaper] [bit] NOT NULL ,
+ [DisplayThemes] [bit] NOT NULL ,
+ [EnableFontSmoothing] [bit] NOT NULL ,
+ [EnableDesktopComposition] [bit] NOT NULL ,
+ [CacheBitmaps] [bit] NOT NULL ,
+ [RedirectDiskDrives] [bit] NOT NULL ,
+ [RedirectPorts] [bit] NOT NULL ,
+ [RedirectPrinters] [bit] NOT NULL ,
+ [RedirectSmartCards] [bit] NOT NULL ,
+ [RedirectSound] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RedirectKeys] [bit] NOT NULL ,
+ [Connected] [bit] NOT NULL ,
+ [PreExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [PostExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCCompression] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCEncoding] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCAuthMode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyType] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyIP] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPort] [int] NULL ,
+ [VNCProxyUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCProxyPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCColors] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCSmartSizeMode] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [VNCViewOnly] [bit] NOT NULL ,
+ [RDGatewayUsageMethod] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayHostname] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayUseConnectionCredentials] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [RDGatewayUsername] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayPassword] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [RDGatewayDomain] [varchar] (512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [InheritCacheBitmaps] [bit] NOT NULL ,
+ [InheritColors] [bit] NOT NULL ,
+ [InheritDescription] [bit] NOT NULL ,
+ [InheritDisplayThemes] [bit] NOT NULL ,
+ [InheritDisplayWallpaper] [bit] NOT NULL ,
+ [InheritEnableFontSmoothing] [bit] NOT NULL ,
+ [InheritEnableDesktopComposition] [bit] NOT NULL ,
+ [InheritDomain] [bit] NOT NULL ,
+ [InheritIcon] [bit] NOT NULL ,
+ [InheritPanel] [bit] NOT NULL ,
+ [InheritPassword] [bit] NOT NULL ,
+ [InheritPort] [bit] NOT NULL ,
+ [InheritProtocol] [bit] NOT NULL ,
+ [InheritPuttySession] [bit] NOT NULL ,
+ [InheritRedirectDiskDrives] [bit] NOT NULL ,
+ [InheritRedirectKeys] [bit] NOT NULL ,
+ [InheritRedirectPorts] [bit] NOT NULL ,
+ [InheritRedirectPrinters] [bit] NOT NULL ,
+ [InheritRedirectSmartCards] [bit] NOT NULL ,
+ [InheritRedirectSound] [bit] NOT NULL ,
+ [InheritResolution] [bit] NOT NULL ,
+ [InheritUseConsoleSession] [bit] NOT NULL ,
+ [InheritUseCredSsp] [bit] NOT NULL ,
+ [InheritRenderingEngine] [bit] NOT NULL ,
+ [InheritICAEncryptionStrength] [bit] NOT NULL ,
+ [InheritRDPAuthenticationLevel] [bit] NOT NULL ,
+ [InheritUsername] [bit] NOT NULL ,
+ [InheritPreExtApp] [bit] NOT NULL ,
+ [InheritPostExtApp] [bit] NOT NULL ,
+ [InheritMacAddress] [bit] NOT NULL ,
+ [InheritUserField] [bit] NOT NULL ,
+ [InheritExtApp] [bit] NOT NULL ,
+ [InheritVNCCompression] [bit] NOT NULL,
+ [InheritVNCEncoding] [bit] NOT NULL ,
+ [InheritVNCAuthMode] [bit] NOT NULL ,
+ [InheritVNCProxyType] [bit] NOT NULL ,
+ [InheritVNCProxyIP] [bit] NOT NULL ,
+ [InheritVNCProxyPort] [bit] NOT NULL ,
+ [InheritVNCProxyUsername] [bit] NOT NULL ,
+ [InheritVNCProxyPassword] [bit] NOT NULL ,
+ [InheritVNCColors] [bit] NOT NULL ,
+ [InheritVNCSmartSizeMode] [bit] NOT NULL ,
+ [InheritVNCViewOnly] [bit] NOT NULL ,
+ [InheritRDGatewayUsageMethod] [bit] NOT NULL ,
+ [InheritRDGatewayHostname] [bit] NOT NULL ,
+ [InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL ,
+ [InheritRDGatewayUsername] [bit] NOT NULL ,
+ [InheritRDGatewayPassword] [bit] NOT NULL ,
+ [InheritRDGatewayDomain] [bit] NOT NULL ,
+ [LoadBalanceInfo] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+ [AutomaticResize] [bit] NOT NULL DEFAULT 1 ,
+ [InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 ,
+ [InheritAutomaticResize] [bit] NOT NULL DEFAULT 0
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblRoot] (
+ [Name] [varchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [Export] [bit] NOT NULL ,
+ [Protected] [varchar] (4048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+ [ConfVersion] [float] NOT NULL
+) ON [PRIMARY]
+GO
+
+CREATE TABLE [dbo].[tblUpdate] (
+ [LastUpdate] [datetime] NULL
+) ON [PRIMARY]
+GO
+
diff --git a/mRemoteV1/bin/Debug Portable/Help/SSHFileTransfer.htm b/mRemoteV1/bin/Debug Portable/Help/SSHFileTransfer.htm
new file mode 100644
index 000000000..11094cf78
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/SSHFileTransfer.htm
@@ -0,0 +1,13 @@
+
+
+
+ SSH File Transfer
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/SaveAsExport.htm b/mRemoteV1/bin/Debug Portable/Help/SaveAsExport.htm
new file mode 100644
index 000000000..6f0518181
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/SaveAsExport.htm
@@ -0,0 +1,13 @@
+
+
+
+ Save As / Export
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/ScreenshotManager.htm b/mRemoteV1/bin/Debug Portable/Help/ScreenshotManager.htm
new file mode 100644
index 000000000..9687ba0f2
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/ScreenshotManager.htm
@@ -0,0 +1,13 @@
+
+
+
+ Screenshot Manager
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/01.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/01.png
new file mode 100644
index 000000000..af7434b8e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/01.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/02.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/02.png
new file mode 100644
index 000000000..f859e5c7f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/02.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/03.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/03.png
new file mode 100644
index 000000000..ca1c8ea5b
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/03.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/04.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/04.png
new file mode 100644
index 000000000..fb3096ad7
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/04.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/05.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/05.png
new file mode 100644
index 000000000..54d099427
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/05.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/06.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/06.png
new file mode 100644
index 000000000..9b50fcb8d
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/06.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/07.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/07.png
new file mode 100644
index 000000000..fed9440db
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/07.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/08.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/08.png
new file mode 100644
index 000000000..cf6eac257
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/08.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/09.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/09.png
new file mode 100644
index 000000000..a60a92e8f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/09.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/10.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/10.png
new file mode 100644
index 000000000..2d064c1e7
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/10.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/11.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/11.png
new file mode 100644
index 000000000..daa443650
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/11.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/12.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/12.png
new file mode 100644
index 000000000..7bf9c39d2
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/12.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/13.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/13.png
new file mode 100644
index 000000000..9f5cc5a93
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/13.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/14.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/14.png
new file mode 100644
index 000000000..d7549110f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/14.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/15.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/15.png
new file mode 100644
index 000000000..17ada9012
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/15.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/16.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/16.png
new file mode 100644
index 000000000..6c0c2d686
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/16.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/17.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/17.png
new file mode 100644
index 000000000..5b6d4f23b
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Configuration/17.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/01.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/01.png
new file mode 100644
index 000000000..2cbd401e6
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/01.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/02.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/02.png
new file mode 100644
index 000000000..2f25956d5
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/02.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/03.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/03.png
new file mode 100644
index 000000000..3a7a8ed2c
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/03.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/04.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/04.png
new file mode 100644
index 000000000..e8ac720dd
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/04.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/05.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/05.png
new file mode 100644
index 000000000..9e719ca30
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/05.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/06.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/06.png
new file mode 100644
index 000000000..a5e90d290
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/06.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/07.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/07.png
new file mode 100644
index 000000000..52f96e91f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/07.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/08.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/08.png
new file mode 100644
index 000000000..7b90f49da
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/External Tools/08.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/File.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/File.png
new file mode 100644
index 000000000..3f2038760
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/File.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Info.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Info.png
new file mode 100644
index 000000000..b7efeb861
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Info.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/QuickConnect.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/QuickConnect.png
new file mode 100644
index 000000000..7ed0dbe9b
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/QuickConnect.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Tools.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Tools.png
new file mode 100644
index 000000000..70b7be4f5
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/Tools.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/View.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/View.png
new file mode 100644
index 000000000..3efc7b2ef
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Main Menu/View.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Screenshots/Reference/01.png b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Reference/01.png
new file mode 100644
index 000000000..431af8282
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Help/Screenshots/Reference/01.png differ
diff --git a/mRemoteV1/bin/Debug Portable/Help/Sessions.htm b/mRemoteV1/bin/Debug Portable/Help/Sessions.htm
new file mode 100644
index 000000000..3897f7bee
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Sessions.htm
@@ -0,0 +1,13 @@
+
+
+
+ Sessions
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/Help/Update.htm b/mRemoteV1/bin/Debug Portable/Help/Update.htm
new file mode 100644
index 000000000..339d3a563
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/Help/Update.htm
@@ -0,0 +1,13 @@
+
+
+
+ Update
+
+
+
+
+
+ Sorry, not yet...
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/IPTextBox.dll b/mRemoteV1/bin/Debug Portable/IPTextBox.dll
new file mode 100644
index 000000000..e340f4856
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/IPTextBox.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Anti Virus.ico b/mRemoteV1/bin/Debug Portable/Icons/Anti Virus.ico
new file mode 100644
index 000000000..815d01c4c
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Anti Virus.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Backup.ico b/mRemoteV1/bin/Debug Portable/Icons/Backup.ico
new file mode 100644
index 000000000..3e9165148
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Backup.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Build Server.ico b/mRemoteV1/bin/Debug Portable/Icons/Build Server.ico
new file mode 100644
index 000000000..b664fa74e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Build Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Database.ico b/mRemoteV1/bin/Debug Portable/Icons/Database.ico
new file mode 100644
index 000000000..0926231a4
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Database.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Domain Controller.ico b/mRemoteV1/bin/Debug Portable/Icons/Domain Controller.ico
new file mode 100644
index 000000000..0582f3cac
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Domain Controller.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/ESX.ico b/mRemoteV1/bin/Debug Portable/Icons/ESX.ico
new file mode 100644
index 000000000..54eeb2a4d
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/ESX.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Fax.ico b/mRemoteV1/bin/Debug Portable/Icons/Fax.ico
new file mode 100644
index 000000000..3bdc790ab
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Fax.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/File Server.ico b/mRemoteV1/bin/Debug Portable/Icons/File Server.ico
new file mode 100644
index 000000000..67676b7d7
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/File Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Finance.ico b/mRemoteV1/bin/Debug Portable/Icons/Finance.ico
new file mode 100644
index 000000000..ab813dca8
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Finance.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Firewall.ico b/mRemoteV1/bin/Debug Portable/Icons/Firewall.ico
new file mode 100644
index 000000000..2343ae6a6
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Firewall.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Linux.ico b/mRemoteV1/bin/Debug Portable/Icons/Linux.ico
new file mode 100644
index 000000000..cb8f13a90
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Linux.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Log.ico b/mRemoteV1/bin/Debug Portable/Icons/Log.ico
new file mode 100644
index 000000000..789653ef1
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Log.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Mail Server.ico b/mRemoteV1/bin/Debug Portable/Icons/Mail Server.ico
new file mode 100644
index 000000000..9f0d18069
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Mail Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/PuTTY.ico b/mRemoteV1/bin/Debug Portable/Icons/PuTTY.ico
new file mode 100644
index 000000000..f7a1840a8
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/PuTTY.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Remote Desktop.ico b/mRemoteV1/bin/Debug Portable/Icons/Remote Desktop.ico
new file mode 100644
index 000000000..2ac9c2123
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Remote Desktop.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Router.ico b/mRemoteV1/bin/Debug Portable/Icons/Router.ico
new file mode 100644
index 000000000..b1cd8e60c
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Router.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/SSH.ico b/mRemoteV1/bin/Debug Portable/Icons/SSH.ico
new file mode 100644
index 000000000..12b5b5809
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/SSH.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/SharePoint.ico b/mRemoteV1/bin/Debug Portable/Icons/SharePoint.ico
new file mode 100644
index 000000000..5c420c311
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/SharePoint.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Switch.ico b/mRemoteV1/bin/Debug Portable/Icons/Switch.ico
new file mode 100644
index 000000000..acb7482ad
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Switch.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Tel.ico b/mRemoteV1/bin/Debug Portable/Icons/Tel.ico
new file mode 100644
index 000000000..b4b401fc0
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Tel.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Telnet.ico b/mRemoteV1/bin/Debug Portable/Icons/Telnet.ico
new file mode 100644
index 000000000..ebe0c036a
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Telnet.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Terminal Server.ico b/mRemoteV1/bin/Debug Portable/Icons/Terminal Server.ico
new file mode 100644
index 000000000..c19c6ba67
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Terminal Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Test Server.ico b/mRemoteV1/bin/Debug Portable/Icons/Test Server.ico
new file mode 100644
index 000000000..6159d9f8c
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Test Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Virtual Machine.ico b/mRemoteV1/bin/Debug Portable/Icons/Virtual Machine.ico
new file mode 100644
index 000000000..00d805f8e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Virtual Machine.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Web Server.ico b/mRemoteV1/bin/Debug Portable/Icons/Web Server.ico
new file mode 100644
index 000000000..d2aa024d7
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Web Server.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/WiFi.ico b/mRemoteV1/bin/Debug Portable/Icons/WiFi.ico
new file mode 100644
index 000000000..860757459
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/WiFi.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Windows.ico b/mRemoteV1/bin/Debug Portable/Icons/Windows.ico
new file mode 100644
index 000000000..3a9752bad
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Windows.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/Workstation.ico b/mRemoteV1/bin/Debug Portable/Icons/Workstation.ico
new file mode 100644
index 000000000..95cbf2321
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/Workstation.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/mRemote.ico b/mRemoteV1/bin/Debug Portable/Icons/mRemote.ico
new file mode 100644
index 000000000..02b38ac0b
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/mRemote.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Icons/mRemoteNG.ico b/mRemoteV1/bin/Debug Portable/Icons/mRemoteNG.ico
new file mode 100644
index 000000000..08c1072aa
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Icons/mRemoteNG.ico differ
diff --git a/mRemoteV1/bin/Debug Portable/Interop.EOLWTSCOM.dll b/mRemoteV1/bin/Debug Portable/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..95995ebd6
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Interop.MSTSCLib.dll b/mRemoteV1/bin/Debug Portable/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..f53087b4d
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Interop.SHDocVw.dll b/mRemoteV1/bin/Debug Portable/Interop.SHDocVw.dll
new file mode 100644
index 000000000..9e8396f98
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Interop.WFICALib.dll b/mRemoteV1/bin/Debug Portable/Interop.WFICALib.dll
new file mode 100644
index 000000000..f0b43e0df
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Interop.WFICALib.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/MagicLibrary.dll b/mRemoteV1/bin/Debug Portable/MagicLibrary.dll
new file mode 100644
index 000000000..24cfa5d0a
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/MagicLibrary.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/MiniGeckoBrowser.dll b/mRemoteV1/bin/Debug Portable/MiniGeckoBrowser.dll
new file mode 100644
index 000000000..901b73cfc
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/MiniGeckoBrowser.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/MiniTabControl.dll b/mRemoteV1/bin/Debug Portable/MiniTabControl.dll
new file mode 100644
index 000000000..04bb12dd7
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/MiniTabControl.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Org.Mentalis.Security.dll b/mRemoteV1/bin/Debug Portable/Org.Mentalis.Security.dll
new file mode 100644
index 000000000..bac39dd9c
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Org.Mentalis.Security.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/PSTaskDialog.dll b/mRemoteV1/bin/Debug Portable/PSTaskDialog.dll
new file mode 100644
index 000000000..7d74bce32
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/PSTaskDialog.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/SharedLibraryNG.dll b/mRemoteV1/bin/Debug Portable/SharedLibraryNG.dll
new file mode 100644
index 000000000..c34ec1bb1
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/SharedLibraryNG.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/SharedLibraryNG.pdb b/mRemoteV1/bin/Debug Portable/SharedLibraryNG.pdb
new file mode 100644
index 000000000..838e9e472
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/SharedLibraryNG.pdb differ
diff --git a/mRemoteV1/bin/Debug Portable/Skybound.Gecko.dll b/mRemoteV1/bin/Debug Portable/Skybound.Gecko.dll
new file mode 100644
index 000000000..19abc441e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Skybound.Gecko.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/Tamir.SharpSSH.dll b/mRemoteV1/bin/Debug Portable/Tamir.SharpSSH.dll
new file mode 100644
index 000000000..9d217c26f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/Tamir.SharpSSH.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/VncSharpNG.dll b/mRemoteV1/bin/Debug Portable/VncSharpNG.dll
new file mode 100644
index 000000000..f9c9dc1d1
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/VncSharpNG.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/VncSharpNG.pdb b/mRemoteV1/bin/Debug Portable/VncSharpNG.pdb
new file mode 100644
index 000000000..15ee70043
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/VncSharpNG.pdb differ
diff --git a/mRemoteV1/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll b/mRemoteV1/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll
new file mode 100644
index 000000000..ea1da8876
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/WeifenLuo.WinFormsUI.Docking.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/app.publish/mRemoteNG.exe b/mRemoteV1/bin/Debug Portable/app.publish/mRemoteNG.exe
new file mode 100644
index 000000000..e6847aa03
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/app.publish/mRemoteNG.exe differ
diff --git a/mRemoteV1/bin/Debug Portable/confCons.xml b/mRemoteV1/bin/Debug Portable/confCons.xml
new file mode 100644
index 000000000..5734e3b8d
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/confCons.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/confCons.xml.20160217-2019568612.backup b/mRemoteV1/bin/Debug Portable/confCons.xml.20160217-2019568612.backup
new file mode 100644
index 000000000..3a6e8830d
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/confCons.xml.20160217-2019568612.backup
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/confCons.xml.backup b/mRemoteV1/bin/Debug Portable/confCons.xml.backup
new file mode 100644
index 000000000..3a6e8830d
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/confCons.xml.backup
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/de/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/de/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c89d53ae8
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/de/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/el/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/el/mRemoteNG.resources.dll
new file mode 100644
index 000000000..155321036
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/el/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/en-US/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/en-US/mRemoteNG.resources.dll
new file mode 100644
index 000000000..6c9a4742f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/en-US/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/es-AR/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/es-AR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3568a6112
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/es-AR/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/es/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/es/mRemoteNG.resources.dll
new file mode 100644
index 000000000..470c47cb3
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/es/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/extApps.xml b/mRemoteV1/bin/Debug Portable/extApps.xml
new file mode 100644
index 000000000..b6c8fce11
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/extApps.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/fr/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/fr/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3f52b2dd5
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/fr/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/hu/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/hu/mRemoteNG.resources.dll
new file mode 100644
index 000000000..59ff4d55e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/hu/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/it/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/it/mRemoteNG.resources.dll
new file mode 100644
index 000000000..37f5e8f47
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/it/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/log4net.dll b/mRemoteV1/bin/Debug Portable/log4net.dll
new file mode 100644
index 000000000..ffc57e112
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/log4net.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.application b/mRemoteV1/bin/Debug Portable/mRemoteNG.application
new file mode 100644
index 000000000..bff5ff52f
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.application
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A/wbdAnBu2I9YWjjlr+j/hB63C8=
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.exe b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe
new file mode 100644
index 000000000..97cca3c72
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe differ
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.config b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.config
new file mode 100644
index 000000000..df982df95
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.config
@@ -0,0 +1,622 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+ release
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.manifest b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.manifest
new file mode 100644
index 000000000..1176f9f0b
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.exe.manifest
@@ -0,0 +1,1400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44Gd5pLxAatONvAv9C9PcHjWBYM=
+
+
+
+
+
+
+
+
+
+
+
+ 9EGiZHuXvcSF2vHIzLX89aXCy7I=
+
+
+
+
+
+
+
+
+
+
+
+ xYQvomzivCqJIiNLX95buRW5wV4=
+
+
+
+
+
+
+
+
+
+
+
+ QwvHIN0aGsFCzM00kZNv1tydcNM=
+
+
+
+
+
+
+
+
+
+
+
+ U7a5JrhXRXjiE2RrMarZWUlrPSk=
+
+
+
+
+
+
+
+
+
+
+
+ 5oQA/1NmzsmjKGPv8FQQcYoJrko=
+
+
+
+
+
+
+
+
+
+
+
+ cbfSzV060gLV+uz5ofaV66gpEj0=
+
+
+
+
+
+
+
+
+
+
+
+ wSDSQRGU4kxtkEvU14XWQjv4/9c=
+
+
+
+
+
+
+
+
+
+
+
+ 4mJAkNcSLqyNhizjL+iwj4dRmtE=
+
+
+
+
+
+
+
+
+
+
+
+ PNDA94yLxP9gc5yWusjDatytyWE=
+
+
+
+
+
+
+
+
+
+
+
+ gs3mWnUUwORl7g1QW+VsVmOf8LE=
+
+
+
+
+
+
+
+
+
+
+
+ ITm6gkCPRguqc7bIWOXHacjE4+0=
+
+
+
+
+
+
+
+
+
+
+
+ lV/9eij84QMc2/JMBEg37pzb+yc=
+
+
+
+
+
+
+
+
+
+
+
+ ISJBL0ruabjQc5aOyrVQ8ioqYoU=
+
+
+
+
+
+
+
+
+
+
+
+ 8W1kRQPiGlcdZIQnOGPNhk5G4aw=
+
+
+
+
+
+
+
+
+
+
+
+ 2ofJ6ZRIdtzCVcDQGKPMt/hcoRU=
+
+
+
+
+
+
+
+
+
+
+
+ WbY51SA1eVeZrsMtbAr+G0D1MfE=
+
+
+
+
+
+
+
+
+
+
+
+ kQHgQr5CwWZ+A4S59aV7oS60TPE=
+
+
+
+
+
+
+
+
+
+
+
+ RLcl+zQBaN5/zSLnALtj2PPV1Bc=
+
+
+
+
+
+
+
+
+
+
+
+ jK/SqFKHneGkcDHCY7QBwrhz0hE=
+
+
+
+
+
+
+
+
+
+
+
+ 9BcUnB80DnOnHtnIY59xgy0lI3o=
+
+
+
+
+
+
+
+
+
+
+
+ yAartnJqjN5+joi4GNFEF1eFF98=
+
+
+
+
+
+
+
+
+
+
+
+ cFCUi/HcFgYkwu6ktj8T6A9Wk38=
+
+
+
+
+
+
+
+
+
+
+
+ /809pVrqIGeL8CoaL87eSvIkfVs=
+
+
+
+
+
+
+
+
+
+
+
+ 03LCcbo8s4Bw+LEfIrNBj9QnYn0=
+
+
+
+
+
+
+
+
+
+
+
+ CCzi0+jwGmWvleC+B0Laxf9IEBw=
+
+
+
+
+
+
+
+
+
+
+
+ GU0xclnbzPjNAaVTNhEFPgLL8LI=
+
+
+
+
+
+
+
+
+
+
+
+ X7iUU+P+yq8s+GAiTY3Jq9joir8=
+
+
+
+
+
+
+
+
+
+
+
+ axykFSsEKhFYf9vwuulPo/t237s=
+
+
+
+
+
+
+
+
+
+
+
+ 5AalIZJV/NSO7Rla+mNGIOzFyyI=
+
+
+
+
+
+
+
+
+
+
+
+ 3n8WVIglkP4UnG90TZ1SoEX+/MA=
+
+
+
+
+
+
+
+
+
+
+
+ JynictPu+vwR1O6JLPcSEQGn3XI=
+
+
+
+
+
+
+
+
+
+
+
+ XCT50lZfYw9E71w2e3jAPHadwuE=
+
+
+
+
+
+
+
+
+
+
+
+ ZddmDhtIn1wumPIIy8XY2vpzf8U=
+
+
+
+
+
+
+
+
+
+
+
+ k9yQjlarF0WY7JPngrlZppOoXS0=
+
+
+
+
+
+
+
+
+
+
+
+ UqAT+BwwJYJpl2WjZvjhdH+ii1Q=
+
+
+
+
+
+
+
+
+
+
+
+ SfcfbYJ2BRAQVpbGYlBiqor2s54=
+
+
+
+
+
+
+
+
+
+
+
+ qQLkGAWy/IQxZuqUC5k18s6gQM8=
+
+
+
+
+
+
+
+
+
+
+
+ Hicx0KcBWfTOEs9NwGDg8/31498=
+
+
+
+
+
+
+
+
+
+ Z2WWO3jdjS1G6Btr8vxyvaiWv0c=
+
+
+
+
+
+
+
+
+ TsFkhAE239c+FGjT2wP/uiGhfZE=
+
+
+
+
+
+
+
+
+ 1XZh+BCoIN/cpwqYIlV2mVyOdk0=
+
+
+
+
+
+
+
+
+ aPviwDpCrn3d9YRH00xpta4qq3s=
+
+
+
+
+
+
+
+
+ Wt3+prKWq7hdvBVeNEKOLHmcALY=
+
+
+
+
+
+
+
+
+ dCql5WpLYENwxfsQJw10cWZbiN4=
+
+
+
+
+
+
+
+
+ mSrxtt7MUqRnuUou+F7p+Vne3kI=
+
+
+
+
+
+
+
+
+ FCz2yNTlp9kuIQgkxpxH9vmoa6I=
+
+
+
+
+
+
+
+
+ dEMm/1Ju7gWyAYjwsf/7DbwY4NY=
+
+
+
+
+
+
+
+
+ tfwZqf/JEvHKFNaYMafwB9tVksw=
+
+
+
+
+
+
+
+
+ RXSdPoV1pFjacwgyT81xD2Ridds=
+
+
+
+
+
+
+
+
+ X3Jjz0pJRC0Dnc0oaobxJ6WRTbA=
+
+
+
+
+
+
+
+
+ UHt5aNn67X0oZVnzSbkCaNJq2r4=
+
+
+
+
+
+
+
+
+ Qu/sFEcJzAkS+E0MdPb7TayHm/s=
+
+
+
+
+
+
+
+
+ y4n8uC7KUDbTzzexJePESr26idk=
+
+
+
+
+
+
+
+
+ jgFk0iyeolCcXK46tonesuBbQIg=
+
+
+
+
+
+
+
+
+ lhNwxdhROobYViGAjCe16BSR3u8=
+
+
+
+
+
+
+
+
+ 5YVcUSRR03kVljdZSuLa4JAD55U=
+
+
+
+
+
+
+
+
+ ZW/688yGGCwh8dCDwGh6pOAP1pU=
+
+
+
+
+
+
+
+
+ ZbymUQpDu5skapQVtRF5XbqH11U=
+
+
+
+
+
+
+
+
+ 9sOrUchxEAnpPXAQrxL/6XqYbR4=
+
+
+
+
+
+
+
+
+ ORPyJ2W7A+fpIDG4b5gBTnArqFM=
+
+
+
+
+
+
+
+
+ 4z6s830BETTBvhl5Hkp/cVYjyu4=
+
+
+
+
+
+
+
+
+ hvY7/2NAk19oElDCaBJ3+X7ZojU=
+
+
+
+
+
+
+
+
+ 73V5WwipRxfrgHRUby/GK2ZUfWc=
+
+
+
+
+
+
+
+
+ z+wKfy7dSXF/MVOcQQpVd9t94a4=
+
+
+
+
+
+
+
+
+ sNSQD9oKpERbElO0o9Pk5zjtTBM=
+
+
+
+
+
+
+
+
+ dtI0bovygR/2QKy68MB2NYUsVtY=
+
+
+
+
+
+
+
+
+ cC+PvszW/lHsRvmdnk5low3SJe0=
+
+
+
+
+
+
+
+
+ L9QFvAOfOYCR2odvzPVSDHxgIlw=
+
+
+
+
+
+
+
+
+ JL8zua8vJPEkqGWyAS7ZN653Ma8=
+
+
+
+
+
+
+
+
+ CsxzxcCGHn2eeE9uxuVnkJCjB6s=
+
+
+
+
+
+
+
+
+ 1IyVdFgPUBeVCErJ4GSMJQ2sxEI=
+
+
+
+
+
+
+
+
+ rFu/nf304nKXb1Od7DbhQR/B+Zw=
+
+
+
+
+
+
+
+
+ tVUMzLTt2Xg/fEi4VEasQ/UQsis=
+
+
+
+
+
+
+
+
+ Mni4Be6LDo42CQbnRGo7sJcjPIQ=
+
+
+
+
+
+
+
+
+ y/dT9VClLN9NYtv8vSYUmeclePA=
+
+
+
+
+
+
+
+
+ 5yJlaIZLD9D1ASpOuV/DIpHYLvw=
+
+
+
+
+
+
+
+
+ oJSegPNNFzX48bCW2JYFO5jaTDo=
+
+
+
+
+
+
+
+
+ RPHKMcA1U3Fo1xeaUmb3GciXZMg=
+
+
+
+
+
+
+
+
+ AbZ6+yp6D1SeTZWJqe25CiASWYs=
+
+
+
+
+
+
+
+
+ kDulrCj+YlxKwUO7eHEVT2ldoHI=
+
+
+
+
+
+
+
+
+ 8S+4VIrRRcK5VxIf/0pYWcotmVA=
+
+
+
+
+
+
+
+
+ WsKIiwUwU3jQfa56fpYlTHsFOiI=
+
+
+
+
+
+
+
+
+ 1cZep+Fs/rxuexZCO1FeMffCTGE=
+
+
+
+
+
+
+
+
+ zdM1GdjKpEby/yv8aNL40Nje/1I=
+
+
+
+
+
+
+
+
+ UtGjbt0mL/uFhu8XIfgxmIlZ6HU=
+
+
+
+
+
+
+
+
+ LlZXlA1vOsWqxzGe0jDBy7hy08w=
+
+
+
+
+
+
+
+
+ hUcORMcLBPWq5PbYlMINkapJ9bM=
+
+
+
+
+
+
+
+
+ VW0FbaMW0IRM16qj/QDmC3pPs9s=
+
+
+
+
+
+
+
+
+ SMV0IQlH9ZV9dWn3lcf74WPliho=
+
+
+
+
+
+
+
+
+ /xgtkLN87bIPHceNoWs552hJDYA=
+
+
+
+
+
+
+
+
+ xSqV79k610KxJwXzF922eHIMMr4=
+
+
+
+
+
+
+
+
+ WKyBDumqVKAkACjFu0m1lCjkqiM=
+
+
+
+
+
+
+
+
+ QDWVoOao7//JS07s5iu1V65rKls=
+
+
+
+
+
+
+
+
+ Aw20Q1s1ZPKx/mpIcT5eypFI6+4=
+
+
+
+
+
+
+
+
+ b+fK26M/AHhELTpnf45PNZTUVRI=
+
+
+
+
+
+
+
+
+ Dlq4n4uxMjlhNHrOh0VUNgdkcX8=
+
+
+
+
+
+
+
+
+ EPSPg6YmXJiIF6dw3CeFCFP+Leo=
+
+
+
+
+
+
+
+
+ eSFQ0X1HNef+255curfQxuDNI3w=
+
+
+
+
+
+
+
+
+ un/5XUSGBitEqb6KTlr8IhZ48EI=
+
+
+
+
+
+
+
+
+ apr97XVG4gBj9rx2s/TThPcnW/0=
+
+
+
+
+
+
+
+
+ f/IZnVtEQFb11V6gPx4zLVQlUZc=
+
+
+
+
+
+
+
+
+ 6XJEPfos1t1DKningtZBQu0TLBk=
+
+
+
+
+
+
+
+
+ JUhl+D6K5ybZyRidqB/BmiPWiYs=
+
+
+
+
+
+
+
+
+ KQbICb7J9N+BOjNhlYB13EBc6wA=
+
+
+
+
+
+
+
+
+ aVpeoI56/QuIohrAGdb9SmVwyNs=
+
+
+
+
+
+
+
+
+ rVzZHhNTuQzjBCIkU/haefJ7Yio=
+
+
+
+
+
+
+
+
+ yRw3VsY1vQjHGuFSITYhc7Xm6r8=
+
+
+
+
+
+
+
+
+ RUUKtPH2UgChciklxziy5+fFmJg=
+
+
+
+
+
+
+
+
+ JdQ8+Um/maukuYamRfa62IahPVQ=
+
+
+
+
+
+
+
+
+ 6dcvXXY7483gJAYPgSswQWQlAoc=
+
+
+
+
+
+
+
+
+ H1wIIDdliqxf6V62D82XaR2H64Y=
+
+
+
+
+
+
+
+
+ 8Hjua1Rqfd1QWn2YkZg8BG6egpA=
+
+
+
+
+
+
+
+
+ VuNd/ZKU6ntr3dCuDFrsLEF5e2g=
+
+
+
+
+
+
+
+
+ YFaszV11usrf3DpSqpa/A2lDRfY=
+
+
+
+
+
+
+
+
+ Yd1A/fyUDlBzecYHDuTaJ8ZpgbE=
+
+
+
+
+
+
+
+
+ gyvdHO4N6XsmW6MJYoV37IaCutY=
+
+
+
+
+
+
+
+
+ HocHiBihMkZlcrcj+9K9Bku+6u0=
+
+
+
+
+
+
+
+
+ 0oqWSyJ64/7Fyuqi61ihkuOJn10=
+
+
+
+
+
+
+
+
+ pqN3dj3uTnHbLzLOcM5Gr9q82J8=
+
+
+
+
+
+
+
+
+ tqo787vzUtLlBzNVQLV2s+7y0hA=
+
+
+
+
+
+
+
+
+ CQTlGUxetxZ6VjqGTJxLz3c61kc=
+
+
+
+
+
+
+
+
+ G+JRL40DRopUzjz2i17L+GnYKKU=
+
+
+
+
+
+
+
+
+ 7MKmTKXcRJ6SR4ArO/DvsNcta1c=
+
+
+
+
+
+
+
+
+ Y6Q02Yh15EGqerg+VB8EjE7MFag=
+
+
+
+
+
+
+
+
+ +9nN63Z0RAe5jzEZuZwDNVtKUJY=
+
+
+
+
+
+
+
+
+ RriiRQ1AHTrZkWV5ZPL83Py+Qts=
+
+
+
+
+
+
+
+
+ 2d0xYqxMFYs1xxYdS3QzeDwfXOE=
+
+
+
+
+
+
+
+
+ 8x5wO0vjLDfLSCA1abNVJQVvEiA=
+
+
+
+
+
+
+
+
+ lB0gBC6l3tWvpKQuRhOir2/jaW4=
+
+
+
+
+
+
+
+
+ 821KZm3q0SZbedLZimlyKYGWft0=
+
+
+
+
+
+
+
+
+ vaGaXj40onkJ7nn1nEBC6/sSmUw=
+
+
+
+
+
+
+
+
+ mbw8WxL0OlSP9J1Z5k47VG8a3N8=
+
+
+
+
+
+
+
+
+ jwAV6MCea2vjYdx6EDmmoDiRdd4=
+
+
+
+
+
+
+
+
+ 8WGfw5oYc7+KrBVExegUIYjJgG8=
+
+
+
+
+
+
+
+
+ wQv8MojssTcNIdl+KQapUOKyX4Q=
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.log b/mRemoteV1/bin/Debug Portable/mRemoteNG.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.pdb b/mRemoteV1/bin/Debug Portable/mRemoteNG.pdb
new file mode 100644
index 000000000..0512eedef
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/mRemoteNG.pdb differ
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.application b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.application
new file mode 100644
index 000000000..bff5ff52f
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.application
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A/wbdAnBu2I9YWjjlr+j/hB63C8=
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe
new file mode 100644
index 000000000..a2140ff29
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe differ
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.config b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.config
new file mode 100644
index 000000000..df982df95
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.config
@@ -0,0 +1,622 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normal
+
+
+ False
+
+
+ True
+
+
+
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ noinfo
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ 80
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+ Default Settings
+
+
+ False
+
+
+ FitToWindow
+
+
+ Colors16Bit
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ DoNotPlay
+
+
+ 2
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+ False
+
+
+ True
+
+
+ 0, 0
+
+
+ Bottom
+
+
+ True
+
+
+ 3, 24
+
+
+ Top
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ EncrBasic
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ AuthVNC
+
+
+ ColNormal
+
+
+ SmartSAspect
+
+
+ False
+
+
+ CompNone
+
+
+ EncHextile
+
+
+
+
+
+
+
+
+ 0
+
+
+ ProxyNone
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ NoAuth
+
+
+ False
+
+
+ 5500
+
+
+ False
+
+
+
+
+
+ IE
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ 7
+
+
+ 1980-01-01
+
+
+ False
+
+
+ Never
+
+
+ Yes
+
+
+ mRemoteNG
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 4
+
+
+ mRemoteNG
+
+
+ 10
+
+
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+
+
+ False
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ https://update.mremoteng.org/
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ RDP
+
+
+ 9/9, 33/8
+
+
+ 9/8, 34/8
+
+
+
+
+
+
+ de,el,en,en-US,es-AR,es,fr,hu,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN,zh-TW
+
+
+ release
+
+
+ https://update.mremoteng.org/announcement.txt
+
+
+
+
diff --git a/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.manifest b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.manifest
new file mode 100644
index 000000000..1176f9f0b
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/mRemoteNG.vshost.exe.manifest
@@ -0,0 +1,1400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44Gd5pLxAatONvAv9C9PcHjWBYM=
+
+
+
+
+
+
+
+
+
+
+
+ 9EGiZHuXvcSF2vHIzLX89aXCy7I=
+
+
+
+
+
+
+
+
+
+
+
+ xYQvomzivCqJIiNLX95buRW5wV4=
+
+
+
+
+
+
+
+
+
+
+
+ QwvHIN0aGsFCzM00kZNv1tydcNM=
+
+
+
+
+
+
+
+
+
+
+
+ U7a5JrhXRXjiE2RrMarZWUlrPSk=
+
+
+
+
+
+
+
+
+
+
+
+ 5oQA/1NmzsmjKGPv8FQQcYoJrko=
+
+
+
+
+
+
+
+
+
+
+
+ cbfSzV060gLV+uz5ofaV66gpEj0=
+
+
+
+
+
+
+
+
+
+
+
+ wSDSQRGU4kxtkEvU14XWQjv4/9c=
+
+
+
+
+
+
+
+
+
+
+
+ 4mJAkNcSLqyNhizjL+iwj4dRmtE=
+
+
+
+
+
+
+
+
+
+
+
+ PNDA94yLxP9gc5yWusjDatytyWE=
+
+
+
+
+
+
+
+
+
+
+
+ gs3mWnUUwORl7g1QW+VsVmOf8LE=
+
+
+
+
+
+
+
+
+
+
+
+ ITm6gkCPRguqc7bIWOXHacjE4+0=
+
+
+
+
+
+
+
+
+
+
+
+ lV/9eij84QMc2/JMBEg37pzb+yc=
+
+
+
+
+
+
+
+
+
+
+
+ ISJBL0ruabjQc5aOyrVQ8ioqYoU=
+
+
+
+
+
+
+
+
+
+
+
+ 8W1kRQPiGlcdZIQnOGPNhk5G4aw=
+
+
+
+
+
+
+
+
+
+
+
+ 2ofJ6ZRIdtzCVcDQGKPMt/hcoRU=
+
+
+
+
+
+
+
+
+
+
+
+ WbY51SA1eVeZrsMtbAr+G0D1MfE=
+
+
+
+
+
+
+
+
+
+
+
+ kQHgQr5CwWZ+A4S59aV7oS60TPE=
+
+
+
+
+
+
+
+
+
+
+
+ RLcl+zQBaN5/zSLnALtj2PPV1Bc=
+
+
+
+
+
+
+
+
+
+
+
+ jK/SqFKHneGkcDHCY7QBwrhz0hE=
+
+
+
+
+
+
+
+
+
+
+
+ 9BcUnB80DnOnHtnIY59xgy0lI3o=
+
+
+
+
+
+
+
+
+
+
+
+ yAartnJqjN5+joi4GNFEF1eFF98=
+
+
+
+
+
+
+
+
+
+
+
+ cFCUi/HcFgYkwu6ktj8T6A9Wk38=
+
+
+
+
+
+
+
+
+
+
+
+ /809pVrqIGeL8CoaL87eSvIkfVs=
+
+
+
+
+
+
+
+
+
+
+
+ 03LCcbo8s4Bw+LEfIrNBj9QnYn0=
+
+
+
+
+
+
+
+
+
+
+
+ CCzi0+jwGmWvleC+B0Laxf9IEBw=
+
+
+
+
+
+
+
+
+
+
+
+ GU0xclnbzPjNAaVTNhEFPgLL8LI=
+
+
+
+
+
+
+
+
+
+
+
+ X7iUU+P+yq8s+GAiTY3Jq9joir8=
+
+
+
+
+
+
+
+
+
+
+
+ axykFSsEKhFYf9vwuulPo/t237s=
+
+
+
+
+
+
+
+
+
+
+
+ 5AalIZJV/NSO7Rla+mNGIOzFyyI=
+
+
+
+
+
+
+
+
+
+
+
+ 3n8WVIglkP4UnG90TZ1SoEX+/MA=
+
+
+
+
+
+
+
+
+
+
+
+ JynictPu+vwR1O6JLPcSEQGn3XI=
+
+
+
+
+
+
+
+
+
+
+
+ XCT50lZfYw9E71w2e3jAPHadwuE=
+
+
+
+
+
+
+
+
+
+
+
+ ZddmDhtIn1wumPIIy8XY2vpzf8U=
+
+
+
+
+
+
+
+
+
+
+
+ k9yQjlarF0WY7JPngrlZppOoXS0=
+
+
+
+
+
+
+
+
+
+
+
+ UqAT+BwwJYJpl2WjZvjhdH+ii1Q=
+
+
+
+
+
+
+
+
+
+
+
+ SfcfbYJ2BRAQVpbGYlBiqor2s54=
+
+
+
+
+
+
+
+
+
+
+
+ qQLkGAWy/IQxZuqUC5k18s6gQM8=
+
+
+
+
+
+
+
+
+
+
+
+ Hicx0KcBWfTOEs9NwGDg8/31498=
+
+
+
+
+
+
+
+
+
+ Z2WWO3jdjS1G6Btr8vxyvaiWv0c=
+
+
+
+
+
+
+
+
+ TsFkhAE239c+FGjT2wP/uiGhfZE=
+
+
+
+
+
+
+
+
+ 1XZh+BCoIN/cpwqYIlV2mVyOdk0=
+
+
+
+
+
+
+
+
+ aPviwDpCrn3d9YRH00xpta4qq3s=
+
+
+
+
+
+
+
+
+ Wt3+prKWq7hdvBVeNEKOLHmcALY=
+
+
+
+
+
+
+
+
+ dCql5WpLYENwxfsQJw10cWZbiN4=
+
+
+
+
+
+
+
+
+ mSrxtt7MUqRnuUou+F7p+Vne3kI=
+
+
+
+
+
+
+
+
+ FCz2yNTlp9kuIQgkxpxH9vmoa6I=
+
+
+
+
+
+
+
+
+ dEMm/1Ju7gWyAYjwsf/7DbwY4NY=
+
+
+
+
+
+
+
+
+ tfwZqf/JEvHKFNaYMafwB9tVksw=
+
+
+
+
+
+
+
+
+ RXSdPoV1pFjacwgyT81xD2Ridds=
+
+
+
+
+
+
+
+
+ X3Jjz0pJRC0Dnc0oaobxJ6WRTbA=
+
+
+
+
+
+
+
+
+ UHt5aNn67X0oZVnzSbkCaNJq2r4=
+
+
+
+
+
+
+
+
+ Qu/sFEcJzAkS+E0MdPb7TayHm/s=
+
+
+
+
+
+
+
+
+ y4n8uC7KUDbTzzexJePESr26idk=
+
+
+
+
+
+
+
+
+ jgFk0iyeolCcXK46tonesuBbQIg=
+
+
+
+
+
+
+
+
+ lhNwxdhROobYViGAjCe16BSR3u8=
+
+
+
+
+
+
+
+
+ 5YVcUSRR03kVljdZSuLa4JAD55U=
+
+
+
+
+
+
+
+
+ ZW/688yGGCwh8dCDwGh6pOAP1pU=
+
+
+
+
+
+
+
+
+ ZbymUQpDu5skapQVtRF5XbqH11U=
+
+
+
+
+
+
+
+
+ 9sOrUchxEAnpPXAQrxL/6XqYbR4=
+
+
+
+
+
+
+
+
+ ORPyJ2W7A+fpIDG4b5gBTnArqFM=
+
+
+
+
+
+
+
+
+ 4z6s830BETTBvhl5Hkp/cVYjyu4=
+
+
+
+
+
+
+
+
+ hvY7/2NAk19oElDCaBJ3+X7ZojU=
+
+
+
+
+
+
+
+
+ 73V5WwipRxfrgHRUby/GK2ZUfWc=
+
+
+
+
+
+
+
+
+ z+wKfy7dSXF/MVOcQQpVd9t94a4=
+
+
+
+
+
+
+
+
+ sNSQD9oKpERbElO0o9Pk5zjtTBM=
+
+
+
+
+
+
+
+
+ dtI0bovygR/2QKy68MB2NYUsVtY=
+
+
+
+
+
+
+
+
+ cC+PvszW/lHsRvmdnk5low3SJe0=
+
+
+
+
+
+
+
+
+ L9QFvAOfOYCR2odvzPVSDHxgIlw=
+
+
+
+
+
+
+
+
+ JL8zua8vJPEkqGWyAS7ZN653Ma8=
+
+
+
+
+
+
+
+
+ CsxzxcCGHn2eeE9uxuVnkJCjB6s=
+
+
+
+
+
+
+
+
+ 1IyVdFgPUBeVCErJ4GSMJQ2sxEI=
+
+
+
+
+
+
+
+
+ rFu/nf304nKXb1Od7DbhQR/B+Zw=
+
+
+
+
+
+
+
+
+ tVUMzLTt2Xg/fEi4VEasQ/UQsis=
+
+
+
+
+
+
+
+
+ Mni4Be6LDo42CQbnRGo7sJcjPIQ=
+
+
+
+
+
+
+
+
+ y/dT9VClLN9NYtv8vSYUmeclePA=
+
+
+
+
+
+
+
+
+ 5yJlaIZLD9D1ASpOuV/DIpHYLvw=
+
+
+
+
+
+
+
+
+ oJSegPNNFzX48bCW2JYFO5jaTDo=
+
+
+
+
+
+
+
+
+ RPHKMcA1U3Fo1xeaUmb3GciXZMg=
+
+
+
+
+
+
+
+
+ AbZ6+yp6D1SeTZWJqe25CiASWYs=
+
+
+
+
+
+
+
+
+ kDulrCj+YlxKwUO7eHEVT2ldoHI=
+
+
+
+
+
+
+
+
+ 8S+4VIrRRcK5VxIf/0pYWcotmVA=
+
+
+
+
+
+
+
+
+ WsKIiwUwU3jQfa56fpYlTHsFOiI=
+
+
+
+
+
+
+
+
+ 1cZep+Fs/rxuexZCO1FeMffCTGE=
+
+
+
+
+
+
+
+
+ zdM1GdjKpEby/yv8aNL40Nje/1I=
+
+
+
+
+
+
+
+
+ UtGjbt0mL/uFhu8XIfgxmIlZ6HU=
+
+
+
+
+
+
+
+
+ LlZXlA1vOsWqxzGe0jDBy7hy08w=
+
+
+
+
+
+
+
+
+ hUcORMcLBPWq5PbYlMINkapJ9bM=
+
+
+
+
+
+
+
+
+ VW0FbaMW0IRM16qj/QDmC3pPs9s=
+
+
+
+
+
+
+
+
+ SMV0IQlH9ZV9dWn3lcf74WPliho=
+
+
+
+
+
+
+
+
+ /xgtkLN87bIPHceNoWs552hJDYA=
+
+
+
+
+
+
+
+
+ xSqV79k610KxJwXzF922eHIMMr4=
+
+
+
+
+
+
+
+
+ WKyBDumqVKAkACjFu0m1lCjkqiM=
+
+
+
+
+
+
+
+
+ QDWVoOao7//JS07s5iu1V65rKls=
+
+
+
+
+
+
+
+
+ Aw20Q1s1ZPKx/mpIcT5eypFI6+4=
+
+
+
+
+
+
+
+
+ b+fK26M/AHhELTpnf45PNZTUVRI=
+
+
+
+
+
+
+
+
+ Dlq4n4uxMjlhNHrOh0VUNgdkcX8=
+
+
+
+
+
+
+
+
+ EPSPg6YmXJiIF6dw3CeFCFP+Leo=
+
+
+
+
+
+
+
+
+ eSFQ0X1HNef+255curfQxuDNI3w=
+
+
+
+
+
+
+
+
+ un/5XUSGBitEqb6KTlr8IhZ48EI=
+
+
+
+
+
+
+
+
+ apr97XVG4gBj9rx2s/TThPcnW/0=
+
+
+
+
+
+
+
+
+ f/IZnVtEQFb11V6gPx4zLVQlUZc=
+
+
+
+
+
+
+
+
+ 6XJEPfos1t1DKningtZBQu0TLBk=
+
+
+
+
+
+
+
+
+ JUhl+D6K5ybZyRidqB/BmiPWiYs=
+
+
+
+
+
+
+
+
+ KQbICb7J9N+BOjNhlYB13EBc6wA=
+
+
+
+
+
+
+
+
+ aVpeoI56/QuIohrAGdb9SmVwyNs=
+
+
+
+
+
+
+
+
+ rVzZHhNTuQzjBCIkU/haefJ7Yio=
+
+
+
+
+
+
+
+
+ yRw3VsY1vQjHGuFSITYhc7Xm6r8=
+
+
+
+
+
+
+
+
+ RUUKtPH2UgChciklxziy5+fFmJg=
+
+
+
+
+
+
+
+
+ JdQ8+Um/maukuYamRfa62IahPVQ=
+
+
+
+
+
+
+
+
+ 6dcvXXY7483gJAYPgSswQWQlAoc=
+
+
+
+
+
+
+
+
+ H1wIIDdliqxf6V62D82XaR2H64Y=
+
+
+
+
+
+
+
+
+ 8Hjua1Rqfd1QWn2YkZg8BG6egpA=
+
+
+
+
+
+
+
+
+ VuNd/ZKU6ntr3dCuDFrsLEF5e2g=
+
+
+
+
+
+
+
+
+ YFaszV11usrf3DpSqpa/A2lDRfY=
+
+
+
+
+
+
+
+
+ Yd1A/fyUDlBzecYHDuTaJ8ZpgbE=
+
+
+
+
+
+
+
+
+ gyvdHO4N6XsmW6MJYoV37IaCutY=
+
+
+
+
+
+
+
+
+ HocHiBihMkZlcrcj+9K9Bku+6u0=
+
+
+
+
+
+
+
+
+ 0oqWSyJ64/7Fyuqi61ihkuOJn10=
+
+
+
+
+
+
+
+
+ pqN3dj3uTnHbLzLOcM5Gr9q82J8=
+
+
+
+
+
+
+
+
+ tqo787vzUtLlBzNVQLV2s+7y0hA=
+
+
+
+
+
+
+
+
+ CQTlGUxetxZ6VjqGTJxLz3c61kc=
+
+
+
+
+
+
+
+
+ G+JRL40DRopUzjz2i17L+GnYKKU=
+
+
+
+
+
+
+
+
+ 7MKmTKXcRJ6SR4ArO/DvsNcta1c=
+
+
+
+
+
+
+
+
+ Y6Q02Yh15EGqerg+VB8EjE7MFag=
+
+
+
+
+
+
+
+
+ +9nN63Z0RAe5jzEZuZwDNVtKUJY=
+
+
+
+
+
+
+
+
+ RriiRQ1AHTrZkWV5ZPL83Py+Qts=
+
+
+
+
+
+
+
+
+ 2d0xYqxMFYs1xxYdS3QzeDwfXOE=
+
+
+
+
+
+
+
+
+ 8x5wO0vjLDfLSCA1abNVJQVvEiA=
+
+
+
+
+
+
+
+
+ lB0gBC6l3tWvpKQuRhOir2/jaW4=
+
+
+
+
+
+
+
+
+ 821KZm3q0SZbedLZimlyKYGWft0=
+
+
+
+
+
+
+
+
+ vaGaXj40onkJ7nn1nEBC6/sSmUw=
+
+
+
+
+
+
+
+
+ mbw8WxL0OlSP9J1Z5k47VG8a3N8=
+
+
+
+
+
+
+
+
+ jwAV6MCea2vjYdx6EDmmoDiRdd4=
+
+
+
+
+
+
+
+
+ 8WGfw5oYc7+KrBVExegUIYjJgG8=
+
+
+
+
+
+
+
+
+ wQv8MojssTcNIdl+KQapUOKyX4Q=
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/nb-NO/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/nb-NO/mRemoteNG.resources.dll
new file mode 100644
index 000000000..1150927bd
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/nb-NO/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/nl/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/nl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..b13f664ba
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/nl/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/pl/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/pl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..892e14224
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/pl/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/pnlLayout.xml b/mRemoteV1/bin/Debug Portable/pnlLayout.xml
new file mode 100644
index 000000000..7a5a2e770
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/pnlLayout.xml differ
diff --git a/mRemoteV1/bin/Debug Portable/portable.config b/mRemoteV1/bin/Debug Portable/portable.config
new file mode 100644
index 000000000..412fcde13
--- /dev/null
+++ b/mRemoteV1/bin/Debug Portable/portable.config
@@ -0,0 +1,226 @@
+
+
+ False
+ True
+
+
+ False
+
+
+ False
+
+
+ True
+ False
+
+
+ 1980-01-01
+ False
+
+
+ False
+
+
+ 3, 24
+ True
+
+
+ Never
+ release
+
+
+ False
+ True
+ Top
+ {0}.{1:yyyyMMdd-HHmmssffff}.backup
+ False
+
+
+ False
+ False
+
+
+ False
+
+
+ Colors16Bit
+ False
+ True
+ False
+ SmartSAspect
+ AuthVNC
+ 5
+ False
+ https://update.mremoteng.org/announcement.txt
+ True
+ False
+ False
+
+
+ Normal
+
+
+ False
+ False
+ 0
+
+
+ False
+ EncrBasic
+ RDP
+ FitToWindow
+ NoAuth
+ False
+ False
+
+
+ False
+ https://update.mremoteng.org/
+
+
+
+
+ False
+ False
+
+
+ Default Settings
+ IE
+
+
+
+
+ False
+ False
+ False
+ ProxyNone
+ False
+ False
+ RDP
+ False
+ False
+
+
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ 10
+ EncHextile
+ False
+ False
+
+
+ 3, 0
+
+
+ False
+
+
+ False
+ False
+ False
+ False
+ False
+ False
+
+
+ False
+ noinfo
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+
+
+ DoNotPlay
+ False
+ 0
+ True
+ False
+ Bottom
+
+
+ CompNone
+ True
+ True
+ 9/9, 33/8
+ False
+
+
+ False
+ ColNormal
+
+
+ False
+ False
+
+
+ 5500
+
+
+ False
+ False
+ False
+ False
+ False
+ 80
+ False
+ mRemoteNG
+ False
+ False
+ 175, 175
+ False
+ False
+ False
+
+
+ True
+ True
+ 2
+ 9/8, 34/8
+ False
+ False
+ False
+ True
+ 4
+ False
+ False
+
+
+ mRemoteNG
+ True
+ False
+ False
+ 7
+ False
+ False
+
+
+ False
+ False
+
+
+ False
+
+
+ False
+ Yes
+ True
+ False
+ True
+ False
+ 858, 561
+ False
+
\ No newline at end of file
diff --git a/mRemoteV1/bin/Debug Portable/pt-BR/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/pt-BR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..0dbf4a082
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/pt-BR/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/pt/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/pt/mRemoteNG.resources.dll
new file mode 100644
index 000000000..d40786b9f
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/pt/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/ru/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/ru/mRemoteNG.resources.dll
new file mode 100644
index 000000000..800d66443
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/ru/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/uk/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/uk/mRemoteNG.resources.dll
new file mode 100644
index 000000000..bca5aa575
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/uk/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/zh-CN/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/zh-CN/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c1e86f55e
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/zh-CN/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/bin/Debug Portable/zh-TW/mRemoteNG.resources.dll b/mRemoteV1/bin/Debug Portable/zh-TW/mRemoteNG.resources.dll
new file mode 100644
index 000000000..adfbc7dc8
Binary files /dev/null and b/mRemoteV1/bin/Debug Portable/zh-TW/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/AxInterop.MSTSCLib.dll b/mRemoteV1/obj/Debug Portable/AxInterop.MSTSCLib.dll
new file mode 100644
index 000000000..c0da0a918
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/AxInterop.MSTSCLib.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/AxInterop.WFICALib.dll b/mRemoteV1/obj/Debug Portable/AxInterop.WFICALib.dll
new file mode 100644
index 000000000..4cdd784ab
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/AxInterop.WFICALib.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache b/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 000000000..fb24725dc
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache b/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 000000000..47aa13a08
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/mRemoteV1/obj/Debug Portable/Interop.EOLWTSCOM.dll b/mRemoteV1/obj/Debug Portable/Interop.EOLWTSCOM.dll
new file mode 100644
index 000000000..95995ebd6
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/Interop.EOLWTSCOM.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/Interop.MSTSCLib.dll b/mRemoteV1/obj/Debug Portable/Interop.MSTSCLib.dll
new file mode 100644
index 000000000..f53087b4d
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/Interop.MSTSCLib.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/Interop.SHDocVw.dll b/mRemoteV1/obj/Debug Portable/Interop.SHDocVw.dll
new file mode 100644
index 000000000..9e8396f98
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/Interop.SHDocVw.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/Interop.WFICALib.dll b/mRemoteV1/obj/Debug Portable/Interop.WFICALib.dll
new file mode 100644
index 000000000..f0b43e0df
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/Interop.WFICALib.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/de/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/de/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c89d53ae8
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/de/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/el/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/el/mRemoteNG.resources.dll
new file mode 100644
index 000000000..155321036
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/el/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/en-US/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/en-US/mRemoteNG.resources.dll
new file mode 100644
index 000000000..6c9a4742f
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/en-US/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/es-AR/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/es-AR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3568a6112
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/es-AR/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/es/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/es/mRemoteNG.resources.dll
new file mode 100644
index 000000000..470c47cb3
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/es/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/fr/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/fr/mRemoteNG.resources.dll
new file mode 100644
index 000000000..3f52b2dd5
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/fr/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/hu/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/hu/mRemoteNG.resources.dll
new file mode 100644
index 000000000..59ff4d55e
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/hu/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/it/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/it/mRemoteNG.resources.dll
new file mode 100644
index 000000000..37f5e8f47
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/it/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.ExportForm.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources
new file mode 100644
index 000000000..46a06663e
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsForm.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources
new file mode 100644
index 000000000..9a4070dc5
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AdvancedPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources
new file mode 100644
index 000000000..d021ee446
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.AppearancePage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources
new file mode 100644
index 000000000..18f151a9f
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources
new file mode 100644
index 000000000..1973ecc93
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.KeyboardPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources
new file mode 100644
index 000000000..be27e01d1
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.SqlServerPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources
new file mode 100644
index 000000000..854236080
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.StartupExitPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources
new file mode 100644
index 000000000..87813e49e
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources
new file mode 100644
index 000000000..4e62ba366
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.ThemePage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources
new file mode 100644
index 000000000..0a485917f
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.OptionsPages.UpdatesPage.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Forms.PasswordForm.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.de.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.de.resources
new file mode 100644
index 000000000..389dad360
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.de.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.el.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.el.resources
new file mode 100644
index 000000000..6cefe7fae
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.el.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.en-US.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.en-US.resources
new file mode 100644
index 000000000..1c40f0f43
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.en-US.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es-AR.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es-AR.resources
new file mode 100644
index 000000000..dc7952cff
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es-AR.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es.resources
new file mode 100644
index 000000000..d8f747138
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.es.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.fr.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.fr.resources
new file mode 100644
index 000000000..a2d556643
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.fr.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.hu.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.hu.resources
new file mode 100644
index 000000000..75528cb6c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.hu.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.it.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.it.resources
new file mode 100644
index 000000000..abd65ee68
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.it.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nb-NO.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nb-NO.resources
new file mode 100644
index 000000000..3bda5110d
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nb-NO.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nl.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nl.resources
new file mode 100644
index 000000000..4dd4e7711
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.nl.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pl.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pl.resources
new file mode 100644
index 000000000..c620b24b7
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pl.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt-BR.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt-BR.resources
new file mode 100644
index 000000000..52989c7f7
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt-BR.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt.resources
new file mode 100644
index 000000000..04cf0b2b0
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.pt.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.resources
new file mode 100644
index 000000000..088114310
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.ru.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.ru.resources
new file mode 100644
index 000000000..d910e5d96
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.ru.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.uk.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.uk.resources
new file mode 100644
index 000000000..b00d18b5c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.uk.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-CN.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-CN.resources
new file mode 100644
index 000000000..c50cd1ea8
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-CN.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-TW.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-TW.resources
new file mode 100644
index 000000000..0642e5a3d
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Language.zh-TW.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.ReconnectGroup.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.Resources.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.Resources.resources
new file mode 100644
index 000000000..c09e6cf27
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.Resources.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.About.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.About.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.About.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ActiveDirectoryImport.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Announcement.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ComponentsCheck.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Config.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources
new file mode 100644
index 000000000..d683f1bc6
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Connection.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ErrorsAndInfos.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources
new file mode 100644
index 000000000..835c6e3ae
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ExternalTools.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Help.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources
new file mode 100644
index 000000000..ee8745cac
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.PortScan.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources
new file mode 100644
index 000000000..bf76a9163
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.SSHTransfer.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.ScreenshotManager.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources
new file mode 100644
index 000000000..adca77a1a
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Sessions.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Tree.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources
new file mode 100644
index 000000000..a5345de63
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.UltraVNCSC.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.UI.Window.Update.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.application b/mRemoteV1/obj/Debug Portable/mRemoteNG.application
new file mode 100644
index 000000000..bff5ff52f
--- /dev/null
+++ b/mRemoteV1/obj/Debug Portable/mRemoteNG.application
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A/wbdAnBu2I9YWjjlr+j/hB63C8=
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.exe b/mRemoteV1/obj/Debug Portable/mRemoteNG.exe
new file mode 100644
index 000000000..e6847aa03
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.exe differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.exe.manifest b/mRemoteV1/obj/Debug Portable/mRemoteNG.exe.manifest
new file mode 100644
index 000000000..1176f9f0b
--- /dev/null
+++ b/mRemoteV1/obj/Debug Portable/mRemoteNG.exe.manifest
@@ -0,0 +1,1400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44Gd5pLxAatONvAv9C9PcHjWBYM=
+
+
+
+
+
+
+
+
+
+
+
+ 9EGiZHuXvcSF2vHIzLX89aXCy7I=
+
+
+
+
+
+
+
+
+
+
+
+ xYQvomzivCqJIiNLX95buRW5wV4=
+
+
+
+
+
+
+
+
+
+
+
+ QwvHIN0aGsFCzM00kZNv1tydcNM=
+
+
+
+
+
+
+
+
+
+
+
+ U7a5JrhXRXjiE2RrMarZWUlrPSk=
+
+
+
+
+
+
+
+
+
+
+
+ 5oQA/1NmzsmjKGPv8FQQcYoJrko=
+
+
+
+
+
+
+
+
+
+
+
+ cbfSzV060gLV+uz5ofaV66gpEj0=
+
+
+
+
+
+
+
+
+
+
+
+ wSDSQRGU4kxtkEvU14XWQjv4/9c=
+
+
+
+
+
+
+
+
+
+
+
+ 4mJAkNcSLqyNhizjL+iwj4dRmtE=
+
+
+
+
+
+
+
+
+
+
+
+ PNDA94yLxP9gc5yWusjDatytyWE=
+
+
+
+
+
+
+
+
+
+
+
+ gs3mWnUUwORl7g1QW+VsVmOf8LE=
+
+
+
+
+
+
+
+
+
+
+
+ ITm6gkCPRguqc7bIWOXHacjE4+0=
+
+
+
+
+
+
+
+
+
+
+
+ lV/9eij84QMc2/JMBEg37pzb+yc=
+
+
+
+
+
+
+
+
+
+
+
+ ISJBL0ruabjQc5aOyrVQ8ioqYoU=
+
+
+
+
+
+
+
+
+
+
+
+ 8W1kRQPiGlcdZIQnOGPNhk5G4aw=
+
+
+
+
+
+
+
+
+
+
+
+ 2ofJ6ZRIdtzCVcDQGKPMt/hcoRU=
+
+
+
+
+
+
+
+
+
+
+
+ WbY51SA1eVeZrsMtbAr+G0D1MfE=
+
+
+
+
+
+
+
+
+
+
+
+ kQHgQr5CwWZ+A4S59aV7oS60TPE=
+
+
+
+
+
+
+
+
+
+
+
+ RLcl+zQBaN5/zSLnALtj2PPV1Bc=
+
+
+
+
+
+
+
+
+
+
+
+ jK/SqFKHneGkcDHCY7QBwrhz0hE=
+
+
+
+
+
+
+
+
+
+
+
+ 9BcUnB80DnOnHtnIY59xgy0lI3o=
+
+
+
+
+
+
+
+
+
+
+
+ yAartnJqjN5+joi4GNFEF1eFF98=
+
+
+
+
+
+
+
+
+
+
+
+ cFCUi/HcFgYkwu6ktj8T6A9Wk38=
+
+
+
+
+
+
+
+
+
+
+
+ /809pVrqIGeL8CoaL87eSvIkfVs=
+
+
+
+
+
+
+
+
+
+
+
+ 03LCcbo8s4Bw+LEfIrNBj9QnYn0=
+
+
+
+
+
+
+
+
+
+
+
+ CCzi0+jwGmWvleC+B0Laxf9IEBw=
+
+
+
+
+
+
+
+
+
+
+
+ GU0xclnbzPjNAaVTNhEFPgLL8LI=
+
+
+
+
+
+
+
+
+
+
+
+ X7iUU+P+yq8s+GAiTY3Jq9joir8=
+
+
+
+
+
+
+
+
+
+
+
+ axykFSsEKhFYf9vwuulPo/t237s=
+
+
+
+
+
+
+
+
+
+
+
+ 5AalIZJV/NSO7Rla+mNGIOzFyyI=
+
+
+
+
+
+
+
+
+
+
+
+ 3n8WVIglkP4UnG90TZ1SoEX+/MA=
+
+
+
+
+
+
+
+
+
+
+
+ JynictPu+vwR1O6JLPcSEQGn3XI=
+
+
+
+
+
+
+
+
+
+
+
+ XCT50lZfYw9E71w2e3jAPHadwuE=
+
+
+
+
+
+
+
+
+
+
+
+ ZddmDhtIn1wumPIIy8XY2vpzf8U=
+
+
+
+
+
+
+
+
+
+
+
+ k9yQjlarF0WY7JPngrlZppOoXS0=
+
+
+
+
+
+
+
+
+
+
+
+ UqAT+BwwJYJpl2WjZvjhdH+ii1Q=
+
+
+
+
+
+
+
+
+
+
+
+ SfcfbYJ2BRAQVpbGYlBiqor2s54=
+
+
+
+
+
+
+
+
+
+
+
+ qQLkGAWy/IQxZuqUC5k18s6gQM8=
+
+
+
+
+
+
+
+
+
+
+
+ Hicx0KcBWfTOEs9NwGDg8/31498=
+
+
+
+
+
+
+
+
+
+ Z2WWO3jdjS1G6Btr8vxyvaiWv0c=
+
+
+
+
+
+
+
+
+ TsFkhAE239c+FGjT2wP/uiGhfZE=
+
+
+
+
+
+
+
+
+ 1XZh+BCoIN/cpwqYIlV2mVyOdk0=
+
+
+
+
+
+
+
+
+ aPviwDpCrn3d9YRH00xpta4qq3s=
+
+
+
+
+
+
+
+
+ Wt3+prKWq7hdvBVeNEKOLHmcALY=
+
+
+
+
+
+
+
+
+ dCql5WpLYENwxfsQJw10cWZbiN4=
+
+
+
+
+
+
+
+
+ mSrxtt7MUqRnuUou+F7p+Vne3kI=
+
+
+
+
+
+
+
+
+ FCz2yNTlp9kuIQgkxpxH9vmoa6I=
+
+
+
+
+
+
+
+
+ dEMm/1Ju7gWyAYjwsf/7DbwY4NY=
+
+
+
+
+
+
+
+
+ tfwZqf/JEvHKFNaYMafwB9tVksw=
+
+
+
+
+
+
+
+
+ RXSdPoV1pFjacwgyT81xD2Ridds=
+
+
+
+
+
+
+
+
+ X3Jjz0pJRC0Dnc0oaobxJ6WRTbA=
+
+
+
+
+
+
+
+
+ UHt5aNn67X0oZVnzSbkCaNJq2r4=
+
+
+
+
+
+
+
+
+ Qu/sFEcJzAkS+E0MdPb7TayHm/s=
+
+
+
+
+
+
+
+
+ y4n8uC7KUDbTzzexJePESr26idk=
+
+
+
+
+
+
+
+
+ jgFk0iyeolCcXK46tonesuBbQIg=
+
+
+
+
+
+
+
+
+ lhNwxdhROobYViGAjCe16BSR3u8=
+
+
+
+
+
+
+
+
+ 5YVcUSRR03kVljdZSuLa4JAD55U=
+
+
+
+
+
+
+
+
+ ZW/688yGGCwh8dCDwGh6pOAP1pU=
+
+
+
+
+
+
+
+
+ ZbymUQpDu5skapQVtRF5XbqH11U=
+
+
+
+
+
+
+
+
+ 9sOrUchxEAnpPXAQrxL/6XqYbR4=
+
+
+
+
+
+
+
+
+ ORPyJ2W7A+fpIDG4b5gBTnArqFM=
+
+
+
+
+
+
+
+
+ 4z6s830BETTBvhl5Hkp/cVYjyu4=
+
+
+
+
+
+
+
+
+ hvY7/2NAk19oElDCaBJ3+X7ZojU=
+
+
+
+
+
+
+
+
+ 73V5WwipRxfrgHRUby/GK2ZUfWc=
+
+
+
+
+
+
+
+
+ z+wKfy7dSXF/MVOcQQpVd9t94a4=
+
+
+
+
+
+
+
+
+ sNSQD9oKpERbElO0o9Pk5zjtTBM=
+
+
+
+
+
+
+
+
+ dtI0bovygR/2QKy68MB2NYUsVtY=
+
+
+
+
+
+
+
+
+ cC+PvszW/lHsRvmdnk5low3SJe0=
+
+
+
+
+
+
+
+
+ L9QFvAOfOYCR2odvzPVSDHxgIlw=
+
+
+
+
+
+
+
+
+ JL8zua8vJPEkqGWyAS7ZN653Ma8=
+
+
+
+
+
+
+
+
+ CsxzxcCGHn2eeE9uxuVnkJCjB6s=
+
+
+
+
+
+
+
+
+ 1IyVdFgPUBeVCErJ4GSMJQ2sxEI=
+
+
+
+
+
+
+
+
+ rFu/nf304nKXb1Od7DbhQR/B+Zw=
+
+
+
+
+
+
+
+
+ tVUMzLTt2Xg/fEi4VEasQ/UQsis=
+
+
+
+
+
+
+
+
+ Mni4Be6LDo42CQbnRGo7sJcjPIQ=
+
+
+
+
+
+
+
+
+ y/dT9VClLN9NYtv8vSYUmeclePA=
+
+
+
+
+
+
+
+
+ 5yJlaIZLD9D1ASpOuV/DIpHYLvw=
+
+
+
+
+
+
+
+
+ oJSegPNNFzX48bCW2JYFO5jaTDo=
+
+
+
+
+
+
+
+
+ RPHKMcA1U3Fo1xeaUmb3GciXZMg=
+
+
+
+
+
+
+
+
+ AbZ6+yp6D1SeTZWJqe25CiASWYs=
+
+
+
+
+
+
+
+
+ kDulrCj+YlxKwUO7eHEVT2ldoHI=
+
+
+
+
+
+
+
+
+ 8S+4VIrRRcK5VxIf/0pYWcotmVA=
+
+
+
+
+
+
+
+
+ WsKIiwUwU3jQfa56fpYlTHsFOiI=
+
+
+
+
+
+
+
+
+ 1cZep+Fs/rxuexZCO1FeMffCTGE=
+
+
+
+
+
+
+
+
+ zdM1GdjKpEby/yv8aNL40Nje/1I=
+
+
+
+
+
+
+
+
+ UtGjbt0mL/uFhu8XIfgxmIlZ6HU=
+
+
+
+
+
+
+
+
+ LlZXlA1vOsWqxzGe0jDBy7hy08w=
+
+
+
+
+
+
+
+
+ hUcORMcLBPWq5PbYlMINkapJ9bM=
+
+
+
+
+
+
+
+
+ VW0FbaMW0IRM16qj/QDmC3pPs9s=
+
+
+
+
+
+
+
+
+ SMV0IQlH9ZV9dWn3lcf74WPliho=
+
+
+
+
+
+
+
+
+ /xgtkLN87bIPHceNoWs552hJDYA=
+
+
+
+
+
+
+
+
+ xSqV79k610KxJwXzF922eHIMMr4=
+
+
+
+
+
+
+
+
+ WKyBDumqVKAkACjFu0m1lCjkqiM=
+
+
+
+
+
+
+
+
+ QDWVoOao7//JS07s5iu1V65rKls=
+
+
+
+
+
+
+
+
+ Aw20Q1s1ZPKx/mpIcT5eypFI6+4=
+
+
+
+
+
+
+
+
+ b+fK26M/AHhELTpnf45PNZTUVRI=
+
+
+
+
+
+
+
+
+ Dlq4n4uxMjlhNHrOh0VUNgdkcX8=
+
+
+
+
+
+
+
+
+ EPSPg6YmXJiIF6dw3CeFCFP+Leo=
+
+
+
+
+
+
+
+
+ eSFQ0X1HNef+255curfQxuDNI3w=
+
+
+
+
+
+
+
+
+ un/5XUSGBitEqb6KTlr8IhZ48EI=
+
+
+
+
+
+
+
+
+ apr97XVG4gBj9rx2s/TThPcnW/0=
+
+
+
+
+
+
+
+
+ f/IZnVtEQFb11V6gPx4zLVQlUZc=
+
+
+
+
+
+
+
+
+ 6XJEPfos1t1DKningtZBQu0TLBk=
+
+
+
+
+
+
+
+
+ JUhl+D6K5ybZyRidqB/BmiPWiYs=
+
+
+
+
+
+
+
+
+ KQbICb7J9N+BOjNhlYB13EBc6wA=
+
+
+
+
+
+
+
+
+ aVpeoI56/QuIohrAGdb9SmVwyNs=
+
+
+
+
+
+
+
+
+ rVzZHhNTuQzjBCIkU/haefJ7Yio=
+
+
+
+
+
+
+
+
+ yRw3VsY1vQjHGuFSITYhc7Xm6r8=
+
+
+
+
+
+
+
+
+ RUUKtPH2UgChciklxziy5+fFmJg=
+
+
+
+
+
+
+
+
+ JdQ8+Um/maukuYamRfa62IahPVQ=
+
+
+
+
+
+
+
+
+ 6dcvXXY7483gJAYPgSswQWQlAoc=
+
+
+
+
+
+
+
+
+ H1wIIDdliqxf6V62D82XaR2H64Y=
+
+
+
+
+
+
+
+
+ 8Hjua1Rqfd1QWn2YkZg8BG6egpA=
+
+
+
+
+
+
+
+
+ VuNd/ZKU6ntr3dCuDFrsLEF5e2g=
+
+
+
+
+
+
+
+
+ YFaszV11usrf3DpSqpa/A2lDRfY=
+
+
+
+
+
+
+
+
+ Yd1A/fyUDlBzecYHDuTaJ8ZpgbE=
+
+
+
+
+
+
+
+
+ gyvdHO4N6XsmW6MJYoV37IaCutY=
+
+
+
+
+
+
+
+
+ HocHiBihMkZlcrcj+9K9Bku+6u0=
+
+
+
+
+
+
+
+
+ 0oqWSyJ64/7Fyuqi61ihkuOJn10=
+
+
+
+
+
+
+
+
+ pqN3dj3uTnHbLzLOcM5Gr9q82J8=
+
+
+
+
+
+
+
+
+ tqo787vzUtLlBzNVQLV2s+7y0hA=
+
+
+
+
+
+
+
+
+ CQTlGUxetxZ6VjqGTJxLz3c61kc=
+
+
+
+
+
+
+
+
+ G+JRL40DRopUzjz2i17L+GnYKKU=
+
+
+
+
+
+
+
+
+ 7MKmTKXcRJ6SR4ArO/DvsNcta1c=
+
+
+
+
+
+
+
+
+ Y6Q02Yh15EGqerg+VB8EjE7MFag=
+
+
+
+
+
+
+
+
+ +9nN63Z0RAe5jzEZuZwDNVtKUJY=
+
+
+
+
+
+
+
+
+ RriiRQ1AHTrZkWV5ZPL83Py+Qts=
+
+
+
+
+
+
+
+
+ 2d0xYqxMFYs1xxYdS3QzeDwfXOE=
+
+
+
+
+
+
+
+
+ 8x5wO0vjLDfLSCA1abNVJQVvEiA=
+
+
+
+
+
+
+
+
+ lB0gBC6l3tWvpKQuRhOir2/jaW4=
+
+
+
+
+
+
+
+
+ 821KZm3q0SZbedLZimlyKYGWft0=
+
+
+
+
+
+
+
+
+ vaGaXj40onkJ7nn1nEBC6/sSmUw=
+
+
+
+
+
+
+
+
+ mbw8WxL0OlSP9J1Z5k47VG8a3N8=
+
+
+
+
+
+
+
+
+ jwAV6MCea2vjYdx6EDmmoDiRdd4=
+
+
+
+
+
+
+
+
+ 8WGfw5oYc7+KrBVExegUIYjJgG8=
+
+
+
+
+
+
+
+
+ wQv8MojssTcNIdl+KQapUOKyX4Q=
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources
new file mode 100644
index 000000000..06c24d06c
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.frmChoosePanel.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.frmMain.resources b/mRemoteV1/obj/Debug Portable/mRemoteNG.frmMain.resources
new file mode 100644
index 000000000..6d7b2f0ea
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.frmMain.resources differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteNG.pdb b/mRemoteV1/obj/Debug Portable/mRemoteNG.pdb
new file mode 100644
index 000000000..0512eedef
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteNG.pdb differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.FileListAbsolute.txt b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.FileListAbsolute.txt
new file mode 100644
index 000000000..4715dd0b8
--- /dev/null
+++ b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.FileListAbsolute.txt
@@ -0,0 +1,211 @@
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\mRemoteNG.exe.config
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\Interop.EOLWTSCOM.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\Interop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\Interop.SHDocVw.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\Interop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\AxInterop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\AxInterop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteV1.vbproj.ResolveComReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\CMDSwitches.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Config.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Configuration.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Connection.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Connections.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\ConfigurationSQL.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Index.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\PortScan.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\ExternalTools.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\ErrorsAndInfos.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\ImportFromAD.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Installation.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Introduction.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\MainMenu.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Options.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Prerequisites.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\QuickConnect.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\QuickReference.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\SaveAsExport.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\ScreenshotManager.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\02.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\03.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\04.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\05.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\06.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\07.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\08.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\09.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\10.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\11.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\12.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\13.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\14.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\15.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\16.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Configuration\17.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\02.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\03.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\04.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\05.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\06.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\07.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\External Tools\08.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Main Menu\File.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Main Menu\Info.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Main Menu\QuickConnect.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Main Menu\Tools.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Main Menu\View.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Screenshots\Reference\01.png
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Sessions.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\SQLScript.txt
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\SSHFileTransfer.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Update.htm
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Help\Main.css
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Anti Virus.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Backup.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Build Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Database.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Domain Controller.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\ESX.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Fax.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\File Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Finance.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Firewall.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Linux.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Log.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Mail Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\mRemote.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\mRemoteNG.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\PuTTY.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Remote Desktop.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Router.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\SharePoint.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\SSH.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Switch.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Tel.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Telnet.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Terminal Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Test Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Virtual Machine.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Web Server.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\WiFi.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Windows.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Icons\Workstation.ico
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\mRemoteNG.exe.manifest
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\mRemoteNG.application
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\mRemoteNG.exe
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\mRemoteNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\de\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\el\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\en-US\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\es-AR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\es\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\hu\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\it\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\nb-NO\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\nl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\pt-BR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\pt\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\fr\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\pl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\ru\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\uk\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\zh-CN\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\zh-TW\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\ADTree.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\DiffieHellman.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\FilteredPropertyGrid.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\IPTextBox.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\log4net.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\MagicLibrary.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\MiniGeckoBrowser.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\MiniTabControl.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Org.Mentalis.Security.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\PSTaskDialog.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\SharedLibraryNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Skybound.Gecko.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Tamir.SharpSSH.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\VncSharpNG.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\WeifenLuo.WinFormsUI.Docking.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\SharedLibraryNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\VncSharpNG.pdb
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Interop.EOLWTSCOM.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Interop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Interop.SHDocVw.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\Interop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\AxInterop.MSTSCLib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\bin\Debug Portable\AxInterop.WFICALib.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteV1.vbprojResolveAssemblyReference.cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.frmChoosePanel.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.frmMain.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.PasswordForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.AdvancedPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.AppearancePage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.ConnectionsPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.KeyboardPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.SqlServerPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.StartupExitPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.TabsPanelsPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.ThemePage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.OptionsPages.UpdatesPage.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Resources.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.ReconnectGroup.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.About.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.ActiveDirectoryImport.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Announcement.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.ComponentsCheck.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Config.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Connection.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.ErrorsAndInfos.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.ExternalTools.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Help.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.PortScan.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Forms.ExportForm.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.ScreenshotManager.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Sessions.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.SSHTransfer.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Tree.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.UltraVNCSC.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.UI.Window.Update.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.de.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.el.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.en-US.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.es-AR.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.es.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.hu.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.it.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.nb-NO.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.nl.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.pt-BR.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.pt.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.fr.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.pl.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.ru.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.uk.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.zh-CN.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.Language.zh-TW.resources
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteV1.vbproj.GenerateResource.Cache
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\de\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\el\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\en-US\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\es-AR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\es\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\hu\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\it\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\nb-NO\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\nl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\pt-BR\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\pt\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\fr\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\pl\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\ru\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\uk\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\zh-CN\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\zh-TW\mRemoteNG.resources.dll
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.exe.manifest
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.application
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.exe
+C:\Users\vsparda\Documents\Repositories\mRemoteNG_MyFork\mRemoteV1\obj\Debug Portable\mRemoteNG.pdb
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.GenerateResource.Cache b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.GenerateResource.Cache
new file mode 100644
index 000000000..6a5d709cc
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.GenerateResource.Cache differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.ResolveComReference.cache b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.ResolveComReference.cache
new file mode 100644
index 000000000..f02aa7572
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbproj.ResolveComReference.cache differ
diff --git a/mRemoteV1/obj/Debug Portable/mRemoteV1.vbprojResolveAssemblyReference.cache b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbprojResolveAssemblyReference.cache
new file mode 100644
index 000000000..23d461425
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/mRemoteV1.vbprojResolveAssemblyReference.cache differ
diff --git a/mRemoteV1/obj/Debug Portable/nb-NO/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/nb-NO/mRemoteNG.resources.dll
new file mode 100644
index 000000000..1150927bd
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/nb-NO/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/nl/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/nl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..b13f664ba
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/nl/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/pl/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/pl/mRemoteNG.resources.dll
new file mode 100644
index 000000000..892e14224
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/pl/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/pt-BR/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/pt-BR/mRemoteNG.resources.dll
new file mode 100644
index 000000000..0dbf4a082
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/pt-BR/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/pt/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/pt/mRemoteNG.resources.dll
new file mode 100644
index 000000000..d40786b9f
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/pt/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/ru/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/ru/mRemoteNG.resources.dll
new file mode 100644
index 000000000..800d66443
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/ru/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/uk/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/uk/mRemoteNG.resources.dll
new file mode 100644
index 000000000..bca5aa575
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/uk/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/zh-CN/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/zh-CN/mRemoteNG.resources.dll
new file mode 100644
index 000000000..c1e86f55e
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/zh-CN/mRemoteNG.resources.dll differ
diff --git a/mRemoteV1/obj/Debug Portable/zh-TW/mRemoteNG.resources.dll b/mRemoteV1/obj/Debug Portable/zh-TW/mRemoteNG.resources.dll
new file mode 100644
index 000000000..adfbc7dc8
Binary files /dev/null and b/mRemoteV1/obj/Debug Portable/zh-TW/mRemoteNG.resources.dll differ