积极答复者
可以把载入的DLL用进程方式启动吗?

问题
答案
-
DLL在加载的时候可以运行一个dllmain,
可以参考下这篇文章:http://msdn.microsoft.com/en-us/library/ms682583(v=vs.85).aspx
个人建议你可以新建一个AppDomin然后加载这个dll,然后写一个dllmain运行你的dll。
- 已标记为答案 A_Big_Mess 2011年4月2日 7:42
全部回复
-
DLL在加载的时候可以运行一个dllmain,
可以参考下这篇文章:http://msdn.microsoft.com/en-us/library/ms682583(v=vs.85).aspx
个人建议你可以新建一个AppDomin然后加载这个dll,然后写一个dllmain运行你的dll。
- 已标记为答案 A_Big_Mess 2011年4月2日 7:42
-
DllMain 这个东西在非托管 DLL 中默认存在,但在托管代码中引入 DllMain 会造成负面效应,比如在线程切换时,CLR 会重复执行被加载到线程中的 DLL 的 DllMain 函数。
让 DLL 作为进程运行的方法是利用 Windows 的 Rundll32 或者 DllHost。Rundll32 用的比较多,如打开控制面板等。
例子:
Rundll32.exe shell32.dll,ShellAboutW
可以显示关于 Windows 对话框,其本身作为一个进程 (rundll32) 运行。
其实这也不是完全把 DLL 作为进程运行的,它只是做了一个宿主,让 DLL 在其进程空间内运行罢了。
Mark Zhou