我可以使GetOpenFileName返回路径长于MAX_PATH吗?

时间:2014-06-02 07:08:46

标签: c++ winapi mfc

我正在使用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上,我甚至无法选择任何内容,我明白这一点:

enter image description here

所以我很好奇,因为操作系统本身支持长的Unicode路径,前缀为\\?\(包括XP),有没有办法哄骗GetOpenFileName返回那种格式的路径,而不受259的限制字符?

1 个答案:

答案 0 :(得分:4)

Windows文件对话框,即使是新的Vista IFileDialog,也不会返回超过MAX_PATH的文件名。