如何使用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"