windows 获取进程列表的几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 获取进程列表的几种方式相关的知识,希望对你有一定的参考价值。
CreateToolhelp32Snapshot法:
// //////////////////////////////////////////////////////////////////////////
// // CreateToolhelp32Snapshot 法 #include <Tlhelp32.h>
// //////////////////////////////////////////////////////////////////////////
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
BOOL bRet;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
bRet = Process32First(hProcessSnap,&pe32);
while (bRet)
bRet = Process32Next(hProcessSnap,&pe32);
printf("%s\\n",&pe32.szExeFile);
return 0;
如果想输出文件路径,在其中加入提权代码后再OpenProcess,GetModuleFileNameEx即可。
EnumProcesses 法
//////////////////////////////////////////////////////////////////////////
// EnumProcesses 法 #include <Psapi.h> #pragma comment(lib,"Psapi.lib")
//////////////////////////////////////////////////////////////////////////
DWORD PID[1024];
DWORD needed,NumProcess;
EnumProcesses(PID,sizeof(PID),&needed);
NumProcess = needed/sizeof(DWORD);
char FilePatch[MAX_PATH];
for (DWORD i=0;i<NumProcess;i++)
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,PID[i]);
if (hProcess)
GetModuleFileNameEx(hProcess,NULL,FilePatch,sizeof(FilePatch));
printf("%s\\n",FilePatch);
CloseHandle(hProcess);
printf("一共%d个进程\\n",NumProcess);
return 0;
WTSOpenServer 法
//////////////////////////////////////////////////////////////////////////
// WTSOpenServer 法 #include <Wtsapi32.h> #pragma comment(lib,"Wtsapi32.lib") 用nbtstat -an获取本机NetBios名称,并在命令行下输入即可
//////////////////////////////////////////////////////////////////////////
char *szServerName = argv[1];
PWTS_PROCESS_INFO wts;
DWORD dwCount;
HANDLE hWtsServer = WTSOpenServer(szServerName);
if(!WTSEnumerateProcesses(hWtsServer,0,1,&wts,&dwCount))
return 0;
for (DWORD i=0;i<dwCount;i++)
printf("%s\\n",wts[i].pProcessName);
return 0;
PWTS_PROCESS_INFO wts;
DWORD dwCount;
HANDLE hWtsServer = WTSOpenServer(szServerName);
if(!WTSEnumerateProcesses(hWtsServer,0,1,&wts,&dwCount))
return 0;
for (DWORD i=0;i<dwCount;i++)
printf("%s\n",wts[i].pProcessName);
return 0;
SQLite获取插入 ID 的几种方式
一、概述
SQLite 中,表设置自增列后,可通过如下几种方式获取插入记录的 ID
二、获取插入 ID 的几种方式
2.1、sqlite_sequence(推荐)
通过 SQLite 自增 ID 序列表获取,示例:
insert into TbTest(Name, Age) values(\'usr\', 20);
select seq from sqlite_sequence where name=\'TbTest\';
2.2、rowid
表设置了自增列,会生成 rowid 的隐藏列,需要显式查询语句才可以查询出,示例:
insert into TbTest(Name, Age) values(\'usr\', 20);
select max(rowid) from TbTest;
2.3、ID 列
直接通过设置的 ID 列查询。
insert into TbTest(Name, Age) values(\'usr\', 20);
select max(ID) from TbTest;
2.4、last_insert_rowid()
示例:
insert into TbTest(Name, Age) values(\'usr\', 20);
--注意!若此行处有插入临时表的操作,下面的语句获取到的是插入临时表的 rowid
select last_insert_rowid() from TbTest LIMIT 1;
以上是关于windows 获取进程列表的几种方式的主要内容,如果未能解决你的问题,请参考以下文章