Как сказал @Hans Passant, вас укусила устаревшая поддержка 8.3 имен MSDOS .
У вашего LovelyTable.xlsx
также есть вторичное имя, что-то вроде LOVELY~1.XLS
, и это второе имя - то, что FindFirstFile()/FindNextFile()
дает вам.
Похоже, что FindFirstFileEx()
может отфильтровать 8.3 имен:
FindFirstFileEx(searchPattern, FindExInfoBasic, ...)
Если вы не хотите менять приложение, вы также можете удалить короткие имена из тома, а также отключить их генерацию. Для этого вы можете проверить команду fsutil (ее подкоманду 8dot3name
), но помните, что это может привести к поломке некоторых программ даже в наши дни. (Например, программное обеспечение, полагая, что оно установлено под C:\PROGRA~2\
)