Protection Fichier&Dossier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

c'est déjà censé fonctionner aussi sur les dossier (d'apres microsoft).
suffit de spécifier un chemin de dossier plutot qu'un chemin de fichier.

tu me diras si ca fonctionne...
Image
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

ok

Message par SpaceMan »

ok pour les dossiers

je crois que j'ai petit problème. En fait lorsque je crée normalement un document (.doc) que j'enregistre dans mes documents.
J'arrive pas à lui donner des droits (aucun).
un ex:

Code : Tout sélectionner

#Access_None   = "n" 
#Access_Read   = "r" 
#Access_Write  = "w" 
#Access_Change = "c" 
#Access_Full   = "f" 
;==================================================================================================================== 

Procedure.s ShowAccess(Fichier.s) ; Affiche les listes DACL des fichiers spécifiés. 
  
  Protected handle.l, result.s 
  
  handle = RunProgram("cacls", Fichier, "", #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 RevokeAccess(Fichier.s, Utilisateur.s) ; Révoque les droits d'accès de l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /e /r " + 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 DenyAccess(Fichier.s, Utilisateur.s) ; Refuse l'accès à l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /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 GrantAccess(Fichier.s, Utilisateur.s, Access.s) ; Accorde des droits d'accès à l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /g " + 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

Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|All files (*.*)|*.*"
  Pattern = 0  
  Fichier$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern)
  If Fichier$
; Refuse l'accès 
    If DenyAccess(Fichier$, "PCASUS\Nico") 
    MessageRequester("DenyAccess", "Effectué:" + #LF$ + ShowAccess(Fichiers$)) 
  EndIf 
ouvrez Word enregistrer un doc dans mes documents puis tester pour voir le résultat. :roll:
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Salut

Message par SpaceMan »

Bonjour
@Flype
@Droopy

ce code fonction bien sauf que lorsqu'on crée un document word dans mes dicuments par exemple et qu'on essaie d'appliquer les droits rien ne marche plus.

Code : Tout sélectionner

#Access_None   = "n" 
#Access_Read   = "r" 
#Access_Write  = "w" 
#Access_Change = "c" 
#Access_Full   = "f"

Procedure.s ShowAccess(Fichier.s) ; Affiche les listes DACL des fichiers spécifiés. 
  
  Protected handle.l, result.s 
  
  handle = RunProgram("cacls", Fichier, "", #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 RevokeAccess(Fichier.s, Utilisateur.s) ; Révoque les droits d'accès de l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /e /r " + 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 DenyAccess(Fichier.s, Utilisateur.s) ; Refuse l'accès à l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /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 GrantAccess(Fichier.s, Utilisateur.s, Access.s) ; Accorde des droits d'accès à l'utilisateur spécifié. 
  
  Protected handle.l, result.l 
  
  handle = RunProgram("cacls", Fichier + " /g " + 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
   Fichiers$ = OpenFileRequester("Sélectionner un Fichier", FichierParDefaut$, Filtre$, Filtre)     
    If Fichiers$
       
   DenyAccess(Fichiers$, "BLACKP\Administrateurs") 
    MessageRequester("DenyAccess", "Effectué"+ #LF$ + ShowAccess(Fichiers$)) 
 Else
    MessageRequester("Locker","Aucun fichier n'a été sélectionné !",#MB_ICONERROR | #MB_OK)
  EndIf 
EndProcedure

Procedure EnleverProtectionFichier()
Filtre$ = "Texte (*.log)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
  Filtre  = 2
   Fichiers$ = OpenFileRequester("Sélectionner un Fichier", FichierParDefaut$, Filtre$, Filtre)     
    If Fichiers$
 GrantAccess(Fichiers$, "BLACKP\Administrateurs", #Access_Full) 
    MessageRequester("GrantAccess", "Effectué:" + #LF$ + ShowAccess(Fichiers$)) 
Else
MessageRequester("PC-DEV Locker","Sélectionner un élément de la liste !",#MB_ICONERROR | #MB_OK)
  EndIf
EndProcedure
ProtegerFichier()
;EnleverProtectionFichier()
essaie voir thank
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Il faut mettre les chemins contenant des espaces entre guilllement pour qu'ils soit compris par les utilitaires en ligne de commande

Voila pourquoi cela ne fonctionnait pas avec Mes Documents ( il contient un espace )

Code : Tout sélectionner

#Access_None = "n" 
#Access_Read = "r" 
#Access_Write = "w" 
#Access_Change = "c" 
#Access_Full = "f" 

#G=Chr(34)

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 RevokeAccess(Fichier.s, Utilisateur.s) ; Révoque les droits d'accès de l'utilisateur spécifié. 
  
  Protected Handle.l, result.l 
  
  Handle = RunProgram("cacls", #G+Fichier+#G + " /e /r " + 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 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 GrantAccess(Fichier.s, Utilisateur.s, Access.s) ; Accorde des droits d'accès à l'utilisateur spécifié. 
  
  Protected Handle.l, result.l 
  
  Handle = RunProgram("cacls", #G+Fichier+#G + " /g " + 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 
  Fichiers$ = OpenFileRequester("Sélectionner un Fichier", FichierParDefaut$, Filtre$, Filtre) 
  If Fichiers$ 
    
    DenyAccess(Fichiers$, "a") 
    MessageRequester("DenyAccess", "Effectué"+ #LF$ + ShowAccess(Fichiers$)) 
  Else 
    MessageRequester("Locker","Aucun fichier n'a été sélectionné !",#MB_ICONERROR | #MB_OK) 
  EndIf 
EndProcedure 

Procedure EnleverProtectionFichier() 
  Filtre$ = "Texte (*.log)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*" 
  Filtre = 2 
  Fichiers$ = OpenFileRequester("Sélectionner un Fichier", FichierParDefaut$, Filtre$, Filtre) 
  If Fichiers$ 
    GrantAccess(Fichiers$, "a", #Access_Full) 
    MessageRequester("GrantAccess", "Effectué:" + #LF$ + ShowAccess(Fichiers$)) 
  Else 
    MessageRequester("PC-DEV Locker","Sélectionner un élément de la liste !",#MB_ICONERROR | #MB_OK) 
  EndIf 
EndProcedure 
ProtegerFichier() 

; EnleverProtectionFichier() 
Répondre