我有一段代码调用 Microsoft.VisualBasic.FileIO.FileSystem 类(在 Microsoft.VisualBasic 程序集中)中的 DeleteFile 方法,以便将文件发送到回收站而不是永久删除它。此代码位于托管 Windows 服务中,并在 Win Server 2k8 机器(32 位)上运行。
相关线路:
FileSystem.DeleteFile(file.FullName, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);
当然,我有“使用 Microsoft.VisualBasic.FileIO;” 在类的顶部,我验证了被调用的方法确实在该命名空间中的 FileSystem 类上。在上面的行中,我指的是一个局部变量“file”——它是一个本地文件(比如 C:\path\to\file.txt)的 FileInfo,我确信它存在。该应用程序可以完全控制文件及其所在的目录。
这似乎工作得很好,因为文件从它所在的目录中消失了。但是,该文件没有出现在回收站中。我尝试手动检查 C:\$Recycle.Bin 文件夹,因为我怀疑会话 0 中运行的 Windows 服务会使其最终进入不同的回收站,但所有回收站都显示为空。
有人知道导致这种行为的原因吗?
顺便说一句 - 机器绝对没有问题驱动器(或任何其他驱动器)上的可用空间,并且文件非常小(几千字节,所以它不超过回收站阈值)。