注意:要清楚,我不想在其他问题中回答的回收箱清空。
使用堆栈溢出和超级用户的其他问题的答案,我发现了在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