C++ 获取进程路径

下面的实例可以简便实现这个功能。
#include <stdio.h>
#include <windows.h>
int main()
{
     char str[MAX_PATH];
     GetModuleFileName(NULL, str, MAX_PATH);
     puts(str);
     return 0;
}

另外,想要枚举系统里面全部的进程,可以使用如下方式,关键是CreateToolhelp32Snapshot函数。

PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(pe32);//set struct size;
    //Give a fast shoot to the system all process;
    HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    
    if (hProcessSnap==INVALID_HANDLE_VALUE)
    {
        AfxMessageBox(_T("CreateToolhelp32Snapshot FAIL!"));
        return true;
    }
    //Interactor
    BOOL bMore=::Process32First(hProcessSnap,&pe32);
    while(bMore)
    {
    }
    ::CloseHandle(hProcessSnap);

获取进程的相关信息,可以通过ZwQuerySystemInformation。

时间: 2024-10-31 10:03:08

C++ 获取进程路径的相关文章

根据进程ID获取进程路径

根据进程ID获取进程路径有两种方法:方法1:OpenProcess --> GetModuleFileNameEx方法2:OpenProcess --> EnumProcessModules --> GetModuleFileNameEx 注意事项:1.使用GetModuleFileNameEx()而不是GetModuleFileName()2.GetModuleFileNameEx()指定的hProcess需要PROCESS_QUERY_INFORMATION | PROCESS_VM

写一个Windows上的守护进程(8)获取进程路径

写一个Windows上的守护进程(8)获取进程路径 要想守护某个进程,就先得知道这个进程在不在.我们假设要守护的进程只会存在一个实例(这也是绝大部分情形). 我是遍历系统上的所有进程,然后判断他们的路径和要守护的进程是否一致,以此来确定进程是否存在. 遍历进程大家都知道用CreateToolhelp32Snapshot系列API,但是他们最后取得的是进程exe名称,不是全路径,如果仅依靠名称就可以达到目的也就罢了,但是有的时候还是得取到全路径,这样会更靠谱一些. 那么问题来了,如何取到进程全路径

windows 内核下获取进程路径

windows 内核下获取进程路径 思路:1):在EPROCESS结构中获取.此时要用到一个导出函数:PsGetProcessImageFileName,申明如下: NTSYSAPI UCHAR *    PsGetProcessImageFileName(    __in PEPROCESS Process    ); 此函数获取的是一个简单的进程名,并不是绝对路径. 2):ZwQueryInformationProcess. 要想获取进程的绝对路径,可用一个未公开的函数:ZwQueryInf

windows-根据进程PID 获取进程路径

代码: C++ #include <windows.h> #include <Psapi.h> #pragma comment(lib,"psapi.lib") void GetPathByProcessId(DWORD dwPid) { //使用PROCESS_ALL_ACCESS 需要提权这里我直接扣出来的.提权代码看另一篇. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid); if

Atitit,通过pid获取进程文件路径&#160;java&#160;php&#160;&#160;c#.net版本大总结

Atitit,通过pid获取进程文件路径 java php  c#.net版本大总结 1. 通过PID获取进程路径的几种方法2 1.1. GetModuleFileNameEx 想获得进程可执行文件的路径最常用的方法是通过GetModuleFileNameEx函数获得可执行文件的模块路径这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好.2 1.2. 第二种方法是GetProcessImageFileName函数,这个函数在Windows XP及其以后的系

【转】[内核/驱动]驱动中获取进程全路径和注册表全路径

转载地址: http://blog.sina.com.cn/s/blog_60a1a51d0100e78g.html 2008.07.05 经过这几天的努力,注册表保护驱动已经基本稳定.很多人都在网上问如何获取访问注册表的进程全路径和被访问的注册表的全路径,下面就将部分代码贴出来. //驱动中获取被访问注册表的全路径 BOOLEAN GetRegFullPath(HANDLE KeyHandle, PUNICODE_STRING pRegFullPath) { POBJECT pKey = NU

(ring0)Windows内核根据PID获取进程全路径

最近在写ARK,发现Windows在内核并没有直接提供这样的内核API,没办法,自己手动实现吧.网上搜了一堆,写了个函数 头文件中定义 typedef NTSTATUS(*ZWQUERYINFORMATIONPROCESS) ( __in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __out_bcount(ProcessInformationLength) PVOID ProcessInformati

内核中根据进程Pid获取Dos路径.

目录 一丶简介 二丶原理 3.代码实现. 一丶简介 在内核中有时候想通过PID 获取进程的全路径以达到监控的作用 比如我们设置了进程回调.则可以根据PID看下进程的全路径. 二丶原理 原理就是在内核中 通过 ZwQueryInformationProcess 这个未公开的函数 进行查询. 查询好是 ** ProcessImageFileName ** 也就是27号功能. 但是查询出来的路径是Dos路径.还需要进行转化. 1.传入PID 使用 ZwOpenProcess打开PID获取Handle

C#获取相对路径

应用VS2010创建了一WinForm项目,项目名为RelativePath,放在桌面上 编写代码通过八种方式获取相对路径并输出显示,运行效果如下: 下面简要的介绍一下这八种获得相对路径的方式: 1. 获取和设置当前目录(该进程从中启动的目录)的完全限定路径 string str1 = System.Environment.CurrentDirectory; //Result: C:xxxxxx 2. 获取应用程序的当前工作目录 string str2 = System.IO.Directory