如何使用Rundll32来执行DLL函数?

使用ShellExecute文档作为参考:

我从命令行运行以下命令:

C:\>RUNDLL32.EXE SHELL32.DLL,ShellExecute handle,"open","C:\Documents and Settings\admin\Desktop\tmp",NULL,NULL,SW_SHOWNORMAL 

这会导致exception错误。

我不知道这是什么意思:

 HINSTANCE ShellExecute( __in_opt HWND hwnd, __in_opt LPCTSTR lpOperation, __in LPCTSTR lpFile, __in_opt LPCTSTR lpParameters, __in_opt LPCTSTR lpDirectory, __in INT nShowCmd ); 

但是在描述中,提到了一个句柄(HWND)和一个指向空string(LPCTSTR)的指针,但是这是非常令人困惑的。

任何帮助将不胜感激。 我也想了解更多,所以任何参考(书籍,网页链接等)也将是伟大的!

Rundll32只支持使用以下签名运行DLL导出:

 void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

它不支持运行任意入口点。 由于ShellExecute没有这个签名,显然不好的事情会发生。

INFO:Windows Rundll和Rundll32接口在rundll32接口上有更多的信息。

如果你想从命令行执行ShellExecute,只需使用start:

 C:\>start "C:\Documents and Settings\admin\Desktop\tmp" 
Interesting Posts