IIS и Delphi - получите папку приложения внутри ISAPI - PullRequest
5 голосов
/ 17 октября 2011

При запуске приложения ISAPI в IIS, если мы вызовем ParamStr(0) или Application.ExeName внутри нашего ISAPI, мы получим папку, в которой установлен IIS (C: \ windows ...).

Есть ли способ получить путь к папке, содержащей мой ISAPI вместо папки приложения IIS?

1 Ответ

6 голосов
/ 17 октября 2011

Ваше приложение ISAPI является библиотекой (DLL), поэтому вы можете использовать этот подход для получения его папки:

ExtractFilePath (GetModuleName (HInstance))

ИспользованиеExtractFileDir() вместо ExtractFilePath(), если вам не нужна последняя обратная косая черта.

Обоснование: Согласно документации Delphi,

Несколько переменных, объявленных в системном блоке, имеют особуюинтерес к этим программным библиотекам.... Во время жизни библиотеки HInstance содержит свой дескриптор экземпляра.

Используя GetModuleName (), вы получаете имя файла этой DLL.ParamStr (0), с другой стороны, содержит имя основного EXE-файла, куда была загружена эта DLL.

...