c# - 使用 VB 的 FileSystem.DeleteFile 方法无法正常工作,将文件删除到 csharp 中的回收站

标签 c# .net file-io delete-file recycle-bin

我有一段代码调用 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 文件夹,因为我怀疑在 session 0 中运行的 Windows 服务会使它最终进入不同的回收站,但所有回收站都显示为空。

有人知道导致这种行为的原因吗?

顺便说一句 - 机器肯定没有用完有问题的驱动器(或任何其他驱动器)上的可用空间,并且文件非常小(几千字节,所以它不会超过回收站阈值)。

最佳答案

我假设您的服务在与您自己的用户帐户(或其中一个特殊服务帐户)不同的用户帐户下运行。

我认为一个用户不可能查看另一个用户回收站的内容 - 即使您可以在 C:\$Recycle.Bin 文件夹中看到它们存在的一些证据。


如果它在另一个用户帐户下运行,请尝试使用该帐户登录机器,然后检查回收站。如果它在服务帐户(例如本地服务、网络服务或本地系统)下运行,它将变得更加棘手。

鉴于回收站是分开的,您打算如何利用文件仍然在回收站中这一事实?

关于c# - 使用 VB 的 FileSystem.DeleteFile 方法无法正常工作,将文件删除到 csharp 中的回收站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647612/

相关文章:

c# - 为什么 File.Move 允许 2 个线程同时移动同一个文件?

file-io - 使用 Common Lisp 读取文件

C 编程 : Error in program. 不会显示用户输入的文件的最大/最小/平均值

c# - Azure Functions - 表存储绑定(bind)不起作用

c# - Lambda 表达式语法糖?

c# - 使用 Windows 应用商店应用程序设置 SendGrid

c# - 在 CoreFx 上使用 System.Data.SqlClient 时出现 UDT 不支持的 token 问题

c# - 为什么我不能在 Quartz.NET 中为 'typeof' 使用变量?

c# - 如何在 C# 中将 DateTime 对象转换为 dd/mm/yyyy?

c# - Webapi 2 属性路由不起作用