J'écris une DLL pour modifier les autorisations sur un dossier et tout ce qui se trouve sous le dossier. Voici le code que j'ai en ce moment.Modification des autorisations sur les dossiers enfants en C#
Le problème vient quand j'appelle addPermissions(). Il définit correctement les autorisations sur le dossier dirName et tous les dossiers que je crée ultérieurement sous dirName, mais tout dossier existant lorsque j'ajoute des autorisations n'obtient pas les autorisations supplémentaires. Dois-je définir de façon récursive les autorisations sur tous les dossiers enfants?
Ou y a-t-il un moyen de le faire avec une ligne ou deux de code?
public class Permissions
{
public void addPermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Allow);
}
public void revokePermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Deny);
}
private void changePermissions(string dirName, string username, AccessControlType newPermission)
{
DirectoryInfo myDirectoryInfo = new DirectoryInfo(dirName);
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
string user = System.Environment.UserDomainName + "\\" + username;
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(
user,
FileSystemRights.Read | FileSystemRights.Write | FileSystemRights.ExecuteFile | FileSystemRights.Delete,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
newPermission
));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
}
}
-1: Je ne vois pas comment cela répond à la question. Il semble que ce code fasse la même chose que ce qui est indiqué dans la question, et ne met pas à jour les permissions des fichiers/répertoires existants. –
Il fait ce que l'OP a demandé, puisque je l'ai essayé et vous n'avez évidemment pas, je vais humblement vous demander de le compresser. –
J'ai testé cela, mais ça ne fonctionnait pas pour moi. Quand j'aurai du temps, je reviendrai et je découvrirai quelle était la différence. –