使用openprocess时解决问题,关于权限分配有感

来源:互联网 发布:java数组与集合的区别 编辑:程序博客网 时间:2024/06/16 19:49

今天解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]);

成功解决问题。