Fixes issue 4

Fixes issue 4
Rebased off of host master to reduce the chance of a merge conflict

* rdpsign.vb: updated to dynamically determine the path to rdpsign.exe
* rdpsign.vb: updated to show an error if rdpsign.exe cannot be found (now imports system.windows.forms for MessageBox)

* Create Client Connection window: Made some visual + text changes
* Create Client Connection window: Disable the signing section if rdpsign.exe not detected or if no certificates are found
* Create Client Connection window: Change "Disabled" checkbox text to "Sign RDP file" and reverse its logic (so that checked = sign rdp file)
* Create Client Connection window: "Create Signed and Unsigned" checkbox is disabled + unticked if generating an MSI
* Create Client Connection window: Certificate ComboBox defaults to the first certificate rather than blank
* Create Client Connection window: Updated the save/reset settings to include the new signing section
* Create Client Connection window: Updated the Tab-Order
This commit is contained in:
Kim 2019-11-10 22:51:14 +11:00 committed by brianga
parent 859ac87c17
commit 82fb8da574
8 changed files with 347 additions and 242 deletions

View File

@ -1,6 +1,9 @@
Public Class RDPSign Imports System.Windows.Forms
Public Class RDPSign
Public ErrorNumber As Integer = 0 Public ErrorNumber As Integer = 0
Public ErrorString As String = "" Public ErrorString As String = ""
Sub main() Sub main()
End Sub End Sub
@ -101,25 +104,37 @@
End If End If
'If we get here, we should be good to run the command to sign the RDP file. 'If we get here, we should be good to run the command to sign the RDP file.
Dim Command As String = "C:\Windows\System32\rdpsign.exe" Dim Command As String = GetSysDir() & "\rdpsign.exe"
Dim Arguments As String If My.Computer.FileSystem.FileExists(Command) Then
Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command) Dim Arguments As String
' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work. Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command)
' On my windows 10 computer, the Product parts come in at 10.0.18362.1 ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work.
' On a Windows Server 2008 R2 server I have access to, the argument is /sha1. ' On my windows 10 computer, the Product parts come in at 10.0.18362.1
' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones. ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1.
' I do not have other versions of windows to test, so will need external testing for this. ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones.
' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise ' I do not have other versions of windows to test, so will need external testing for this.
If (FileVersionInfo.ProductMajorPart >= 10) Then ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise
Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """" If (FileVersionInfo.ProductMajorPart >= 10) Then
Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """"
Else
Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """"
End If
Dim StartInfo As New ProcessStartInfo
StartInfo.FileName = Command
StartInfo.Arguments = Arguments
StartInfo.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(StartInfo)
Else Else
Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """" MessageBox.Show("RDPSign executable not found:" & vbNewLine & vbNewLine & Command, My.Application.Info.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Error)
End If End If
Dim StartInfo As New ProcessStartInfo
StartInfo.FileName = Command
StartInfo.Arguments = Arguments
StartInfo.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(StartInfo)
End Sub End Sub
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Function GetSysDir() As String
Return Environment.SystemDirectory.ToString
End Function
End Class End Class

View File

@ -48,6 +48,7 @@
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Security" /> <Reference Include="System.Security" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />

View File

@ -67,6 +67,15 @@
<setting name="SavedDisableFTA" serializeAs="String"> <setting name="SavedDisableFTA" serializeAs="String">
<value>False</value> <value>False</value>
</setting> </setting>
<setting name="SavedSignRDP" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedSignedAndUnsigned" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedCertSelected" serializeAs="String">
<value>0</value>
</setting>
</RemoteApp_Tool.My.MySettings> </RemoteApp_Tool.My.MySettings>
</userSettings> </userSettings>
</configuration> </configuration>

View File

@ -15,7 +15,7 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
@ -29,7 +29,7 @@ Namespace My
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If
@ -281,6 +281,42 @@ Namespace My
Me("SavedDisableFTA") = value Me("SavedDisableFTA") = value
End Set End Set
End Property End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedSignRDP() As Boolean
Get
Return CType(Me("SavedSignRDP"),Boolean)
End Get
Set
Me("SavedSignRDP") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedSignedAndUnsigned() As Boolean
Get
Return CType(Me("SavedSignedAndUnsigned"),Boolean)
End Get
Set
Me("SavedSignedAndUnsigned") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("0")> _
Public Property SavedCertSelected() As Integer
Get
Return CType(Me("SavedCertSelected"),Integer)
End Get
Set
Me("SavedCertSelected") = value
End Set
End Property
End Class End Class
End Namespace End Namespace

View File

@ -59,5 +59,14 @@
<Setting Name="SavedDisableFTA" Type="System.Boolean" Scope="User"> <Setting Name="SavedDisableFTA" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value> <Value Profile="(Default)">False</Value>
</Setting> </Setting>
<Setting Name="SavedSignRDP" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedSignedAndUnsigned" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedCertSelected" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

View File

@ -68,10 +68,10 @@ Partial Class RemoteAppCreateClientConnection
Me.FTACountLabel = New System.Windows.Forms.Label() Me.FTACountLabel = New System.Windows.Forms.Label()
Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox() Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox()
Me.GroupBoxSignRDP = New System.Windows.Forms.GroupBox() Me.GroupBoxSignRDP = New System.Windows.Forms.GroupBox()
Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox()
Me.CertificateComboBox = New System.Windows.Forms.ComboBox() Me.CertificateComboBox = New System.Windows.Forms.ComboBox()
Me.CertificateLabel = New System.Windows.Forms.Label() Me.CertificateLabel = New System.Windows.Forms.Label()
Me.CheckBoxSignRDPDisabled = New System.Windows.Forms.CheckBox() Me.CheckBoxSignRDPEnabled = New System.Windows.Forms.CheckBox()
Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox()
Me.ServerGroupBox.SuspendLayout() Me.ServerGroupBox.SuspendLayout()
Me.RDGWGroupBox.SuspendLayout() Me.RDGWGroupBox.SuspendLayout()
Me.ClientConnectionGroupBox.SuspendLayout() Me.ClientConnectionGroupBox.SuspendLayout()
@ -83,6 +83,7 @@ Partial Class RemoteAppCreateClientConnection
' '
'EditAfterSave 'EditAfterSave
' '
Me.EditAfterSave.BackColor = System.Drawing.Color.Transparent
Me.EditAfterSave.ImageIndex = 2 Me.EditAfterSave.ImageIndex = 2
Me.EditAfterSave.ImageList = Me.SmallerIcons Me.EditAfterSave.ImageList = Me.SmallerIcons
Me.EditAfterSave.Location = New System.Drawing.Point(313, 13) Me.EditAfterSave.Location = New System.Drawing.Point(313, 13)
@ -91,7 +92,7 @@ Partial Class RemoteAppCreateClientConnection
Me.EditAfterSave.TabIndex = 2 Me.EditAfterSave.TabIndex = 2
Me.EditAfterSave.Text = "Manually edit RDP file" Me.EditAfterSave.Text = "Manually edit RDP file"
Me.EditAfterSave.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage Me.EditAfterSave.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
Me.EditAfterSave.UseVisualStyleBackColor = True Me.EditAfterSave.UseVisualStyleBackColor = False
' '
'SmallerIcons 'SmallerIcons
' '
@ -113,10 +114,10 @@ Partial Class RemoteAppCreateClientConnection
Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CreateButton.ImageIndex = 6 Me.CreateButton.ImageIndex = 6
Me.CreateButton.ImageList = Me.SmallerIcons Me.CreateButton.ImageList = Me.SmallerIcons
Me.CreateButton.Location = New System.Drawing.Point(416, 546) Me.CreateButton.Location = New System.Drawing.Point(416, 555)
Me.CreateButton.Name = "CreateButton" Me.CreateButton.Name = "CreateButton"
Me.CreateButton.Size = New System.Drawing.Size(80, 29) Me.CreateButton.Size = New System.Drawing.Size(80, 29)
Me.CreateButton.TabIndex = 8 Me.CreateButton.TabIndex = 9
Me.CreateButton.Text = "Create..." Me.CreateButton.Text = "Create..."
Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateButton.UseVisualStyleBackColor = False Me.CreateButton.UseVisualStyleBackColor = False
@ -134,10 +135,10 @@ Partial Class RemoteAppCreateClientConnection
Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CancelEditButton.ImageIndex = 4 Me.CancelEditButton.ImageIndex = 4
Me.CancelEditButton.ImageList = Me.SmallerIcons Me.CancelEditButton.ImageList = Me.SmallerIcons
Me.CancelEditButton.Location = New System.Drawing.Point(343, 546) Me.CancelEditButton.Location = New System.Drawing.Point(343, 555)
Me.CancelEditButton.Name = "CancelEditButton" Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(67, 29) Me.CancelEditButton.Size = New System.Drawing.Size(67, 29)
Me.CancelEditButton.TabIndex = 7 Me.CancelEditButton.TabIndex = 8
Me.CancelEditButton.Text = "Cancel" Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False Me.CancelEditButton.UseVisualStyleBackColor = False
@ -164,7 +165,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label13.Location = New System.Drawing.Point(7, 54) Me.Label13.Location = New System.Drawing.Point(7, 54)
Me.Label13.Name = "Label13" Me.Label13.Name = "Label13"
Me.Label13.Size = New System.Drawing.Size(101, 15) Me.Label13.Size = New System.Drawing.Size(101, 15)
Me.Label13.TabIndex = 104 Me.Label13.TabIndex = 4
Me.Label13.Text = "Alternative server:" Me.Label13.Text = "Alternative server:"
' '
'Label14 'Label14
@ -173,7 +174,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label14.Location = New System.Drawing.Point(382, 25) Me.Label14.Location = New System.Drawing.Point(382, 25)
Me.Label14.Name = "Label14" Me.Label14.Name = "Label14"
Me.Label14.Size = New System.Drawing.Size(32, 15) Me.Label14.Size = New System.Drawing.Size(32, 15)
Me.Label14.TabIndex = 105 Me.Label14.TabIndex = 2
Me.Label14.Text = "Port:" Me.Label14.Text = "Port:"
' '
'Label12 'Label12
@ -182,7 +183,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label12.Location = New System.Drawing.Point(7, 25) Me.Label12.Location = New System.Drawing.Point(7, 25)
Me.Label12.Name = "Label12" Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(85, 15) Me.Label12.Size = New System.Drawing.Size(85, 15)
Me.Label12.TabIndex = 106 Me.Label12.TabIndex = 0
Me.Label12.Text = "Server address:" Me.Label12.Text = "Server address:"
' '
'ServerPort 'ServerPort
@ -190,7 +191,7 @@ Partial Class RemoteAppCreateClientConnection
Me.ServerPort.Location = New System.Drawing.Point(420, 22) Me.ServerPort.Location = New System.Drawing.Point(420, 22)
Me.ServerPort.Name = "ServerPort" Me.ServerPort.Name = "ServerPort"
Me.ServerPort.Size = New System.Drawing.Size(53, 23) Me.ServerPort.Size = New System.Drawing.Size(53, 23)
Me.ServerPort.TabIndex = 1 Me.ServerPort.TabIndex = 3
Me.ServerPort.Text = "3389" Me.ServerPort.Text = "3389"
' '
'AltServerAddress 'AltServerAddress
@ -198,14 +199,14 @@ Partial Class RemoteAppCreateClientConnection
Me.AltServerAddress.Location = New System.Drawing.Point(121, 51) Me.AltServerAddress.Location = New System.Drawing.Point(121, 51)
Me.AltServerAddress.Name = "AltServerAddress" Me.AltServerAddress.Name = "AltServerAddress"
Me.AltServerAddress.Size = New System.Drawing.Size(352, 23) Me.AltServerAddress.Size = New System.Drawing.Size(352, 23)
Me.AltServerAddress.TabIndex = 2 Me.AltServerAddress.TabIndex = 5
' '
'ServerAddress 'ServerAddress
' '
Me.ServerAddress.Location = New System.Drawing.Point(121, 22) Me.ServerAddress.Location = New System.Drawing.Point(121, 22)
Me.ServerAddress.Name = "ServerAddress" Me.ServerAddress.Name = "ServerAddress"
Me.ServerAddress.Size = New System.Drawing.Size(255, 23) Me.ServerAddress.Size = New System.Drawing.Size(255, 23)
Me.ServerAddress.TabIndex = 0 Me.ServerAddress.TabIndex = 1
' '
'RDGWGroupBox 'RDGWGroupBox
' '
@ -228,7 +229,7 @@ Partial Class RemoteAppCreateClientConnection
Me.AttemptDirectCheckBox.Location = New System.Drawing.Point(10, 76) Me.AttemptDirectCheckBox.Location = New System.Drawing.Point(10, 76)
Me.AttemptDirectCheckBox.Name = "AttemptDirectCheckBox" Me.AttemptDirectCheckBox.Name = "AttemptDirectCheckBox"
Me.AttemptDirectCheckBox.Size = New System.Drawing.Size(326, 19) Me.AttemptDirectCheckBox.Size = New System.Drawing.Size(326, 19)
Me.AttemptDirectCheckBox.TabIndex = 2 Me.AttemptDirectCheckBox.TabIndex = 3
Me.AttemptDirectCheckBox.Text = "Only use RD Gateway if direct connection is unsuccessful" Me.AttemptDirectCheckBox.Text = "Only use RD Gateway if direct connection is unsuccessful"
Me.AttemptDirectCheckBox.UseVisualStyleBackColor = True Me.AttemptDirectCheckBox.UseVisualStyleBackColor = True
' '
@ -249,7 +250,7 @@ Partial Class RemoteAppCreateClientConnection
Me.RDGWLabel.Location = New System.Drawing.Point(7, 50) Me.RDGWLabel.Location = New System.Drawing.Point(7, 50)
Me.RDGWLabel.Name = "RDGWLabel" Me.RDGWLabel.Name = "RDGWLabel"
Me.RDGWLabel.Size = New System.Drawing.Size(116, 15) Me.RDGWLabel.Size = New System.Drawing.Size(116, 15)
Me.RDGWLabel.TabIndex = 110 Me.RDGWLabel.TabIndex = 1
Me.RDGWLabel.Text = "RD Gateway address:" Me.RDGWLabel.Text = "RD Gateway address:"
' '
'GatewayAddress 'GatewayAddress
@ -258,7 +259,7 @@ Partial Class RemoteAppCreateClientConnection
Me.GatewayAddress.Location = New System.Drawing.Point(145, 47) Me.GatewayAddress.Location = New System.Drawing.Point(145, 47)
Me.GatewayAddress.Name = "GatewayAddress" Me.GatewayAddress.Name = "GatewayAddress"
Me.GatewayAddress.Size = New System.Drawing.Size(328, 23) Me.GatewayAddress.Size = New System.Drawing.Size(328, 23)
Me.GatewayAddress.TabIndex = 1 Me.GatewayAddress.TabIndex = 2
' '
'ClientConnectionGroupBox 'ClientConnectionGroupBox
' '
@ -299,6 +300,7 @@ Partial Class RemoteAppCreateClientConnection
' '
'CreateRAWebIcon 'CreateRAWebIcon
' '
Me.CreateRAWebIcon.BackColor = System.Drawing.Color.Transparent
Me.CreateRAWebIcon.ImageIndex = 5 Me.CreateRAWebIcon.ImageIndex = 5
Me.CreateRAWebIcon.ImageList = Me.SmallerIcons Me.CreateRAWebIcon.ImageList = Me.SmallerIcons
Me.CreateRAWebIcon.Location = New System.Drawing.Point(313, 36) Me.CreateRAWebIcon.Location = New System.Drawing.Point(313, 36)
@ -307,7 +309,7 @@ Partial Class RemoteAppCreateClientConnection
Me.CreateRAWebIcon.TabIndex = 3 Me.CreateRAWebIcon.TabIndex = 3
Me.CreateRAWebIcon.Text = "Create icon files" Me.CreateRAWebIcon.Text = "Create icon files"
Me.CreateRAWebIcon.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage Me.CreateRAWebIcon.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
Me.CreateRAWebIcon.UseVisualStyleBackColor = True Me.CreateRAWebIcon.UseVisualStyleBackColor = False
' '
'FTAButton 'FTAButton
' '
@ -317,7 +319,7 @@ Partial Class RemoteAppCreateClientConnection
Me.FTAButton.Location = New System.Drawing.Point(301, 22) Me.FTAButton.Location = New System.Drawing.Point(301, 22)
Me.FTAButton.Name = "FTAButton" Me.FTAButton.Name = "FTAButton"
Me.FTAButton.Size = New System.Drawing.Size(172, 29) Me.FTAButton.Size = New System.Drawing.Size(172, 29)
Me.FTAButton.TabIndex = 1 Me.FTAButton.TabIndex = 2
Me.FTAButton.Text = "File type associations..." Me.FTAButton.Text = "File type associations..."
Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.FTAButton.UseVisualStyleBackColor = False Me.FTAButton.UseVisualStyleBackColor = False
@ -373,7 +375,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Panel1.Location = New System.Drawing.Point(89, 76) Me.Panel1.Location = New System.Drawing.Point(89, 76)
Me.Panel1.Name = "Panel1" Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(200, 26) Me.Panel1.Size = New System.Drawing.Size(200, 26)
Me.Panel1.TabIndex = 112 Me.Panel1.TabIndex = 9
' '
'PerMachineRadioButton 'PerMachineRadioButton
' '
@ -403,7 +405,7 @@ Partial Class RemoteAppCreateClientConnection
Me.TopLevelRadioButton.AutoSize = True Me.TopLevelRadioButton.AutoSize = True
Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17) Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17)
Me.TopLevelRadioButton.Name = "TopLevelRadioButton" Me.TopLevelRadioButton.Name = "TopLevelRadioButton"
Me.TopLevelRadioButton.Size = New System.Drawing.Size(71, 19) Me.TopLevelRadioButton.Size = New System.Drawing.Size(72, 19)
Me.TopLevelRadioButton.TabIndex = 4 Me.TopLevelRadioButton.TabIndex = 4
Me.TopLevelRadioButton.Text = "Top level" Me.TopLevelRadioButton.Text = "Top level"
Me.TopLevelRadioButton.UseVisualStyleBackColor = True Me.TopLevelRadioButton.UseVisualStyleBackColor = True
@ -495,10 +497,10 @@ Partial Class RemoteAppCreateClientConnection
Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.ResetButton.ImageIndex = 3 Me.ResetButton.ImageIndex = 3
Me.ResetButton.ImageList = Me.SmallerIcons Me.ResetButton.ImageList = Me.SmallerIcons
Me.ResetButton.Location = New System.Drawing.Point(126, 546) Me.ResetButton.Location = New System.Drawing.Point(126, 555)
Me.ResetButton.Name = "ResetButton" Me.ResetButton.Name = "ResetButton"
Me.ResetButton.Size = New System.Drawing.Size(121, 29) Me.ResetButton.Size = New System.Drawing.Size(121, 29)
Me.ResetButton.TabIndex = 6 Me.ResetButton.TabIndex = 7
Me.ResetButton.Text = "Reset to default" Me.ResetButton.Text = "Reset to default"
Me.ResetButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.ResetButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.ResetButton.UseVisualStyleBackColor = False Me.ResetButton.UseVisualStyleBackColor = False
@ -510,10 +512,10 @@ Partial Class RemoteAppCreateClientConnection
Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.SaveButton.ImageIndex = 0 Me.SaveButton.ImageIndex = 0
Me.SaveButton.ImageList = Me.SmallerIcons Me.SaveButton.ImageList = Me.SmallerIcons
Me.SaveButton.Location = New System.Drawing.Point(12, 546) Me.SaveButton.Location = New System.Drawing.Point(12, 555)
Me.SaveButton.Name = "SaveButton" Me.SaveButton.Name = "SaveButton"
Me.SaveButton.Size = New System.Drawing.Size(108, 29) Me.SaveButton.Size = New System.Drawing.Size(108, 29)
Me.SaveButton.TabIndex = 5 Me.SaveButton.TabIndex = 6
Me.SaveButton.Text = "Save settings" Me.SaveButton.Text = "Save settings"
Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SaveButton.UseVisualStyleBackColor = False Me.SaveButton.UseVisualStyleBackColor = False
@ -536,7 +538,7 @@ Partial Class RemoteAppCreateClientConnection
Me.FTACountLabel.Location = New System.Drawing.Point(154, 29) Me.FTACountLabel.Location = New System.Drawing.Point(154, 29)
Me.FTACountLabel.Name = "FTACountLabel" Me.FTACountLabel.Name = "FTACountLabel"
Me.FTACountLabel.Size = New System.Drawing.Size(52, 15) Me.FTACountLabel.Size = New System.Drawing.Size(52, 15)
Me.FTACountLabel.TabIndex = 2 Me.FTACountLabel.TabIndex = 1
Me.FTACountLabel.Text = "Count: 0" Me.FTACountLabel.Text = "Count: 0"
' '
'DisabledFTACheckBox 'DisabledFTACheckBox
@ -554,58 +556,52 @@ Partial Class RemoteAppCreateClientConnection
Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxCreateSignedAndUnsigned) Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxCreateSignedAndUnsigned)
Me.GroupBoxSignRDP.Controls.Add(Me.CertificateComboBox) Me.GroupBoxSignRDP.Controls.Add(Me.CertificateComboBox)
Me.GroupBoxSignRDP.Controls.Add(Me.CertificateLabel) Me.GroupBoxSignRDP.Controls.Add(Me.CertificateLabel)
Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPDisabled) Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPEnabled)
Me.GroupBoxSignRDP.Location = New System.Drawing.Point(12, 477) Me.GroupBoxSignRDP.Location = New System.Drawing.Point(12, 477)
Me.GroupBoxSignRDP.Name = "GroupBoxSignRDP" Me.GroupBoxSignRDP.Name = "GroupBoxSignRDP"
Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 63) Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 68)
Me.GroupBoxSignRDP.TabIndex = 4 Me.GroupBoxSignRDP.TabIndex = 5
Me.GroupBoxSignRDP.TabStop = False Me.GroupBoxSignRDP.TabStop = False
Me.GroupBoxSignRDP.Text = "Sign RDP" Me.GroupBoxSignRDP.Text = "Digital Signing"
'
'CheckBoxCreateSignedAndUnsigned
'
Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True
Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 41)
Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned"
Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19)
Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 1
Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned"
Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True
' '
'CertificateComboBox 'CertificateComboBox
' '
Me.CertificateComboBox.BackColor = System.Drawing.Color.WhiteSmoke Me.CertificateComboBox.BackColor = System.Drawing.Color.WhiteSmoke
Me.CertificateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CertificateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.CertificateComboBox.Enabled = False
Me.CertificateComboBox.FormattingEnabled = True Me.CertificateComboBox.FormattingEnabled = True
Me.CertificateComboBox.Location = New System.Drawing.Point(268, 25) Me.CertificateComboBox.Location = New System.Drawing.Point(282, 25)
Me.CertificateComboBox.Name = "CertificateComboBox" Me.CertificateComboBox.Name = "CertificateComboBox"
Me.CertificateComboBox.Size = New System.Drawing.Size(191, 23) Me.CertificateComboBox.Size = New System.Drawing.Size(191, 23)
Me.CertificateComboBox.TabIndex = 24 Me.CertificateComboBox.TabIndex = 3
' '
'CertificateLabel 'CertificateLabel
' '
Me.CertificateLabel.AutoSize = True Me.CertificateLabel.AutoSize = True
Me.CertificateLabel.Location = New System.Drawing.Point(205, 28) Me.CertificateLabel.Location = New System.Drawing.Point(212, 28)
Me.CertificateLabel.Name = "CertificateLabel" Me.CertificateLabel.Name = "CertificateLabel"
Me.CertificateLabel.Size = New System.Drawing.Size(64, 15) Me.CertificateLabel.Size = New System.Drawing.Size(64, 15)
Me.CertificateLabel.TabIndex = 23 Me.CertificateLabel.TabIndex = 2
Me.CertificateLabel.Text = "Certificate:" Me.CertificateLabel.Text = "Certificate:"
' '
'CheckBoxSignRDPDisabled 'CheckBoxSignRDPEnabled
' '
Me.CheckBoxSignRDPDisabled.AutoSize = True Me.CheckBoxSignRDPEnabled.AutoSize = True
Me.CheckBoxSignRDPDisabled.Checked = True Me.CheckBoxSignRDPEnabled.Location = New System.Drawing.Point(10, 22)
Me.CheckBoxSignRDPDisabled.CheckState = System.Windows.Forms.CheckState.Checked Me.CheckBoxSignRDPEnabled.Name = "CheckBoxSignRDPEnabled"
Me.CheckBoxSignRDPDisabled.Location = New System.Drawing.Point(10, 22) Me.CheckBoxSignRDPEnabled.Size = New System.Drawing.Size(93, 19)
Me.CheckBoxSignRDPDisabled.Name = "CheckBoxSignRDPDisabled" Me.CheckBoxSignRDPEnabled.TabIndex = 0
Me.CheckBoxSignRDPDisabled.Size = New System.Drawing.Size(71, 19) Me.CheckBoxSignRDPEnabled.Text = "Sign RDP file"
Me.CheckBoxSignRDPDisabled.TabIndex = 0 Me.CheckBoxSignRDPEnabled.UseVisualStyleBackColor = True
Me.CheckBoxSignRDPDisabled.Text = "Disabled"
Me.CheckBoxSignRDPDisabled.UseVisualStyleBackColor = True
'
'CheckBoxCreateSignedAndUnsigned
'
Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True
Me.CheckBoxCreateSignedAndUnsigned.Checked = True
Me.CheckBoxCreateSignedAndUnsigned.CheckState = System.Windows.Forms.CheckState.Checked
Me.CheckBoxCreateSignedAndUnsigned.Enabled = False
Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 38)
Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned"
Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19)
Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 25
Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned"
Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True
' '
'RemoteAppCreateClientConnection 'RemoteAppCreateClientConnection
' '
@ -614,7 +610,7 @@ Partial Class RemoteAppCreateClientConnection
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton Me.CancelButton = Me.CancelEditButton
Me.ClientSize = New System.Drawing.Size(507, 587) Me.ClientSize = New System.Drawing.Size(507, 596)
Me.Controls.Add(Me.GroupBoxSignRDP) Me.Controls.Add(Me.GroupBoxSignRDP)
Me.Controls.Add(Me.FileTypesGroupBox) Me.Controls.Add(Me.FileTypesGroupBox)
Me.Controls.Add(Me.MSIGroupBox) Me.Controls.Add(Me.MSIGroupBox)
@ -693,7 +689,7 @@ Partial Class RemoteAppCreateClientConnection
Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox
Friend WithEvents FTACountLabel As System.Windows.Forms.Label Friend WithEvents FTACountLabel As System.Windows.Forms.Label
Friend WithEvents GroupBoxSignRDP As GroupBox Friend WithEvents GroupBoxSignRDP As GroupBox
Friend WithEvents CheckBoxSignRDPDisabled As CheckBox Friend WithEvents CheckBoxSignRDPEnabled As CheckBox
Friend WithEvents CertificateComboBox As ComboBox Friend WithEvents CertificateComboBox As ComboBox
Friend WithEvents CertificateLabel As Label Friend WithEvents CertificateLabel As Label
Friend WithEvents CheckBoxCreateSignedAndUnsigned As CheckBox Friend WithEvents CheckBoxCreateSignedAndUnsigned As CheckBox

View File

@ -124,152 +124,152 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADy ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW
IQAAAk1TRnQBSQFMAgEBBwEAAeABAQHgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA IQAAAk1TRnQBSQFMAgEBBwEAAQgBAgEIAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIF4AAyABLwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAxkBIysA AwABIAMAAQEBAAEgBgABIF4AAyABLwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAxkBIysA
AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBaAFd AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBYQFd
AVQB8AG2AYQBPAH/AbUBgwE4Af8BtgGCATcB/wG2AYIBNwH/AbYBggE3Af8BtgGCATcB/wG1AYMBOAH/ AVQB8AG2AYQBNwH/AbUBgwEzAf8BtgGCATIB/wG2AYIBMgH/AbYBggEyAf8BtgGCATIB/wG1AYMBMwH/
AbYBhAE8Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA AbYBhAE3Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA
AyoBQQE+ATsB8gH/AkABvQH9AwYBCBAAAwYBCAIrAbEB/AEgAR4B6gH/AyoBQRAAAykBPwG2AYQBPCH/ AyoBQQE5ATYB8gH/AkABuAH9AwYBCBAAAwYBCAIrAaYB/AEbARkB6gH/AyoBQRAAAykBPwG2AYQBNyH/
AbYBhAE8Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/ AbYBhAE3Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/
Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBRwFFAfUB/wFSAVAB+gH/AUcBRAH2 Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBQgFAAfUB/wFNAUsB+gH/AUIBPwH2
Af8BMAEvAbUB/AMGAQgIAAMGAQgCKwGyAfwBMAEuAfEB/wE7ATkB9gH/ASABHgHqAf8DKgFBDAADJwE7 Af8CKwGrAfwDBgEICAADBgEIAisBpwH8ASsBKQHxAf8BNgE0AfYB/wEbARkB6gH/AyoBQQwAAycBOwG1
AbUBgwE4Bf8BAAEvAfIB/wEBAVUB8wH/ARQBmgH2Af8BGAGmAfgB/wEHAWQB9AH/AQABKgHyBf8BtQGD AYMBMwX/AQABKgHyAf8BAAFQAfMB/wEPAZoB9gH/ARMBpgH4Af8BAgFfAfQB/wEAASUB8gX/AbUBgwEz
ATgB/xgAA0cBggPYAf8BzQHUAdUB/wFtAW4BbwH/A8MB/wFbAbkBagH/AQABjgESAf8B3QHrAeAB/wPx Af8YAANHAYID2AH/Ac0B1AHVAf8BaAFpAWoB/wPDAf8BVgG5AWUB/wEAAY4BDQH/Ad0B6wHgAf8D8QH/
Af8B1wHlAdoB/wHfAecB4QH/ArcBuAH/A1gBwUQAAx4BKwFKAUcB9gH/AVQBUQH6Af8BYAFfAv8BSAFF AdcB5QHaAf8B3wHnAeEB/wK3AbgB/wNYAcFEAAMeASsBRQFCAfYB/wFPAUwB+gH/AVsBWgL/AUMBQAH2
AfYB/wEwAS8BtQH8AwYBCAMGAQgCKwGzAfwBNgE0AfIB/wFSAVEC/wE5ATcB9AH/AR4BHAHpAf8DHgEr Af8CKwGrAfwDBgEIAwYBCAIrAakB/AExAS8B8gH/AU0BTAL/ATQBMgH0Af8BGQEXAekB/wMeASsMAAMk
DAADJAE2AbYBgwE4Bf8BGgFBAfIB/wEkAWgB8gH/AR0BkwH0Af8BIQGaAfQB/wEUAWYB8QH/AQABLQHw ATYBtgGDATMF/wEVATwB8gH/AR8BYwHyAf8BGAGTAfQB/wEcAZoB9AH/AQ8BYQHxAf8BAAEoAfAF/wG2
Bf8BtgGDATcB/wMjATMDIwEzAxkBIxAAAyQBNgNHAYIDTwH/A+wB/wP7Af8BEQGYAScB/wFGAbABVwH/ AYMBMgH/AyMBMwMjATMDGQEjEAADJAE2A0cBggNKAf8D7AH/A/sB/wEMAZgBIgH/AUEBsAFSAf8D9QH/
A/UB/wEAAZABFgH/AU4BsQFeAf8B3gHfAd4B/wNYAe9IAAMeASsBSgFIAfYB/wFVAVIB+gH/AWMBYAL/ AQABkAERAf8BSQGxAVkB/wHeAd8B3gH/A1gB70gAAx4BKwFFAUMB9gH/AVABTQH6Af8BXgFbAv8BRAFC
AUkBRwH2Af8BMQEwAbUB/AJAAb0B/QE/ATwB9AH/AVcBVgL/AT8BPQH1Af8BJQEjAesB/wMeASsIAAMZ AfYB/wEsASsBqwH8AkABuAH9AToBNwH0Af8BUgFRAv8BOgE4AfUB/wEgAR4B6wH/Ax4BKwgAAxkEIwEz
BCMBMwMxAU8BtgGDATgD/wH8Af8BDgEuAfAB/wFAAW4B8gH/AUEBkwH0Af8BJgGDAfIB/wEKAUwB8AH/ AzEBTwG2AYMBMwP/AfwB/wEJASkB8AH/ATsBaQHyAf8BPAGTAfQB/wEhAYMB8gH/AQUBRwHwAf8BAAEd
AQABIgHwA/8B+wH/AbUBgAE0Af8BtQGDATsB/wG2AYQBPQH/AloBWAHAA0gBhgG+AsQB/wG8AsEB/wG5 AfAD/wH7Af8BtQGAAS8B/wG1AYMBNgH/AbYBhAE4Af8CWgFYAcADSAGGAb4CxAH/AbwCwQH/AbkBvQG+
Ab0BvgH/AbcBugG7Af8BtAK4Af8DUAH/A+4B/wFgAb0BbgH/AQcBlAEeAf8B5QHxAeYB/wEAAZABFQH/ Af8BtwG6AbsB/wG0ArgB/wNLAf8D7gH/AVsBvQFpAf8BAgGUARkB/wHlAfEB5gH/AQABkAEQAf8BEAGa
ARUBmgErAf8B6QHvAeoB/wPiAf8DWAHvTAADHgErAUsBSQH2Af8BVgFTAfoB/wFjAWEC/wFiAV8C/wFf ASYB/wHpAe8B6gH/A+IB/wNYAe9MAAMeASsBRgFEAfYB/wFRAU4B+gH/AV4BXAL/AV0BWgL/AVoBWAL/
AV0C/wFdAVsC/wFGAUQB9wH/AS4BLAHuAf8DHgErDAACWgFYAcABtQGFAT4B/wG1AYQBPQH/AbUBggE1 AVgBVgL/AUEBPwH3Af8BKQEnAe4B/wMeASsMAAJaAVgBwAG1AYUBOQH/AbUBhAE4Af8BtQGCATAD/wH7
A/8B+wH/AQABEwHuAf8BLwFRAfAB/wFMAYUB8wH/AWMBlQH0Af8BgwGaAfYB/wGAAY0B+QP/AfkB/wG1 Af8BAAEOAe4B/wEqAUwB8AH/AUcBhQHzAf8BXgGVAfQB/wGDAZoB9gH/AYABjQH5A/8B+QH/AbUBZgEq
AWsBLwn/AbYBhAE8Af8BygHSAdMB/wHJAdIB0wH/AckB0AHTAf8ByAHRAdIB/wHHAdAB0QH/AcYB0AHR Cf8BtgGEATcB/wHKAdIB0wH/AckB0gHTAf8ByQHQAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHQAdEB/wFo
Af8BbQJwAf8DxgH/Ac8B6QHUAf8B5gH0AekB/wH9Av4B/wHLAeYBzwH/AQABjQEQAf8BUgG1AWIB/wHA AmsB/wPGAf8BzwHpAdQB/wHmAfQB6QH/Af0C/gH/AcsB5gHPAf8BAAGNAQsB/wFNAbUBXQH/AcABwQHA
AcEBwAH/A1gBwVAAAx4BKwFMAUoB9wH/AWgBZQL/AUgBRQL/AUYBQwL/AWEBXwL/ATcBNQHwAf8DHgEr Af8DWAHBUAADHgErAUcBRQH3Af8BYwFgAv8BQwFAAv8BQQE+Av8BXAFaAv8BMgEwAfAB/wMeASsQAAG1
EAABtQGEAT0F/wH2AfAB6QH/AbIBbgEyA/8B/QH/AgAB7AH/ARwBLwHtAf8BOAFPAfAB/wFLAWIB8gH/ AYQBOAX/AfYB8AHpAf8BsgFpAS0D/wH9Af8CAAHsAf8BFwEqAe0B/wEzAUoB8AH/AUYBXQHyAf8BVgFl
AVsBagH0Af8BYQFkAfYD/wH8Af8BvAFrAS8B/wEAAa4BgAX/AbYBggE6Af8BygHSAdQB/wGsAq8B/wGG AfQB/wFcAV8B9gP/AfwB/wG8AWYBKgH/AQABrgGABf8BtgGCATUB/wHKAdIB1AH/AawCrwH/AYYCAAH/
AgAB/wGLAgAB/wGHAgAB/wGLAgAB/wGGAhsB/wOQAf8B8gH5AfMJ/wH+Af8B/gH/AcsB5wHRAf8BqwHR AYsCAAH/AYcCAAH/AYsCAAH/AYYCFgH/A5AB/wHyAfkB8wn/Af4B/wH+Af8BywHnAdEB/wGrAdEBsgH/
AbIB/wOPAf8DQgF0UAADBgEIAUgBRwHEAf0BbAFoAv8BTQFKAv8BSgFHAv8BZQFjAv8CQAG+Af0DBgEI A48B/wNCAXRQAAMGAQgBQwFCAbsB/QFnAWMC/wFIAUUC/wFFAUIC/wFgAV4C/wJAAbkB/QMGAQgQAAG0
EAABtAGCAToF/wHnAZsBJAH/AbEBbgE1Bf8CAAHtAf8CAAHuAf8BFgEdAfAB/wEsATQB8gH/AT8BQQH1 AYIBNQX/AecBmwEfAf8BsQFpATAF/wIAAe0B/wIAAe4B/wERARgB8AH/AScBLwHyAf8BOgE8AfUB/wFI
Af8BTQFMAfcF/wHAAWwBMgH/AQABrQGBBf8BtgGCAToB/wHMAdMB1QH/AaoBrAGtAf8BmwEaARAB/wGc AUcB9wX/AcABZwEtAf8BAAGtAYEF/wG2AYIBNQH/AcwB0wHVAf8BqgGsAa0B/wGbARUBCwH/AZwBGQEN
AR4BEgH/AZsBBgEAAf8BqAEGAQAB/wGyAQgBAAH/AZwBcAFrAf8DkAH/A8YB/wPuAf8D7gH/A8YB/wOQ Af8BmwEBAQAB/wGoAQEBAAH/AbIBAwEAAf8BnAFrAWYB/wOQAf8DxgH/A+4B/wPuAf8DxgH/A5AB/wNa
Af8DWgHAAwABAUwAAwYBCAFVAU8BuQH8AV8BXAH7Af8BgAFtAv8BbQFqAv8BawFoAv8BaAFmAv8BTQFL AcADAAEBTAADBgEIAUsBRQGvAfwBWgFXAfsB/wGAAWgC/wFoAWUC/wFmAWMC/wFjAWEC/wFIAUYB9wH/
AfcB/wEzATEBtQH8AwYBCAwAAbMBggE7Bf8B5gGeAS0B/wGvAYABOwP/AfYD/wHtA/8B6wP/AeoD/wHq AS4BLAGrAfwDBgEIDAABswGCATYF/wHmAZ4BKAH/Aa8BgAE2A/8B9gP/Ae0D/wHrA/8B6gP/AeoD/wHq
A/8B6gP/AewD/wHzAf8BwgFsATMB/wEAAasBbQX/AbYBggE6Af8BzAHTAdUB/wGoAqoB/wGlATIBKAH/ A/8B7AP/AfMB/wHCAWcBLgH/AQABqwFoBf8BtgGCATUB/wHMAdMB1QH/AagCqgH/AaUBLQEjAf8BnwEY
AZ8BHQESAf8BowEFAQAB/wGyAQgBAAH/AcABDgEAAf8B3wFoAVYB/wG3AYoBggH/AYgBZAFgAf8BVgFQ AQ0B/wGjAgAB/wGyAQMBAAH/AcABCQEAAf8B3wFjAVEB/wG3AYoBggH/AYgBXwFbAf8BUQFLAUoB/wFQ
AU8B/wFVAU8BTQH/AW8CcgH/AY8CkAH/AwABAUwAAwYBCAFdAVoBuwH8AWYBYwH9Af8BhgGCAv8BZQFi AUoBSAH/AWoCbQH/AY8CkAH/AwABAUwAAwYBCAFYAVUBsQH8AWEBXgH9Af8BhgGCAv8BYAFdAfwB/wFO
AfwB/wFTAVEB+AH/AU8BTAH3Af8BXAFZAfoB/wFqAWgC/wFPAUwB9wH/ATMBMgG1AfwDBgEICAABswGC AUwB+AH/AUoBRwH3Af8BVwFUAfoB/wFlAWMC/wFKAUcB9wH/AS4BLQGrAfwDBgEICAABswGCATYF/wHy
ATsF/wHyAaEBIAH/Ab0BiwFEAf8BrwGAAT0B/wGvAW4BNwH/AbABbQE1Af8BrwFsATMB/wGxAWwBMQH/ AaEBGwH/Ab0BiwE/Af8BrwGAATgB/wGvAWkBMgH/AbABaAEwAf8BrwFnAS4B/wGxAWcBLAH/AbcBaQEv
AbcBbgE0Af8BvQFuATQB/wHBAW0BNAH/AaYBnwFhAf8BZAHTAb0F/wG1AYIBOgH/Ac4B1AHVAf8BogKk Af8BvQFpAS8B/wHBAWgBLwH/AaYBnwFcAf8BXwHTAb0F/wG1AYIBNQH/Ac4B1AHVAf8BogKkAf8BrAE0
Af8BrAE5ATAB/wGhARABAwH/Aa0BBAEAAf8BvgELAQAB/wHPARsBAQH/AfABmgGLAf8B9wG0AagB/wH5 ASsB/wGhAQsBAAH/Aa0CAAH/Ab4BBgEAAf8BzwEWAQAB/wHwAZoBiwH/AfcBtAGoAf8B+QGuAZ4B/wH+
Aa4BngH/Af4BtQGnAf8B+AGlAZIB/wHCAc4BzwH/AaoCrAH/TAADBgEIAVQBUgHMAf0BbAFpAf4B/wGK AbUBpwH/AfgBpQGSAf8BwgHOAc8B/wGqAqwB/0wAAwYBCAFPAU0BvgH9AWcBZAH+Af8BigGHAv8BZgFj
AYcC/wFrAWgB/QH/AVsBWAH7Af8DHgErAx4BKwFQAU0B+AH/AV0BWwH6Af8BbAFpAv8BUAFOAfcB/wE0 Af0B/wFWAVMB+wH/Ax4BKwMeASsBSwFIAfgB/wFYAVYB+gH/AWcBZAL/AUsBSQH3Af8BLwEtAawB/AME
ATIBtgH8AwQBBQQAAbMBggE7Bf8B8QGXAQsB/wH4AbIBQQH/Af0BwQFhAf8B/gHKAYIB/wH+Ac4BigH/ AQUEAAGzAYIBNgX/AfEBlwEGAf8B+AGyATwB/wH9AcEBXAH/Af4BygGCAf8B/gHOAYoB/wH9AcsBhQX/
Af0BywGFBf8BvAFuATcB/wEcAcABoAH/ATwByAGqAf8BUgHJAa8B/wFaAcoBsAX/AbUBgQE5Af8BzQHU AbwBaQEyAf8BFwHAAaAB/wE3AcgBqgH/AU0ByQGvAf8BVQHKAbAF/wG1AYEBNAH/Ac0B1AHWAf8BoQKj
AdYB/wGhAqMB/wGoASABFgH/AasBCAEAAf8BwgEOAQAB/wHVAQ0BAAH/AeoBNQEYAf8B/gHBAbQC/wHK Af8BqAEbAREB/wGrAQMBAAH/AcIBCQEAAf8B1QEIAQAB/wHqATABEwH/Af4BwQG0Av8BygG9Av8ByQG4
Ab0C/wHJAbgC/wHPAcAB/wH8Ab8BqwH/AcMBzgHPAf8BrAGuAa8B/0wAAxYBHwFpAWYC/wGBAW0C/wGB Av8BzwHAAf8B/AG/AasB/wHDAc4BzwH/AawBrgGvAf9MAAMWAR8BZAFhAv8BgQFoAv8BgQFoAf4B/wFe
AW0B/gH/AWMBYAH9Af8DHgErCAADHgErAVEBTgH4Af8BXgFcAfsB/wFtAWsC/wFRAU4B+AH/A0ABbwMB AVsB/QH/Ax4BKwgAAx4BKwFMAUkB+AH/AVkBVwH7Af8BaAFmAv8BTAFJAfgB/wNAAW8DAQECAbMBgwE2
AQIBswGDATsF/wHsAYoBAAH/AfEBoQElAf8B9QGxAUQB/wH2AbkBVQH/AfcBvwFhAf8B9gG/AWEF/wG6 Bf8B7AGKAQAB/wHxAaEBIAH/AfUBsQE/Af8B9gG5AVAB/wH3Ab8BXAH/AfYBvwFcBf8BugFmAS4B/wEA
AWsBMwH/AQMBrwGLAf8BIwG2AZMB/wE4AboBnQH/AUgBwQGlBf8BtQGCAToB/wHOAdQB1gH/AaACoQH/ Aa8BiwH/AR4BtgGTAf8BMwG6AZ0B/wFDAcEBpQX/AbUBggE1Af8BzgHUAdYB/wGgAqEB/wGoAgAB/wG5
AagBAwEAAf8BuQEHAQAB/wHQARYBAAH/AeIBDAEAAf8B+AFfAUoC/wHmAeAC/wHgAdgC/wHlAdwC/wHr AQIBAAH/AdABEQEAAf8B4gEHAQAB/wH4AVoBRQL/AeYB4AL/AeAB2AL/AeUB3AL/AesB4gH/Af0B1QHI
AeIB/wH9AdUByAH/AcQBzgHQAf8BrwKyAf9QAAMWAR8BaQFmAv8BaAFlAf4B/wMeASsQAAMeASsBUwFQ Af8BxAHOAdAB/wGvArIB/1AAAxYBHwFkAWEC/wFjAWAB/gH/Ax4BKxAAAx4BKwFOAUsB+AH/AVQBUgH5
AfgB/wFZAVcB+QH/AVMBUgFTAagDHQEpBAABtAGDATwF/wHpAWwBAAH/Ae0BjwEAAf8B7wGeARsB/wHx Af8BUwFSAVMBqAMdASkEAAG0AYMBNwX/AekBZwEAAf8B7QGPAQAB/wHvAZ4BFgH/AfEBqAEsAf8B8wGv
AagBMQH/AfMBrwFAAf8B9AG1AU0F/wG0AWsBMwP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGEAT4B/wHO ATsB/wH0AbUBSAX/AbQBZgEuA/8B+wP/AfYD/wHzA/8B8gP/AfgB/wG1AYQBOQH/Ac4B1AHWAf8BoAKh
AdQB1gH/AaACoQH/Aa0CAAH/AcQBAQEAAf8B2gEEAQAB/wHyAQgBAAL/AYgBXgL/AdQBvgL/AcYBqgL/ Af8BrQIAAf8BxAIAAf8B2gIAAf8B8gEDAQAC/wGIAVkC/wHUAb4C/wHGAaoC/wHEAaYC/wHAAZ8B/wH7
AcQBpgL/AcABnwH/AfsBrwGNAf8BxQHOAdAB/wGxAbQBtQH/VAADFgEfAx4BKxgAAx4BKwNAAW8DKQE+ Aa8BjQH/AcUBzgHQAf8BsQG0AbUB/1QAAxYBHwMeASsYAAMeASsDQAFvAykBPggAAbUBhQE6A/8B/AP/
CAABtQGFAT8D/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCAToB/wG2AYQBPQH/AbYBgwE7 Af0H/wH+A/8B/AP/AfoD/wH3A/8B+QH/AbQBggE1Af8BtgGEATgB/wG2AYMBNgH/AbUBggE2Af8BtQGD
Af8BtQGCATsB/wG1AYMBOwH/AbUBhAE+Af8DVQGwAc4B1AHWAf8BoAKhAf8BoAKhAf8BoAKhAf8BoQGi ATYB/wG1AYQBOQH/A1UBsAHOAdQB1gH/AaACoQH/AaACoQH/AaACoQH/AaEBogGjAf8BowKlAf8BpQKn
AaMB/wGjAqUB/wGlAqcB/wGsAq8B/wGvArEB/wGxAbQBtQH/AbQCuAH/AbYBuwG8Af8BxQHPAdEB/wGz Af8BrAKvAf8BrwKxAf8BsQG0AbUB/wG0ArgB/wG2AbsBvAH/AcUBzwHRAf8BswG3AbgB/3gAAwcBCgwA
AbcBuAH/eAADBwEKDAABZQFiAVgB7wG1AYUBPwH/AbMBgwE9Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE8 AmIBWAHvAbUBhQE6Af8BswGDATgB/wGzAYMBOAH/AbMBgwE4Af8BswGDATcB/wGzAYMBNwH/AbMBgwE3
Af8BswGDATwB/wGzAYMBPAH/AbUBhAE+Af8CZAFcAecYAANDAXgBzgHUAdYB/wHOAdQB1gH/Ac4B1AHW Af8BtQGEATkB/wJkAVwB5xgAA0MBeAHOAdQB1gH/Ac4B1AHWAf8BzgHUAdYB/wHNAdQB1gH/Ac0B0wHV
Af8BzQHUAdYB/wHNAdMB1QH/Ac0B0wHVAf8BygHSAdQB/wHKAdIB0wH/AckB0QHTAf8ByAHRAdIB/wHH Af8BzQHTAdUB/wHKAdIB1AH/AcoB0gHTAf8ByQHRAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHPAdEB/wNO
AdAB0QH/AcYBzwHRAf8DTgGVTAADHwEtAzABSwMvAUoDLwFKAy8BSQMyAVEDNgFZAzYBWQM2AVkDNgFZ AZVMAAMfAS0DMAFLAy8BSgMvAUoDLwFJAzIBUQM2AVkDNgFZAzYBWQM2AVkDNgFZAzUBVwMxAU4DJgE5
AzYBWQM1AVcDMQFOAyYBOQsAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/GAADFAEcAyABLgMg CwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8YAAMUARwDIAEuAyABLgMgAS4BGwEeASoB/wNZ
AS4DIAEuASABIwEvAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARxIAANSAaQE/wH1 AccDQgF0AzcBWwM1AVgDMwFSAy8BSgMrAUIDIAEuAxQBHEgAA1IBpAT/AfUB9AHzAf8B9gH1AfQF/wE9
AfQB8wH/AfYB9QH0Bf8BQgFBAUMB/wEZARgBGwX/AfsC+gH/AvsB+gH/AfsC+gX/ApYBlwH/A1oB2AgA ATwBPgH/ARQBEwEWBf8B+wL6Af8C+wH6Af8B+wL6Bf8ClgGXAf8DWgHYCAADhgH/A8AB/wMAAf8DAAH/
A4YB/wPAAf8DAAH/AwAB/wOGCf8DwAH/AQAD/wEAAf8BAAH/AwAB/xgAAeIBuAGZAf8B4gG5AZgB/wHi A4YJ/wPAAf8BAAP/AQAB/wEAAf8DAAH/GAAB4gG4AZkB/wHiAbkBmAH/AeIBuAGZAf8BSAFXAZ0B/wFA
AbgBmQH/AU0BXAGdAf8BRQFVAZIB/wFBAVABkgH/ATABUwGeAf8BygGsAZgB/wHiAbgBmAH/AeIBuQGZ AVABkgH/ATwBSwGSAf8BKwFOAZ4B/wHKAawBmAH/AeIBuAGYAf8B4gG5AZkB/wHiAbkBmAH/AeIBuAGY
Af8B4gG5AZgB/wHiAbgBmAH/GAADDAEQA0QBewJdAVoBygFeAVkBQgH1AWIBXgE4AfYCXAFZAcwDRQF9 Af8YAAMMARADRAF7Al0BWgHKAlkBQgH1AWIBXgFBAfYCXAFZAcwDRQF9Aw0BERQAA1ABngH7AfoB+QH/
Aw0BERQAA1ABngH7AfoB+QH/Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wFBAUABQgH/ARgBFwEZAf8C8AHv Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wE8ATsBPQH/ARMBEgEUAf8C8AHvAf8C6AHnAf8C6AHnAf8C6AHn
Af8C6AHnAf8C6AHnAf8C6AHnAf8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPA Af8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAX/A8AB/wEAAf8BAAH/
Af8DwAX/A8AB/wEAAf8BAAH/A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGf A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGfAa4B/wFUAWYBqQH/AUIBXgGg
Aa4B/wFZAWsBqQH/AUcBYwGgAf8BAAFaAbAB/wEAAWMBvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/ Af8BAAFVAbAB/wEAAV4BvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/AeMBugGaAf8UAAM0AVQCXQFO
AeMBugGaAf8UAAM0AVQCXQFOAfABgAFUAQAB/wGAAVQBAAH/AYABVAEAAf8BgAFUAQAB/wGAAVQBAAH/ AfABgAFPAQAB/wGAAU8BAAH/AYABTwEAAf8BgAFPAQAB/wGAAU8BAAH/Al8BTAHzAlgBVgHBAyEBMBAA
AWABXwFMAfMCWAFWAcEDIQEwEAADUAGeAfsC+gH/Ae8B7gHtAf8C8AHvAf8B/gH9AfwB/wGGAYQBhQH/ A1ABngH7AvoB/wHvAe4B7QH/AvAB7wH/Af4B/QH8Af8BhgGEAYUB/wEgAR8BIAH/AvUB9AH/Au0B7AH/
ASUBJAElAf8C9QH0Af8C7QHsAf8C7QHsAf8B7gHtAewB/wL6AfkB/wGUAZMBlAH/A1sB4QgAA4YB/wPA Au0B7AH/Ae4B7QHsAf8C+gH5Af8BlAGTAZQB/wNbAeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AB/wPA
Af8DAAH/A4YB/wPAAf8DwAH/A8AB/wMAAf8BAAH/AQAD/wEAA/8BAAH/AwAB/xQAAeQBvQGcAf8B+AHh Af8DAAH/AQAB/wEAA/8BAAP/AQAB/wMAAf8UAAHkAb0BnAH/AfgB4QG/Af8B8wHWAbIB/wHCAbgBrgH/
Ab8B/wHzAdYBsgH/AcIBuAGuAf8BRgFmAawB/wEYAcAB+AH/AQABlwHXAf8BAAFlAdQB/wEAAWUBwQH/ AUEBYQGsAf8BEwHAAfgB/wEAAZcB1wH/AQABYAHUAf8BAAFgAcEB/wHzAdYBsgH/AfgB4QG/Af8B5AG9
AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADNAFUAYQBVwEAAf8BhwFaAQEB/wGHAVoBAQH/AYcBWgEB AZ0B/xAAAzQBVAGEAVIBAAH/AYcBVQEAAf8BhwFVAQAB/wGHAVUBAAH/AYcBVQEAAf8BfwFrARIB/gJd
Af8BhwFaAQEB/wF/AWsBEgH+Al0BTgHwAloBVwHFA0sBjgI1ATQBVQMKAQ0MAANQAZ4B/QH8AfsB/wLw AU4B8AJaAVcBxQNLAY4CNQE0AVUDCgENDAADUAGeAf0B/AH7Af8C8AHvAf8B8gLxAf8B/gL9Af8BkgGQ
Ae8B/wHyAvEB/wH+Av0B/wGSAZABkQH/ARcBFQEWAf8BrAGrAaoB/wGsAasBqgH/AawBqwGqAf8BqgKp AZEB/wESARABEQH/AawBqwGqAf8BrAGrAaoB/wGsAasBqgH/AaoCqQH/Aa0BrAGrAf8BKgEoASkB/wNb
Af8BrQGsAasB/wEvAS0BLgH/A1sB4QgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAP/AQAB/wMAAf8DAAH/ AeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AD/wEAAf8DAAH/AwAB/wPAAf8DwAH/AwAB/xQAAeYBwAGf
A8AB/wPAAf8DAAH/FAAB5gHAAZ8B/wH4AeIBwQH/AdkBvgGdAf8B2QG+AZ4B/wGWAacBqwH/AQABYQHE Af8B+AHiAcEB/wHZAb4BnQH/AdkBvgGeAf8BlgGnAasB/wEAAVwBxAH/AQ4B0wL/AQABswHuAf8BAAFg
Af8BEwHTAv8BAAGzAe4B/wEAAWUB1AH/AQABZwHCAf8B+AHhAcAB/wHmAcABnwH/DAADDQESAl0BTgHw AdQB/wEAAWIBwgH/AfgB4QHAAf8B5gHAAZ8B/wwAAw0BEgJdAU4B8AGQAVwBAAH/AZABXAEAAf8BkAFc
AZABYQEEAf8BkAFhAQQB/wGQAWEBBAH/AZkBaAEEAf8BlgFmAQIB/wFjAWABWQHrAlkBVgG+A0gBhgIx AQAB/wGZAWMBAAH/AZYBYQEAAf8CYAFZAesCWQFWAb4DSAGGAjEBMAFNAxQBHAMBAQIMAANQAZ4B/gL9
ATABTQMUARwDAQECDAADUAGeAf4C/QH/AfIB8QHwAf8C8wHyAv8C/gH/AZ0CnAH/AQ4CDAH/ARsBGQEY Af8B8gHxAfAB/wLzAfIC/wL+Af8BnQKcAf8BCQIHAf8BFgEUARMB/wEYARUBFAH/ARgCFQH/ARUCEwH/
Af8BHQEaARkB/wEdAhoB/wEaAhgB/wESAhAB/wEEAQIBBAH/A1sB4QgAA4YF/wMAAf8DhgP/AQAB/wPA AQ0CCwH/AwAB/wNbAeEIAAOGBf8DAAH/A4YD/wEAAf8DwAP/AQAB/wEAB/8DwAH/A8AB/wMAAf8DAAH/
A/8BAAH/AQAH/wPAAf8DwAH/AwAB/wMAAf8DAAH/DAAB5wHDAaIB/wH4AeMBwgH/AfYB3QG6Af8B+AHj AwAB/wwAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/AfgB4wHDAf8B+AHjAcIB/wG2AcUBwwH/AQABXAHE
AcMB/wH4AeMBwgH/AbYBxQHDAf8BAAFhAcQB/wETAdMC/wEUAcYB9gH/AQABZQHUAf8BAAFrAcoB/wHo Af8BDgHTAv8BDwHGAfYB/wEAAWAB1AH/AQABZgHKAf8B6AHDAaIB/wMAAQEIAANFAX0BmQFjAQAB/wGZ
AcMBogH/AwABAQgAA0UBfQGZAWgBBQH/AZkBaQEGAf8BmgFpAQYB/wFrAWQBUwHxAzsBYwMNAREDCgEN AWQBAQH/AZoBZAEBAf8CZAFTAfEDOwFjAw0BEQMKAQ0DJAE1AysBQgMQARYDAAEBEAADUAGeAv8B/gH/
AyQBNQMrAUIDEAEWAwABARAAA1ABngL/Af4B/wHzAvIB/wL0AfMD/wH+Af8BowKiAf8BGQEWARUB/wFB AfMC8gH/AvQB8wP/Af4B/wGjAqIB/wEUAREBEAH/ATwBOgE4Af8BzwHOAc0B/wHHAcUBxAH/AakBpwGm
AT8BPQH/Ac8BzgHNAf8BxwHFAcQB/wGpAacBpgH/AZ0BmwGaAf8BiwGJAYoB/wNbAeEIAAOGBf8DAAH/ Af8BnQGbAZoB/wGLAYkBigH/A1sB4QgAA4YF/wMAAf8DwAH/A4YD/wEAA/8BAAH/AQAL/wMAAf8DwAH/
A8AB/wOGA/8BAAP/AQAB/wEAC/8DAAH/A8AB/wPAAf8DwAH/AwAB/wgAAeoBxgGkAf8B+AHkAcQB/wHc A8AB/wPAAf8DAAH/CAAB6gHGAaQB/wH4AeQBxAH/AdwBwgGkAf8B3AHEAaYB/wHcAcQBpgH/AdwBxQGm
AcIBpAH/AdwBxAGmAf8B3AHEAaYB/wHcAcUBpgH/AaEBrgGvAf8BAAFhAcQB/wGYAewC/wEUAcYB9gH/ Af8BoQGuAa8B/wEAAVwBxAH/AZgB7AL/AQ8BxgH2Af8BAAFgAdQB/wJoAV8B/wMoATwIAAJcAVoBzQGj
AQABZQHUAf8CbQFkAf8DKAE8CAACXAFaAc0BowGCAQkB/wGjAYIBCQH/AaUBgwEIAf8DOwFjEAADBAEF AYIBBAH/AaMBggEEAf8BpQGDAQMB/wM7AWMQAAMEAQUYAANQAZ4E/wH0AvMB/wP1Bf8BqAGmAaUB/wEM
GAADUAGeBP8B9ALzAf8D9QX/AagBpgGlAf8BEQIOAf8BMwIyAf8B5gLlAf8B8QLwAf8BpwGmAaUB/wE7 AgkB/wEuAi0B/wHmAuUB/wHxAvAB/wGnAaYBpQH/ATYBMwEyAf8BmgKYAf8DXAHnCAADhgX/AwAB/wPA
ATgBNwH/AZoCmAH/A1wB5wgAA4YF/wMAAf8DwAH/A8AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A4YB/wOG Af8DwAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAewBygGoAf8B+AHl
Af8DhgH/A8AB/wMAAf8IAAHsAcoBqAH/AfgB5QHGAf8B+QHkAcYB/wH5AeUBxQH/AfkB5AHGAf8B+AHk AcYB/wH5AeQBxgH/AfkB5QHFAf8B+QHkAcYB/wH4AeQBxgH/AfcB4wHFAf8BvAHIAcYB/wEAAVwBxAH/
AcYB/wH3AeMBxQH/AbwByAHGAf8BAAFhAcQB/wGWAeoB/gH/ArcBrAH/AV0BXgFQAf8CbQFkAf8IAAFr AZYB6gH+Af8CtwGsAf8BWAFZAUsB/wJoAV8B/wgAAWYBWQFCAfUBrgGLAQYB/wGuAYsBBgH/AZ8BaAEB
AV4BQgH1Aa4BiwELAf8BrgGLAQsB/wGfAW0BBgH/Aw0BESwAA1ABngT/AvUB9AH/AvcB9gX/AawCqgH/ Af8DDQERLAADUAGeBP8C9QH0Af8C9wH2Bf8BrAKqAf8BEQEPAQ4B/wEvAS0BLgH/Ac8BzQHMAf8B1AHS
ARYBFAETAf8BNAEyATMB/wHPAc0BzAH/AdQB0gHRAf8BtAKyAf8BqgGnAaYB/wNqAfkDVwG9CAADhgH/ AdEB/wG0ArIB/wGqAacBpgH/A2oB+QNXAb0IAAOGAf8DhgH/AwAB/wPAAf8DwAH/A4YB/wOGAf8DhgH/
A4YB/wMAAf8DwAH/A8AB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A8AB/wMAAf8IAAHu A4YB/wOGAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAe4BzQGrAf8B+AHmAccB/wHfAcgBqgH/Ad4ByAGq
Ac0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGrAf8B3wHHAasB/wHbAcMBpgH/AdoBwgGk Af8B3wHIAasB/wHfAccBqwH/AdsBwwGmAf8B2gHCAaQB/wGrAbABqwH/AY4BjwGEAf8B4AHiAdMB/wKJ
Af8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFuAf8BBgFUAd4B/wFVAVwBZAHqBAABbQFgAUIB9QG5 AWkB/wEBAU8B3gH/AVUBXAFeAeoEAAFoAVkBQgH1AbkBlAEJAf8BuQGUAQkB/wGnAYQBAwH/Aw0BEQgA
AZQBDgH/AbkBlAEOAf8BpwGEAQgB/wMNAREIAANMAZIBqQGGAQgB/wGjAYIBBwH/AaMBggEHAf8BowGC A0wBkgGpAYYBAwH/AaMBggECAf8BowGCAQIB/wGjAYIBAgH/AaMBggECAf8BYgFfAUwB8wgAA1ABngT/
AQcB/wGjAYIBBwH/AWsBXwFMAfMIAANQAZ4E/wH3AvYB/wP4Af8D+gH/A/AB/wHqAukB/wPwAf8D9wH/ AfcC9gH/A/gB/wP6Af8D8AH/AeoC6QH/A/AB/wP3Af8D9gH/AvoB+QH/A1gBuQMXASADBwEJBAADhgn/
A/YB/wL6AfkB/wNYAbkDFwEgAwcBCQQAA4YJ/wOGAf8DwAH/A8AB/wOGAf8DwAH/A8AB/wPAAf8DwAH/ A4YB/wPAAf8DwAH/A4YB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DhgH/AwAB/wgAAfAB0AGt
A8AB/wPAAf8DwAH/A4YB/wMAAf8IAAHwAdABrQH/AfkB5gHJAf8B+AHmAckB/wH5AeYByQH/AfkB5gHJ Af8B+QHmAckB/wH4AeYByQH/AfkB5gHJAf8B+QHmAckB/wH3AeUByQH/AfAB2QG9Af8B6QHPAbMB/wHo
Af8B9wHlAckB/wHwAdkBvQH/AekBzwGzAf8B6AHOAbIB/wHMAbkBrwH/AokBbgH/AUMBlgHqAf8BMQGF Ac4BsgH/AcwBuQGvAf8CiQFpAf8BPgGWAeoB/wEsAYUB4AH/AVoCXQHTBAACXAFaAc0BwwGcAQsB/wHD
AeAB/wFaAl0B0wQAAlwBWgHNAcMBnAEQAf8BwwGcARAB/wG/AZgBDwH/AzsBYwgAAwwBEAJbAVgCywGi AZwBCwH/Ab8BmAEKAf8DOwFjCAADDAEQAlsBWALLAaIBDQH/AcMBnAELAf8BwwGcAQsB/wHDAZwBCwH/
ARIB/wHDAZwBEAH/AcMBnAEQAf8BwwGcARAB/wGpAYYBCAH/CAADUAGeBP8C+AH3Af8D+QH/A/oB/wL+ AakBhgEDAf8IAANQAZ4E/wL4AfcB/wP5Af8D+gH/Av4B/RX/A1YBqxAAA4YB/wOGAf8DhgH/A4YB/wPA
Af0V/wNWAasQAAOGAf8DhgH/A4YB/wOGAf8DwAH/A4YB/wHMAjwC/wHMATwB/wHMAZkBCQH/AcwBmQEA Af8DhgH/AcwCNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQB/wHMATcBBAX/A4YB/wMAAf8IAAHx
Av8BPAEJAf8BzAE8AQkF/wOGAf8DAAH/CAAB8QHTAbEB/wH5AecBywH/AeIBzAGwAf8B4gHLAa8B/wHh AdMBsQH/AfkB5wHLAf8B4gHMAbAB/wHiAcsBrwH/AeEBzAGvAf8B4QHKAa8B/wHXAb4BoQH/AdUBugGc
AcwBrwH/AeEBygGvAf8B1wG+AaEB/wHVAboBnAH/AdQBuQGdAf8B1AG5AZ0B/wG2Aa8BtAH/AWMBkgHE Af8B1AG5AZ0B/wHUAbkBnQH/AbYBrwG0Af8BXgGSAcQB/wNIAYYIAAJGAUUBfgHSAagBDgH/Ac0BpAEO
Af8DSAGGCAACRgFFAX4B0gGoARMB/wHNAaQBEwH/Ac0BpAETAf8BbwFnAVMB8QM7AWMDDQERAw0BEQNB Af8BzQGkAQ4B/wFnAWQBUwHxAzsBYwMNAREDDQERA0EBcgG/AZgBCQH/Ac0BpAEOAf8BzQGkAQ4B/wHN
AXIBvwGYAQ4B/wHNAaQBEwH/Ac0BpAETAf8BzQGkARMB/wGwAYwBCgH/CAADUAGeBP8C+QH4Af8D+gH/ AaQBDgH/AbABjAEFAf8IAANQAZ4E/wL5AfgB/wP6Af8D/AH/A/0B/wP+Bf8B/AL9Af8B9AL1Af8D+gH/
A/wB/wP9Af8D/gX/AfwC/QH/AfQC9QH/A/oB/wNWAbMYAAOGCf8DhgH/AcwCPAP/ATwC/wHMATwB/wHM A1YBsxgAA4YJ/wOGAf8BzAI3A/8BNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQF/wOGAf8DAAH/
AZkBCQH/AcwBmQEAAv8BPAEJBf8DhgH/AwAB/wgAAfMB1wG0Af8B+QHnAcwB/wH4AecBzAH/AfkB6AHM CAAB8wHXAbQB/wH5AecBzAH/AfgB5wHMAf8B+QHoAcwB/wH5AegBzAH/AfcB5QHKAf8B5wHPAbUB/wHy
Af8B+QHoAcwB/wH3AeUBygH/AecBzwG1Af8B8gHeAcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGu Ad4BxgH/AfMB4AHIAf8B9wHoAdMB/wNaAcUB7wHQAa4B/wMBAQIDAAEBBAADDwEUAWEBXQFOAfAB2AGt
Af8DAQECAwABAQQAAw8BFAFoAWMBTgHwAdgBrQEVAf8B1wGsARUB/wHXAawBFQH/AdEBpwETAf8BvQGX ARAB/wHXAawBEAH/AdcBrAEQAf8B0QGnAQ4B/wG9AZcBCAH/Ab0BlwEIAf8B0QGnAQ4B/wHXAawBEAH/
AQ0B/wG9AZcBDQH/AdEBpwETAf8B1wGsARUB/wHXAawBFQH/AdcBrAEVAf8B1wGsARUB/wG2AZEBCwH/ AdcBrAEQAf8B1wGsARAB/wHXAawBEAH/AbYBkQEGAf8IAANQAZ4E/wP6Af8D/AH/A/0B/wP+Bf8B/gH/
CAADUAGeBP8D+gH/A/wB/wP9Af8D/gX/Af4B/wH+Af8D6gH/AtcB2AH/Ad0C3gH/AzsBZBwAA4YB/wOG Af4B/wPqAf8C1wHYAf8B3QLeAf8DOwFkHAADhgH/A4YB/wOGAf8BzAI3A/8BNwP/ATcC/wHMATcB/wHM
Af8DhgH/AcwCPAP/ATwD/wE8Av8BzAE8Af8BzAGZAQkB/wHMAZkBAAX/A4YB/wMAAf8IAAH0AdkBtQH/ AZkBBAH/AcwBmQEABf8DhgH/AwAB/wgAAfQB2QG1Af8B+QHoAc0B/wHkAc8BtAH/AeQBzwG0Af8B5AHP
AfkB6AHNAf8B5AHPAbQB/wHkAc8BtAH/AeQBzwG0Af8B4wHOAbMB/wHdAcYBqQH/AfkB6AHOAf8B+QHo AbQB/wHjAc4BswH/Ad0BxgGpAf8B+QHoAc4B/wH5AegBzgH/A1wBzAHxAdMBsQH/AyYBOBAAAjUBNAFV
Ac4B/wNcAcwB8QHTAbEB/wMmATgQAAI1ATQBVQHbAbEBFQH/Ad8BswEXAf8B3gGzARcB/wHeAbMBFwH/ AdsBsQEQAf8B3wGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGz
Ad4BswEXAf8B3gGzARcB/wHeAbMBFwH/Ad4BswEXAf8B3wGzARcB/wHcAbIBFQH/AeYBugEZAf8BuwGV ARIB/wHfAbMBEgH/AdwBsgEQAf8B5gG6ARQB/wG7AZUBCAH/CAADUAGeBP8D/AH/A/0J/wP9Af8C+gH7
AQ0B/wgAA1ABngT/A/wB/wP9Cf8D/QH/AvoB+wH/AesC7AH/AvoB+wH/A0IBcygAA4YB/wHMAjwC/wHM Af8B6wLsAf8C+gH7Af8DQgFzKAADhgH/AcwCNwL/AcwBNwP/ATcD/wE3Av8BzAE3Af8BzAGZAQQF/wOG
ATwD/wE8A/8BPAL/AcwBPAH/AcwBmQEJBf8DhgH/AwAB/wgAAfYB2wG4Af8B+QHpAc8B/wH5AekBzgH/ Af8DAAH/CAAB9gHbAbgB/wH5AekBzwH/AfkB6QHOAf8B+QHoAc4B/wH4AegBzgH/AfYB5QHMAf8B7gHa
AfkB6AHOAf8B+AHoAc4B/wH2AeUBzAH/Ae4B2gG/Af8B+QHoAc4B/wNgAd4B9AHZAbUB/wMmATgYAAI1 Ab8B/wH5AegBzgH/A2AB3gH0AdkBtQH/AyYBOBgAAjUBNAFVAWMBXQFOAfAB7QHCARYB/wHmAbkBFAH/
ATQBVQFpAWYBTgHwAe0BwgEbAf8B5gG5ARkB/wHmAbgBGQH/AeYBuAEZAf8B5gG5ARkB/wHtAcIBGwH/ AeYBuAEUAf8B5gG4ARQB/wHmAbkBFAH/Ae0BwgEWAf8BawFkAVMB8QI6ATkBYAJbAVgBywHHAaABCwH/
AXIBbQFTAfECOgE5AWACWwFYAcsBxwGgARAB/wgAA1QBphz/AesC7AH/A0IBcywAA4YB/wHMAjwB/wHM CAADVAGmHP8B6wLsAf8DQgFzLAADhgH/AcwCNwH/AcwBNwEEAf8BzAE3AQQB/wHMATcBBAH/AcwBNwEE
ATwBCQH/AcwBPAEJAf8BzAE8AQkB/wHMATwBCQH/AcwBPAEJBf8DhgH/AwAB/wgAAfcB3QG6Af8B+QHp Af8BzAE3AQQF/wOGAf8DAAH/CAAB9wHdAboB/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH5AekBzwH/
Ac8B/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH3AeYBzQH/Ae0B2AG9Af8B+QHoAc4B/wH3Ad0BuAH/ AfcB5gHNAf8B7QHYAb0B/wH5AegBzgH/AfcB3QG4Af8DJgE4IAADDAEQA0UBfQJcAVkBzAF+AXkBPgH4
AyYBOCAAAwwBEANFAX0CXAFZAcwBjQF+AT4B+AGNAYYBPwH5Al4BXAHOAkYBRQF+Aw0BEgQAAwwBEANM AYgBgQFBAfkCXgFcAc4CRgFFAX4DDQESBAADDAEQA0wBkggAAyYEOAFcAzgBXAM4AVwDOAFcAzgBXAM4
AZIIAAMmBDgBXAM4AVwDOAFcAzgBXAM4AVwDOAFcAzgBXAMpAT8wAAOGAf8D1wH/A9cB/wPXAf8D1wH/ AVwDOAFcAykBPzAAA4YB/wPXAf8D1wH/A9cB/wPXAf8D1wH/A9cB/wPXAf8DhgH/AwAB/wgAAfgB3wG7
A9cB/wPXAf8D1wH/A4YB/wMAAf8IAAH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7 Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wMm
Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8DJgE4VAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA AThUAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAC/wHgAQcB/gEBAgAC5wHA
AQEGAAEBFgAD/wEAAv8B4AEHAf4BAQIAAucBwAEHAfwDAALDAcABBwHgAwACgQHAAQcB4AMAAYABAQHA AQcB/AMAAsMBwAEHAeADAAKBAcABBwHgAwABgAEBAcABAAHwAwABwAEDBgAB4AEHBgAB8AEPBgAB8AEP
AQAB8AMAAcABAwYAAeABBwYAAfABDwYAAfABDwYAAeABBwMAAQECAAHAAQMDAAEDAgABgAEBAwABAwIA BgAB4AEHAwABAQIAAcABAwMAAQMCAAGAAQEDAAEDAgABgQGAAwABAwIAAcMBwQMAAQMCAAHnAeMDAAED
AYEBgAMAAQMCAAHDAcEDAAEDAgAB5wHjAwABAwIAAf8B9wEAAT8BAAEDAgABgAEBAYwBHwGAAQEC/wGA AgAB/wH3AQABPwEAAQMCAAGAAQEBjAEfAYABAQL/AYABAQGAAQ8BwAEDAfABDwGAAQEBgAEHAcABAwHg
AQEBgAEPAcABAwHwAQ8BgAEBAYABBwHAAQMB4AEHAYABAQGAAQcBwAEDAcABAwGAAQEBgAEHAcABAwGA AQcBgAEBAYABBwHAAQMBwAEDAYABAQGAAQcBwAEDAYABAwGAAQEBgAEBAcABAQGAAQcBgAEBAYABAAHA
AQMBgAEBAYABAQHAAQEBgAEHAYABAQGAAQABwAEBAYMB3wGAAQEBgAEAAcABAQGDAf8BgAEBAYABAAHA AQEBgwHfAYABAQGAAQABwAEBAYMB/wGAAQEBgAEAAcABAAGDAQEBgAEBAgABwAEAAYMBAQGAAQcBgAEA
AQABgwEBAYABAQIAAcABAAGDAQEBgAEHAYABAAHAAQEBgAEBAYABBwHgAQABwAEAAYABAQGAAQcB8AEA AcABAQGAAQEBgAEHAeABAAHAAQABgAEBAYABBwHwAQABwAEDAcABAQGAAQ8B/AEAAcABBwHgAQEBgAEf
AcABAwHAAQEBgAEPAfwBAAHAAQcB4AEBAYABHwH8AQABwAEPAfABCQGAAT8B/AEAAcABHwL/Cw== AfwBAAHAAQ8B8AEJAYABPwH8AQABwAEfAv8L
</value> </value>
</data> </data>
<metadata name="FileSaveRDP.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="FileSaveRDP.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -12,6 +12,8 @@ Public Class RemoteAppCreateClientConnection
Dim RemoteAppShortName = RemoteApp.Name Dim RemoteAppShortName = RemoteApp.Name
Me.Text = "Create Client Connection for " & RemoteAppShortName Me.Text = "Create Client Connection for " & RemoteAppShortName
CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName)
SetCCWindowSettings() SetCCWindowSettings()
If Me.ServerAddress.Text = "" Then Me.ServerAddress.Text = System.Net.Dns.GetHostName If Me.ServerAddress.Text = "" Then Me.ServerAddress.Text = System.Net.Dns.GetHostName
@ -32,11 +34,15 @@ Public Class RemoteAppCreateClientConnection
MSIRadioButton.Text = "MSI installer (requires WiX Toolset)" MSIRadioButton.Text = "MSI installer (requires WiX Toolset)"
End If End If
If Not My.Computer.FileSystem.FileExists(GetSysDir() & "\rdpsign.exe") Then
GroupBoxSignRDP.Enabled = False
GroupBoxSignRDP.Text += " (requires rdpsign.exe)"
GroupBoxSignRDP.Tag = "noexe"
End If
If Not RemoteApp.FileTypeAssociations Is Nothing Then _ If Not RemoteApp.FileTypeAssociations Is Nothing Then _
FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count
CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName)
Me.RDPRadioButton.Focus() Me.RDPRadioButton.Focus()
HelpSystem.SetupTips(Me) HelpSystem.SetupTips(Me)
Me.ShowDialog() Me.ShowDialog()
@ -62,6 +68,9 @@ Public Class RemoteAppCreateClientConnection
My.Settings.SavedCreateRAWebIcon = False My.Settings.SavedCreateRAWebIcon = False
My.Settings.SavedMSIPerUser = False My.Settings.SavedMSIPerUser = False
My.Settings.SavedDisableFTA = False My.Settings.SavedDisableFTA = False
My.Settings.SavedSignRDP = False
My.Settings.SavedSignedAndUnsigned = False
My.Settings.SavedCertSelected = 0
End Sub End Sub
Sub SaveCCWindowSettings() Sub SaveCCWindowSettings()
@ -81,6 +90,9 @@ Public Class RemoteAppCreateClientConnection
My.Settings.SavedCreateRAWebIcon = CreateRAWebIcon.Checked My.Settings.SavedCreateRAWebIcon = CreateRAWebIcon.Checked
My.Settings.SavedMSIPerUser = PerUserRadioButton.Checked My.Settings.SavedMSIPerUser = PerUserRadioButton.Checked
My.Settings.SavedDisableFTA = DisabledFTACheckBox.Checked My.Settings.SavedDisableFTA = DisabledFTACheckBox.Checked
My.Settings.SavedSignRDP = CheckBoxSignRDPEnabled.Checked
My.Settings.SavedSignedAndUnsigned = CheckBoxCreateSignedAndUnsigned.Checked
My.Settings.SavedCertSelected = CertificateComboBox.SelectedIndex
End Sub End Sub
Sub SetCCWindowSettings() Sub SetCCWindowSettings()
@ -119,6 +131,20 @@ Public Class RemoteAppCreateClientConnection
PerMachineRadioButton.Checked = False PerMachineRadioButton.Checked = False
PerUserRadioButton.Checked = True PerUserRadioButton.Checked = True
End If End If
CheckBoxSignRDPEnabled.Checked = My.Settings.SavedSignRDP
CertificateComboBox.Enabled = My.Settings.SavedSignRDP
CheckBoxCreateSignedAndUnsigned.Checked = My.Settings.SavedSignedAndUnsigned
If CertificateComboBox.Items.Count >= (My.Settings.SavedCertSelected + 1) Then
CertificateComboBox.SelectedIndex() = My.Settings.SavedCertSelected
ElseIf CertificateComboBox.Items.Count > 0 Then
CertificateComboBox.SelectedIndex() = 0
ElseIf Not GroupBoxSignRDP.Tag = "noexe" Then
GroupBoxSignRDP.Text += " (No certificates found)"
GroupBoxSignRDP.Enabled = False
End If
End Sub End Sub
Private Sub UseRDGatewayCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles UseRDGatewayCheckBox.CheckedChanged Private Sub UseRDGatewayCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles UseRDGatewayCheckBox.CheckedChanged
@ -140,8 +166,11 @@ Public Class RemoteAppCreateClientConnection
If RDPRadioButton.Checked Then If RDPRadioButton.Checked Then
CreateButton.ImageIndex = 6 CreateButton.ImageIndex = 6
CheckBoxCreateSignedAndUnsigned.Enabled = True
Else Else
CreateButton.ImageIndex = 1 CreateButton.ImageIndex = 1
CheckBoxCreateSignedAndUnsigned.Enabled = False
CheckBoxCreateSignedAndUnsigned.Checked = False
End If End If
End Sub End Sub
@ -150,15 +179,20 @@ Public Class RemoteAppCreateClientConnection
Dim MSIPath = "" Dim MSIPath = ""
Dim TempMSIPath = "" Dim TempMSIPath = ""
If CheckBoxSignRDPEnabled.Checked And CertificateComboBox.SelectedItem = "" Then
MessageBox.Show("You must select a certificate to sign the RDP file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
If DisabledFTACheckBox.Checked And Not RemoteApp.FileTypeAssociations Is Nothing Then RemoteApp.FileTypeAssociations.Clear() If DisabledFTACheckBox.Checked And Not RemoteApp.FileTypeAssociations Is Nothing Then RemoteApp.FileTypeAssociations.Clear()
If RDPRadioButton.Checked Then If RDPRadioButton.Checked Then
FileSaveRDP.FileName = RemoteApp.Name FileSaveRDP.FileName = RemoteApp.Name
If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
RDPPath = FileSaveRDP.FileName RDPPath = FileSaveRDP.FileName
Else Else
FileSaveMSI.FileName = RemoteApp.Name FileSaveMSI.FileName = RemoteApp.Name
If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
MSIPath = FileSaveMSI.FileName MSIPath = FileSaveMSI.FileName
RDPPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".rdp" RDPPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".rdp"
TempMSIPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".msi" TempMSIPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".msi"
@ -189,6 +223,7 @@ Public Class RemoteAppCreateClientConnection
ExtractFTIcon(ProductFileName, FTA) ExtractFTIcon(ProductFileName, FTA)
Next Next
End If End If
Me.Close()
Else Else
'!!!!!!! If it's an MSI '!!!!!!! If it's an MSI
Dim RDP As New RDP2MSIlib.RDP Dim RDP As New RDP2MSIlib.RDP
@ -225,9 +260,8 @@ Public Class RemoteAppCreateClientConnection
RDP.CreateMSI(MSIPath) RDP.CreateMSI(MSIPath)
DeleteFiles(FilesToDelete) DeleteFiles(FilesToDelete)
Me.Close()
End If End If
Me.Close()
End Sub End Sub
Private Sub ExtractFTIcon(ProductFileName As String, FTA As RemoteAppLib.FileTypeAssociation) Private Sub ExtractFTIcon(ProductFileName As String, FTA As RemoteAppLib.FileTypeAssociation)
@ -288,7 +322,7 @@ Public Class RemoteAppCreateClientConnection
RDPfile.SaveRDPfile(RDPPath) RDPfile.SaveRDPfile(RDPPath)
If Not CheckBoxSignRDPDisabled.Checked Then If CheckBoxSignRDPEnabled.Checked Then
Dim rdpSign As New RDPSign.RDPSign Dim rdpSign As New RDPSign.RDPSign
Dim Thumbprint As String = rdpSign.GetThumbprint(CertificateComboBox.Text) Dim Thumbprint As String = rdpSign.GetThumbprint(CertificateComboBox.Text)
rdpSign.SignRDP(Thumbprint, RDPPath, CheckBoxCreateSignedAndUnsigned.Checked) rdpSign.SignRDP(Thumbprint, RDPPath, CheckBoxCreateSignedAndUnsigned.Checked)
@ -315,7 +349,7 @@ Public Class RemoteAppCreateClientConnection
End Function End Function
Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click
MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf & _ MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf &
"To make permanent changes to the File Type Associations for this RemoteApp, edit the RemoteApp.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) "To make permanent changes to the File Type Associations for this RemoteApp, edit the RemoteApp.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
RemoteApp = RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp) RemoteApp = RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp)
If Not RemoteApp.FileTypeAssociations Is Nothing Then _ If Not RemoteApp.FileTypeAssociations Is Nothing Then _
@ -363,26 +397,31 @@ Public Class RemoteAppCreateClientConnection
End If End If
End Sub End Sub
Private Sub CheckBoxSignRDPDisabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPDisabled.CheckedChanged Private Sub CheckBoxSignRDPEnabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPEnabled.CheckedChanged
CertificateComboBox.Enabled = Not CheckBoxSignRDPDisabled.Checked CertificateComboBox.Enabled = CheckBoxSignRDPEnabled.Checked
CheckBoxCreateSignedAndUnsigned.Enabled = Not CheckBoxSignRDPDisabled.Checked If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then
If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want the RDP file to be signed?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want the RDP file to be signed?", "Sign RDP", MessageBoxButtons.YesNo) = DialogResult.Yes Then CheckBoxSignRDPEnabled.Checked = True
EditAfterSave.Checked = False
Else Else
CheckBoxSignRDPDisabled.Checked = True CheckBoxSignRDPEnabled.Checked = False
End If End If
End If End If
End Sub End Sub
Private Sub EditAfterSave_CheckedChanged(sender As Object, e As EventArgs) Handles EditAfterSave.CheckedChanged Private Sub EditAfterSave_CheckedChanged(sender As Object, e As EventArgs) Handles EditAfterSave.CheckedChanged
If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then
If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want to edit after saving?", "Edit After Save", MessageBoxButtons.YesNo) = DialogResult.Yes Then If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want to edit after saving?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
CheckBoxSignRDPDisabled.Checked = True EditAfterSave.Checked = True
Else Else
EditAfterSave.Checked = False EditAfterSave.Checked = False
End If End If
End If End If
End Sub End Sub
Private Sub CheckBoxCreateSignedAndUnsigned_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxCreateSignedAndUnsigned.CheckedChanged
If CheckBoxCreateSignedAndUnsigned.Checked = True Then
CheckBoxSignRDPEnabled.Checked = True
End If
End Sub
End Class End Class