windows - 为什么加载 dll 不需要完整的文件路径?在什么情况下此功能会有用?

标签 windows dllimport dll loadlibrary

为什么 Windows 在调用 LoadLibrary 时不需要完整的文件路径,或者对于带有已注册 DLL 的 CLSID 等。在什么情况下有人会受益于不得不退回到 DLL 搜索顺序来查找 dll?

我的意思是,%SystemRoot% 或 %ProgramFiles% 等变量可以将您带到适当的文件夹,而 .\会让您留在当前目录中。那么为什么要含糊其词?

最佳答案

对于与 GetProcAddress() 的显式链接,我认为应该尽可能使用 DLL 的绝对路径。

对于与 .lib 文件的隐式链接,必须在链接时确定 DLL 的名称,这排除了绝对路径。

最安全的做法是将 DLL 放在与可执行文件相同的目录中,在 %Program Files% 下并受 UAC 保护,并使用新的 DLL 搜索顺序。

关于windows - 为什么加载 dll 不需要完整的文件路径?在什么情况下此功能会有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746715/

相关文章:

c# - 从外部函数 C++ DLL 调用静态函数

C# DllImport 调用在一台计算机上引发异常,但在另一台计算机上有效

c# - 如何在 C# 中阻止键盘和鼠标输入?

c# - 固定地址在.NET中被占用

c# - 带定时器的 Windows 服务

c# - 在 C# 中使用非托管 C++ 代码对所有类型 double 返回 0

c++ - 无法编译访问另一个 dll 的 dll

windows - 我正在尝试使用 Windows 批处理文件为来自 stdin 的数据(到日志文件中)添加时间戳

c# - 如何创建 nim dll 并从 C# 调用它

r - 动态库未在 R 二进制包构建中加载