Fichier caché marche pas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Fichier caché marche pas

Message par SpaceMan »

Bonjour à tous
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
  #fenetreApropos
  #bt_Ok
  #bt_Ok2
 
EndEnumeration
#Passwordfile  = "C:\pwd.mic"
#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))
  
  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")
    ButtonGadget(#TBbutton1,0,5,100,20,"Proteger Fichier")
    ButtonGadget(#TBbutton2,110,5,140,20,"Enlever Protection Fichier")
  EndIf 
  LoadFont(0,"Arial",10,#PB_Font_Bold)
  ListViewGadget(#Afficheur,5,30,590,360)
  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.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é
Protected Nombre_Elements
 Nombre_Elements = CountGadgetItems(#Afficheur) - 1
 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()
Protected Nombre_Elements
 Nombre_Elements = CountGadgetItems(#Afficheur) - 1
Fichier$ = GetGadgetText(#Afficheur)
  If Fichier$
  ReplaceAccess(Fichier$, "BUILTIN\Administrateurs", #Access_Full) And 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 = 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()   
 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
FenetrePrincipale():ChargerInfoListe()

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
             
      EndSelect 
      
      ;fermeture de la fenetre principale et la fenetre parametres  
    Case #PB_Event_Gadget
      Select EventGadget()
                           
        Case #TBbutton1
        ProtegerFichierCache()
                 
        Case #TBbutton2
        EnleverProtectionFichierCache()
          
     Case #bt_Fermer
          Sortie = 1
     EndSelect  
  EndSelect
Until Sortie = 1 
EnregistrerListeFiles()
Merci
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Reslt

Message par SpaceMan »

Ben là je vois que personne n'a jeté un coup d'oeil sur le code :oops:
Répondre