我需要拥有该文件夹及其子文件夹的所有权才能删除它。手动处理对我来说很好:
打开文件夹属性。
安全选项卡->高级->所有者更改->选中“替换子容器和对象上的所有者”
出现消息框:您无权读取目录C:\ a4f31eae62bde1cb4d49834897 \ Sandbox的内容。您是否要使用授予您完全控制权限的目录替换目录权限?如果按是,将替换所有权限。
按是
然后,我可以删除该文件夹。
但是我有大约数百个这些文件夹(reason),所以我想以编程方式删除它们。
我的代码获得了文件夹的所有权,而不是子文件夹的所有权。
var identity = WindowsIdentity.GetCurrent().User;
var dirInfo = new DirectoryInfo(dirPath);
var dirSecurity = dirInfo.GetAccessControl();
dirSecurity.SetOwner(identity);
var fullControlRule = new FileSystemAccessRule(identity,
FileSystemRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow);
dirSecurity.AddAccessRule(fullControlRule);
dirInfo.SetAccessControl(dirSecurity);
之后尝试删除文件夹时,出现System.UnauthorizedAccessException:拒绝访问路径'C:\ a4f31eae62bde1cb4d49834897 \ Sandbox'。
相关分类