windows - 在远程 Windows 机器上动态运行 DLL?

标签 windows dll dllimport dllregistration

有没有办法在远程 Windows 机器上动态运行 DLL?

假设用户想要将自己的 DLL 文件发送到远程服务器并在远程站点运行该 DLL 中的函数。用户可能能够提供函数入口点以及所需的参数,但仅此而已。 (例如没有头文件)

我正在考虑在远程站点设置一个代理可执行文件,它可以 (1) 动态加载和绑定(bind)未知的 DLL,以及 (2) 运行带参数的函数。这是一个好的方法,还是这样的可执行文件可能?

最佳答案

您可以使用动态加载 DLL 的技术。

通常,您通过将 .LIB 静态链接到您的项目并编译它来使用 DLL。要在运行时动态加载 DLL,您可以使用以下 WIN32 API 函数和一些其他技巧。

加载库(); LoadLibarayEx(); GetProcAddress(); 自由库();

还有一些其他技巧

  • 您需要将 dll 函数声明为已导出。
  • 在 C++ 中,您需要使用 extern "C"来防止函数名称混淆。
  • FARPROC ... 使用 GetProcAddress

这一切都在下面的维基文章中解释 - http://en.wikipedia.org/wiki/Dynamic-link_library

您在远程机器上安装可执行文件的想法是个好主意。只要您与用户约定函数名称和参数。如果 dll 符合此要求,则可以随时更改 dll 而无需更改 EXE。一旦设置并运行,添加额外功能就很简单了。

关于windows - 在远程 Windows 机器上动态运行 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632473/

相关文章:

c# - 加载同一程序集的不同版本

c# - 无需安装 Visual Studio 即可注入(inject) DLL?

c# - DllImport、Char*& 和 StringBuilder C/C#

C# DllImport 帮助 (Mac OS)

c# - Testand - 通过使用 C DLL 的 C# 包装器使用 C# DLL

windows - 有没有不重叠的窗口?如果是这样,它看起来像什么?

windows - 如何阻止 git bash 窗口中出现不需要的波浪字符?

windows - 如何在 Windows 任务计划程序上安排 azcopy?

windows - 为什么 Windows 和 Linux 托管服务之间的价格差异如此之大

dllimport 无法定位 dll,即使它在 PATH 中