Как преобразовать длинное имя файла в короткое?
Вот код:
------------------------------------------------------------------------
class Utilites
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)]
string path,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder shortPath,
int shortPathLength
);
}
class Programm
{
[STAThread]
static void Main(string[] args)
{
StringBuilder shortPath = new StringBuilder(255);
Utilites.GetShortPathName(@"F:\Documents and Settings \PVA\My Documents\Книга1.xls", shortPath, shortPath.Capacity);
Console.WriteLine(shortPath.ToString());
}
}
------------------------------------------------------------------------
Возвращает пустую строку.
Где-то вычитал, что функция GetShortPathName из kernel32.dll может работать только файловой системой FAT.
Кто-нибудьт знает как получить короткое имя файла из длинного в NTFS?
За-чем?
Получает после этого отклик, который содержить короткие имена файлов.
Нужно сравнивать отклик с эталонным значением.
Соотвественно эталонное значение также содержит короткие имена файлов.
Эталонное значение нужно сформировать программно.
Цитата:
Где-то вычитал, что функция GetShortPathName из kernel32.dll может работать только файловой системой FAT
лучше всего читать об API в MSDN. Я посмотрел, не увидел там такого упоминания.
Ну и напоследок: а вы попробовали?