我试图使用函数LoadLibrary(.)它将字符串输入到文件名(.dll或.exe)或文件路径。我遇到的问题是当文件名本身有多个句点/点时。
示例:
HINSTANCE hInst = LoadLibrary(_T("..\\folder\\file.name.dots.exe"));句柄始终为空,在这种情况下,我不能简单地更改文件名。微软在https://support.microsoft.com/en-ca/kb/324468中提到了多个句点,但我不认为它适用于文件名。有什么想法吗?
发布于 2016-07-13 17:46:17
正如引用的文章中所建议的,始终计算完全限定的路径并将其传递给LoadLibrary/LoadLibraryEx()。这不仅可以避免点缺陷,还可以防止安全漏洞。劫持应用程序的当前目录会导致应用程序运行任意代码。
请参阅基于LoadLibraryEx的MSDN以更好地理解使用LoadLibrary的复杂性。
发布于 2016-07-13 19:56:22
在我看来,这位先生的问题来自于一个BASENAME中的多个点,如:
c:\users\joe\elephant.doc.old
当然,伴随而来的“损坏文件名”约定将此映射为以下内容:
c:\users\joe\elepha~2.old
如果你使用损坏的文件名--从DOS窗口中可以看到--你应该没有问题,我的年轻朋友。
https://stackoverflow.com/questions/38358268
复制相似问题