Directory.SetCurrentDirectory抛出PathTooLongException

时间:2010-10-29 08:27:46

标签: c# pathtoolongexception

有关stackoverflow的几个相关问题,但要么我的情况不同,要么我太愚蠢,无法将这些问题与情况联系起来。我希望有人能帮助我。此外,我甚至不是一个.NET开发人员,所以我提前为任何错误的术语使用道歉。

我的方案如下:用于部署.net应用程序的工具(One Click?)将其放在一个全名超过300个字符的目录中。该应用程序使用第三方组件 - 我们称之为dbstore - 处理驻留在应用程序部署目录中的指定文件。

到目前为止,我们使用Assembly.GetExecutingAssembly().GetName().CodeBase构造要传递给dbstore的文件的完全限定名称。但dbstore使用旧式API并在尝试打开文件时失败。

由于预计不会很快更改dbstore,因此建议将应用程序chdir添加到部署目录,并将当前目录中的相对路径名称传递给它。这也是已接受的回复PathTooLongException in C# code

中描述的方法

但是我发现Directory.SetCurrentDirectory也会抛出PathTooLongException。即使我使用UNC路径名称,例如以\\?\0000000000000\...

开头的名称,也会发生这种情况

我做了一些根本错误的事吗?还有其他功能可以使用吗?

编辑:似乎没有办法实现我想要的东西。据我所知,没有办法将当前目录设置为长路径。

1 个答案:

答案 0 :(得分:0)

使用Environment.SetCurrentDirectory()时会得到类似的结果吗?

如果是这样,您可能希望在子文件夹之后更改目录子文件夹。

修改
Windows实际上为文件路径(WinXP)或260个字符(Vista)设置了255个字符的限制。 请注意,此限制不适用于文件系统,因此您可以将文件存储在如此长的目录路径中,但Windows资源管理器和许多Windows服务无法从此类路径中读取。

实际上它似乎也包含.NET框架方法,因为您无法访问这些文件。您可能需要编写自己的文件系统API,但这有点太多开销。你不能缩短文件路径吗? Windows是否提供了一种缩短的文件寻址方式(如8个八位字节的文件名)?

来源: http://labnol.blogspot.com/2006/10/limitations-with-long-file-names-on.html