文件的路径过长,超过了最大长度260个字符。

4
我正在一台富士通平板电脑上运行一个基于C# .NET WPF的应用程序,该平板电脑运行Windows 7操作系统,并访问安装在用户AppData文件夹中的SQL Server CE 3.5数据库。这个应用程序在其他同类型的平板电脑以及普通的笔记本电脑或台式电脑上都能正常工作。
但是,当这个应用程序在特定的一台平板电脑上运行时,会出现以下错误:
The file resolves to a path that is too long. The maximum length is 260 characters 
[File name = c:\Users\tester\AppData\Roaming\Fourmative\AppDatabase\MyDatabase#1.sdf]

我已经了解了Windows路径名称的限制,最大长度为260个字符。然而,正如您所看到的,这个路径的长度仅为72个字符。

另外,由于应用程序作为安装程序的一部分安装在用户的AppData文件夹中,因此我无法真正控制任何一个用户机器上此路径指向的确切位置。

我认为这必须意味着实际路径实际上是从某种方式映射出来的?因此,我的问题是,如何从命令行找到完整的实际路径(必须达到260个字符),以便确定如何真正解决此问题。


1
你觉得能不能使用进程监视器来跟踪哪个系统调用实际上失败了? - Neil
路径中的任何目录是否可能是引用最终导致指定文件路径过长的目录的联接点? - Andriy M
你解决了这个问题吗?我使用短路径也遇到了同样的错误。 - Erik Ovegård
2个回答

3

Windows路径是无限制的,但需要使用不同的语法。

来自http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

Windows API有许多函数也有Unicode版本,允许最大总路径长度为32,767个字符。这种类型的路径由用反斜杠分隔的组件组成,每个组件的长度最多为GetVolumeInformation函数返回的lpMaximumComponentLength参数的值(通常为255个字符)。要指定扩展长度路径,请使用“\? \”前缀。例如,“\? \D:\very long path”。


感谢您的回复。我将尝试更改代码以查看是否有所帮助。然而,我的真正问题是消息指示路径超过260个字符。但实际上,路径只有72个字符长。您有任何想法为什么会出现这种情况吗? - Richard Hardy

-1

我不确定"MyDatabase#1.sdf"是一个有效的文件名。我怀疑#不是一个有效的字符,它可能是问题的原因,不知何故...


在Windows系统中,#是一个有效的文件名字符。 - Roger Lipscombe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接