J'ai utilisé la fonction WinAPI pour créer un fichier OLE en C#. La fonction est WinAPI:C#: Longueur maximale du nom de fichier pour le fichier OLE
[DllImport("ole32.dll")]
public static extern int OleCreateFromFile(
[In] ref Guid rclsid,
[MarshalAs(UnmanagedType.LPWStr)] string lpszFileName,
[In] ref Guid riid, uint renderopt,
[In] IntPtr pFormatEtc,
IOleClientSite pClientSite,
IStorage pStg,
[MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
J'ai utilisé cette fonction dans l'application C# comme ci-dessous:
hResult = OleAPI.OleCreateFromFile(ref clsid,
sourceFileFullPath,
ref IID_IOleObject,
(uint)OLERENDER.OLERENDER_DRAW,
IntPtr.Zero,
pOleClientSite,
pStorage,
out pOleObjectOut);
La fonction fonctionne parfaitement. Mais lorsque la longueur du nom de fichier du fichier est 140, il n'a pas réussi à créer le fichier OLE. La valeur de retour de hResult est -2147467259.
La valeur de sourceFileFullPath = "C: \ Users \ Administrateur \ AppData \ Local \ Temp \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx"
La longueur du nom de fichier (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx) est 140.
Mais quand j'ai coupé le nom de fichier à 120, cela a fonctionné.
Je voulais savoir s'il y avait une limitation dans la longueur du nom de fichier OLE. Depuis que je l'ai essayé pour différents fichiers d'application (doc, docx, txt, pdf ...). Les résultats varient pour différents fichiers.
Je ne sais pas quelle est la longueur exacte du nom de fichier que cette API prend en charge. Ou cela dépend de l'OS? J'utilise Windows Server 2008.
Merci Prakash
http://stackoverflow.com/questions/265769/maximum-filename-length-in-ntfs-xp-and-vista – Aliostad