今天解bug的时候,发现枚举后台进程获取ID放入数组dwids,然后调用
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwids[i]);
.......
GetModuleFileNameEx(hProcess,NULL,lpPathName,MAX_PATH);
hProcess 一直为空,打印getlasterror后发现,错误码为拒绝访问。
调试了半天,最终发现错误是由于OpenProcess里的权限设置过高导致的。
根据GetModuleFileNameEx的实际权限需求,修改为:
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,dwids[i]);
成功解决问题。