点本地文件来处理 DLL Hell 问题吗?

发布于 2024-09-25 19:18:57 字数 249 浏览 0 评论 0原文

我读过,在应用程序目录中放置一个名为 .exe.local 的空文件将导致应用程序首先在该目录中查找 DLL 和 < code>OCXs 以避免系统其他地方发现的 DLLOCXs 发生冲突的问题。

但是应用程序不是首先会在应用程序目录中查找吗? .local 文件实际上有什么作用?

I've read that placing an empty file named <AppName>.exe.local in the application directory will cause the application to look in that directory first for DLLs and OCXs so as to avoid issues with conflicting DLLs and OCXs found elsewhere on the system.

But doesn't the application first look in the application directory anyway? What effect does the .local file actually have?

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

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

发布评论

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

评论(2

最美不过初阳 2024-10-02 19:18:57

坦白说,我以前从未听说过 .local 方案,但快速搜索后发现了 这篇文章 很好地解释了这一点:

对于应用程序foo.exe,如果存在文件foo.exe.local,Windows将首先查看foo.exe的应用程序目录,然后开始常规的dll搜索。为了缓解 COM 问题,重定向既适用于完整路径 dll 加载,也适用于部分名称加载。

看来 .local 文件甚至会首先强制对应用程序目录进行绝对路径搜索,而通常绝对路径不会更改,只有相对路径遵循 DLL 搜索顺序

To be frank, I've never heard of the .local scheme before, but a quick search brought up this article which quite explains it:

For an application foo.exe, if there is a file foo.exe.local exists, Windows will first look at foo.exe’s application directory, before start the regular dll search. To mitigate the COM problem, the redirection applies both to full path dll loading, as well as partial name loading.

It appears that the .local file forces even absolute-path searches to the application directory first, whereas usually absolute paths are unchanged and only relative paths follow the DLL search order.

橘虞初梦 2024-10-02 19:18:57

应用程序可以依赖于特定的
共享 DLL 的版本并开始
如果另一个应用程序失败
安装较新或较旧的
相同 DLL 的版本。有两个
确保您的应用程序的方法
使用正确的 DLL:DLL 重定向
和并排组件。
开发人员和管理员应该
对现有的DLL使用重定向
应用程序,因为它不
要求对
应用。如果您正在创建一个新的
应用程序或更新应用程序
并希望隔离您的应用程序
从潜在问题出发,创建一个
并排组件。

参考:动态链接库重定向

Applications can depend on a specific
version of a shared DLL and start to
fail if another application is
installed with a newer or older
version of the same DLL. There are two
ways to ensure that your application
uses the correct DLL: DLL redirection
and side-by-side components.
Developers and administrators should
use DLL redirection for existing
applications, because it does not
require any changes to the
application. If you are creating a new
application or updating an application
and want to isolate your application
from potential problems, create a
side-by-side component.

Ref.: Dynamic-Link Library Redirection

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