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;

参考技术A 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;

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 获取进程列表的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

Windows中使用命令行杀进程

java线程实现/创建的几种方式

Windows下的几种提权方式的粗略汇总

Android--获取系统时间的几种方式

AngularJS中获取数据源的几种方式

window.open()打开窗口的几种方式