首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi中调用WinAPI函数SetDllDirectory()?

如何在Delphi中调用WinAPI函数SetDllDirectory()?
EN

Stack Overflow用户
提问于 2010-10-29 05:27:10
回答 3查看 4.7K关注 0票数 6

我希望防止通过访问当前工作目录加载恶意DLL,如http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx中所述

在我们的C++应用程序中实现的解决方案是对SetDllDirectory("")进行WinAPI调用,这将有效地从Windows DLL加载搜索路径中删除当前的工作目录。然而,这个解决方案似乎不适用于我们的Delphi应用程序,因为SetDllDirectory()函数不存在。

在Delphi中有没有和SetDllDirectory("")做同样事情的等效调用?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-10-29 05:43:16

这应该能起到作用:

代码语言:javascript
复制
function SetDllDirectory(lpPathName:PWideChar): Bool; stdcall; external 'kernel32.dll' name 'SetDllDirectoryW';
票数 7
EN

Stack Overflow用户

发布于 2010-10-29 05:40:13

调用SetDllDirectory('')不起作用?我看到它在最新版本的Windows.pas中被正确地声明了。如果你有一个没有声明的Delphi版本,你可以升级到最新版本的Delphi,或者自己声明它。

更新:,这就对了……延斯刚刚贴出了声明。

票数 5
EN

Stack Overflow用户

发布于 2010-10-29 17:31:40

代码语言:javascript
复制
uses DSiWin32;

if not DSiSetDllDirectory('path') then
   ....

DSiSetDllDirectory还将负责动态链接,并将在XP之前的SP1系统上优雅地失败。

DSiWin32是作为免费软件发布的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4047307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档