【发布时间】:2014-01-04 21:33:37
【问题描述】:
如果可能的话,我希望能够检查回收站是否为空,并尽量减少麻烦(导入 dll、导入任何内容、创建完整的新类以保存回收站功能等...)
我已经有下面的代码,我在网上找到了清空回收站的代码,所以很自然地怀疑我应该能够扩展它以检查它是否需要先清空,也许……Shell32.dll 中的另一个函数。
enum BinFlags : uint
{
SHERB_NOCONFIRMATION = 0x00000001,
SHERB_NOPROGRESSUI = 0x00000002,
SHERB_NOSOUND = 0x00000004
}
[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string rootPath,
BinFlags flags);
/* snip, bunch of code... */
SHEmptyRecycleBin(IntPtr.Zero, null, 0);
【问题讨论】:
-
唉,据我所知,您无法锁定回收站,所以即使您在实际清空它之前检查它是否需要清空,其他一些进程可能会潜入并在您之后立即删除文件在清空之前检查和。因此,该文件不会被删除。
-
我愿意接受这个风险。基本上,如果我的代码检查回收站 - 发现它是空的 - 然后采取相应的行动,然后立即将一些东西添加到回收站..我可以接受。
标签: c#