Что нового

[Элементы GUI] Открытие настроек по паролю,помогите

gagarin74

Новичок
Сообщения
43
Репутация
0
Добрый день.
Есть задача. Удаленное подключение клиентов к серверам через терминал.(сис админы за улыбаются)
Есть куча пользователей,разработчиков итд итп, которым нужно подключится к той или иной машинке.
Что бы потом не разбирать "полеты" юзеров, был создан на основе autoit не сложный скрипт, который при нажатие на него -высылает данные о подключение сис админу организации.
Выглядит со стороны пользователей примерно так http://take.ms/GKiei
Но так как машин(для удаленного подключения) перевалило за 10, то в скриптах (генерации exe) я уже начинаю путаться.Да и иногда под рукой нет AUTOIT а пользователь тычит в присланный exe -который его пытается подключить к другой (перепутанной) машине.
Вот у меня вопрос в следующем.Нельзя ли "активизировать" кнопку НАСТРОЙКИ, что бы под паролью экстренно менять настройки? То есть вписывать переменные(менять ip к подключению).
Код выкладываю,единственное конечно потер учетки :smile:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <ListBoxConstants.au3>
#include 'encoding.au3'
#include <File.au3>
#include <Inet.au3>
$PublicIP = _GetIP()

[email protected]
[email protected]

    GUICreate("Удаленное подключение к компьютерам", -1, -1, -1, -1, $WS_OVERLAPPEDWINDOW + $WS_POPUP) ; Создаёт окно в центре экрана
    GUISetState(@SW_SHOW) ; показывает созданное окно
	GUICtrlCreateLabel('Внимание!!!!!!!', 10, 10, 350, 17)
	GUICtrlCreateLabel('Следующие данные будут отосланы в blabala:', 10, 35, 350, 17)
	GUICtrlCreateLabel('Ваш Внешний IP: '&$PublicIP, 10, 55, 350, 17)
	GUICtrlCreateLabel('Ваш Внутренний IP: '&$IPAddress1, 10, 75, 350, 17)
	GUICtrlCreateLabel('Ваше Имя компьютера: '&$compname, 10, 95, 350, 17)
	GUICtrlCreateLabel('Ваше Имя Пользователя: '&@UserName, 10, 115, 350, 17)


	GUICtrlCreateLabel('Информация отправляется для учета подключений', 10, 155, 350, 17)
	GUICtrlCreateLabel('к распространению среди третьих лиц не предназначена', 10, 175, 350, 17)
	GUICtrlCreateLabel('только для использования IT персоналом компании blabala', 10, 195, 350, 17)



	$Button_1 = GUICtrlCreateButton("Подтвердить и подключится", 50, 300, 300)
	$Button_2 = GUICtrlCreateButton("Настройки", 300, 10, 100)
While 1
    Switch GUIGetMsg()
	Case $GUI_EVENT_CLOSE
	    ExitLoop
		Case $Button_1
#Region переменные
   $sSmtpServer     =   "smtp.yandex.ru"
   $sFromName       =   "[email protected]"
   $sFromAddress    =   "[email protected]"
   $sUsername       =   "[email protected]"
   $sPassword       =   "11212121212"
   $sSubject        =   "Удаленный вход на Server2016 для разработчиков"
   $sBody           =   "Вход выполнен с внешнего ip "&" "&$PublicIP&" Имя компьютера"&" "&$compname&" Внутренний адрес"&" "&$IPAddress1&" Имя пользователя"&" "&@UserName
   $sToAddress      =   "[email protected]"
   $iIPPort = 465
   $iSsl = 1
   Dim $aAttach[0]      ; Массив прикрепляемых файлов
   Global $oMyRet[2]
   Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
#EndRegion

$rc = _INetSmtpMailCom($sSmtpServer, $sFromName, $sFromAddress, $sToAddress, $sSubject, $sBody, $aAttach, Default, $sUsername, $sPassword, $iIPPort, $iSsl)
If @error Then
   MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $a_Attach = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 465, $ssl = True)
      Local $objEmail = ObjCreate("CDO.Message"), $i_Error = 0, $i_Error_desciption = ""
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/languagecode") = 1049
      $objEmail.BodyPart.CharSet = "utf-8"
      $objEmail.BodyPart.ContentTransferEncoding = "quoted-printable"
      $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
      $objEmail.To = $s_ToAddress
      $objEmail.Subject = $s_Subject
      ;         Можно отправлять в формате HTML
      ;$objEmail.HTMLBody = $as_Body
      $objEmail.TextBody = $as_Body

      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext") = True
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
      $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password

      If UBound($a_Attach) > 0 Then
         For $j = 0 To UBound($a_Attach)-1
            If FileExists($a_Attach[$j]) Then
               $objEmail.AddAttachment ($aAttach[$j])
            Else
               Exit MsgBox(4096, "", "Файл " & $a_Attach[$j] & " не найден")
            EndIf
         Next
      EndIf
      If $ssl Then
         $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
      EndIf
      $objEmail.Configuration.Fields.Update
      $objEmail.Fields.Update
      $objEmail.Send
      If @error Then
         SetError(2)
         Return $oMyRet[1]
      EndIf
      $objEmail=""
EndFunc ;==>_INetSmtpMailCom

Func MyErrFunc()
   $HexNumber = Hex($oMyError.number, 8)
   $oMyRet[0] = $HexNumber
   $oMyRet[1] = StringStripWS($oMyError.description, 3)
   ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
   SetError(1); something to check for when this function returns
   Return
EndFunc ;==>MyErrFunc

$i_PID1 =RunWait(@ComSpec & ' /C ping 23.251.81.60  -f -n 1 -l 432', '', @SW_HIDE, 8)
sleep (1000)

$i_PID2 =RunWait(@ComSpec & ' /C ping 23.251.81.60  -f -n 1 -l 521', '', @SW_HIDE, 8)
sleep (1000)
$i_PID3 =RunWait(@ComSpec & ' /C ping 23.251.81.60  -f -n 1 -l 598', '', @SW_HIDE, 8)
sleep (1000)
$i_PID4 =RunWait(@ComSpec & ' /C mstsc.exe /v:23.251.81.60:4565', '', @SW_HIDE, 8)
exit

Case $Button_2
            Run('notepad.exe') ; будет запущен или открыт блокнот


EndSwitch

WEnd


;Do
;Until GUIGetMsg() = $GUI_EVENT_CLOSE



Или хотя бы направьте в русло нужное :smile:
СПАСИБО!!!!!!!!!!!!
 

xXx

╚{■_■}╗
Меценат
Сообщения
225
Репутация
85
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <ListBoxConstants.au3>
#include 'encoding.au3'
#include <File.au3>
#include <Inet.au3>

#Region --------- Глобальные переменные ----------
Global $PublicIP = _GetIP()
Global $compname = @ComputerName
Global $IPAddress1 = @IPAddress1
Global $sUserName = @UserName
$sSettingsPassword = 'Крутой пароль' ; Пароль настроек

$sSmtpServer = "smtp.yandex.ru"
$sFromName = "[email protected]"
$sFromAddress = "[email protected]"
$sToAddress = "[email protected]"
$sPassword = "11212121212"
$sSubject = "Удаленный вход на Server2016 для разработчиков"
$sBody = "Вход выполнен с внешнего ip " & " " & $PublicIP & " Имя компьютера" & " " & $compname & " Внутренний адрес" & " " & $IPAddress1 & " Имя пользователя" & " " & $sUserName
$sToAddress = "[email protected]"
$iIPPort = 465
$iSsl = 1
Global $aAttach[0] ; Массив прикрепляемых файлов
Global $hGUI, $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
#EndRegion --------- Глобальные переменные ----------

$hGUI = GUICreate("Удаленное подключение к компьютерам", 400, 380, -1, -1, $WS_OVERLAPPEDWINDOW + $WS_POPUP) ; Создаёт окно в центре экрана
GUICtrlCreateLabel('Внимание!!!!!!!', 10, 15)
GUICtrlSetFont(-1, 10, 500, 4, 'Arial')
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateLabel('Следующие данные будут отосланы в blabala:' & @LF & @LF & _
		'Ваш Внешний IP: ' & @TAB & @TAB & $PublicIP & @LF & _
		'Ваш Внутренний IP: ' & @TAB & @TAB & $IPAddress1 & @LF & _
		'Ваше Имя компьютера: ' & @TAB & $compname & @LF & _
		'Ваше Имя Пользователя: ' & @TAB & $sUserName, 10, 70, 380, 100)
GUICtrlSetFont(-1, 10, 500, Default, 'Arial')
GUICtrlCreateLabel('Информация отправляется для учета подключений' & @LF & _
		'к распространению среди третьих лиц не предназначена,' & @LF & _
		'только для использования IT персоналом компании blabala.', 10, 200, 380)
GUICtrlSetFont(-1, 10, 500, 2, 'Arial')
GUICtrlSetColor(-1, 0x1100FF)

$Button_1 = GUICtrlCreateButton("Подтвердить и подключится", 50, 300, 300)
$Button_2 = GUICtrlCreateButton("Настройки", 290, 10, 100)
GUISetState(@SW_SHOW) ; показывает созданное окно

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $Button_1
			$rc = _INetSmtpMailCom($sSmtpServer, $sFromName, $sFromAddress, $sToAddress, $sSubject, $sBody, $aAttach, Default, $sToAddress, $sPassword, $iIPPort, $iSsl)
			If @error Then
				MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
			EndIf
			$i_PID1 = RunWait('ping 23.251.81.60  -f -n 1 -l 432', '', @SW_HIDE, 8)
			Sleep(1000)
			$i_PID2 = RunWait('ping 23.251.81.60  -f -n 1 -l 521', '', @SW_HIDE, 8)
			Sleep(1000)
			$i_PID3 = RunWait('ping 23.251.81.60  -f -n 1 -l 598', '', @SW_HIDE, 8)
			Sleep(1000)
			$i_PID4 = RunWait('mstsc.exe /v:23.251.81.60:4565', '', @SW_HIDE, 8)
			Exit
		Case $Button_2
			$sPass = InputBox('Пароль', 'Введите пароль:', 'Крутой пароль', '¤', 200, 130, Default, Default, 0, $hGUI)
			If Not @error Then
				If StringCompare($sPass, $sSettingsPassword, 1) Then
					MsgBox(16, Default, 'Пароль не верен')
				Else
					MsgBox(64, Default, 'Создайте второе GUI-окно с настройками')
				EndIf
			EndIf
	EndSwitch
WEnd

#Region --------- Пользовательские Функции ----------
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $a_Attach = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 465, $ssl = True)
	Local $objEmail = ObjCreate("CDO.Message"), $i_Error = 0, $i_Error_desciption = ""
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = 1049
	$objEmail.BodyPart.CharSet = "utf-8"
	$objEmail.BodyPart.ContentTransferEncoding = "quoted-printable"
	$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
	$objEmail.To = $s_ToAddress
	$objEmail.Subject = $s_Subject
	;         Можно отправлять в формате HTML
	;$objEmail.HTMLBody = $as_Body
	$objEmail.TextBody = $as_Body

	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext") = True
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
	$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password

	If UBound($a_Attach) > 0 Then
		For $j = 0 To UBound($a_Attach) - 1
			If FileExists($a_Attach[$j]) Then
				$objEmail.AddAttachment($aAttach[$j])
			Else
				Exit MsgBox(4096, "", "Файл " & $a_Attach[$j] & " не найден")
			EndIf
		Next
	EndIf
	If $ssl Then
		$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
	EndIf
	$objEmail.Configuration.Fields.Update
	$objEmail.Fields.Update
	$objEmail.Send
	If @error Then
		SetError(2)
		Return $oMyRet[1]
	EndIf
	$objEmail = ""
EndFunc   ;==>_INetSmtpMailCom

Func MyErrFunc()
	$HexNumber = Hex($oMyError.number, 8)
	$oMyRet[0] = $HexNumber
	$oMyRet[1] = StringStripWS($oMyError.description, 3)
	ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
	SetError(1); something to check for when this function returns
	Return
EndFunc   ;==>MyErrFunc
#EndRegion --------- Пользовательские Функции ----------
 
Автор
G

gagarin74

Новичок
Сообщения
43
Репутация
0
Спасибо за ответ.Реально то что нужно(отдельное спасибо за оформление :smile: ).
Просто вопрос наверное не совсем был корректно задан.Мой касяк.
Как поменять с помощью дополнительного открытого окна ,допустим переменную $sToAddress, Что бы при следующем открытие программы (exe) Что бы почта уже уходила на другой ящик.
Конечно самая главная цель это забить (менять) с помощью настроек вот эту строку $i_PID4 = RunWait('mstsc.exe /v:23.251.81.60:4565', '', @SW_HIDE, 8)

Извините за неточность в вопросе. Но то что Вы сделали это уже ОТЛИЧНО.
Соответственно вся затея именно в том ,что бы пользователь сам не мог менять настройки и просматривать ini файлы.
Тобишь что бы программа получилась ИЗМЕНЯЕМАЯ но без всяких "хвостов"
 
Верх