Page 1 sur 1

Bonjour à tous

Publié : mar. 31/oct./2006 13:08
par SpaceMan
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:

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()
;NB: j'utilise certaines liB utilisateur
Merci à vous.

Publié : mar. 31/oct./2006 13:30
par brossden
J'ai essayé de lancer l'appli mais j'ai une erreur sur "CreateTb" ?
D'ou vient cette fonction ou procedure ??

Publié : mar. 31/oct./2006 13:38
par SpaceMan
salut Denis
"CreateTb" est une fonction de la lib PBOSL télechargeagle ici:

http://pbosl.purearea.net/index.php?site=Libs

j'utilise aussi la lib de droopy

[/url]