C#:OLE文件的最大文件名长度

时间:2010-10-25 11:58:09

标签: c# file ole maxlength

我使用WinAPI函数在C#中创建OLE文件。 WinAPI函数是:

   [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);

我在C#应用程序中使用了这个函数,如下所示:

     hResult = OleAPI.OleCreateFromFile(ref clsid,
                                            sourceFileFullPath,
                                            ref IID_IOleObject,
                                            (uint)OLERENDER.OLERENDER_DRAW,
                                            IntPtr.Zero,
                                            pOleClientSite,
                                            pStorage,
                                            out pOleObjectOut);

该功能完美无缺。 但是当文件的文件名长度为140时,无法创建OLE文件。 hResult的返回值是-2147467259。

的价值        sourceFileFullPath = “C:\用户\管理员\应用程序数据\本地\ TEMP \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx”

文件名长度(CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx)为140。

但是当我将文件名修剪为120时,它确实有效。

我想知道OLE文件的文件名长度是否有任何限制。 因为我尝试了不同的应用程序文件(doc,docx,txt,pdf ...)。结果因不同文件而异。

我不知道此API支持的文件名长度是多少。或者它取决于操作系统?我正在使用Windows Server 2008。

由于 普拉卡什

1 个答案:

答案 0 :(得分:0)

完整文件名长度的最大文件名长度(包括路径)为(about)259个字符。您粘贴的路径长度为216个字符,因此应该在限制之下。

MSDN pages没有描述特定的最大长度意味着259个字符应该是最大值。

我找不到有关这种差异的任何文件。也许您的一条或多条路径是路径名称的软链接,实际上更长。