diff --git a/LVNC-RS.sln b/LVNC-RS.sln new file mode 100644 index 0000000..70d28fd --- /dev/null +++ b/LVNC-RS.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2050 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LVNC-RS", "LVNC-RS\LVNC-RS.vbproj", "{A8CDD575-1614-459B-9A85-CEC5AC90F44A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A8CDD575-1614-459B-9A85-CEC5AC90F44A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8CDD575-1614-459B-9A85-CEC5AC90F44A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8CDD575-1614-459B-9A85-CEC5AC90F44A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8CDD575-1614-459B-9A85-CEC5AC90F44A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {26C5FB97-921B-46F5-827E-838D6F2B26FD} + EndGlobalSection +EndGlobal diff --git a/LVNC-RS/LVNC-RS.vbproj b/LVNC-RS/LVNC-RS.vbproj new file mode 100644 index 0000000..0aef6df --- /dev/null +++ b/LVNC-RS/LVNC-RS.vbproj @@ -0,0 +1,189 @@ + + + + + Debug + AnyCPU + {A8CDD575-1614-459B-9A85-CEC5AC90F44A} + WinExe + LVNC_RS.My.MyApplication + LVNC_RS + LVNC-RS + 512 + WindowsForms + v3.5 + true + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + true + true + bin\Debug\ + LVNC-RS.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + LVNC-RS.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + Resources\lvnc-rs.ico + + + My Project\app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + frmLVNC-RS-Main.vb + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + frmLVNC-RS-Main.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + + + + + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LVNC-RS/My Project/Application.Designer.vb b/LVNC-RS/My Project/Application.Designer.vb new file mode 100644 index 0000000..7092701 --- /dev/null +++ b/LVNC-RS/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' Этот код создан программой. +' Исполняемая версия:4.0.30319.42000 +' +' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +' повторной генерации кода. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'ПРИМЕЧАНИЕ. Этот файл создан автоматически; не изменяйте его самостоятельно. Для внесения изменений + ' или, если в ходе сборки обнаружены ошибки в этом файле, перейдите в конструктор проектов + ' (перейдите к свойствам проекта или дважды щелкните узел "Мой проект" в + ' обозревателе решений), и внесите изменения на вкладке "Приложение". + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.LVNC_RS.frmLVNCRSMain + End Sub + End Class +End Namespace diff --git a/LVNC-RS/My Project/Application.myapp b/LVNC-RS/My Project/Application.myapp new file mode 100644 index 0000000..cdbad10 --- /dev/null +++ b/LVNC-RS/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + frmLVNCRSMain + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/LVNC-RS/My Project/AssemblyInfo.vb b/LVNC-RS/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..490d258 --- /dev/null +++ b/LVNC-RS/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Общие сведения об этой сборке предоставляются следующим набором +' атрибутов. Отредактируйте значения этих атрибутов, чтобы изменить +' общие сведения об этой сборке. + +' Проверьте значения атрибутов сборки + + + + + + + + + + +'Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM + + +' Сведения о версии сборки состоят из следующих четырех значений: +' +' Основной номер версии +' Дополнительный номер версии +' Номер сборки +' Редакция +' +' Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +' используя "*", как показано ниже: +' + + + diff --git a/LVNC-RS/My Project/Resources.Designer.vb b/LVNC-RS/My Project/Resources.Designer.vb new file mode 100644 index 0000000..1daf367 --- /dev/null +++ b/LVNC-RS/My Project/Resources.Designer.vb @@ -0,0 +1,250 @@ +'------------------------------------------------------------------------------ +' +' Этот код создан программой. +' Исполняемая версия:4.0.30319.42000 +' +' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +' повторной генерации кода. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Этот класс создан автоматически классом StronglyTypedResourceBuilder + 'с помощью такого средства, как ResGen или Visual Studio. + 'Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + 'с параметром /str или перестройте свой проект VS. + ''' + ''' Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("LVNC_RS.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Перезаписывает свойство CurrentUICulture текущего потока для всех + ''' обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property authadmin_dll() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("authadmin_dll", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property ddengine_dll() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("ddengine_dll", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Bitmap. + ''' + Friend ReadOnly Property is_admin_off() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("is_admin_off", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Bitmap. + ''' + Friend ReadOnly Property is_admin_on() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("is_admin_on", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок). + ''' + Friend ReadOnly Property lvnc_rs() As System.Drawing.Icon + Get + Dim obj As Object = ResourceManager.GetObject("lvnc_rs", resourceCulture) + Return CType(obj,System.Drawing.Icon) + End Get + End Property + + ''' + ''' Ищет локализованную строку, похожую на [lvnc] + '''ID= + '''passwd= + ''' + '''[repeater] + '''host=digital-freak.ru + '''serverport=5500 + '''viewerport=5900 + '''. + ''' + Friend ReadOnly Property lvnc_rs_ini() As String + Get + Return ResourceManager.GetString("lvnc_rs_ini", resourceCulture) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Bitmap. + ''' + Friend ReadOnly Property lvnc_rs_server() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("lvnc_rs_server", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Bitmap. + ''' + Friend ReadOnly Property offline() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("offline", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Drawing.Bitmap. + ''' + Friend ReadOnly Property online() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("online", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property SCHook_dll() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("SCHook_dll", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property SecureVNCPlugin_dsm() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("SecureVNCPlugin_dsm", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property setpasswd_exe() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("setpasswd_exe", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Ищет локализованную строку, похожую на [admin] + '''UseRegistry=0 + '''MSLogonRequired=0 + '''NewMSLogon=0 + '''DebugMode=0 + '''Avilog=0 + '''path=. + '''kickrdp=0 + '''service_commandline= + '''DebugLevel=8 + '''DisableTrayIcon=1 + '''LoopbackOnly=0 + '''UseDSMPlugin=1 + '''AllowLoopback=0 + '''AuthRequired=1 + '''ConnectPriority=1 + '''DSMPlugin=SecureVNCPlugin.dsm + '''AuthHosts= + '''AllowShutdown=1 + '''AllowProperties=1 + '''AllowEditClients=1 + '''FileTransferEnabled=1 + '''FTUserImpersonation=1 + '''BlankMonitorEnabled=0 + '''BlankInputsOnly=0 + '''DefaultScale=1 + '''CaptureAlphaBlending=1 + '''BlackAlphaBlending=0 + '''SocketConnect=1 + '''HTTPConnect=0 + '''XDMCPConnect=1 + '''AutoPort [остаток строки не уместился]";. + ''' + Friend ReadOnly Property ultravnc_ini() As String + Get + Return ResourceManager.GetString("ultravnc_ini", resourceCulture) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property vnchooks_dll() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("vnchooks_dll", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Поиск локализованного ресурса типа System.Byte[]. + ''' + Friend ReadOnly Property winvnc_exe() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("winvnc_exe", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + End Module +End Namespace diff --git a/LVNC-RS/My Project/Resources.resx b/LVNC-RS/My Project/Resources.resx new file mode 100644 index 0000000..798e0cc --- /dev/null +++ b/LVNC-RS/My Project/Resources.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\lvnc-rs-server.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\offline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\lvnc-rs.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\online.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\is-admin-off.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\is-admin-on.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\lvnc-rs.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251 + + + ..\Resources\ultravnc.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251 + + + ..\Resources\authadmin.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\ddengine.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\SCHook.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\SecureVNCPlugin.dsm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\setpasswd.exe;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\vnchooks.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\winvnc.exe;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LVNC-RS/My Project/Settings.Designer.vb b/LVNC-RS/My Project/Settings.Designer.vb new file mode 100644 index 0000000..5fcc406 --- /dev/null +++ b/LVNC-RS/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 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. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.LVNC_RS.My.MySettings + Get + Return Global.LVNC_RS.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/LVNC-RS/My Project/Settings.settings b/LVNC-RS/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/LVNC-RS/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/LVNC-RS/My Project/app.manifest b/LVNC-RS/My Project/app.manifest new file mode 100644 index 0000000..dcaac5d --- /dev/null +++ b/LVNC-RS/My Project/app.manifest @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LVNC-RS/Resources/is-admin-off.png b/LVNC-RS/Resources/is-admin-off.png new file mode 100644 index 0000000..7a4be5e Binary files /dev/null and b/LVNC-RS/Resources/is-admin-off.png differ diff --git a/LVNC-RS/Resources/is-admin-on.png b/LVNC-RS/Resources/is-admin-on.png new file mode 100644 index 0000000..52e5485 Binary files /dev/null and b/LVNC-RS/Resources/is-admin-on.png differ diff --git a/LVNC-RS/Resources/lvnc-rs-server.bmp b/LVNC-RS/Resources/lvnc-rs-server.bmp new file mode 100644 index 0000000..f67960b Binary files /dev/null and b/LVNC-RS/Resources/lvnc-rs-server.bmp differ diff --git a/LVNC-RS/Resources/lvnc-rs.ico b/LVNC-RS/Resources/lvnc-rs.ico new file mode 100644 index 0000000..901aee0 Binary files /dev/null and b/LVNC-RS/Resources/lvnc-rs.ico differ diff --git a/LVNC-RS/Resources/lvnc-rs.ini b/LVNC-RS/Resources/lvnc-rs.ini new file mode 100644 index 0000000..5fb54cc --- /dev/null +++ b/LVNC-RS/Resources/lvnc-rs.ini @@ -0,0 +1,8 @@ +[lvnc] +ID= +passwd= + +[repeater] +host=digital-freak.ru +serverport=5500 +viewerport=5900 diff --git a/LVNC-RS/Resources/offline.png b/LVNC-RS/Resources/offline.png new file mode 100644 index 0000000..7ab26f6 Binary files /dev/null and b/LVNC-RS/Resources/offline.png differ diff --git a/LVNC-RS/Resources/offline1.bmp b/LVNC-RS/Resources/offline1.bmp new file mode 100644 index 0000000..f5f499e Binary files /dev/null and b/LVNC-RS/Resources/offline1.bmp differ diff --git a/LVNC-RS/Resources/online.png b/LVNC-RS/Resources/online.png new file mode 100644 index 0000000..4b54057 Binary files /dev/null and b/LVNC-RS/Resources/online.png differ diff --git a/LVNC-RS/Resources/ultravnc.ini b/LVNC-RS/Resources/ultravnc.ini new file mode 100644 index 0000000..9babcf1 --- /dev/null +++ b/LVNC-RS/Resources/ultravnc.ini @@ -0,0 +1,70 @@ +[admin] +UseRegistry=0 +MSLogonRequired=0 +NewMSLogon=0 +DebugMode=0 +Avilog=0 +path=. +kickrdp=0 +service_commandline= +DebugLevel=8 +DisableTrayIcon=1 +LoopbackOnly=0 +UseDSMPlugin=1 +AllowLoopback=0 +AuthRequired=1 +ConnectPriority=1 +DSMPlugin=SecureVNCPlugin.dsm +AuthHosts= +AllowShutdown=1 +AllowProperties=1 +AllowEditClients=1 +FileTransferEnabled=1 +FTUserImpersonation=1 +BlankMonitorEnabled=0 +BlankInputsOnly=0 +DefaultScale=1 +CaptureAlphaBlending=1 +BlackAlphaBlending=0 +SocketConnect=1 +HTTPConnect=0 +XDMCPConnect=1 +AutoPortSelect=1 +PortNumber=0 +HTTPPortNumber=0 +IdleTimeout=0 +RemoveWallpaper=0 +RemoveAero=0 +QuerySetting=0 +QueryTimeout=0 +QueryAccept=0 +QueryIfNoLogon=0 +primary=1 +secondary=0 +InputsEnabled=1 +LockSetting=0 +LocalInputsDisabled=0 +EnableJapInput=0 +FileTransferTimeout=30 +DSMPluginConfig=SecureVNC;0;0x00104001; +rdpmode=1 +IdleInputTimeout=0 +clearconsole=0 +accept_reject_mesg= +KeepAliveInterval=5 +[ultravnc] +passwd=9FF630759B47E66466 +passwd2=B3ECCD9ECAC86C3C44 +[poll] +TurboMode=1 +PollUnderCursor=0 +PollForeground=0 +PollFullScreen=1 +OnlyPollConsole=0 +OnlyPollOnEvent=0 +EnableDriver=1 +EnableHook=1 +EnableVirtual=0 +SingleWindow=0 +SingleWindowName= +MaxCpu=40 diff --git a/LVNC-RS/Services.vb b/LVNC-RS/Services.vb new file mode 100644 index 0000000..82b9fa3 --- /dev/null +++ b/LVNC-RS/Services.vb @@ -0,0 +1,107 @@ +Module Services + Public sRunTimeDir As String = getRunTimeDir() & "\LVNC-RS" + Public sConfigFile As String = sRunTimeDir & "\lvnc-rs.ini" + Public lSupportID As Long = 0 + + Private aExecResources(,) As String = { + {"lvnc_rs_ini", "\lvnc_rs.ini"}, + {"ultravnc_ini", "\UltraVNC\ultravnc.ini"}, + {"setpasswd_exe", "\UltraVNC\setpasswd.exe"}, + {"winvnc_exe", "\UltraVNC\winvnc.exe"}, + {"authadmin_dll", "\UltraVNC\authadmin.dll"}, + {"ddengine_dll", "\UltraVNC\ddengine.dll"}, + {"SCHook_dll", "\UltraVNC\SCHook.dll"}, + {"vnchooks_dll", "\UltraVNC\vnchooks.dll"}, + {"SecureVNCPlugin_dsm", "\UltraVNC\SecureVNCPlugin.dsm"} + } + + Private Function getRunTimeDir() As String + Dim sRegShellPath As String = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" + Dim sAllUsersDir As String + + Dim regKey As Global.Microsoft.Win32.RegistryKey + Dim sCommonDesktop As String + + Try + regKey = Global.Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sRegShellPath, False) + sCommonDesktop = regKey.GetValue("Common Desktop") + Catch ex As Exception + sCommonDesktop = "" + End Try + + If sCommonDesktop.Length > 0 Then + Dim a() = sCommonDesktop.Split("\") + Dim l As Integer = a.Length - 2 + ReDim Preserve a(l) + + sAllUsersDir = String.Join("\", a) + Else + sAllUsersDir = "" + End If + + Return sAllUsersDir + End Function + + Public Sub checkRunTimeComponents() + Dim resItem As Object + Dim resContent As Byte() + + With My.Computer.FileSystem + If Not .DirectoryExists(sRunTimeDir) Then + .CreateDirectory(sRunTimeDir) + End If + If Not .DirectoryExists(sRunTimeDir & "\UltraVNC") Then + .CreateDirectory(sRunTimeDir & "\UltraVNC") + End If + + For i As Integer = 0 To UBound(aExecResources) + resItem = My.Resources.ResourceManager.GetObject(aExecResources(i, 0)) + If TypeOf (resItem) Is String Then + resContent = System.Text.Encoding.Default.GetBytes(resItem.ToString) + Else + resContent = resItem + End If + + Using file As New IO.FileStream(sRunTimeDir & aExecResources(i, 1), IO.FileMode.Create) + file.Write(resContent, 0, resContent.Length) + End Using + Next + End With + End Sub + + Public Sub getSupportID() + Dim aNics() As Net.NetworkInformation.NetworkInterface = Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() + Dim sMAC As String = String.Empty + Dim lID As Long = 0 + + For Each nic As Net.NetworkInformation.NetworkInterface In aNics + If (nic.NetworkInterfaceType = Net.NetworkInformation.NetworkInterfaceType.Ethernet Or + nic.NetworkInterfaceType = Net.NetworkInformation.NetworkInterfaceType.Wireless80211) And + nic.OperationalStatus = Net.NetworkInformation.OperationalStatus.Up Then + sMAC = nic.GetPhysicalAddress.ToString + Exit For + End If + Next + + Dim strBuilder As New Text.StringBuilder(sMAC) + Dim startIndex As Integer = strBuilder.Length - (strBuilder.Length Mod 2) - 2 + + For i As Integer = startIndex To 2 Step -2 + strBuilder.Insert(i, ":"c) + Next i + + Dim aMAC() = strBuilder.ToString.Split(":") + Dim n As Long = 0 + For i As Integer = 0 To UBound(aMAC) + n = Convert.ToInt32(aMAC(i), 16) + Debug.Print(n) + + lID = ((lID * 16) + n) Mod 99999999 + + If lID < 99999999 Then + lID = lID + 10000000 + End If + Next + lSupportID = lID + End Sub +End Module diff --git a/LVNC-RS/app.config b/LVNC-RS/app.config new file mode 100644 index 0000000..3652831 --- /dev/null +++ b/LVNC-RS/app.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LVNC-RS/frmLVNC-RS-Main.Designer.vb b/LVNC-RS/frmLVNC-RS-Main.Designer.vb new file mode 100644 index 0000000..9c8e4f0 --- /dev/null +++ b/LVNC-RS/frmLVNC-RS-Main.Designer.vb @@ -0,0 +1,199 @@ + +Partial Class frmLVNCRSMain + Inherits System.Windows.Forms.Form + + 'Форма переопределяет dispose для очистки списка компонентов. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Является обязательной для конструктора форм Windows Forms + Private components As System.ComponentModel.IContainer + + 'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms + 'Для ее изменения используйте конструктор форм Windows Form. + 'Не изменяйте ее в редакторе исходного кода. + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmLVNCRSMain)) + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.lblLVNCSupportPasswd = New System.Windows.Forms.Label() + Me.txtLVNCSupportPasswd = New System.Windows.Forms.TextBox() + Me.txtLVNCSupportID = New System.Windows.Forms.TextBox() + Me.lblLVNCSupportID = New System.Windows.Forms.Label() + Me.tsStatusBar = New System.Windows.Forms.ToolStrip() + Me.tsLabelSrvStatus = New System.Windows.Forms.ToolStripLabel() + Me.tsButtonRunAs = New System.Windows.Forms.ToolStripButton() + Me.imgBanner = New System.Windows.Forms.PictureBox() + Me.tCheckTimer = New System.Windows.Forms.Timer(Me.components) + Me.TableLayoutPanel1.SuspendLayout() + Me.tsStatusBar.SuspendLayout() + CType(Me.imgBanner, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.lblLVNCSupportPasswd, 0, 1) + Me.TableLayoutPanel1.Controls.Add(Me.txtLVNCSupportPasswd, 1, 1) + Me.TableLayoutPanel1.Controls.Add(Me.txtLVNCSupportID, 1, 0) + Me.TableLayoutPanel1.Controls.Add(Me.lblLVNCSupportID, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.tsStatusBar, 0, 2) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(61, 0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 3 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(273, 171) + Me.TableLayoutPanel1.TabIndex = 1 + ' + 'lblLVNCSupportPasswd + ' + Me.lblLVNCSupportPasswd.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.lblLVNCSupportPasswd.AutoSize = True + Me.lblLVNCSupportPasswd.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte)) + Me.lblLVNCSupportPasswd.Location = New System.Drawing.Point(10, 100) + Me.lblLVNCSupportPasswd.Margin = New System.Windows.Forms.Padding(10, 25, 10, 25) + Me.lblLVNCSupportPasswd.Name = "lblLVNCSupportPasswd" + Me.lblLVNCSupportPasswd.Size = New System.Drawing.Size(88, 25) + Me.lblLVNCSupportPasswd.TabIndex = 4 + Me.lblLVNCSupportPasswd.Text = "Пароль:" + ' + 'txtLVNCSupportPasswd + ' + Me.txtLVNCSupportPasswd.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.txtLVNCSupportPasswd.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte)) + Me.txtLVNCSupportPasswd.Location = New System.Drawing.Point(118, 100) + Me.txtLVNCSupportPasswd.Margin = New System.Windows.Forms.Padding(10, 25, 15, 25) + Me.txtLVNCSupportPasswd.Name = "txtLVNCSupportPasswd" + Me.txtLVNCSupportPasswd.ReadOnly = True + Me.txtLVNCSupportPasswd.Size = New System.Drawing.Size(140, 29) + Me.txtLVNCSupportPasswd.TabIndex = 1 + Me.txtLVNCSupportPasswd.TabStop = False + Me.txtLVNCSupportPasswd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'txtLVNCSupportID + ' + Me.txtLVNCSupportID.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.txtLVNCSupportID.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte)) + Me.txtLVNCSupportID.Location = New System.Drawing.Point(118, 25) + Me.txtLVNCSupportID.Margin = New System.Windows.Forms.Padding(10, 25, 15, 25) + Me.txtLVNCSupportID.Name = "txtLVNCSupportID" + Me.txtLVNCSupportID.ReadOnly = True + Me.txtLVNCSupportID.Size = New System.Drawing.Size(140, 29) + Me.txtLVNCSupportID.TabIndex = 0 + Me.txtLVNCSupportID.TabStop = False + Me.txtLVNCSupportID.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'lblLVNCSupportID + ' + Me.lblLVNCSupportID.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.lblLVNCSupportID.AutoSize = True + Me.lblLVNCSupportID.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte)) + Me.lblLVNCSupportID.Location = New System.Drawing.Point(10, 25) + Me.lblLVNCSupportID.Margin = New System.Windows.Forms.Padding(10, 25, 10, 25) + Me.lblLVNCSupportID.Name = "lblLVNCSupportID" + Me.lblLVNCSupportID.Size = New System.Drawing.Size(80, 25) + Me.lblLVNCSupportID.TabIndex = 3 + Me.lblLVNCSupportID.Text = "Ваш ID:" + ' + 'tsStatusBar + ' + Me.tsStatusBar.CanOverflow = False + Me.TableLayoutPanel1.SetColumnSpan(Me.tsStatusBar, 2) + Me.tsStatusBar.GripMargin = New System.Windows.Forms.Padding(0) + Me.tsStatusBar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden + Me.tsStatusBar.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsLabelSrvStatus, Me.tsButtonRunAs}) + Me.tsStatusBar.Location = New System.Drawing.Point(0, 150) + Me.tsStatusBar.Name = "tsStatusBar" + Me.tsStatusBar.Padding = New System.Windows.Forms.Padding(0) + Me.tsStatusBar.RenderMode = System.Windows.Forms.ToolStripRenderMode.System + Me.tsStatusBar.Size = New System.Drawing.Size(273, 21) + Me.tsStatusBar.TabIndex = 5 + ' + 'tsLabelSrvStatus + ' + Me.tsLabelSrvStatus.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.tsLabelSrvStatus.Margin = New System.Windows.Forms.Padding(0) + Me.tsLabelSrvStatus.Name = "tsLabelSrvStatus" + Me.tsLabelSrvStatus.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never + Me.tsLabelSrvStatus.Size = New System.Drawing.Size(0, 21) + ' + 'tsButtonRunAs + ' + Me.tsButtonRunAs.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.tsButtonRunAs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.tsButtonRunAs.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None + Me.tsButtonRunAs.ImageTransparentColor = System.Drawing.Color.Magenta + Me.tsButtonRunAs.Margin = New System.Windows.Forms.Padding(0, 0, 1, 0) + Me.tsButtonRunAs.Name = "tsButtonRunAs" + Me.tsButtonRunAs.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never + Me.tsButtonRunAs.Size = New System.Drawing.Size(23, 21) + ' + 'imgBanner + ' + Me.imgBanner.Dock = System.Windows.Forms.DockStyle.Left + Me.imgBanner.ErrorImage = Nothing + Me.imgBanner.Image = Global.LVNC_RS.My.Resources.Resources.lvnc_rs_server + Me.imgBanner.InitialImage = Nothing + Me.imgBanner.Location = New System.Drawing.Point(0, 0) + Me.imgBanner.Name = "imgBanner" + Me.imgBanner.Size = New System.Drawing.Size(61, 171) + Me.imgBanner.TabIndex = 0 + Me.imgBanner.TabStop = False + ' + 'tCheckTimer + ' + Me.tCheckTimer.Interval = 20000 + ' + 'frmLVNCRSMain + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(334, 171) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Controls.Add(Me.imgBanner) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MaximumSize = New System.Drawing.Size(350, 210) + Me.MinimumSize = New System.Drawing.Size(350, 210) + Me.Name = "frmLVNCRSMain" + Me.Text = "Remote Support" + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.tsStatusBar.ResumeLayout(False) + Me.tsStatusBar.PerformLayout() + CType(Me.imgBanner, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents imgBanner As PictureBox + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents txtLVNCSupportPasswd As TextBox + Friend WithEvents txtLVNCSupportID As TextBox + Friend WithEvents lblLVNCSupportPasswd As Label + Friend WithEvents lblLVNCSupportID As Label + Friend WithEvents tsStatusBar As ToolStrip + Friend WithEvents tsLabelSrvStatus As ToolStripLabel + Friend WithEvents tsButtonRunAs As ToolStripButton + Friend WithEvents tCheckTimer As Timer +End Class diff --git a/LVNC-RS/frmLVNC-RS-Main.resx b/LVNC-RS/frmLVNC-RS-Main.resx new file mode 100644 index 0000000..c041942 --- /dev/null +++ b/LVNC-RS/frmLVNC-RS-Main.resx @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 129, 17 + + + + + AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA + IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANXuHgDU + 7y8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV + 6gwA1e26Fdfu/RzY7v8A1O29ALXTEQAAAAQAAAAGAAAACAAAAAoAAAAMAAAADgAAABAAAAASAAAAEwAA + ABQAAAAUAAAAFAAAABIAAAARAAAADwAAAA0AAAALAAAACQAAAAcAAAAFAMPeJQDS63wA1O2tANXt3gDT + 7bsA1OxeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAADS7JRd4/P/8Pz9/+37/f9j5PP/AMjfogAAABkAAAAcAAAAHgAAACAAAAAiAAAAJBwc + HC1ERERDWFtYWWVnZ29lZ2dvWFpYWkNDQ0QbGxsuAAAAJQAAACQAAAAiAAAAIAAAAB4Af4w8AdHq6G7m + 9P+o8Pj/1ff8/7Hx+f8p2u//ANLqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAMAAAAJALXKSBjX7f7n+v3/Ktvv/yrb7//r+/3/Hdju/gCOnl8AAAAsAAAALzw/ + P1BucXCWhYqH4YWKiP2NkpD1lpuZ86GnpPSip6T0lpuZ842SkPWFioj9hYqH4W1xb5c7Pj5RAAAAMgBT + XkYBz+fmmu33/8L0+v9c4/P/MNzw/3jo9f/V9/z/ANLq5QAAAA0AAAAFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAEAAAACgAAAA8AAAAUAMnhq5Ts9/+F6vb/AMbdugDD2rl86PX/s/L5/wDM + 5OAvNHqbPT+X8oyRj/essa/7y9DO/+Dk4v/h5uP/4ebj/+Hm4//i5uP/4ufk/+Lm5P/h5uP/zdLP/62y + r/qMkY/3Oz6Y8iFyrdh46PX/v/T6/wrT6/cAp7yFAIWUWgHS6/ny/P7/ENbu/wBkcCsAAAAUAAAADwAA + AAcAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAMAAAAEQAAABYAAAAbAMrjxLnz+v9L4PL/AJOmbQBC + SUYG0enysMTd/yErpv8REq3/a2zT/+Dl4v/h5uP/4ubk/+Ln5f/l6ef/5uro/+fr6f/o6+n/5+vp/+bq + 6P/l6ef/5Ojm/+To5v/j6OX/aGjV/xARrf8qLKf/L67T/wCGl3gAAAA5AAAANADK4tTC9Pr/Rt/x/wCn + umgAAAAbAAAAFgAAABEAAAAMAAAABQAAAAAAAAAAAAAABAAAAAoAHCoSAJipOwCbr00Aqr1pANDp6tv4 + /P8s2/D/AHR/XAAAADknTaDdCQmn/zU10v9XV/D/X2Dt/+Ln5f/m6uj/6u3s/+3w7v/v8vH/8fPy//L0 + 8//z9fT/8vTz//Hz8v/v8vH/7fDu/+rt7P/m6uj/UVLu/1NT8P8zM9H/CQmn/y0vicEAAAA/AAAAOQCw + xJl15/X/mO33/wDJ4cMAKTAlAAAAGgAAABQAAAAPAAAACgAAAAMAAAAAAAAABAB8iBYAz+a3Itnv/zvd + 8f9T4fL/gen2/975/P8A0ejuBxQcOikqlt0SEq7/UVHp/0dH8f8sLO//Kyvu/+Hj7f/x8/L/9fb1//j5 + +P/6+/v//Pz8//39/f/9/v7//f39//z8/P/6+/v/+Pn4//X29f/O0PH/KSnv/yws7/9ERPH/Tk7p/xER + rf8pKpbeBwcMPABxf1of2e//6fv9/2Dk8/8C0ersAL/XjQBodiUAAAAPAAAACgAAAAQAAAAAAAAAAQDQ + 6Jdf5PP/7fv9/8b1+v+w8fn/kOz3/0ng8v8CuNCoISKe7x0et/9WVu7/Ozvw/ykp7/8pKe//KSnv/7u8 + 9P/7+/v//v7+//3+/v/9/f3//Pz8//z8/P/7/Pz//Pz8//z8/P/9/f3//f7+//7+/v+YmPX/KSnv/ykp + 7/8pKe//OTnw/1JS7v8cHbf/ISKe7wkJDjQAvdOmL9vw/872+//e+fz/a+b0/wjU7PUAvtVPAAAABgAA + AAEAAAAAAAAAAADU7rGv8fn/V+Lz/wDR690AzeW5AMXcmgC3y3wqMJvcICC5/1hY8f81Ne//KSnv/ykp + 7/8pKe//KSnv/4yM9f/9/f3/+/z8//r7+//5+vr/+fn5//j5+f/4+fn/+Pn5//n5+f/5+vr/+vv7//v8 + /P9kZPL/KSnv/ykp7/8pKe//KSnv/zQ07/9TU/D/Hh64/yosmNgAAAAhALfLfADR6eA63fH/vPP6/5zu + +P8A0eqoAAAAAAAAAAAAAAAAAAAAAADU7JWF6vb/kOz3/wDS68IAamoRAAAADTY4kp4REaz/WFju/zQ0 + 7/8pKe//KSnv/ykp7/8pKe//KSnv/1RU8f/39/r/+Pn5//f4+P/29/f/9fb2//X29v/19vb/9fb2//X2 + 9v/29/f/9/j4/93e9/9XV/H/MTHv/ykp7/8pKe//KSnv/ykp7/8zM+//UlLu/xAQq/81OI+gAAAAEQCj + tzIC0+z0p/D4/6Hv+P8A1OzcAAAAAAAAAAAAAAAAAAAAAADV7zEb2O7/4/r9/1Ti8v8A1O23PlCaSwgI + pv9QUOf/Pz/w/ykp7/8pKe//KSnv/ykp7/8pKe//Pj7w/1xc8f/Dw/X/9fb2//T19f/z9PT/8vPz//Lz + 8//y8/P/8vPz//Lz8//z9PT/9PX1/66v8/93d/H/VFTw/zAw7/8pKe//KSnv/ykp7/8pKe//PT3w/0pK + 5v8ICKb/H47AkQfV7O+d7vj/uvP6/wbW7fAA1usyAAAAAAAAAAAAAAAAAAAAAAAAAAAA1ex5K9vw/+b6 + /f9U4vL/IS+m+TY20P9MTPH/KSnv/ykp7/8pKe//KSnv/ykp7/88PPD/W1vx/3l58f+en/L/7O3z//P0 + 9P/09fX/9vb2//j5+f/4+fn/9vf3//T19f/z8/P/6erx/7m68v+XmPL/dnbx/1NT8P8vL+//KSnv/ykp + 7/8pKe//KSnv/0hI8f8yM8//JTSo/9j4/P+r8Pn/C9Xt9QDU7jsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAANPtgC/b8P+qt9j/DQ2q/1tb7/8uLu//KSnv/ykp7/8pKe//KSnv/zs77/9aWvH/d3fx/5SV + 8v+4uPL/5+f2/9jZ4//P0dH9s7i285SZl/eVmZj3tru49NXW1v3g4en/9/j4/93f8f+4ufD/l5jy/3V1 + 8f9SUvD/Li7u/ykp7/8pKe//KSnv/y4u7/9VVe//DQ2q/0en0f8A1O3UANXsNgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU7IcdKab/PT3X/0dH8f8pKe//KSnv/ykp7/8pKe//Ojrv/1lZ + 8f92dvH/k5Tx/7/B9P/V1u//U1S1/SkqnfOIjoyDhoqKTIWPhRmFj4UZhoqKTIaMioMqLJ3zYWK7/e3u + 8//j4/P/trfw/5WW8v9zc/H/UFDw/yws7v8pKe//KSnv/ykp7/9DQ/H/NzfW/x0kpPcAAAAFAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIOKiiVobJb5jZDs/y0t7/8pKe//KSnv/ykp + 7/85Oe//WFjx/3Z28f+Sk/H/w8X0/6yt2/8aGqf+MTKawwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAGMTKawyEhqv7JyuH/5eX0/7W28P+UlfL/cnLx/09P8P8rK+7/KSnv/ykp7/8sLO//hYbu/2ht + l/eDioolAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISLiHKrsa724+fk/5GT + 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 + 8P8pKe//KSnv/ykp7/8pKe//NDTv/09P7v8qKsP/Dw+l/Dw+l1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA8PpdcDw+l/DExxf9eXu//Ojrw/ykp7/8pKe//Li7u/0ZG7/9fX/H/enr0/6ur9v/O0PH/xcjh/zs/ + mv8r1uj/ANTt1wDV7SoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA1uxQANXuogDT7ZgnRabkUVSz/sTG + 7f+Zmu3/f3/y/19f8v8+PvD/KSnv/ykp7/8pKe//KSnv/y4u7/9JSfH/Pj7b/zQ1p/yJj4zujJKPvYiM + inyIjIp8jJKPvYmPjO40Naj8R0fd/1NT8v8vL+//KSnv/ykp7/8tLe7/RUXv/15e8f94ePP/kpL2/6an + 8//Fx/D/TU+z/0JZr//l+v3/pO/4/wXU7ewA0uszAAAAAAAAAAAAAAAAAAAAAADU7pMx3PD/lu33/5jt + 9/991+r/Cwyi/7q82/+6vOv/m53v/35/8/9fX/L/PDzw/ykp7/8pKe//KSnv/ykp7/8pKe//Pj7v/+bn + 8P/m6Oj/09XU/7zAvvu8wL7709bV/+fp6f/X2PD/QUHw/ykp7/8pKe//KSnv/yws7v9ERO//Xl7x/3d3 + 8/+Rkfb/p6j1/77A8f+0t9//Cwui/gu83aoH1e30svL5/7Py+f8H1e3xANLwIgAAAAAAAAAAANbuSiba + 7//o+/3/def1/2fl9P946PX/QGez/0JFrP/b3uz/tbjt/5yd8f9+f/X/XV3y/zs77/8pKe//KSnv/ykp + 7/8pKe//XFzv/+7w8P/t7+//7e7u/+3v7//t7+//7e/v/+zu7v/q7O//MDDv/ykp7/8pKe//Kyvu/0RE + 7/9dXfH/dnbz/5CQ9v+oqPf/u7zz/9ja8P89Pqv8MjWbtQAAAAAA1ex5ENbu//n9/v8T1+7/ANjrGgAA + AAAAAAAAANTtj4bq9v+B6fb/ANTtuADV7mcA1O52C8LgbRkcoPl/gr792dvt/7a47v+bnPL/fn70/1xc + 8v86Ou//KSnv/ykp7/8pKe//mJjx//Hz8//w8vL/7/Hx/+/x8f/v8PD/7/Hx/+/x8f/w8vL/XFzv/ykp + 7/8rK+7/Q0Pv/1xc8f91dfP/jo/2/6eo+P+7vfP/1tnw/3l7v/0aG5/3SmekEQDU7YMh2e/+zvb7/5vu + 9/8A1O3hAAAAAAAAAAAAAAAAANTtqpHs9/+Q7Pf/ANTt1wDT60AAAAAAAAAAAEVFkzgMDaH+r7LQ/9bZ + 7P+1t+7/mpvy/3199P9bW/L/OTnv/ykp7/8pKe//19j2//T29v/z9fX/8/T0//L09P/y8/P/8vT0//P0 + 9P/z9fX/pqfz/yoq7v9CQ/D/W1vx/3R08/+Ojvb/p6f3/7u88//U1fD/qKvS/wwNof5DSpY5ANTtuEff + 8v/o+/3/cef0/wDV7dgA0uwoAAAAAAAAAAAAAAAAANXsNhrY7v7b+Pz/tvL5/yPZ7/8A1O2qANLuLQAA + AAA6O5lwEhKk/r3A1//W2e3/tLbu/5iZ8/97e/P/Wlry/zc37/9PT/H/+fn5//j4+P/3+Pj/9vf3//b3 + 9//29vb/9vf3//b39//3+Pj/7Oz3/0tL8f9aW/L/c3Pz/46O9v+lpvb/ubrz/9TW8f+2uNj/EBCk/jo7 + mXAA1e1UN93w/+b6/f873fH/ANTssgDM7g8AAAAAAAAAAAAAAAAAAAAAAAAAAADV7mcH1u3we+j1/+37 + /f+N6/b/GNju/gDU7rAA1u4sNjiXiA0Oov6mqM3/2Nvu/7K07f+WmPH/eHjy/1lZ8v/IyPn//Pz8//v7 + +//6+vr/+fr6//n6+v/5+fn/+fr6//n6+v/6+vr/+/v7/7W1+P90dPT/jY32/6Kj9P+3ufH/1dbx/56f + zf8NDqL+NjiXiAAAAAAA1O3DrfH5/2bl9P8A1O2ZAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAA1eoYANPspBjY7v6N6/b/7Pv9/5Hs9/8M1u33ANTsXzs9mF0ODqH9goTA/djb7f+5vO7/k5Xv/5yd + 8v/5+vn//f39//7+/v/9/f3//f39//z9/f/8/Pz//P39//39/f/9/f3//v7+//v7/f+gofT/n6Dy/7y9 + 8P/T1vD/e3y//Q4Oof07PZhdAAAAAADS7TkO1u397/z9/wrV7f0A1eoYAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU7y8A1O2rFdfu/pvu9//T9/v/FNfu/QDV7zE/Q5Q2HiGf9Skr + qf+mqNX/xcfv/+Hk7v/v8fD/8vTz//b39v/4+fn/+vv6//v7+//7/Pz/+/v7//r7+v/4+fn/9vf2//L0 + 8//h4/H/xcfx/5+g1P8lJ6j/HSeh/RWhzZsA1O1TANTtjwbV7e+18vn/mO33/wDT7cEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANXtKwDT7dOS7Pf/lu33/wDU + 7bkA1etOANTt4WqMw/8TFKH/UFSv/tXZ2P/s7+7/7vDv/+3w7v/u8fD/7/Lw//Dy8f/w8/H/8PLx//Dz + 8f/v8vH/7/Lw/+3w7//V2dj/TE+v/REUof+DkMX/yfX7/3vo9f9L4PL/iOr2/9b4/P+u8fn/BNXs6gDT + 7CkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS + 7CgR1+787Pv9/yXa7/8v2/D/qvD5/872+/8Ky+j0S2udm4qPjtGKj433r7Sx9c3Qz//Y29r/4uXj/+ru + 7P/q7uz/4uXj/9jc2v/N0M//r7Ox9YqPjfeKkI7RWFuRhQbA4WcF1e32Q9/x/5Ds9/+98/r/gen2/zze + 8f8D1O3sANTvLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAA1O2gbub0//H8/v/i+vz/c+f1/w3W7fsA1O1TAAAAAAAAAACAi4sWhouIZYuQ + jayMkI/MipCN5YaLifmGi4n5ipCN5YyRj8yLkI6shouIZYCLixYAAAAAAAAAAAAAAAAA0egLANPsUgDU + 7aAA1O3KANXtiwDT7UYAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0+0dANTtthbX7v8F1O3xANXtiwDQ7BsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV7SoA2+0OAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA/8//////AAD/A4ABwP8AAP8A + AAAAfwAA/gAAAAA/AADwAAAAAA8AAOAAAAAAAwAAwAAAAAABAADAAAAAAAEAAMAAAAAAAwAAwAAAAAAD + AADAAAAAAAMAAMAAAAAAAwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAPwAA+AAP8AAfAAD4AB/4AB8AAPgA + P/wAHwAA8AB//gAPAADwAH/+AA8AAPAA//8ADwAA8AD//wAPAADwAP//AA8AAPAA//8ADwAA8AD//wAP + AADwAP//AA8AAPAAf/4ADwAA+AA//AAfAAD4AD/8AB8AAPgAD/AAHwAA+AAH4AAHAADgAAAAAAMAAMAA + AAAAAQAAgAAAAABBAACAAAAAAAMAAIMAAAAAAwAAgIAAAAAHAADAAAAAAh8AAOAAAAAEHwAA+AAAAAA/ + AAD+AAAAAD8AAP8AAAAAfwAA/4DAA4H/AAD/gf////8AAP/n/////wAA////////AAAoAAAAIAAAAEAA + AAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAgAEAAMADAADgBwAA8A8AAA== + + + \ No newline at end of file diff --git a/LVNC-RS/frmLVNC-RS-Main.vb b/LVNC-RS/frmLVNC-RS-Main.vb new file mode 100644 index 0000000..68f5f60 --- /dev/null +++ b/LVNC-RS/frmLVNC-RS-Main.vb @@ -0,0 +1,43 @@ +Public Class frmLVNCRSMain + Private Sub frmLVNCRSMain_Load(sender As Object, e As EventArgs) Handles Me.Load + Services.checkRunTimeComponents() + Services.getSupportID() + + If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) Then + tsButtonRunAs.Image = Global.LVNC_RS.My.Resources.is_admin_on + Else + tsButtonRunAs.Image = Global.LVNC_RS.My.Resources.is_admin_off + End If + + txtLVNCSupportID.Text = Format(Services.lSupportID, "### ### ##0") + End Sub + + Private Sub tsButtonRunAs_Click(sender As Object, e As EventArgs) Handles tsButtonRunAs.Click + 'Dim sLogin As String = "locadm" + 'Dim sPasswd As String = "dbkrf-bujkrf" + 'Dim secPasswd As New Security.SecureString + ' + 'For i As Integer = 0 To sPasswd.Length - 1 + ' secPasswd.AppendChar(sPasswd.ElementAt(i)) + 'Next + ' + 'Dim startInfo As New ProcessStartInfo + 'With startInfo + ' .Arguments = "/Q /C start " & Application.ExecutablePath + ' .FileName = Environment.GetEnvironmentVariable("ComSpec") + ' .Password = secPasswd + ' .UserName = sLogin + ' .UseShellExecute = False + ' .WorkingDirectory = Environment.CurrentDirectory + ' .WindowStyle = ProcessWindowStyle.Hidden + 'End With + ' + 'Try + ' Dim p As Process = Process.Start(startInfo) + 'Catch ex As System.ComponentModel.Win32Exception + ' Return + 'End Try + ' + 'Application.Exit() + End Sub +End Class