C++ 在windows中获取替代文件名

C++ 在windows中获取替代文件名,c++,windows,winapi,unicode,filesystems,C++,Windows,Winapi,Unicode,Filesystems,我正在windows上运行我的程序,该程序将枚举目录中的文件,并将其传递给处理这些文件的其他库。虽然我的程序支持unicode,但库不支持,所以我必须将unicode文件路径和名称转换为ANSI。只要文件名中没有unicode字符,就可以了 我知道windows中的每个文件和目录都可以通过其8.3名称访问,但我不知道如何通过windows api获取该名称。 应该注意的是,可以关闭短名称生成() 应该注意的是,可以关闭shortname生成()正确。请注意,如果用户在卷上禁用了8.3生成,则此调

我正在windows上运行我的程序,该程序将枚举目录中的文件,并将其传递给处理这些文件的其他库。虽然我的程序支持unicode,但库不支持,所以我必须将unicode文件路径和名称转换为ANSI。只要文件名中没有unicode字符,就可以了

我知道windows中的每个文件和目录都可以通过其8.3名称访问,但我不知道如何通过windows api获取该名称。

应该注意的是,可以关闭短名称生成()


应该注意的是,可以关闭shortname生成()

正确。请注意,如果用户在卷上禁用了8.3生成,则此调用可能会失败。fsutil命令行工具可以告诉您这一点。@EricLaw-MSFT-:谢谢,我已经在编辑答案,只是需要跟踪fsutil链接:)8.3名称还有其他问题,它们在复制操作期间不是100%持久的,我想您也可能会用完名称(几乎像散列冲突)正是我要找的,但找不到。非常感谢。对的请注意,如果用户在卷上禁用了8.3生成,则此调用可能会失败。fsutil命令行工具可以告诉您这一点。@EricLaw-MSFT-:谢谢,我已经在编辑答案,只是需要跟踪fsutil链接:)8.3名称还有其他问题,它们在复制操作期间不是100%持久的,我想您也可能会用完名称(几乎像散列冲突)正是我要找的,但找不到。非常感谢。