我正在使用Python,但我认为在C#中存在相同的问题。我希望能够支持扩展路径(长度大于260的路径,表示为//?/c:/blah/blah)。看起来将文件移动到回收站的标准方法是通过SHFileOperationW或SHFileOperation。在Python中,有一个很有用的xplatform库move2trash,它使用SHFileOperationW。一些关于C#的文章说要使用相同的东西。SHFileOperationW的问题在于它不支持扩展路径。这是SH工具的一般限制。有人有处理回收站和扩展路径的技巧吗?参考链接:C#版本,Python版本。
如果您想查看一些C#解决方案,可以在Stack Overflow上快速搜索“PathTooLongException”,会出现很多讨论。您可能可以检索“短名称”并使用它来移动文件。此外,您还可以查看这个C#库中的处理方式,该库提供了一个解决方法,链接为http://bcl.codeplex.com/wikipage?title=Long%20Path。
IFileOperation
,它可以在任何你可以构建IShellItem
的东西上工作。这可能只会导致一个更有用的错误,而不是成功,但值得一试。 - abarnertGetShortPathName
更简单地完成类似的操作。 - abarnert