如何在 WPF 中访问用户回收站中的所有 files/directories?

How can one access all the files/directories in the user's recycle bin in WPF?


注意:明确地说,我不想像其他问题中回答的那样清空回收站。


使用 Stack Overflow 和 Super User 上其他问题的答案,我发现在 C# 中获取回收站位置的方法是:

@"C:$Recycle.Bin\" + System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString()

但是,当我 运行 以下代码时,我得到的文件与我回收站中的实际文件不同:

string location = @"C:$Recycle.Bin\" + System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString();
foreach (string file in Directory.GetFiles(location))
{
    Console.Writeline(file);
}                

如何正确获取回收站中的所有文件?我的需要是访问上次使用文件的时间,然后可能会恢复它们。

谢谢。

It's not as straight forward as initially thought because the Recycle Bin doesn't have a physical location, it's a virtual folder. To get a list of all files in the Recycle Bin and make this work you need to add a reference to shell32.dll (located in %SystemRoot%\system32\shell32.dll).

public static void Main(string[] args)
{
    Shell shell = new Shell();
    Folder folder = shell.NameSpace(0x000a);

    foreach (FolderItem2 item in folder.Items())
        Console.WriteLine("FileName:{0}", item.Name);

    Marshal.FinalReleaseComObject(shell);
    Console.ReadLine();
}

REF:http://www.dreamincode.net/forums/topic/161500-play-with-recycle-bin-in-code/

要获取文件的 LastModified 属性,您可以在此处查看我的回答:

另请注意,每个 HDD 都有一个回收站,因此您必须检查所有驱动器。

这里恢复文件是C#的解决方法: