-
-
[求助]在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:
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直播授课
赞赏
他的文章
- [求助]在64位操作系统下获取进程模块的问题 6264
- [求助]防止程序被注入 14579
- [求助]怎样提前获得系统控制权 4955
- [作品提交]RSA加密解密的实现 11984
看原图
赞赏
雪币:
留言: