有没有办法在远程 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/