获得当前进程所有者的信息

原创 2004年05月27日 18:06:00

主要设计代码如下:

#include <tlhelp32.h>

 

.......

 CListCtrl m_strList;
 CString m_strValue;

.......

//获取当前进程的所有者的信息

void OnGetUser()
{
 // TODO: Add your control notification handler code here
 UpdateData();
 if(m_strValue.IsEmpty())
 {
  AfxMessageBox(_T("Process Id is empty!"));
  return ;
 }
 int nId = atol(m_strValue);

 CString str;

 GetProcessAuth(str, nId);
 if(strPathValid.IsEmpty())
 {
  AfxMessageBox(_T("Get the path Failed!"));
 }
 else
 {
  AfxMessageBox(strPathValid);
 }
}

//读取当前进程的所有者的信息

void GetProcessAuth(CString strPath,long pid)
{
 //获得运行进程的用户身份,此处对于8以上的进程没问题,对于8,0进程无法列出(8是Win2000下的,WinXP下为4)
 SID_NAME_USE peUse;
 HANDLE hp;
 HANDLE hToken;
 int isok;
 char buf[0x400];
 char buf1[100];
 char buf2[100];
 DWORD dwNumBytesRet;
 DWORD dwNumBytesRet1;

 hp=OpenProcess(0x400, 0, pid);//0x400 is PROCESS_QUERY_INFORMATION
 isok=OpenProcessToken(hp, 0x20008, &hToken);//这个0x20008不知道什么,TOKEN_QUERY?
 if(isok)
 {
  isok=GetTokenInformation(hToken, TokenUser, &buf, 0x400, &dwNumBytesRet);
  if(isok)
  {
   dwNumBytesRet=100;
   dwNumBytesRet1=100;
   isok=LookupAccountSid(NULL, (DWORD *) (*(DWORD *)buf), buf1, &dwNumBytesRet, buf2, &dwNumBytesRet1, &peUse);
   if(isok)
   {
    strPath.Format("Run Auth:%s//%s", buf2, buf1);
    strPathValid = strPath;
   }

   CloseHandle(hToken);
  }
 }

 CloseHandle(hp);
}

//获取当前的进程列表

void ListProcess()
{
 m_strList.DeleteAllItems();
 while(m_strList.DeleteColumn(0));
 m_strList.ModifyStyle(0,LVS_REPORT);
 m_strList.InsertColumn(0,"进程ID",LVCFMT_LEFT,80);
 m_strList.InsertColumn(1,"进程名称",LVCFMT_LEFT,150);
 HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 
 PROCESSENTRY32* info=new PROCESSENTRY32;
    info->dwSize=sizeof(PROCESSENTRY32);
    int i=0;
 if(Process32First(handle,info))
 {
  if(GetLastError()==ERROR_NO_MORE_FILES )
  {
   AfxMessageBox("No More Process");
  }
  else
  {
   CString id;
   id.Format("%d",info->th32ProcessID);
   
   m_strList.InsertItem(i,id);
   m_strList.SetItemData(i,info->th32ProcessID);
   id.Format("%s",info->szExeFile);
   m_strList.SetItemText(i,1,id);
   i++;

   while(Process32Next(handle,info)!=FALSE)
   {
    id.Format("%5d",info->th32ProcessID);
   
    m_strList.InsertItem(i,id);
    m_strList.SetItemData(i,info->th32ProcessID);
    id.Format("%s",info->szExeFile);
    m_strList.SetItemText(i,1,id);
    i++;
   }
  }
 }
   CloseHandle(handle);
  
   delete info;
}

//获取点击list的进程的进程标识

void CGetProcessUserMfcDlg::OnClickListctrl(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 POSITION pos = m_strList.GetFirstSelectedItemPosition();
 int select=m_strList.GetNextSelectedItem(pos);
 SetDlgItemInt(IDC_PROCESS_ID,m_strList.GetItemData(select)); 
 *pResult = 0;
}

Android开发之获取当前进程的信息的集合

Android开发之获取当前进程的信息的集合Android开发对于大家来说越来越接近。我们不用只局限于使用别人开发的应用。在开发部分手机卫士等类型的app时,肯定要获取到当前所有运行的进程 。并且...
  • li521wang
  • li521wang
  • 2016年12月24日 14:54
  • 1022

Linux学习笔记--ps命令(显示当前进程的命令)

ps:英文名process,进程的意思。1. 命令格式:ps [选项]2. 常用选项:"ps -a" 显示一个终端的所有进程,除了会话引线 "ps -e" 显示所有进程 "ps -f" 全...
  • daidaineteasy
  • daidaineteasy
  • 2016年04月06日 16:46
  • 5456

VC获取当前窗口的进程信息

今天测试一个功能: 1.
  • aasmfox
  • aasmfox
  • 2014年11月20日 23:21
  • 1488

android 获取当前运行进程的名称

获取当前运行进程的名称public static String getProcessName(Context cxt, int pid) { ActivityManager am = (A...
  • lmjssjj
  • lmjssjj
  • 2016年12月22日 21:32
  • 846

Linux进程的用户id,有效用户id与文件对应的所有者id,组id

进程对应的id: 1. 实际用户id(uid),即登陆机器或运行进程的id。标识我们是谁。 2. 有效用户id(euid),该进程能访问哪些文件,检查有效用户id与文件的访问权限(所有者ID,组I...
  • lingling_1
  • lingling_1
  • 2015年04月29日 20:56
  • 576

获取进程列表和模块信息

获取本地进程列表与进程模块信息
  • enjoy5512
  • enjoy5512
  • 2016年06月02日 20:02
  • 3211

win32 API获取当前进程的基质

我的另一个博客的地址:http://blog.sina.com.cn/s/blog_149e9d2ec0102wzhz.html 加载到进程地址空间的每一个可执行文件或者DLL文件都被赋予了一个独一...
  • stf1065716904
  • stf1065716904
  • 2017年06月30日 22:05
  • 293

使用ProcessInfo获取进程信息

当一个程序运行起来之后就变成了一个进程,ProcessInfo对象则可用于获取该进程的相关信息,包括获取运行该程序的参数、进程标识符等,除此之外,ProcessInfo还可用于获取该进程所在系统的主机...
  • liyunxiangrxm
  • liyunxiangrxm
  • 2016年02月03日 16:00
  • 1854

android5.0以上获得所有进程

在网上查率好久的资料,发现几个解决办法。 1.最直接的也是最牛逼的,大神写的 https://github.com/jaredrummler/AndroidProcesses  (大婶封装率一个jar...
  • gjy211
  • gjy211
  • 2016年08月26日 18:49
  • 1840

Linux 精准获取进程pid

Linux 精准获取进程pid 如果想在脚本里只获取PID,那么可以用如下脚本。目前收集两种方法:   方法一 $ps x|grep xxx  |awk '{print $1}' ...
  • wolvesqun
  • wolvesqun
  • 2016年12月03日 13:06
  • 1798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获得当前进程所有者的信息
举报原因:
原因补充:

(最多只允许输入30个字)