首页
社区
课程
招聘
[求助]在64位操作系统下获取进程模块的问题
发表于: 2009-5-12 16:05 6263

[求助]在64位操作系统下获取进程模块的问题

2009-5-12 16:05
6263
procedure TForm1.Button1Click(Sender: TObject);
var
processlist: thandle;
pe: tprocessentry32;
node: ttreenode;
processnumber: integer;
procedure moduleenum(processid: dword);
var
    modulelist: thandle;
    pm: tmoduleentry32;
begin
    modulelist := createtoolhelp32snapshot(th32cs_snapmodule, processid);
    pm.dwsize := sizeof(tmoduleentry32);
    if module32first(modulelist, pm) then
    begin
        treeview1.items.addchild(node, pm.szexepath);
        while module32next(modulelist, pm) do
            treeview1.items.addchild(node, pm.szexepath);
    end;
    closehandle(modulelist);
end; // moduleenum
begin // processenum
    processnumber := 0;
    treeview1.items.clear;
    processlist := createtoolhelp32snapshot(th32cs_snapprocess, 0);
    pe.dwsize := sizeof(tprocessentry32);
    if process32first(processlist, pe) then
    begin
        node := treeview1.items.add(nil, pe.szexefile);
        moduleenum(pe.th32processid);
        inc(processnumber);
        while process32next(processlist, pe) do
        begin
            node := treeview1.items.add(nil, pe.szexefile);
            moduleenum(pe.th32processid);
            inc(processnumber);
        end;
    end;
    closehandle(processlist);
end;

代码在32位的VISTA下可以获取到系统的所有进程的模块,比如winlogon.exe等等。但是在64位下,只能获取自己写的程序的模块,连notepad.exe的模块都获取不了,请问下有没有什么方法可以做到呢。eek:

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//