c++ - 是否可以为 FindFirstFile() 函数使用引号?

标签 c++ winapi

我尝试使用 FindFirstFile() 返回特定的 .xls 文件。然而,由于命名约定,它也会返回 .xlsx。可以在文件资源管理器中使用“*.xls”以仅返回 .xls 文件。这对函数有用吗

最佳答案

正如@Hans Passant 所说,您被对 8.3 MSDOS names 的遗留支持所困扰.

您的 LovelyTable.xlsx 还有一个辅助名称,例如 LOVELY~1.XLS 而这个辅助名称就是 FindFirstFile()/FindNextFile() 给你。避免此类结果的唯一可靠方法是重新检查返回给您的内容。

如果您不想更改应用程序,您还可以从卷中删除短名称并禁用它们的生成。您可以查看 fsutil命令(它的 8dot3name 子命令),但请注意,即使在现在,这也可能会破坏某些软件。 (例如软件认为它安装在C:\PROGRA~2\下)


我认为 FindFirstFileEx()可以过滤掉8.3的名字:

FindFirstFileEx(searchPattern, FindExInfoBasic, ...)

但它不能。感谢@RbMm 清除了这个问题。 FindExInfoBasic 仅避免填写WIN32_FIND_DATAcAlternateFileName 字段。您仍然会收到通过短名称发现的文件。

关于c++ - 是否可以为 FindFirstFile() 函数使用引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631624/

相关文章:

c++ - 字符串补偿 : reference to non-static member function must be called

c++ - C++ 中的嵌套类型

c++ - MATLAB R2013b 不支持 Visual Studio 2013?

C++ Hook 一个dll?

c++ - 在不使指针无效的情况下在 Windows 上调整内存映射文件的大小

c++ - QSharedData 和运算符=

c# - 带 2 种通信方式的 MS Word 自动化

c++ - Qt5、透明窗口和滚轮事件

windows - 在 WIndows 上获取 64 位进程的 TEB

c++ - UTF16(例如 wide-winapi 函数所使用的)字符是否总是 2 个字节长?