LoadLibrary() путь к файлу
Я пытаюсь использовать функцию LoadLibrary(...), которая принимает строку с именем файла (.dll или.exe) или путь к файлу. У меня проблема, когда само имя файла имеет несколько точек / точек.
Пример:
HINSTANCE hInst = LoadLibrary(_T("..\\folder\\file.name.dots.exe"));
Дескриптор всегда нулевой, и я не могу просто изменить имя файла в этом случае. Microsoft упомянула несколько периодов в https://support.microsoft.com/en-ca/kb/324468 но я не верю, что это работает для имени файла. Есть идеи?
2 ответа
Как предлагается в указанной статье, всегда вычисляйте полный путь и передавайте его LoadLibrary
/LoadLibraryEx()
, Это не только устраняет точечный дефект, но и предотвращает уязвимость системы безопасности. Перехват текущего каталога для вашего приложения может привести к тому, что ваше приложение выполнит произвольный код.
См. MSDN на LoadLibraryEx для лучшего понимания сложностей использования LoadLibrary.
Мне кажется, что проблема джентльмена проистекает из нескольких точек в пределах BASENAME, например:
C:\ Users \ джо \elephant.doc.old
Есть, конечно, сопутствующее соглашение "искалеченного имени файла", которое отображает это в нечто вроде:
C:\ Users \ джо \elepha~2.old
Если вы используете искаженные имена файлов - которые видны из окна DOS - у вас не должно быть проблем, мой юный друг.