我调CreateProcess
PROCESS_INFORMATION pi;
CreateProcess(_T("test.exe"),NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,NULL,&pi);//ok
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,pi->dwProcessId);//ok
MODULEINFO mi;
GetModuleInformation(hProcess,NULL,&mi,sizeof(mi));//failed
上面的最后一步,得到的模块信息有问题。mi.SizeOfImage和mi.EntryPoint有正确的结果,但mi.lpBaseOfDll无效。
原因应该是系统在创建一个进程的时候,如果是以暂停方式创建,系统没有加载进程代码。
如何让进程在以暂停方式创建时,加载其可执行程序的代码?