VC获取父进程PID
来源:互联网 发布:淘宝suvi韩国是正品吗 编辑:程序博客网 时间:2024/04/28 07:57
// tt.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#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;
}
int _tmain(int argc, _TCHAR* argv[])
{
NtQueryInformationProcess = (PNTQUERYINFORMATIONPROCESS)GetProcAddress(GetModuleHandle("ntdll"),"NtQueryInformationProcess");
if (!NtQueryInformationProcess)
return -1;
int nID = GetCurrentProcessId();
int nTemp = 0;
PRINT_LINE;
nTemp = GetParentProcessID(nID);
if(nTemp == -1)
{
printf(" 获取失败!\n");
return -1;
}
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();
return 0;
}
//
#include "stdafx.h"
#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;
}
int _tmain(int argc, _TCHAR* argv[])
{
NtQueryInformationProcess = (PNTQUERYINFORMATIONPROCESS)GetProcAddress(GetModuleHandle("ntdll"),"NtQueryInformationProcess");
if (!NtQueryInformationProcess)
return -1;
int nID = GetCurrentProcessId();
int nTemp = 0;
PRINT_LINE;
nTemp = GetParentProcessID(nID);
if(nTemp == -1)
{
printf(" 获取失败!\n");
return -1;
}
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();
return 0;
}
0 0
- VC获取父进程PID
- VC获取父进程PID
- 已知进程pid获取其父进程pid
- linux C 获取pid终极父进程的PID
- VC获取自身PID
- Linux获取进程pid
- JAVA 获取进程PID
- [Win32]获取指定进程的父进程PID
- 通过PID获取进程名
- 通过进程PID获取 HWND
- iOS获取进程PID信息
- windows获取pid进程路径
- java 获取当前进程pid
- Linux 精准获取进程pid
- 获取进程pid、根据进程pid获取线程pid、获取线程进程句柄
- 通过进程名获取进程PID
- 通过进程名获取进程PID
- linux根据pid获取进程名和获取进程pid(c语言获取pid)
- Android 5.0有哪些变化
- 【LeetCode】Reorder List
- 交互式shell和非交互式shell、登录shell和非登录shell的区别
- ActiveMQ、Spring整合学习
- mq_open permission denied问题
- VC获取父进程PID
- 字符串hash ELFhash
- PHP开源Apache日志分析工具收集与比较
- 编程珠玑13章
- Hash Table 哈希表 C++ 例子
- 第十二周项目四银行系统任务三--将程序用多文件组织
- 土豆和地瓜的故事
- Longest Substring Without Repeating Characters
- 哪个对象才是锁?