bardiel Debian powa ! | Bonsoir/bonjour !
Dans le cadre du boulot, et vu que parfois le logiciel de PMAD perd un peu les pédales, je voulais m'orienter vers l'activation distante du bureau distant afin de prendre la main sur des machines dont je dois m'occuper.
Au début je m'orientais vers un code assez "simple" et fonctionnel dans le cadre personnel, mais dès qu'il s'agit de partir sur un domaine ça ne fonctionne plus : l'utilisation du service de registre distant.
Donc là "plan B" : l'utilisation de psexec pour exécuter du reg query (lecture) et reg delete/reg add (suppression et ré-écriture d'une nouvelle valeur)
Le tout se passant sur les clés :
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections = 1 -> désactivé / 0 -> activé
Et
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber = 3389 -> port de connexion
Donc 1er jet du code, pour l'instant je m'attarde sur la partie lecture de la valeur fDenyTSConnections pour savoir si c'est actif ou pas :
Code :
- #RequireAdmin
- #Region
- #AutoIt3Wrapper_Icon=remote.ico
- #AutoIt3Wrapper_UseX64=n
- #EndRegion
- Opt("guioneventmode", 1)
- #include <GUIConstantsEx.au3>
- #include <MsgBoxConstants.au3>
- #include <WindowsConstants.au3>
- #include <EditConstants.au3>
- #include <Array.au3>
- #include <File.au3>
- Local $hGUI = GUICreate("[Activation RDP Distante]", 600, 300)
- $Pic1 = GUICtrlCreatePic("mon_fond", 285, 0,0,0)
- GUISetBkColor (0xffffff)
- GUICtrlSetColor(-1, 0xff6347)
- GUICtrlSetBkColor(-1, 0xf0f8ff)
- GUICtrlCreateLabel("Activation RDP Distante - méthode PSExec", 5, 5, 590, 25)
- GUICtrlSetFont(-1,18,400,"Verdana" )
- GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
- ; information du PC cible
- GUICtrlCreateLabel("Cible :", 10, 43, 70, 25)
- $strComputer1 = GUICtrlCreateInput("127.0.0.1", 90, 40, 100, 20)
- GUICtrlCreateLabel("Utilisateur :", 10, 73, 70, 25)
- $strUser = GUICtrlCreateInput("administrateur", 90, 70, 100, 20)
- GUICtrlCreateLabel("Mot de passe :", 10, 103, 70, 25)
- $strPassword = GUICtrlCreateInput("", 90, 100, 100, 20,$ES_PASSWORD)
- GUICtrlCreateLabel("Port :", 10, 133, 70, 25)
- $strPort = GUICtrlCreateInput("3389", 90, 130, 100, 20)
- ; commandes
- GUICtrlCreateButton("Status", 200, 38, 90)
- GUICtrlSetOnEvent(-1, "_status" )
- GUICtrlCreateButton("Activer", 200, 68, 90)
- GUICtrlSetOnEvent(-1, "active" )
- GUICtrlCreateButton("Désactiver", 200, 98, 90)
- GUICtrlSetOnEvent(-1, "desactiv" )
- GUICtrlCreateButton("Redémarrer", 200, 128, 90)
- GUICtrlSetOnEvent(-1, "_reboot" )
- ; affichage informations
- $Info1 = GUICtrlCreateLabel(" ", 10, 160, 285, 25)
- GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
- $Info2 = GUICtrlCreateLabel(" ", 10, 175, 285, 25)
- GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
- GUICtrlCreateButton("Quitter", 500, 265, 90)
- GUICtrlSetOnEvent(-1, "_Exit" )
- GUISetState()
- GUICtrlSetState($Pic1, $GUI_DISABLE)
- GUISetOnEvent(-3, "_Exit" )
- While 1
- Sleep(100)
- WEnd
- Func _status()
- $computer = GUICtrlRead($strComputer1)
- If $computer = "" Then
- $computer = @ComputerName
- GUICtrlSetData($strComputer1, "127.0.0.1" )
- EndIf
- $user = GUICtrlRead($strUser)
- $password = GUICtrlRead($strPassword)
- $iPID = Run(@ComSpec & ' /c ' & 'net use \\' & $computer & '\ipc$ /user:' & $user & ' ' & $password & ' & psexec \\' & $computer & ' -u ' & $user & '-p ' & $password & ' -i reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections'&chr(39)&' & pause', '', @SW_SHOW)
- ProcessWaitClose($iPID)
- $read = StdoutRead($iPID)
- Sleep(500)
- GUICtrlSetData($Info1, $read )
- ; reste à faire code pour extraire et afficher le bon résultat...
- ;If $read = "1" Then
- ; GUICtrlSetData($Info1, "Bureau à Distance : Désactivé" )
- ;ElseIf $read = "0" Then
- ; GUICtrlSetData($Info1, "Bureau à Distance : Activé" )
- ;ElseIf @error = 2 Then
- ; GUICtrlSetData($Info1, "Erreur : la clé n'a pas pu etre trouvé sur le " & $computer)
- ;ElseIf @error = 3 Then
- ; GUICtrlSetData($Info1, "Erreur : le PC " & $computer & " est inexistant ou indisponible." )
- ;Else
- ; GUICtrlSetData($Info1, "Erreur : erreur inconnue" )
- ;EndIf
- EndFunc
- Func desactiv()
- EndFunc
- Func active()
- EndFunc
- Func _reboot()
- $user = GUICtrlRead($strUser)
- $password = GUICtrlRead($strPassword)
- ; Run(@ComSpec & " /c " & "psexec \\" & $computer & " -u " & $user & "-p " & $password & " shutdown -f -r -t 0", "", @SW_HIDE)
- GUICtrlSetData($Info1, "Redémarrage distant initialisé." )
- GUICtrlSetData($Info2, "" )
- EndFunc
- Func _Exit()
- Exit
- EndFunc ;==>_Exit
|
La partie du code qui me pose problème c'est :
Code :
- $iPID = Run(@ComSpec & ' /c ' & 'net use \\' & $computer & '\ipc$ /user:' & $user & ' ' & $password & ' & psexec \\' & $computer & ' -u ' & $user & '-p ' & $password & ' -i reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections'&chr(39)&' & pause', '', @SW_SHOW)
- ProcessWaitClose($iPID)
- $read = StdoutRead($iPID)
|
En effet... rien. A l'affichage de la fenêtre ça me redemande le password du compte, or je le fournis déjà. Et après bim "impossible d'exécuter la commande".
Des idées ? ---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
|