在Windows网络上以接近MAX_PATH的长度访问文件

时间:2020-03-06 14:31:18  来源:igfitidea点击:

我正在使用C ++并通过网络访问UNC路径。此路径略大于MAX_PATH。因此,我无法获取文件句柄。

但是,如果我在有问题的计算机上运行该程序,则该路径不会大于MAX_PATH。这样我就可以获得文件句柄。如果我将文件重命名为更少的字符(减去计算机名称的长度),则可以访问该文件。

即使知道UNC路径中的计算机名将其超过MAX_PATH限制,也可以通过网络访问该文件吗?

解决方案

如果在将文件名转换为短(8.3)文件名后尝试打开文件,则可能能够获取文件的句柄。无法将文件作为驱动器映射到该目录并以这种方式访问​​文件?

我记得有一些功能,例如在路径的开头使用" \?"来绕过" MAX_PATH"限制。这是MSDN上的参考:

http://msdn.microsoft.com/zh-CN/library/aa365247(VS.85).aspx

对于远程计算机,我们将使用路径名,例如:\?\ unc \ server \ share \ path \ file`。 " \?\ unc "是特殊前缀,不用作实际文件名的一部分。