| 可以用 OpenProcessToken
和 AdjustTokenPrivileges 这两个函数来提升进程的特权。
讲了那么多,现在回到主题上来。到底使用哪个方法比较好呢?在 win 2000 下有3个方法可供选择,我比较喜欢简单的方法。NtQuerySystemInformation
功能固然强大,但使用比较麻烦。而 win 2000 的 TOOLHELP32 API 其本质还是调用了
NtQuerySystemInformation 函数,由于它发生错误时,可能不能正确返回返回值,所以不是很稳定,使用起来也是很麻烦的,不符合我的懒人本性。还是采用
PSAPI 比较好,简单又方便,只需要三个函数,且没有复杂的结构体参数。
函数原型:
BOOL
WINAPI
EnumProcesses(
DWORD * lpidProcess,//指针指向存放进程ID的数组
DWORD cb, //数组大小
DWORD * cbNeeded //返回的实际大小
);
BOOL
WINAPI
EnumProcessModules(
HANDLE hProcess, //进程句柄
HMODULE *lphModule, //指针指向存放模块句柄的数组
DWORD cb, //数组大小
LPDWORD lpcbNeeded //返回的实际大小
);
DWORD
WINAPI
GetModuleFileNameEx(
HANDLE hProcess, //进程句柄
HMODULE hModule, //模块句柄
LPSTR lpFilename, //存放模块文件名的字符串
DWORD nSize //字符串大小
);
|