我正在使用 C++ 并通过网络访问 UNC 路径。此路径略大于 MAX_PATH。所以我无法获得文件句柄。
但是如果我在有问题的计算机上运行程序,路径不会大于 MAX_PATH。所以我可以得到一个文件句柄。如果我重命名文件以减少字符(减去计算机名称的长度),我可以访问该文件。
即使知道 UNC 路径中的计算机名称超过了 MAX_PATH 限制,是否可以通过网络访问此文件?
我正在使用 C++ 并通过网络访问 UNC 路径。此路径略大于 MAX_PATH。所以我无法获得文件句柄。
但是如果我在有问题的计算机上运行程序,路径不会大于 MAX_PATH。所以我可以得到一个文件句柄。如果我重命名文件以减少字符(减去计算机名称的长度),我可以访问该文件。
即使知道 UNC 路径中的计算机名称超过了 MAX_PATH 限制,是否可以通过网络访问此文件?
我记得有一些功能,比如\\?\
在路径的开头使用来绕过MAX_PATH
限制。这是MSDN上的参考:
http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
对于远程计算机,您将使用路径名,例如:\\?\unc\server\share\path\file
. 这\\?\unc\
是特殊前缀,不用作实际文件名的一部分。
如果您在将文件名转换为短 (8.3) 文件名后尝试打开文件,您可能能够获得该文件的句柄。如果失败了,您可以将文件所在的目录映射为驱动器并以这种方式访问文件吗?