Vous trouverez ci-joint un script que j'ai conçut pour que l'un de mes clients puisse
lancer une appli en mode administrateur ( car placé sur un serveur TSE ).
et comme les utilisateurs ne sont pas administrateur sur certain programme il y avait des problèmes
Il était gênant de mettre les infos en clair dans un bath
Je sais un script autoit n'est pas inviolable mais c'est nettement mieux que le bath
Mes clients TPME n'ont pas besoin de sécurité sévères ( certain ont le mot de passe administrateur affiché sur une étiquette placé sur l'écran du serveur c'est vous dire ).
enfin un minimum ne nuit pas
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=pi.ico
#AutoIt3Wrapper_outfile=runadmin.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=Utilitaires pour forum autoit par JL56
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <String.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Local $user = @UserName
Local $Password = ""
local $domaine=@LogonDomain
local $fichier="c:\windows\notepad.exe"
$aid=""
$aid=$aid&"Runadmin permet d'exécuter des programmes dans un mode administrateur sans afficher le mot de passe en clair"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"ex. runadmin.exe paye"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&" Si vous lancer runadmin directement"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"Apres avoir renseigné le code, vous pourrez saisir les parametres"&@CRLF
$aid=$aid&"Ceux ci seront enregistrés dans un fichier ini . Donnez un nom a ce parametrage ( sans l'extention .ini)"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"Il peut étre nécessaire de placer runadmin.exe et son fichier *.ini dans le dossier ou se trouve le fichier à exécuter"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"Plusieurs paramétrages sont possible. Vous pourrez les recharger par la suite"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"Ensuite créez un racourci sur runadmin.exe puis rajouter dans les propiétés apres un espace le nom de"&@CRLF
$aid=$aid&"votre parametrage (sans l'extention .ini)"&@CRLF
$aid=$aid&"dans ce fichier le mot de passe et le nom de fichier sont cryptés"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"Type de fichier à executer possible EXE, BAT, COM, PIF"&@CRLF
$aid=$aid&""&@CRLF
$aid=$aid&"JL56"
$fichierini=""
;~ $cmdline=""
if $cmdline[0]<>"0" Then
;~ MsgBox(0, "avant num ", number($cmdline[0]),10)
if $cmdline[0]>"0" Then
$fichierini=$cmdline[1]
;~ MsgBox(0,"$fichierini",$fichierini,20)
if FileExists(@scriptdir&"\"&$fichierini&".ini") Then
$user =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "user","" )
$crypte=IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "password" ,"")
$Password=_StringEncrypt(0,$crypte,"jl56",4)
$domaine =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "domaine" ,"")
$crypte =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "fichier" ,"")
$fichier=_StringEncrypt(0,$crypte,"jl56",4)
RunAswait($User, $domaine, $Password, 0, $fichier)
Else
MsgBox(0,"Erreur","Le fichier ini "&@CRLF&@scriptdir&"\"&$fichierini&".ini"&@CRLF&" N'est pas présent",20)
EndIf
Else
EndIf
Exit
EndIf
$passwd = InputBox("Utilitaire de JL56 ", " Entrez votre mot de passe. ( actuellement --> jl56 )", "", "*",350,50,-1,-1,100)
; test du mot de passe
if $passwd<>"jl56"and $passwd<>"JL56" then Exit
#Region ### START Koda GUI section ### Form=F:\pi\runadmin.kxf
$Form1 = GUICreate("Exécution d'un programme en mode administrateur", 559, 447, 192, 124)
GUISetBkColor(0x00FFFF)
$Inp_user = GUICtrlCreateInput("Inp_user", 120, 30, 261, 21)
$inp_password = GUICtrlCreateInput("inp_password", 120, 70, 261, 21)
$inp_domaine = GUICtrlCreateInput("inp_domaine", 120, 120, 261, 21)
$Inp_fichier = GUICtrlCreateInput("Inp_fichier", 120, 165, 261, 21)
$nom_parametrage = GUICtrlCreateInput("nom_parametrage", 120, 215, 151, 21)
$Pic1 = GUICtrlCreatePic("C:\votre_logo.bmp", 235, 270, 305, 145, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$but_enregistrer = GUICtrlCreateButton("Enregistrer", 275, 215, 100, 20, $BS_FLAT)
$but_tester = GUICtrlCreateButton("Tester", 50, 270, 100, 30, $BS_FLAT)
$Label1 = GUICtrlCreateLabel("Nom de l'utilisateur", 5, 30, 92, 17)
$Label2 = GUICtrlCreateLabel("Mot de passe", 5, 75, 68, 17)
$Label3 = GUICtrlCreateLabel("Nom du domaine", 5, 125, 84, 17)
$Label4 = GUICtrlCreateLabel("Fichier à exécuter", 5, 170, 88, 17)
$Parcourir = GUICtrlCreateButton("Parcourir", 390, 165, 100, 20, $BS_FLAT)
$Afficher = GUICtrlCreateButton("Afficher", 390, 70, 70, 20, $BS_FLAT)
$Cacher = GUICtrlCreateButton("Cacher", 390, 70, 70, 20, $BS_FLAT)
$Quitter = GUICtrlCreateButton("Quitter", 50, 380, 100, 30, $BS_FLAT)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0xFF0000)
$parcourir_ini = GUICtrlCreateButton("Recharger un fichier *..ini", 390, 215, 150, 20, $BS_FLAT)
$Label5 = GUICtrlCreateLabel("Nom du fichier ini", 5, 220, 85, 17)
$Aide = GUICtrlCreateButton("Aide", 50, 325, 100, 30, $BS_FLAT)
GUICtrlSetBkColor(-1, 0x00FF00)
$Label6 = GUICtrlCreateLabel("Version du 26 05 2009", 410, 5, 111, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($inp_domaine,$domaine)
GUICtrlSetData($Inp_user,$user)
GUICtrlSetData($Inp_fichier,$fichier)
GUICtrlSetData($inp_password,$Password)
GUICtrlSetData($nom_parametrage,$fichierini)
_SetPasswordStyle($Form1, $inp_password, '=')
GUICtrlSetState($Cacher,$GUI_HIDE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Quitter
exit
case $Afficher
_SetPasswordStyle($Form1, $inp_password, '', 'Ms Sans Serif')
GUICtrlSetState($Cacher,$GUI_show)
GUICtrlSetState($Afficher,$GUI_HIDE)
case $Cacher
_SetPasswordStyle($Form1, $inp_password, '=')
GUICtrlSetState($Cacher,$GUI_HIDE)
GUICtrlSetState($Afficher,$GUI_show)
Case $parcourir
$message = "Sélectionnez le fichier à exécuter"
$var = FileOpenDialog($message, @scriptdir&"\", "fichier à exécuter (*.*)", 1 )
If @error Then
Else
$var = StringReplace($var, "|", @CRLF)
$fichier=$var
GUICtrlSetData($Inp_fichier,$fichier)
EndIf
Case $parcourir_ini
$message = "Sélectionnez le fichier de paramétrage"
$var = FileOpenDialog($message, @scriptdir&"\", "fichier de paramétrage (*.ini)", 1 )
If @error Then
Else
$var = StringReplace($var, "|", @CRLF)
$fichierini=StringRegExpReplace(StringRegExpReplace($var,"[[:graph:]]*\\",""),".ini","")
EndIf
if FileExists(@scriptdir&"\"&$fichierini&".ini") Then
$user =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "user","" )
$crypte=IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "password" ,"")
$Password=_StringEncrypt(0,$crypte,"jl56",4)
$domaine =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "domaine" ,"")
$crypte =IniRead ( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "fichier" ,"")
$fichier=_StringEncrypt(0,$crypte,"jl56",4)
GUICtrlSetData($inp_domaine,$domaine)
GUICtrlSetData($Inp_user,$user)
GUICtrlSetData($Inp_fichier,$fichier)
GUICtrlSetData($inp_password,$Password)
GUICtrlSetData($nom_parametrage,$fichierini)
Else
MsgBox(0,"Erreur","Le fichier ini "&@CRLF&@scriptdir&"\"&$fichierini&".ini"&@CRLF&" N'est pas présent",20)
EndIf
Case $but_tester
MsgBox(0,"run","user="&$User&@CRLF&"domaine="&$domaine&@CRLF&"password="&$Password&@CRLF&"fichier="&$fichier&@CRLF&"Dossier="&@scriptdir,20)
RunAswait($User, $domaine, $Password, 0, $fichier)
case $Aide
MsgBox(0,"AIDE",$aid)
Case $Inp_user
$user=GUICtrlRead($Inp_user)
Case $inp_domaine
$domaine=GUICtrlRead($inp_domaine)
Case $inp_password
$Password=GUICtrlRead($inp_password)
Case $nom_parametrage
$fichierini=gUICtrlRead($nom_parametrage)
Case $but_enregistrer
if $fichierini<>"" Then
IniWrite( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "fichier" ,_StringEncrypt(1,$fichier,"jl56",4))
IniWrite( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "user" ,$user)
IniWrite( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "domaine" ,$domaine)
IniWrite( @scriptdir&"\"&$fichierini&".ini", "execution en mode administrateur", "password" ,_StringEncrypt(1,$Password,"jl56",4))
Else
MsgBox(0,"Erreur"," Il n'y a pas de nom pour ce parametrage",20)
EndIf
Case $Inp_fichier
$fichier=GUICtrlRead($Inp_fichier)
EndSwitch
WEnd
Exit
Func _SetPasswordStyle($hwnd_GUI, $hwnd_ControlID, $sEncode = '', $v_Font = 'Webdings', $i_FontSize = 9)
Local $EM_SETPASSWORDCHAR = 0xCC
If $sEncode = '' Then
GUICtrlSendMsg($hwnd_ControlID, $EM_SETPASSWORDCHAR, 0, 0)
ControlFocus($hwnd_GUI, '', $hwnd_ControlID)
GUICtrlSetFont($hwnd_ControlID, $i_FontSize, '', '', $v_Font)
Else
GUICtrlSendMsg($hwnd_ControlID, $EM_SETPASSWORDCHAR, Asc($sEncode), 0)
ControlFocus($hwnd_GUI, '', $hwnd_ControlID)
GUICtrlSetFont($hwnd_ControlID, 6, '', '', $v_Font)
EndIf
EndFunc
Ensuite tapez "rundamin.exe paye" et le programme associé se lance
Merci à Tlem pour m'avoir trouvé l'info pour cacher /afficher le mot de passe dans la gui
A+ JL56