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

发布于 2024-09-29 11:27:24 字数 1687 浏览 3 评论 0原文

我使用 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:\Users\Administrator\AppData\Local\Temp\TmpTzStore1\pju3wswj.jmq\000008F6\CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue 500kbCalendarRepeatIssue500kb.xlsx"

文件名的长度 (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb。 xlsx) 是 140。

但是当我将文件名修剪为 120 时,它起作用了。

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

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

谢谢 普拉卡什

I used WinAPI function to create OLE file in C#. The WinAPI function is:

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

I used this function in C# application as below:

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

The function works perfectly.
But when the length of filename of the file is 140, it failed to create OLE file. The return value of hResult is -2147467259.

The value of
sourceFileFullPath="C:\Users\Administrator\AppData\Local\Temp\TmpTzStore1\pju3wswj.jmq\000008F6\CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx"

The length of filename (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx) is 140.

But when I trimmed the file name to 120, it worked.

I wanted to know if there is any limitation in the filename length for OLE file.
Since I tried it for different application files( doc,docx,txt,pdf...). The results varied for different files.

I don't know what is the exact the file name length that this API supports. Or it is dependent on the OS? I am using Windows Server 2008.

Thanks
Prakash

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远山浅 2024-10-06 11:27:24

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

MSDN 页面 未描述具体的最大长度意味着应为 259 个字符是最大的。

我找不到有关此差异的任何文档。也许您的一个或多个路径是指向实际上更长的路径名的软链接。

The maximum file name length of the complete filename length, including the path, is (about) 259 characters. The length of the path you pasted is 216 characters, so this should be under the limit.

That the MSDN pages do not describe a specific maximum length implies that 259 characters should be the maximum.

I could not find any documentation on this discrepancy. Maybe one or more of your paths are softlinks to path names that are in reality longer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文