C# 是否使用一组特定的DLL运行程序?

C# 是否使用一组特定的DLL运行程序?,c#,windows,dll,C#,Windows,Dll,是否可以针对特定目录中的特定二进制文件而不是系统上当前安装的二进制文件运行程序?我也不能修改应用程序的源代码。最简单的方法是使用LoadLibrary调用动态加载DLL。这样,您可以指定要使用的DLL副本的完整路径。最简单的方法是使用LoadLibrary调用动态加载DLL。这样,您可以指定要使用的DLL副本的完整路径。如果它是本机DLL,则只需将DLL与可执行文件放在同一文件夹中即可。首先查找该文件夹。如果它是本机DLL,则只需将DLL与可执行文件放在同一文件夹中即可。首先查找该文件夹。最接近

是否可以针对特定目录中的特定二进制文件而不是系统上当前安装的二进制文件运行程序?我也不能修改应用程序的源代码。

最简单的方法是使用LoadLibrary调用动态加载DLL。这样,您可以指定要使用的DLL副本的完整路径。

最简单的方法是使用LoadLibrary调用动态加载DLL。这样,您可以指定要使用的DLL副本的完整路径。

如果它是本机DLL,则只需将DLL与可执行文件放在同一文件夹中即可。首先查找该文件夹。

如果它是本机DLL,则只需将DLL与可执行文件放在同一文件夹中即可。首先查找该文件夹。

最接近的方法是将更新的DLL放置在与.exe相同的目录中

以下是程序如何查找要加载的DLL(不包括已知DLL)的优先级列表

  • 当前进程的可执行模块所在的目录

  • 当前目录

  • Windows系统目录。GetSystemDirectory函数检索此目录的路径

  • Windows目录。GetWindowsDirectory函数检索此目录的路径

  • PATH环境变量中列出的目录

  • 如果您需要指定任意目录,那么第2项就是您的朋友。您可以将cd/放入目标目录,然后使用完整路径从该位置运行.exe。或者,您可以创建windows快捷方式并指定“起始位置:”值来设置应用程序的当前目录。如果所讨论的.exe更改其工作目录,则此操作将无法正常工作

    更新:虽然我现在很明显这个建议已经过时了,但它也是唯一一个涉及到使用“特定目录中的特定二进制文件”的建议,我认为这意味着任意目录可能不是安装了.exe的目录。
    而且,现在我看到这是用“C#”标记的,这确实使我的答案非常蹩脚,因为我认为.manifest的可用性

    最接近的方法是将更新的DLL与.exe放在同一目录中

    以下是程序如何查找要加载的DLL(不包括已知DLL)的优先级列表

  • 当前进程的可执行模块所在的目录

  • 当前目录

  • Windows系统目录。GetSystemDirectory函数检索此目录的路径

  • Windows目录。GetWindowsDirectory函数检索此目录的路径

  • PATH环境变量中列出的目录

  • 如果您需要指定任意目录,那么第2项就是您的朋友。您可以将cd/放入目标目录,然后使用完整路径从该位置运行.exe。或者,您可以创建windows快捷方式并指定“起始位置:”值来设置应用程序的当前目录。如果所讨论的.exe更改其工作目录,则此操作将无法正常工作

    更新:虽然我现在很明显这个建议已经过时了,但它也是唯一一个涉及到使用“特定目录中的特定二进制文件”的建议,我认为这意味着任意目录可能不是安装了.exe的目录。
    而且,现在我看到这是用“C#”标记的,这确实使我的答案非常蹩脚,因为我认为.manifest的可用性

    “当前安装在系统上”和“反对”是什么意思?非常不灵活。我可以问一下原因吗?@elyashiv当前正在修复库中的一个错误,但在此之前我希望有一个解决方案。请澄清“二进制”是指.Net程序集还是本机DLL。可以通过清单和/或app.config重定向DLL加载,但我对这方面不是很有经验,所以我将把它留给其他人来扩展到完整的答案。你所说的“当前安装在系统上”和“反对”是什么意思?非常不灵活。我可以问一下原因吗?@elyashiv当前正在修复库中的一个错误,但在此之前我希望有一个解决方案。请澄清“二进制”是指.Net程序集还是本机DLL。可以通过清单和/或app.config重定向DLL加载,但我对这方面不是很有经验,所以我将把它留给其他人来扩展,以得到完整的答案。如果所讨论的DLL是本机DLL,则为+1。加载的第一个将被其他LoadLibrary调用使用。。。DLL地狱的另一面:)+1,如果所讨论的DLL是本机DLL。加载的第一个将被其他LoadLibrary调用使用。。。地狱的另一面:)这完全是误导。目前的目录在搜索列表中已经有好几年没有那么高了。有这么高的安全漏洞,MS通过安全DLL搜索模式处理。细节在我的答案中的主题中。令人难以置信的是,有人会建议使用working dir搜索DLL。这是一个令人震惊的想法。这完全是误导。目前的目录在搜索列表中已经有好几年没有那么高了。有这么高的安全漏洞,MS通过安全DLL搜索模式处理。细节在我的答案中的主题中。令人难以置信的是,有人会建议使用working dir搜索DLL。这是一个令人震惊的想法。