search - 我们如何保护自己免受其他第三方将与我们的某些名称相同的 DLL 安装到 C 中的影响 :\WINDOWS?

标签 search dll winapi path

我们的产品包括多个 DLL,这些 DLL 从开源构建到具有开源开发人员提供的默认名称的文件中。我们小心地将文件安装在我们自己的目录中,并仔细管理搜索路径(仅适用于我们的进程)以使加载程序满意。

另一位开发人员 - 一位杰出的智力 - 决定将他们自己构建的一些相同的开放源代码安装到 C:\WINDOWS 中,使用相同的默认 DLL 文件名会更容易。因此,当我们启动依赖于这些开源 DLL 的进程时,系统会在我们的目录之前搜索 C:\WINDOWS,并找到其他开发人员安装的 DLL。当然,它们是不相容的。

到目前为止我想到的想法:

  • 重命名我们所有的 DLL 以避免使用默认名称,这只会使
    不太可能我们会遇到碰撞
  • 通过完整路径加载我们所有的 DLL,以便加载器将它们的名称捕获到
    RAM,下次请求时不会搜索其他任何地方

  • 由于各种原因,目前这两种选择都不合适。

    我们还能做些什么来抵御世界上高耸的智慧?

    最佳答案

    您只有两个选择:将 DLL 部署在与 EXE 相同的目录中(这是 Windows 首先查找的位置)或使用 list 并将 DLL 部署到 Windows 并行缓存。我不认为后一个选项在开源世界中很常见,但如果您想在不同的应用程序之间共享 DLL,它是唯一真正的解决方案。

    关于search - 我们如何保护自己免受其他第三方将与我们的某些名称相同的 DLL 安装到 C 中的影响 :\WINDOWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428963/

    相关文章:

    php - 我的 wordpress 网站未在 google 中列出

    android - 像 Youtube 应用程序一样搜索 View

    c++ - DLL 中使用的全局变量

    c++ - 如何用音频数据填充 AVFrame

    ruby-on-rails - Rails - 安装后 Sunspot Solr 404 错误

    c# - 尝试将 uint8_t* 从 C# 传递到 C++ 的奇怪问题

    c - 需要帮助从 Delphi 正确调用 C 函数

    c++ - 命名管道和 "GetNamedPipeHandleState"

    c# - 如何在C#程序中获取任务栏通知区域宽度?

    Python 搜索和替换无法正确替换