IIS 和 Delphi - 获取 ISAPI 中的应用程序文件夹

发布于 2024-12-10 11:39:42 字数 188 浏览 1 评论 0原文

在 IIS 上运行 ISAPI 应用程序时,如果我们在 ISAPI 中调用 ParamStr(0)Application.ExeName,我们将获得 IIS 的安装文件夹(C:\windows ...)。

有没有办法获取包含我的 ISAPI 而不是 IIS 的应用程序文件夹的文件夹路径?

When running an ISAPI application on IIS, if we call ParamStr(0) or Application.ExeName inside our ISAPI we will get the folder that IIS is installed (C:\windows...).

Is there any way of getting the folder path which contains my ISAPI instead of IIS's application folder?

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

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

发布评论

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

评论(1

水溶 2024-12-17 11:39:42

您的 ISAPI 应用程序是一个库 (DLL),因此您可以使用此方法来获取其文件夹:

ExtractFilePath(GetModuleName(HInstance))

如果不需要最后一个反斜杠,请使用 ExtractFileDir() 而不是 ExtractFilePath()

理由:根据 Delphi 文档,

系统单元中声明的几个变量对那些编程库特别感兴趣。 ...在库的生命周期中,HInstance 包含其实例句柄。

使用 GetModuleName() 可以获得该 DLL 的文件名。另一方面,ParamStr(0) 包含加载此 DLL 的主 EXE 的名称。

Your ISAPI application is a library (DLL), therefore you can use this approach to get its folder:

ExtractFilePath(GetModuleName(HInstance))

Use ExtractFileDir() instead of ExtractFilePath() if you don't need the last backslash.

Rationale: According to Delphi docs,

Several variables declared in the System unit are of special interest to those programming libraries. ... During a library's lifetime, HInstance contains its instance handle.

Using GetModuleName() you get that DLL's file name. ParamStr(0), on the other hand, contains the name of the main EXE where this DLL has been loaded to.

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