Page 2 sur 2

Publié : mar. 03/oct./2006 16:48
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...

ok

Publié : mer. 04/oct./2006 12:31
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:

Salut

Publié : sam. 07/oct./2006 14:33
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

Publié : sam. 07/oct./2006 21:46
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()