VC获取父进程PID
2013-11-26 17:49
274 查看
#include <windows.h> #include <stdio.h> typedef enum enumSYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemPerformanceInformation, SystemTimeOfDayInformation, }SYSTEM_INFORMATION_CLASS; typedef struct tagPROCESS_BASIC_INFORMATION { DWORD ExitStatus; DWORD PebBaseAddress; DWORD AffinityMask; DWORD BasePriority; ULONG UniqueProcessId; ULONG InheritedFromUniqueProcessId; }PROCESS_BASIC_INFORMATION; typedef LONG (WINAPI *PNTQUERYINFORMATIONPROCESS)(HANDLE,UINT,PVOID,ULONG,PULONG); PNTQUERYINFORMATIONPROCESS NtQueryInformationProcess = NULL; #define PRINT_LINE printf("---------------------------------------------\n") int GetParentProcessID(DWORD dwId) { LONG status; DWORD dwParentPID = 0; HANDLE hProcess; PROCESS_BASIC_INFORMATION pbi; hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwId); if(!hProcess) return -1; status = NtQueryInformationProcess(hProcess,SystemBasicInformation,(PVOID)&pbi,sizeof(PROCESS_BASIC_INFORMATION),NULL); if(!status) dwParentPID = pbi.InheritedFromUniqueProcessId; CloseHandle (hProcess); return dwParentPID; } void main(int argc, char* argv[]) { NtQueryInformationProcess = (PNTQUERYINFORMATIONPROCESS)GetProcAddress(GetModuleHandle("ntdll"),"NtQueryInformationProcess"); if (!NtQueryInformationProcess) return; int nID = GetCurrentProcessId(); int nTemp = 0; PRINT_LINE; nTemp = GetParentProcessID(nID); if(nTemp == -1) { printf(" 获取失败!\n"); return; } printf(" 子进程:%lu ---->>>>> 进程PID为:%lu\n",nID,nTemp); while (true) { nID = GetParentProcessID(nTemp); if(nID == -1) break; printf(" 子进程:%lu ---->>>>> 进程PID为:%lu\n",nTemp,nID); nTemp = nID; } PRINT_LINE; getchar(); }
相关文章推荐
- VC获取父进程PID
- 根据进程名称获取进程pid,结束进程,执行exe文件
- VC由进程ID获取窗口句柄
- shell通过端口号获取PID(进程号)
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- VC中枚举进程,及获取进程相关信息的资料整理
- 【转】VC中如何启动其它程序,并且获得启动程序的PID 创建进程CreateProcess函数
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- linux shell 根据进程名获取pid
- Java获取当前所在进程的PID
- vc怎样通过进程名获取进程的工作目录.
- 【VC】 获取电脑USB设备VID和PID等信息。
- VC获取其他进程ListCtrl内容
- VC中遍历进程并获取进程信息
- VC++实现获取进程端口检测木马
- JAVA 获取进程PID
- JAVA实现获取Linux下进程PID并杀掉进程
- linux 下根据进程名字获取进程的进程号PID
- VC++:结合设备安装类GUID和设备接口类GUID获取设备VIDPID
- 进程名字获取进程的进程号PID,类似pidof,C函数,适合linux,AIX和hp-unix平台