Я пишу DLL для изменения прав доступа к папке и всему, что находится под папкой. Ниже приведен код, который у меня есть прямо сейчас.Изменение разрешений на дочерние папки в C#
Проблема возникает, когда я вызываю addPermissions(). Он правильно устанавливает права на папку dirName и любую папку, которую я позже создаю под именем dirName, но любая папка, которая существует при добавлении разрешений, не получает дополнительных разрешений.
Нужно ли рекурсивно устанавливать разрешения для всех дочерних папок? Или есть способ сделать это с помощью строки или двух кода?
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: Я не вижу, как это решает вопрос. Похоже, этот код делает то же самое, что указано в вопросе, и не обновляет разрешения существующих файлов/каталогов. –
Он делает то, о чем попросил ОП, поскольку я пробовал это, и вы, очевидно, этого не сделали, я смиренно прошу вас его застегнуть. –
Я проверил это, но он не работал для меня. Когда у меня будет время, я вернусь и выясню, в чем разница. –