LoadLibrary() 文件路径

LoadLibrary() file path

本文关键字:路径 文件 LoadLibrary      更新时间:2023-10-16

我正在尝试使用函数LoadLibrary(...),该函数将字符串接收到文件名(.dll或.exe)或文件路径。我遇到的问题是文件名本身有多个句点/点。

例:

HINSTANCE hInst = LoadLibrary(_T("..\folder\file.name.dots.exe"));

句柄始终为空,在这种情况下我不能简单地更改文件名。Microsoft https://support.microsoft.com/en-ca/kb/324468 提到了多个句点,但我认为它不适用于文件名。有什么想法吗?

如引用文章中所建议的,始终计算完全限定的路径并将其传递给LoadLibrary/LoadLibraryEx() 。这不仅可以解决点缺陷,还可以防止安全漏洞。劫持应用程序的当前目录可能会导致应用运行任意代码。

请参阅 LoadLibraryEx 上的 MSDN,以更好地了解使用 LoadLibrary 的复杂性。

在我看来

,这位绅士的问题源于一个基本名称中的多个点,例如:

    c:\users\joe\elephant.doc.old

当然,还有伴随的"损坏文件名"约定,将其映射到以下内容:

    c:\users\joe\elepha~2.old

如果你使用被破坏的文件名——从DOS窗口中可以看到——你应该没有麻烦,我的年轻朋友。