【发布时间】:2013-02-12 16:09:12
【问题描述】:
我正在使用 Python,但我认为 C# 中存在同样的问题。
我希望能够支持扩展路径(len > 260 的路径,表示为 //?/c:/blah/blah)。看起来将文件移动到回收站的标准方法是通过 SHFileOperationW 或 SHFileOperation。
在 python 中,有用的 xplatform 库 move2trash 使用 SHFileOperationW。一些关于 C# 的文章说要使用相同的东西。
SHFileOperationW 的问题在于它不支持扩展路径。这是 SH 工具的一般限制。
有没有人有处理回收站和扩展路径的技巧?
参考链接:C# version、Python version
【问题讨论】:
-
我刚刚发现了这个 stackoverflow 问题,stackoverflow.com/questions/11737109/…。调查它是否有答案。
-
这是适用于 Windows 的,对吧?
-
实际上使用 Win32API 的任何语言都会存在同样的问题。 (鉴于此,使用language-agnostic 代替随机语言标签可能会更好。)
-
您需要 Vista 或更高版本吗?然后你可以使用
IFileOperation,它适用于任何你可以构造IShellItem的东西。这可能只会导致更有用的错误,而不是成功,但值得尝试。 -
另外,IIRC,Vista Explorer 处理此问题的方式是将文件实际重命名为其“路径压缩”等效项(有关某些背景,请参阅here),然后再将其丢弃。 (XP 资源管理器不必这样做,因为它甚至不会让您首先看到文件……)您可以使用
GetShortPathName更简单地(即使在 XP 中)做同样的事情。跨度>
标签: c# python windows winapi recycle-bin