Bonjour à tous
Publié : mar. 31/oct./2006 13:08
je travaille sur ce code qui me permet de protéger un fichier puis de le cacher mais le problème est que j'arrive pas à enlever l'attribut caché.(la protection elle s'enleve).
voici le code:
;NB: j'utilise certaines liB utilisateur
Merci à vous.
voici le code:
Code : Tout sélectionner
;Lock Folder
;l'application permet de donner des droits d'acces au fichiers et
dossiers
;projet initialisé le 15 Juillet 2006 à 13h 44 Mn
Enumeration
#menu1
#bt_Fermer
#bt_Mode_Expert
#fen1
#fen2
#fen3
#ProtegerFichier
#SupprimerProtectionFichier
#ProtegerDossier
#SupprimerProtectionDossier
#ChangerPassword
#Password
#Password2
#Parametres
#Aide
#A_Propos
#Enregistrement
#Afficheur
#MenuFermer
#bt_Valider
#bt_Annuler
#bt_Annuler2
#bt_Appliquer
#BarreOutils
#TB
#TBbutton1:#TBbutton2:#TBbutton3:#TBbutton4:#TBbutton5:#TBbutton6:#TBbu
tton7:#TBbutton8
#fenetreApropos
#bt_Ok
#bt_Ok2
#bt_register
#register
#bt_Annuler3
#Password3:#Password4
#Nom:#Serial
#image
#res
EndEnumeration
#Passwordfile = "C:\pwd.mic"
#regfile = "C:\PC&DEVLocker2.reg"
#infofile = "C:\InfoLocker.txt"
#Access_None = "n"
#Access_Read = "r"
#Access_Write = "w"
#Access_Change = "c"
#Access_Full = "f"
#G=Chr(34)
;création de la fenetre principale et de ses composants
Procedure FenetrePrincipale()
OpenWindow(#fen1, 0, 0, 600, 460,"PC-DEV Locker (Démonstration)V 1.00
Beta 1", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered |
#PB_Window_SystemMenu | #PB_Window_TitleBar)
CreateGadgetList(WindowID(#fen1))
;j'utilise la libPBOSL
hTB = CreateTB(#TB,WindowID(#fen1),48,48,#TBpro_TRANSPARENCY)
Image1 = LoadImage(1,"bar.bmp") ; Load the Buttons
SetTBimage(Image1,Image2,#TBpro_NORMAL);couleur sys $D4EBEE ou
RGB(238, 235, 212)
AddTBseparator()
AddTBbutton(#TBbutton1,1,#TBpro_BUTTON);proteger fichier
;AddTBseparator()
AddTBbutton(#TBbutton2,2,#TBpro_BUTTON);enlever protection fichier
;AddTBseparator()
AddTBbutton(#TBbutton3,3,#TBpro_BUTTON);proteger dossier
;AddTBseparator()
AddTBbutton(#TBbutton4,4,#TBpro_BUTTON) ;enlever protection fichier
;AddTBseparator(10)
AddTBbutton(#TBbutton5,5,#TBpro_BUTTON) ;mot de passe
;AddTBseparator(10)
AddTBbutton(#TBbutton6,6,#TBpro_BUTTON) ;paramètres
;AddTBseparator(10)
AddTBbutton(#TBbutton7,7,#TBpro_BUTTON) ;Register
;AddTBseparator(10)
AddTBbutton(#TBbutton8,8,#TBpro_BUTTON) ; Aide
SetTBbuttonTooltip(#TBbutton1,"Protéger un Fichier")
SetTBbuttonTooltip(#TBbutton2,"Enlever Protection fichier")
SetTBbuttonTooltip(#TBbutton3,"Protéger un Dossier")
SetTBbuttonTooltip(#TBbutton4,"Enlever Protection Dossier")
SetTBbuttonTooltip(#TBbutton5,"Changer Mot de passe")
SetTBbuttonTooltip(#TBbutton6,"Paramètres")
SetTBbuttonTooltip(#TBbutton7,"S'enregistrer")
SetTBbuttonTooltip(#TBbutton8,"Aide")
;UpdateTBtooltips(#TB)
If CreateMenu(#menu1,WindowID(#fen1))
MenuTitle("Fichier")
MenuItem(#ProtegerFichier, "Proteger Fichier")
MenuItem(#SupprimerProtectionFichier, "Enlever Protection Fichier")
MenuItem(#ProtegerDossier, "Proteger Dossier")
MenuItem(#SupprimerProtectionDossier, "Enlever Protection Dossier")
MenuItem(#MenuFermer, "Fermer")
MenuTitle("Options")
MenuItem(#ChangerPassword, "Changer de Mot de Passe")
MenuItem(#Parametres, "paramètres")
MenuTitle("Aide")
MenuItem(#Aide, "Aide")
MenuItem(#Enregistrement, "Enregistrement")
MenuItem(#A_Propos, "A Propos")
;DisableMenuItem(#menu1,#ProtegerDossier,1)
;DisableMenuItem(#menu1,#SupprimerProtectionDossier,1)
EndIf
LoadFont(0,"Arial",10,#PB_Font_Bold)
ListViewGadget(#Afficheur,5,65,590,320)
SetGadgetFont(#Afficheur,FontID(0))
ButtonGadget(#bt_Mode_Expert, 10, 395, 80, 20, "Mode Expert")
DisableGadget(#bt_Mode_Expert,1)
ButtonGadget(#bt_Fermer, 510, 395, 80, 20, "Fermer")
CreateStatusBar(0, WindowID(#fen1))
AddStatusBarField(450)
AddStatusBarField(150)
SetGadgetColor(#Afficheur, #PB_Gadget_BackColor,$5C0E09)
SetGadgetColor(#Afficheur, #PB_Gadget_FrontColor,$F7EAA0)
;fin de la création de l'interface
EndProcedure
Procedure FenetreParametres()
If OpenWindow(#fen3, 0, 0, 295, 180,"Paramètres",
#PB_Window_ScreenCentered | #PB_Window_TitleBar)
MakeToolWindow( WindowID(#fen3), #True )
CreateGadgetList(WindowID(#fen3))
TextGadget(1003, 20, 8, 250, 20, "Configuration de PC-DEV Security
Lock")
LoadFont(1,"Arial",10, #PB_Font_Bold|#PB_Font_Underline)
SetGadgetFont(1003, FontID(1))
SetGadgetColor(1003, #PB_Gadget_FrontColor,$6C2B11)
Frame3DGadget(1011, 8, 80, 280, 75, "Paramètres")
CheckBoxGadget(1004, 20, 100, 100, 15, "Attribut Normal")
CheckBoxGadget(1005, 20, 130, 100, 15, "Attribut Caché")
CheckBoxGadget(1006, 140, 100, 140, 15, "Afficher l'onglet
Sécurité");désactivé
CheckBoxGadget(1007, 140, 130, 140, 15, "cacher l'onglet
Sécurité");désactivé
OptionGadget(1001, 30, 50, 100, 20, "Mode Normal")
OptionGadget(1002, 170, 50, 100, 20, "Mode Expert")
; SetGadgetState(1001, 1) ; sélectionne l'option Mode Normal
DisableGadget(1004,0): DisableGadget(1005,1):
DisableGadget(1006,1): DisableGadget(1007,1)
;SetGadgetState(1004, 1)
ButtonGadget(#bt_Appliquer, 10, 160, 80, 20, "Appliquer")
ButtonGadget(#bt_Annuler2, 205, 160, 80, 20, "Annuler")
EndIf
EndProcedure
Procedure.s ShowAccess(Fichier.s); Affiche les listes DACL des fichiers
spécifiés.
Protected Handle.l, result.s
Handle = RunProgram("cacls", #G+Fichier+#G, "",
#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
If Handle
While ProgramRunning(Handle)
result + ReadProgramString(Handle) + #CRLF$
Wend
CloseProgram(Handle)
EndIf
ProcedureReturn result
EndProcedure
Procedure.l DenyAccess(Fichier.s, Utilisateur.s) ; Refuse l'accès à
l'utilisateur spécifié.
Protected Handle.l, result.l
Handle = RunProgram("cacls", #G+Fichier+#G + " /d " + Utilisateur,
"",
#PB_Program_Hide|#PB_Program_Open|#PB_Program_Write|#PB_Program_Read)
If Handle
result = WriteProgramStringN(Handle, "O") ; Répond 'Oui' à la
confirmation
CloseProgram(Handle)
EndIf
ProcedureReturn result
EndProcedure
Procedure.l ReplaceAccess(Fichier.s, Utilisateur.s, Access.s) ;
Remplace les droits d'accès de l'utilisateur spécifié.
Protected Handle.l, result.l
Handle = RunProgram("cacls", #G+Fichier+#G + " /p " + Utilisateur +
":" + Access, "",
#PB_Program_Hide|#PB_Program_Open|#PB_Program_Write|#PB_Program_Read)
If Handle
result = WriteProgramStringN(Handle, "O") ; Répond 'Oui' à la
confirmation
CloseProgram(Handle)
EndIf
ProcedureReturn result
EndProcedure
Procedure ProtegerFichier();Aucun accès autorisé pour le fichier
Filtre$ = "Texte (*.log)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les
fichiers (*.*)|*.*"
Filtre = 2
Fichier$ = OpenFileRequester("Sélectionner un Fichier",
FichierParDefaut$, Filtre$, Filtre)
If Fichier$
AddGadgetItem(#Afficheur, -1, Fichier$)
DenyAccess(Fichier$, "BUILTIN\Administrateurs")
Else
MessageRequester("PC-DEV Locker","Aucun fichier n'a été sélectionné
!",#MB_ICONERROR | #MB_OK)
EndIf
EndProcedure
Procedure ProtegerFichierCache();Aucun accès autorisé pour le fichier
caché
Filtre$ = "Texte (*.log)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les
fichiers (*.*)|*.*"
Filtre = 2
Fichier$ = OpenFileRequester("Sélectionner un Fichier",
FichierParDefaut$, Filtre$, Filtre)
If Fichier$
AddGadgetItem(#Afficheur, -1, Fichier$)
Debug
SetFileAttributes(Fichier$,#PB_FileSystem_Hidden|#PB_FileSystem_System)
;DenyAccess(Fichier$, "BUILTIN\Administrateurs")
Else
MessageRequester("PC-DEV Locker","Aucun fichier n'a été sélectionné
!",#MB_ICONERROR | #MB_OK)
EndIf
EndProcedure
Procedure EnleverProtectionFichier()
Protected Selection$
Selection$ = GetGadgetText(#Afficheur)
If Selection$
ReplaceAccess(Selection$, "BUILTIN\Administrateurs", #Access_Full)
num=GetGadgetState(#Afficheur)
RemoveGadgetItem(#Afficheur,num)
Else
MessageRequester("PC-DEV Locker","Sélectionner un fichier dans la
liste !",#MB_ICONERROR | #MB_OK)
EndIf
EndProcedure
Procedure EnleverProtectionFichierCache()
Fichier$ = GetGadgetText(#Afficheur)
If Fichier$
ReplaceAccess(Fichier$, "BUILTIN\Administrateurs", #Access_Full)
Debug SetFileAttributes(Fichier$,#PB_FileSystem_Normal)
num=GetGadgetState(#Afficheur)
RemoveGadgetItem(#Afficheur,num)
Else
MessageRequester("PC-DEV Locker","Sélectionner un fichier dans la
liste !",#MB_ICONERROR | #MB_OK)
EndIf
EndProcedure
;protection des dossiers
Procedure ProtegerDossier();Aucun accès autorisé pour le Dossier
Protected Nombre_Elements
Nombre_Elements = CountGadgetItems(#Afficheur) - 1
CheminInitial$ = ""
Chemin$ = PathRequester("Choisissez un répertoire",CheminInitial$)
If Chemin$
Longueur = Len(Chemin$)
Resultat$ = RSet(Chemin$,Longueur-1)
AddGadgetItem(#Afficheur, -1, Resultat$)
DenyAccess(Resultat$, "BUILTIN\Administrateurs")
Else
MessageRequester("PC-DEV Locker","Aucun dossier n'a été sélectionné
!",#MB_ICONERROR | #MB_OK)
EndIf
EndProcedure
;enlever protection des dossiers
Procedure EnleverProtectionDossier()
Selection$ = GetGadgetText(#Afficheur)
If Selection$
Longueur = Len(Selection$)
Resultat$ = RSet(Selection$,Longueur-1)
;ReplaceAccess(Selection$, "BUILTIN\Administrateurs", #Access_Read)
ReplaceAccess(Selection$, "BUILTIN\Administrateurs", #Access_Full)
num=GetGadgetState(#Afficheur)
RemoveGadgetItem(#Afficheur,num)
Else
MessageRequester("PC-DEV Locker","Sélectionner un dossier dans la
liste !",#MB_ICONERROR | #MB_OK)
EndIf
;Debug Resultat$
EndProcedure
Procedure EnregistrerListeFiles();enregistre les elements protégés dans
un fichier
Protected Nombre_Elements
Nombre_Elements = CountGadgetItems(#Afficheur)
;Nombre_Elements = GetGadgetItemText(#Afficheur,Fichiers$,0)
Nombre_Elements = Nombre_Elements - 1
;enregistrer les infos dans un fichier
If CreatePreferences(#infofile)
PreferenceComment("Listes des Fichiers et dossiers protégés")
PreferenceComment(" ")
For i = 0 To Nombre_Elements
WritePreferenceString(Str(i+1)+"
"+"FilesFolders",""+GetGadgetItemText(#Afficheur,i,0))
PreferenceComment("")
Next i
ClosePreferences()
SetFileAttributes(#infofile,#PB_FileSystem_Hidden|#PB_FileSystem_System
)
EndIf
EndProcedure
Procedure ChargerInfoListe()
OpenPreferences(#infofile)
Protected Nombre_Elements
Nombre_Elements = 1
Repeat
FilesFolders.s = ReadPreferenceString(Str(Nombre_Elements)+"
"+"FilesFolders","")
If FilesFolders <> ""
AddGadgetItem(#Afficheur, -1, FilesFolders.s)
EndIf
Nombre_Elements + 1
Until FilesFolders =""
ClosePreferences()
EndProcedure
Procedure creeregfile()
CreatePreferences(#regfile)
WritePreferenceString("Nom:" ,"John GAGE")
WritePreferenceString("N° Série:"
,"fd4b38e94292e00251b9f39c47ee5710")
ClosePreferences()
EndProcedure
FenetrePrincipale()
PureFILE_RemoveAttributes("C:\InfoLocker.txt",
#PB_FileSystem_Hidden|#PB_FileSystem_System)
ChargerInfoListe():creeregfile()
Declare ProcModeNormal()
Procedure ProcModeNormal()
;SetGadgetState(1002, 1)
DisableGadget(1004,0):SetGadgetState(1004, 1):SetGadgetState(1005,
0):SetGadgetState(1006, 0)
SetGadgetState(1007, 0):SetGadgetState(1007, 0)
DisableGadget(1005,1): DisableGadget(1006,1): DisableGadget(1007,1)
EndProcedure
If OpenPreferences(#regfile)
If ReadPreferenceString("Nom:","")<>"" And ReadPreferenceString("N°
Série:","")<>""
HideTBbutton(#TBbutton7,1 )
DisableMenuItem(#menu1,#Enregistrement,1)
Else
EndIf
EndIf
Repeat
;fermeture de la fenetre principale avec la croix de la fenetre
Select WindowEvent()
Case #PB_Event_CloseWindow
Sortie = 1
;action concernant les menus
Case #PB_Event_Menu
Select EventMenu()
Case #MenuFermer: Sortie =1
;Menu pour protéger les fichiers
Case #ProtegerFichier
Case #SupprimerProtectionFichier
Case #ProtegerDossier
Case #SupprimerProtectionDossier
Case #Parametres
Case #Aide
Case #TBbutton1
If OpenPreferences(#regfile)<>0 And OpenPreferences("C:\PC&DEV
LockerXP.ini")<>0 And
ReadPreferenceString("AttribCache",Str(Attrib_Cache)) ="1"
:ProtegerFichierCache()
ElseIf OpenPreferences(#regfile)<>0 And
OpenPreferences("C:\PC&DEV LockerXP.ini")<>0 And
ReadPreferenceString("AttribCache",Str(Attrib_Cache)) ="0"
:ProtegerFichier()
ElseIf OpenPreferences(#regfile)=0 ;:ProtegerFichierDemo()
ClosePreferences()
EndIf
Case #TBbutton2
If OpenPreferences(#regfile)<>0 And OpenPreferences("C:\PC&DEV
LockerXP.ini")<>0 And
ReadPreferenceString("AttribCache",Str(Attrib_Cache)) ="1"
:EnleverProtectionFichierCache()
ElseIf OpenPreferences(#regfile)<>0 And
OpenPreferences("C:\PC&DEV LockerXP.ini")<>0 And
ReadPreferenceString("AttribCache",Str(Attrib_Cache)) ="0"
:EnleverProtectionFichier()
ClosePreferences()
EndIf
Case #TBbutton3;bouton proteger dossier
If OpenPreferences(#regfile)<>0:ProtegerDossier()
ElseIf OpenPreferences(#regfile)=0 ;:ProtegerDossierDemo()
EndIf
Case #TBbutton4:EnleverProtectionDossier()
Case #TBbutton6:FenetreParametres():If
OpenPreferences("C:\PC&DEV LockerXP.ini")=0
SetGadgetState(1001, 1):ProcModeNormal()
Else:LirWinParam():EndIf
Case #TBbutton8:OpenHelp("Aide.chm", "")
EndSelect
;fermeture de la fenetre principale et la fenetre parametres
Case #PB_Event_Gadget
Select EventGadget()
Case #bt_Ok:CloseWindow(#fenetreApropos)
Case #bt_Annuler3:CloseWindow(#register);register
Case 1001;paramètres des boutons options Mode Normal
ProcModeNormal()
Case 1002 ;paramètres des boutons options Mode Expert
If
OpenPreferences(#regfile):DisableGadget(1004,1):SetGadgetState(1004,
0);:LirWinParam()
DisableGadget(1005,0):DisableGadget(1006,0):DisableGadget(1007,0)
Else
MessageRequester("PC-DEV Locker","Cette option n'est pas
disponible dans la Démo",#MB_ICONINFORMATION | #MB_OK)
DisableGadget(1004,1):DisableGadget(1005,1):
DisableGadget(1006,1): DisableGadget(1007,1)
EndIf
Case 1005: Attrib_Cache = GetGadgetState(1005)
If Attrib_Cache = 0: DisableGadget(1006,0):
DisableGadget(1007,0)
ElseIf Attrib_Cache = 0
EndIf
Case 1006: AffichXPSecOpt = GetGadgetState(1006)
If OpenPreferences(#regfile) And
AffichXPSecOpt<>0:SetGadgetState(1007,0): DisableGadget(1007,1)
;JHRegSetDW(#HKEY_CURRENT_USER,
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\",
"NoSecurityTab", 0);pas activer encore
Else
DisableGadget(1007,0)
;JHRegSetDW(#HKEY_CURRENT_USER,
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\",
"NoSecurityTab", 0)
EndIf
Case 1007: CachXPSecOpt = GetGadgetState(1007)
If OpenPreferences(#regfile) And CachXPSecOpt
<>0:SetGadgetState(1006,0) :DisableGadget(1006,1)
;JHRegSetDW(#HKEY_CURRENT_USER,
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\",
"NoSecurityTab", 1)
Else
DisableGadget(1006,0)
;JHRegSetDW(#HKEY_CURRENT_USER,
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\",
"NoSecurityTab", 0)
EndIf
Case #bt_Appliquer:;pour appliquer les options caché et systeme
aux files & folders
SavWinParam()
CloseWindow(#fen3)
Case #bt_Annuler2:CloseWindow(#fen3)
Case #bt_Fermer
Sortie = 1
EndSelect
EndSelect
Until Sortie = 1
EnregistrerListeFiles()
Merci à vous.