我正在使用GetOpenFileName API,或者在我的情况下使用MFC的CFileDialog来打开文件,非常类似于shown here(除了单个文件选择 - 即我提供了自己更长的缓冲区在m_ofn.lpstrFile
中。)
除非用户选择路径长度超过MAX_PATH - 1
(或259)个字符的文件,否则它可以正常工作。在这种情况下会发生以下情况:
在我的Windows 8.1上,它将用户选择的路径转换为古老的8.3短文件格式:"C:\TESTDE~1\NEWFOL~1"
在Windows XP上,我甚至无法选择任何内容,我明白这一点:
所以我很好奇,因为操作系统本身支持长的Unicode路径,前缀为\\?\
(包括XP),有没有办法哄骗GetOpenFileName返回那种格式的路径,而不受259的限制字符?
答案 0 :(得分:4)
Windows文件对话框,即使是新的Vista IFileDialog
,也不会返回超过MAX_PATH
的文件名。