windows 获取进程列表的几种方式

 我来答
360安全卫士
2018-09-12 · 拦捆绑,反诈骗,十年“卫”生活~
360安全卫士
360安全卫士是一款功能强、效果好、受用户欢迎的安全杀毒软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、电脑救援、保护隐私,电脑专家,清理垃圾,清理痕迹多种功能。
向TA提问
展开全部
  1. 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即可。

  2. 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;

  3. 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;

腾讯电脑管家
2018-07-09 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式