获得调用者进程信息

 1 DWORD ShowParentProcessInfo()
 2 {
 3     typedef LONG (WINAPI *PROCNTQSIP)(HANDLE,UINT,PVOID,ULONG,PULONG);
 4     PROCNTQSIP NtQueryInformationProcess;
 5     NtQueryInformationProcess = (PROCNTQSIP)GetProcAddress(
 6         GetModuleHandle(_T("ntdll")),
 7         "NtQueryInformationProcess"
 8         );
 9
10     if (!NtQueryInformationProcess)
11         return 0;
12
13     DWORD dwId = ::GetCurrentProcessId();
14     LONG                      status;
15     DWORD                     dwParentPID = 0;
16     HANDLE                    hProcess;
17     W_PROCESS_BASIC_INFORMATION pbi;
18
19     // Get process handle
20     hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, NULL, dwId);
21     if (!hProcess)
22         return 0;
23
24     // Retrieve information
25     status = NtQueryInformationProcess( hProcess,
26         ProcessBasicInformation,
27         (PVOID)&pbi,
28         sizeof(W_PROCESS_BASIC_INFORMATION),
29         NULL
30         );
31
32     // Copy parent Id on success
33     if  (!status)
34     {
35         dwParentPID = pbi.InheritedFromUniqueProcessId;
36         HANDLE hParentProcess = NULL;
37         hParentProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, NULL, dwParentPID);
38         if (hParentProcess)
39         {
40             TCHAR szTemp[MAX_PATH] = {0};
41             TCHAR szProcessName[MAX_PATH] = {0};
42             DWORD dwErr = ::GetModuleFileNameEx(hParentProcess,NULL,szTemp,MAX_PATH);
43             ::GetLongPathName(szTemp, szProcessName, MAX_PATH);
44             if (dwErr)
45                 Log4cxx(LOG4CXX__INFO, MODULENAME , _T("Caller=%s, ParentProcessID=%d"), szProcessName, dwParentPID);
46             else
47                 Log4cxx(LOG4CXX__INFO, MODULENAME , _T("Caller=%s, ParentProcessID=%d, LastError=%d"), szProcessName, dwParentPID, dwErr);
48         }
49         CloseHandle (hParentProcess);
50     }
51
52     CloseHandle (hProcess);
53
54     return dwParentPID;
55 }  

结果

Caller=C:\Program Files (x86)\Wind\Wind.NET.Client\WindNET\bin\wmain.exe, ParentProcessID=6012
时间: 2024-11-21 04:45:43

获得调用者进程信息的相关文章

【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息.  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的进程1)常驻系统的通用进程ocssd.binevmd.binevmlogger.bincrsd.bin 这些通用进程需要在各种平台和数据库版本上都会启动. 2)特有进程oprocd: 在UNIX平台当第三方集群软件为运行时会启动该进程:在Linux平台上会在Oracle 10.2.0.4这个版本上启动

NSProcessInfo-当前进程信息类

1.NSProcessInfo常用方法: +(NSProcessInfo*)processInfo //返回当前进程的信息 -(NSArray*)arguments //以NSString对象数组的形式返回当前进程的参数 -(NSDictionary *)environment //返回变量/值对词典,以描述当前的环境变量(比如PATH和HOME)及其值 -(int)processIdentifier //返回进程标识符,它是操作系统赋予进程的唯一数字,用于识别每个正在运行的进程 -(NSStr

Linux进程信息讲解

1.进程信息讲解ps -e显示系统中所有进程ps -f显示系统中重要状态信息ps -l显示系统中详细状态信息kill [option] pid如果不行可以试试kill -9 pid

Android获得全局进程信息以及进程使用的内存情况

Android获得全部进程信息,并获得该进程使用的内存情况. package zhangphil.process; import java.util.List; import android.os.Bundle; import android.os.Debug.MemoryInfo; import android.widget.TextView; import android.app.Activity; import android.app.ActivityManager; import and

Python标准库09 当前进程信息 (os包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux的概念与体系,多次提及进程的重要性.Python的os包中有查询和修改进程信息的函数.学习Python的这些工具也有助于理解Linux体系. 进程信息 os包中相关函数如下: uname() 返回操作系统相关信息.类似于Linux上的uname命令. umask() 设置该进程创建文件时的权限mask.类似于Linux上的umask命令,见Linux文件管理背景知

VC中遍历进程并获取进程信息

代码如下: /***************************************************/ /* 函数: 遍历进程信息 /* 参数:进程名称 例如: aaa.exe /* 返回: 无 /* 创建人: 日期 内容 /* 金胖胖 2015年2月26日 新建 /***************************************************/ void CUIConsoleDlg::GetAllProcessInfo(char* szExeFile)

Linux进程信息的深入分析

Linux下进程信息的深入分析 这里我们主要介绍进程的状态,进程的状态可以通过/proc/PID/status来查看,也可以通过/proc/PID/stat来查看.如果说到工具大家用的最多的ps也可以看到进程的信息.这里我们通过/proc/PID/status来分析进程的信息.在2.6.18之后的内核,多了capibilty/cpusets等信息.[[email protected] 1499]# ps -He[[email protected] 1499]# cd /proc/1499/[[e

获得特定进程信息

///          /// 获得特定进程信息         ///          /// 进程名称         public static void GetProcessInfo(string processName)         {             Process[] processes = Process.GetProcessesByName(processName);             foreach (Process instance in proces

SNMP远程监控进程信息的OID

最近有个项目需要用snmp远程监控进程信息.于是我查了一下资料. 一.资料 .1.3.6.1.2.1.25.4.2.1.1.iso.org.dod.internet.mgmt.mib-2.host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndexA unique value for each piece of software running on the host. Wherever possible, this should be the syst