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...
Protection Fichier&Dossier
ok
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:
ouvrez Word enregistrer un doc dans mes documents puis tester pour voir le résultat. 
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

Salut
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.
essaie voir thank
@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()
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 )
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()