En clair, voici le script qui permet de choisir un fichier où mettre un mot de passe :
Code : Tout sélectionner
#RequireAdmin
#include <Constants.au3>
#include <EditConstants.au3>
#Include <File.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Crypt.au3>
#Region ### START Koda GUI section ### Form=C:\Users\Sam\Desktop\AutoIT\FileProtect\Koda\FileProtect.kxf
Global $FileProtect = GUICreate("Configuration de FileProtect", 500, 255, 192, 124)
GUISetBkColor(0xFFFFFF)
Global $Chemin = GUICtrlCreateInput("", 120, 72, 265, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Recherche = GUICtrlCreatePic(@ScriptDir & "\Data\Images\Recherche.jpg", 225, 8, 50, 50)
GUICtrlSetTip($Recherche, "Parcourir")
Global $Protection = GUICtrlCreatePic(@ScriptDir & "\Data\Images\Bouclier.jpg", 230, 170, 50, 50)
GUICtrlSetTip($Protection, "Sécuriser le fichier")
Global $Demarrage = GUICtrlCreateCheckbox("Protection au Démarrage", 8, 235, 145, 17)
$MsgBoxDemarrage = 0
Global $Label1 = GUICtrlCreateLabel("Mot de Passe pour le fichier (Obligatoire) :", 152, 104, 200, 17)
Global $Input2 = GUICtrlCreateInput("", 120, 136, 265, 21, BitOR($ES_CENTER,$ES_PASSWORD,$ES_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $Algo = $CALG_3DES
Dim $CheminFileProtect = @ScriptDir
Dim $FichierDemarrage = @ScriptDir & "\Data\Fichiers\Demarrage.ini"
Dim $Add = @ScriptDir & "\Data\Fichiers\Add.ini"
If Not FileExists($FichierDemarrage) Then
MsgBox(16, "Erreur", "Le fichier 'Data\Fichiers\Demarrage.ini' est introuvable !")
Exit
EndIf
While 1
$Msg = GUIGetMsg()
If $Msg = $GUI_EVENT_CLOSE Then Exit
If $Msg = $Recherche Then
Dim $FichierProtection = FileOpenDialog("FileProtect", "C:\", "Tous (*.*)", 1)
GUICtrlSetData($Chemin, $FichierProtection)
EndIf
If _IsChecked($Demarrage) Then
FileOpen($FichierDemarrage)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileProtect.exe", "REG_SZ", $CheminFileProtect)
_FileWriteToLine($FichierDemarrage, 1, "Lancement du Logiciel au démarrage de l'ordinateur = True", 1)
While $MsgBoxDemarrage = 0
MsgBox(64, "Information", "Le logiciel ce lançera au démarrage de l'ordinateur.")
$MsgBoxDemarrage = 1
FileClose($FichierDemarrage)
WEnd
Else
$MsgBoxDemarrage = 0
_FileWriteToLine($FichierDemarrage, 1, "Lancement du Logiciel au démarrage de l'ordinateur = False", 1)
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileProtect.exe")
EndIf
If $Msg = $Protection Then
Dim $FichierProtection = @ScriptDir & "\Data\Fichiers\Protection.ini"
FileOpen($FichierProtection, 1)
FileOpen($Add, 1)
Dim $FichierProteger = GUICtrlRead($Chemin)
Dim $Pass = GUICtrlRead($Input2)
Dim $PassCrypt = _Crypt_EncryptData($Pass, "Password", $Algo)
Dim $AddValue = FileReadLine($Add, 1)
If $AddValue = "" Then
MsgBox(16, "Erreur", "Le fichier Data\Fichiers\Add.ini est corrompu, veuillez entrer une valeur différente de 0.")
Exit
EndIf
If $AddValue = "0" Then
MsgBox(16, "Erreur", "Le fichier Data\Fichiers\Add.ini est corrompu, veuillez entrer une valeur différente de 0.")
Exit
EndIf
If $FichierProteger = "" Then
MsgBox(16, "Erreur", "Il n'y a aucun fichier à proteger !")
ElseIf $Pass = "" Then
MsgBox(16, "Erreur", "Il n'y a aucun Mot de Passe !")
ElseIf $Pass And $Chemin <> "" Then
_FileWriteToLine($FichierProtection, $AddValue, $FichierProteger, 1)
$AddValue = $AddValue + 1
_FileWriteToLine($Add, 1, $AddValue, 1)
_FileWriteToLine($FichierProtection, $AddValue, $PassCrypt, 1)
$AddValue = $AddValue + 1
_FileWriteToLine($Add, 1, $AddValue, 1)
FileClose($FichierProtection)
FileClose($Add)
MsgBox(64, "Information", "Fichier protegé avec succès !")
EndIf
EndIf
If Not ProcessExists("FileProtect.exe") Then
Run(@ScriptDir & "\FileProtect.exe")
EndIf
WEnd
Func _IsChecked($Check)
Return BitAnd(GUICtrlRead($Check),$GUI_CHECKED) = $GUI_CHECKED
EndFunc
Ensuite, je voudrais un autre script qui en fonction du fichier à proteger choisit par l'utilisateur, affiche une InputBox qui demande un mot de passe pour démarrer le fichier.
(Il me manque juste la partie pour l'affichage de l'inputbox à l'ouverture du fichier...)