A.A.Z., советую все же использовать API, чтобы узнать короткое имя. Иначе можно здорово обломаться если, к примеру, в NTFS пользователь отключит генерацию коротких имен. Кроме того, в NTFS и FAT32 длинные имена генерируются по разным алгоритмам, это хорошо видно на именах, в которых присутствуют русские буквы.
P.S. Кстати, ты это учитывал?
Windows NT/2000: In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to nearly 32,000 wide characters, call the Unicode version of the function and prepend "\\?\" to the path.
Lasciate ogni speranza, voi ch'entrate.