删除特定用户创建的所有文件

时间:2012-08-10 19:42:02

标签: c# ntfs quota

我有启用配额的驱动器,我想从该驱动器中删除由指定用户创建的所有文件(实际上是一组使用特殊帐户运行的应用程序)。如何在不重新检查HDD上的所有文件和文件夹的情况下执行此操作是否由指定用户创建?我只需要得到“迭代器”。

3 个答案:

答案 0 :(得分:2)

看看以下示例

    [Test]
    public void Test()
    {
        string user = @"Domain\UserName";
        var files = Directory.EnumerateFiles(@"C:\TestFolder")
            .Where(x => IsOwner(x, user));
        Parallel.ForEach(files, File.Delete);
    }

    private static bool IsOwner(string filePath, string user)
    {
        return string.Equals(File.GetAccessControl(filePath).GetOwner(typeof (NTAccount)).Value, user,
                             StringComparison.OrdinalIgnoreCase);
    }

答案 1 :(得分:1)

在提高性能方面,我认为在使用递归算法搜索文件和文件夹时可以使用任务并行库。

另一种方式,你可以这样做Lucence是一个有用的搜索框架,它已经发布了.NET版本

答案 2 :(得分:1)

实际上,您可以使用USN Change Journal有效地迭代和非常,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798.aspx。通过正确使用过滤,您可以获取特定用户在特定时间段内创建的文件列表。

另一方面,这种技术非常复杂,适用于对时间要求严格的应用;如果效率不是您应用的焦点,我会选择更简单的解决方案。