[英]Delete directory returns access to the path is denied
我有查找低于1小时的空目录并将其删除的代码
foreach (DirectoryInfo __dir in _directories)
{
if (!__dir.EnumerateFiles().Any() && __dir.LastWriteTime < DateTime.Now.AddHours(-1))
{
Directory.Delete(__dir.FullName)
}
}
抛出一个异常,表示拒绝访问目录路径。 但是,我可以通过文件资源管理器手动删除同一目录。
我尝试了其他人的建议(将属性设置为正常),但这没有用。
我试过FileAttributes.Normal;
和~FileAttributes.ReadOnly;
他们都不工作。
我还尝试将访问控制设置为完全控制要删除的目录及其父目录。
如果上面发布的程序无法删除目录,但是您可以手动删除目录,这是一个权限问题,因为手动登录的用户是admin,但应用程序未在管理员权限下运行:
如果FileAttributes.Normal;
不能做到这一点(应该这样做)尝试将Attributes设置为ReadOnly:
foreach (DirectoryInfo __dir in _directories)
{
if (!__dir.EnumerateFiles().Any() && __dir.LastWriteTime < DateTime.Now.AddHours(-1))
{
__dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
__dir.Delete();
}
}
还要注意,它使用__dir
而不是Directory.Delete(__dir.FullName)
来删除自身,它不应该有所作为,只是简写。
连同其他建议一起,请确保您要删除的目录(例如:读取或写入目录中的文件)中的程序均未在“做某事” ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.