le code ci-après fonctionne pour les fichiers mais pas pour les dossiers
Aidez-moi please.
Code : Tout sélectionner
;====================================================================================================================
;
; Object: Microsoft Cacls
; Information: Displays or modifies discretionary access control list (DACL) files.
; Information: Affiche ou modifie les listes DACL (Discretionary Access Control List) pour des fichiers spécifiés.
; WebSite: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cacls.mspx
;
;====================================================================================================================
#Access_None = "n"
#Access_Read = "r"
#Access_Write = "w"
#Access_Change = "c"
#Access_Full = "f"
#AS=Chr(92)
;====================================================================================================================
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.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", Fichier + " /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
;====================================================================================================================
CheminInitial$ = "C:\Test" ; Répertoire par défaut qui sera affiché (une chaîne vide est aussi possible)
Chemin$ = PathRequester("Choisissez un répertoire", CheminInitial$)
If Chemin$
; Affiche les droits
MessageRequester("ShowAccess", ShowAccess(Fichier$))
; Accorde des droits d'accès
If GrantAccess(Chemin$, "BUILTIN\Utilisateurs", #Access_Full)
MessageRequester("GrantAccess", "Effectué:" + #LF$ + ShowAccess(Chemin$))
EndIf
; Refuse l'accès
If DenyAccess(Chemin$, "BUILTIN\Utilisateurs")
MessageRequester("DenyAccess", "Effectué:" + #LF$ + ShowAccess(Chemin$))
EndIf
; Remplace les droits
If ReplaceAccess(Chemin$, "BUILTIN\Administrateurs", #Access_Read)
MessageRequester("ReplaceAccess", "Effectué:" + #LF$ + ShowAccess(Chemin$))
EndIf
; Remplace les droits
If ReplaceAccess(Chemin$, "BUILTIN\Administrateurs", #Access_Full)
MessageRequester("ReplaceAccess", "Effectué:" + #LF$ + ShowAccess(Chemin$))
EndIf
; Révoque les droits
If RevokeAccess(Chemin$, "BUILTIN\Administrateurs")
MessageRequester("RevokeAccess", "Effectué:" + #LF$ + ShowAccess(Chemin$))
EndIf
;DeleteFile(Fichier$)
; IDE Options = PureBasic v4.00 (Windows - x86)
; CursorPosition = 96
; FirstLine = 47
; Folding = j
; EnableUnicode
; EnableThread
; EnableXP
; DisableDebugger