Mel*_*els 1 .net c# file-io recycle-bin delete-file
我有一段代码调用 Microsoft.VisualBasic.FileIO.FileSystem 类(在 Microsoft.VisualBasic 程序集中)中的 DeleteFile 方法,以便将文件发送到回收站而不是永久删除它。此代码位于托管 Windows 服务中,并在 Win Server 2k8 计算机(32 位)上运行。
相关行:
FileSystem.DeleteFile(file.FullName, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);
当然,我有“using Microsoft.VisualBasic.FileIO;” 在类的顶部,我验证了被调用的方法确实位于该命名空间中的 FileSystem 类上。在上面的行中,我引用了一个本地变量“file” - 这是本地文件的 FileInfo(例如,C:\path\to\file.txt),我确信它存在。应用程序可以完全控制文件及其所在的目录。
当文件从其所在的目录中消失时,这似乎工作得很好。但是,该文件不会显示在回收站中。我尝试手动检查 C:\$Recycle.Bin 文件夹,因为我怀疑会话 0 中运行的 Windows 服务会使其最终进入不同的回收站,但所有回收站都显示为空。
有人知道导致这种行为的原因吗?
顺便说一句 - 机器上的相关驱动器(或任何其他驱动器)上绝对没有可用空间不足,并且文件非常小(几千字节,因此它不会超过回收站阈值)。
我假设您的服务在与您自己的用户帐户(或特殊服务帐户之一)不同的用户帐户下运行。
我不认为一个用户可以查看另一用户回收站的内容 - 即使您可以在 C:\$Recycle.Bin 文件夹中看到它们存在的一些证据。
如果它在另一个用户帐户下运行,请尝试使用该帐户登录计算机,然后检查回收站。如果它在服务帐户(例如本地服务、网络服务或本地系统)下运行,则会更加棘手。
鉴于回收站是分开的,您打算如何利用文件位于回收站中的事实?