简答:
通过知道对应的进程名,可以获得进程,然后进一步获取进程信息。
详解,自己去看吧:
记录折腾Python中的psutil:一个用于获得处理器和系统相关信息的模块
(此处不能贴地址,请自己用google搜标题,即可找到帖子地址)
要想获取进程的用户名和账号,应首先调用OpenProcessToken打开进程的令牌(Token),打开方式设为TOKEN_QUERY,然后将TOKEN_INFORMATION_CLASS设为 TokenUser调用GetTokenInformation枚举进程的令牌信息块SID,通常称为安全标识(Security Identifier),最后调用LookupAccountSid从SID中检索用户名和账号。
char buf[256], szUser[128], szComputer[128];
HANDLE hProcess, hToken;
DWORD cbUser, cbComputer;
SID_NAME_USE snu;
if(ProcessID <= 0x0c)
显示用户名为"SYSTEM";
Else
显示用户名为"SERVICE ";
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, ProcessID);
OpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
GetTokenInformation(hToken, TokenUser, &buf, 256, &cbUser);
cbComputer=sizeof(szComputer);
LookupAccountSid(NULL, (DWORD )((DWORD )buf), szUser,
&cbUser, szComputer, &cbComputer, &snu);
CloseHandle(hToken);
CloseHandle(hProcess);
示例里,已经把所有进程相关信息保存在ll_processes[]数组里
进程名字列表在lb_1里
知道进程名字,调用
ll_hprocess = OpenProcess(PROCESS_ALL_ACCESS, 0, ll_processes[ll_index])
可以得到你进程的句柄
然后:
OpenProcessToken(ll_hprocess , TOKEN_QUERY, &hToken);
GetTokenInformation(hToken, TokenUser, &buf, 256, &cbUser);
cbComputer=sizeof(szComputer);
LookupAccountSid(NULL, (DWORD )((DWORD )buf), szUser, &cbUser, szComputer, &cbComputer, &snu);
则 用户名和账号分别到存放变量szUser和szComputer中。
OpenProcessToken GetTokenInformation LookupAccountSid 我只找到了函数原型,没有找到如何在PB中声明。
-----------------
BOOL OpenProcessToken( __in HANDLE ProcessHandle, //要修改访问权限的进程句柄 __in DWORD DesiredAccess, //指定你要进行的 *** 作类型 __out PHANDLE TokenHandle //返回的访问令牌指针 );
BOOL WINAPI GetTokenInformation(
__in HANDLE TokenHandle,
__in TOKEN_INFORMATION_CLASS TokenInformationClass,
__out_opt LPVOID TokenInformation,
__in DWORD TokenInformationLength,
__out PDWORD ReturnLength
);
别名:LookupAccountSidA
库名:advapi32dll
说明:
返回值:
实例:
参数表:
声明:Declare Function LookupAccountSid Lib "advapi32dll" Alias "LookupAccountSidW" (ByVal lpSystemName As Any, Sid As Any, Name As Any, cbName As Long, ReferencedDomainName As Any, cbReferencedDomainName As Long, peUse As Integer) As Long
要取指定进程的ID,如果指定的进程是一个窗口相关的,而你又可以用 FindWindowEx 来取得他的 HWND 的话,那么就可以用 GetWindowThreadProcessId(HWND,&ID) 来取得ID值的
以上就是关于python 获取指定进程pid,怎么总是错全部的内容,包括:python 获取指定进程pid,怎么总是错、VB 如何 获取 指定用户名下的 所有进程、MFC如何获取指定进程的PID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)