1、快照方式列舉程序
createtoolhelp32snapshot() 介紹:
功能:獲取指定程序的快照, 以及這些程序使用的堆、模組和執行緒。
函式原型:handle createtoolhelp32snapshot(
dword dwflags, // 系統快照的某些部分。
dword th32processid // 程序快照中的程序識別符號。
);引數 dwflags:值含義
th32cs_inherit
指示快照控制代碼是可繼承的。
th32cs_snapall
包括系統中的所有程序和執行緒, 以及 th32processid 中指定的程序的堆和模組。
th32cs_snapheaplist
包括快照中 th32processid 中指定的程序的所有堆。
th32cs_snapmodule
包括快照中 th32processid 中指定的程序的所有模組。
th32cs_snapmodule32
在從64位程序呼叫時, 包括快照中 th32processid 中指定的程序的所有32位模組。
包括快照中系統中的所有程序。
th32cs_snapthread
包括快照中系統中的所有執行緒。
引數 th32processid:
要包括在快照中的程序的程序識別符號。此引數可以為零以指示當前程序。
當指定了 th32cs_snapheaplist、th32cs_snapmodule、th32cs_snapmodule32
或 th32cs_snapall 值時, 將使用此引數。否則, 它將被忽略, 並且所有程序都包含在快照中。
process32first() 介紹:
功能:檢索有關系統快照中遇到的第乙個程序的資訊。
函式原型:bool process32first(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpprocessentry32 lppe // 指向 processentry32 結構的指標。
);引數 lppe:
processentry32 結構體:
typedef structtagprocessentry32 processentry32;
返回值:如果程序列表的第乙個條目已複製到緩衝區則返回 true,否則返回 false。
process32next() 介紹:
函式原型:bool process32next(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpprocessentry32 lppe // 指向 processentry32 結構體的指標。
);module32first() 介紹:
功能:檢索有關與程序關聯的第乙個模組的資訊。
函式原型:bool module32first(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpmoduleentry32 lpme // 指向 moduleentry32 結構體的指標。
);引數 lpme:
moduleentry32 結構體:
typedef structtagmoduleentry32 moduleentry32;
返回值:如果模組列表的第乙個條目已複製到緩衝區則返回 true,否則返回 false。
module32next() 介紹:
函式原型:bool module32next(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpmoduleentry32 lpme // 指向 moduleentry32 結構體的指標。
);democode:
#include#include#include
bool getprocesslist();
int main(void
)bool getprocesslist()
; moduleentry32 me32 = ;
pe32.dwsize = sizeof
(processentry32);
me32.dwsize = sizeof
(moduleentry32);
); bret = process32first(hprocesssnap,&pe32);
while
(bret)
bret = process32next(hprocesssnap,&pe32);
}closehandle(hprocesssnap);
closehandle(hmodulesnap);
return
true;
}
類似的還有 thread32first(),thread32next(),heap32listfirst(),heap32listnext()。
thread32first() 介紹:
功能:檢索有關系統快照中遇到的任何程序的第乙個執行緒的資訊。
函式原型:bool thread32first(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpthreadentry32 lpte // 指向 threadentry32 結構體的指標。
);引數 lpte:
threadentry32 結構體:
typedef structtagthreadentry32 threadentry32;
返回值:如果執行緒列表的第乙個條目已複製到緩衝區則返回 true,否則返回 false。
thread32next() 介紹:
函式原型:bool thread32next(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpthreadentry32 lpte // 指向 threadentry32 結構體的指標。
);heap32listfirst() 介紹:
功能:檢索有關由指定程序分配的第乙個堆的資訊。
函式原型:bool heap32listfirst(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpheaplist32 lphl // 指向 heaplist32 結構體的指標。
);引數 lphl:
heaplist32 結構體:
typedef structtagheaplist32 heaplist32;
返回值:如果堆列表的第乙個條目已複製到緩衝區則返回 true,否則返回 false。
heap32listnext() 介紹:
函式原型:bool heap32listnext(
handle hsnapshot, // 從先前呼叫 createtoolhelp32snapshot 函式返回的快照的控制代碼。
lpheaplist32 lphl // 指向 heaplist32 結構體的指標。
);
列舉程序控制代碼
目前正在做的專案進行效能測試,被通知程序控制代碼數已經到達2600多,心中甚是一驚,用procexp檢視控制代碼表得知,為型別為key的控制代碼,名稱為 registry hklm microsoft ctf assemblyitem.基本上得知是輸入法關聯的登錄檔項,而後用procmon監視登錄檔...
列舉程序資訊
1.psapi法 include include include include psapi.h pragma comment lib,psapi.lib int main numofprocess cbneededprocess sizeof dword for uint i 0 i3.wtsop...
VC列舉程序方法
在windows 2000以上的ms作業系統,通過windows的任務管理器可以列出當前系統的所有活動程序,在windows xp中,更是在控制台下增加了一條tasklist命令,讓系統下的所有程序無所遁行。這一切是怎麼實現的呢?方法二 第二種方法也很常見,通過msdn就可以找到例子 它是通過psa...