如何在WPF中访问用户回收站中的所有文件/目录?



注意:要清楚,我不想在其他问题中回答的回收箱清空。


使用堆栈溢出和超级用户的其他问题的答案,我发现了在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);
}                

如何正确获取回收箱中的所有文件?我的需求是在文件最后使用时访问,并可能将其还原。

谢谢。

它不像最初想象的那样直截了当,因为回收箱没有物理位置,而是虚拟文件夹。要获取回收箱中所有文件的列表并进行此工作,您需要将引用添加到Shell32.dll(位于%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();
}

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

要获取文件的最后修改属性,您可以在此处看到我的答案:https://stackoverflow.com/a/11660616/

还要注意每个HDD都有一个回收箱,因此您必须检查所有驱动器。

在这里还原文件是C#中的解决方案:https://stackoverflow.com/a/6025331/495455

相关内容

  • 没有找到相关文章

最新更新