当前位置:  开发笔记 > 开发工具 > 正文

是否可以从批处理文件或cmd脚本向DLL搜索路径添加目录?

如何解决《是否可以从批处理文件或cmd脚本向DLL搜索路径添加目录?》经验,为你挑选了3个好方法。

MSDN说,函数SetDllDirectory()可用于将目录插入DLL搜索路径.可以从批处理文件或cmd脚本访问此函数,也许使用via cscript?

我们的目标是在%WINDIR%等预先存在的旧版本之前找到我们的开发版本的dll,而不必为此编写程序.

提前感谢您的时间和想法.



1> jussij..:

我们的目标是在%WINDIR%等预先存在的旧版本之前找到我们的开发版本的dll,而不必为此编写程序.

如果DLL与可执行文件不在同一文件夹中,则Windows将在系统路径中指定的文件夹中搜索该文件.所以你需要做的就是把你的文件夹放在路径的开头.

您可以使用以下批处理命令执行此操作:

 set PATH=c:\MyDLLFolder;%PATH%

如果路径包含空格,则需要使用以下批处理命令:

 set PATH="C:\My DLL Folder";%PATH%

但请记住,此路径更改仅针对当前控制台会话的PATH.如果关闭并重新打开控制台,则这些路径更改将丢失.



2> 小智..:

您可以将DLL放在与可执行文件相同的路径中,该文件在%WINDIR%之前首先搜索.无法直接从批处理文件中调用SetDllDirectory.

但是,您可以在%PATH%变量中插入DLL目录,然后Windows将在那里找到DLL.

set PATH=C:\path to your dll;%PATH%



3> JellicleCat..:

为了消除有关dll搜索顺序的争议(在@jussij答案中的注释中),以下是从Microsoft的文档中提取的列表:

如果SafeDllSearchMode启用,则搜索顺序如下:

    从中加载应用程序的目录。

    系统目录。使用该GetSystemDirectory函数获取此目录的路径。

    16位系统目录。没有获取该目录路径的函数,但会对其进行搜索。

    Windows目录。使用该GetWindowsDirectory函数获取此目录的路径。

    当前目录。

    PATH环境变量中列出的目录。请注意,这不包括“应用程序路径”注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用“应用程序路径”键。

如果SafeDllSearchMode禁用,则搜索顺序如下:

    从中加载应用程序的目录。

    当前目录。

    系统目录。使用该GetSystemDirectory函数获取此目录的路径。

    16位系统目录。没有获取该目录路径的函数,但会对其进行搜索。

    Windows目录。使用该GetWindowsDirectory函数获取此目录的路径。

    PATH环境变量中列出的目录。请注意,这不包括“应用程序路径”注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用“应用程序路径”键。

请参阅http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms682586(v=vs.85).aspx#standard_search_order_for_desktop_applications

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有