首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用C -programming在windows下从进程id中获取进程名

在Windows下,使用C编程从进程ID中获取进程名可以通过以下步骤进行:

  1. 使用OpenProcess函数打开具有指定进程ID的进程,获取进程句柄。
  2. 使用GetModuleBaseName函数获取进程模块的基本名称。该函数需要进程句柄和模块句柄作为参数。
  3. 使用CloseHandle函数关闭进程句柄。

下面是一个示例代码:

代码语言:txt
复制
#include <Windows.h>
#include <stdio.h>

int main()
{
    DWORD processId = 1234; // 替换为目标进程的ID
    
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
    if (hProcess != NULL)
    {
        HMODULE hMod;
        DWORD cbNeeded;
        TCHAR szProcessName[MAX_PATH];

        if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
        {
            GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR));
            printf("Process name: %s\n", szProcessName);
        }
        else
        {
            printf("Failed to enumerate process modules.\n");
        }

        CloseHandle(hProcess);
    }
    else
    {
        printf("Failed to open process.\n");
    }

    return 0;
}

这个代码片段通过指定的进程ID打开进程,并获取进程模块的基本名称。最后,输出进程名。

推荐的腾讯云相关产品:腾讯云云服务器(ECS),腾讯云容器服务(TKE),腾讯云数据库(TencentDB),腾讯云对象存储(COS)。

腾讯云产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Windows应急响应之命令行排查

    获取Security.evtx的日志: Get-WinEvent -FilterHashtable @{LogName='Security'} 获取事件ID为4624的Security日志: Get-WinEvent...-FilterHashtable @{LogName='Security';ID='4624'} powershell今天操作日志的最近10条,注意这里的logname必须是loglist中得到的:...获取进程完整信息 wmic process list full 列出进程和父进程: wmic process get name,parentprocessid,processid 详细的进程的名字,跟直接...schtasks.exe 当然也可以在可视化的任务管理器,双击可查看详细信息 排查开机启动项命令 wmic startup共有一下几个字段 Caption、Command、Description、Location...-}] [{MM/DD/YYYY | DD}]] 下表列出了在 /c Command 命令字符串中能够使用的变量 变量 描述 @file 返回匹配项的名称,双引号。

    11510

    Windows CMD常用命令大全(值得收藏)

    系统下运行DOS,中文版Windows XP中的命令提示符进一步提高了与DOS下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。...可以根据进程 id 或映像名(Image)来结束进程。 参数列表: /S system 指定要连接到的远程系统。...netstat -help 获取命令行使用帮助信息 netstat -ano //查看网络连接、状态以及对应的进程id 语法: netstat [选项] 参数: -a或--all:显示所有连线中的Socket...获取使用帮助 netstat -ano|find ".8" //使用管道符,进行模糊查询 1.13 tracert tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用...cmd >>重定向输出追加到文件末尾 例如: echo hello >>c:\1.txt // 在1.txt文件末尾加上hello 3.3 重定向输入符号< << cmd < file 使cmd命令从

    11.4K45

    移动端逆向教程1.2 安卓常用指令集

    同时,在我们用usb数据线连接电脑后调试手机app会用到一些linux命令(Android运行环境是基于linux内核的缘故)所以下面介绍一下,在windows下常用的cmd命令以及linux下的shell...0x01 cd命令 通过cd 命令,可以切换到指定文件夹下,此命令在windows和linux下通用,但在windows下只能在当前所在盘符切换,若需切换到别的盘符需要使用命令,例如当前在c盘,需要切换到...Windows中杀死进程分两步:1查询端口占用2.强行杀死进程 例: #查询一下本地所有网络连接,提取包含 8080(已建立连接)的行 netstat -ano | findstr "8080" taskkill.../pid 4000 -t -f 解释:在 Bash 中,管道符使用"丨"代表。...mv A文件路径 B位置路径 #移动A文件到B位置,重命名文件,索引号变话 touch 文件 #创建一个文件 cat a.txt #查看a.txt的内容 id #获取当前用户信息 ps

    1.6K10

    Windows下cpu和性能指标监控Top10的实现

    windows下虽然有进程管理器,性能监视器perfmon.msc,resmon资源监视器,processhacker神器等众多性能指标监控工具可以用,但就是没法看top10那样的直观。...Process Hacker介绍 Process Hacker:windows下的一款用于调试和排除软件故障的强大工具 。它可以帮助研究人员检测和解决软件或进程在特定操作系统环境下遇到的问题。...性能信息并不实际存在于注册表中,在注册表编辑器RegEdit.exe中是无法查看的,但可以通过注册表函数来访问,利用注册表键来获得从性能数据提供者那里提供的数据。...需要清楚数据在注册表中的存储格式。...} } // 获取全部进程的cpuMem信息,按内存占用从大到小排序 BOOL CCpuTop::GetCpuMemMap() { LONGLONG tm = tm2 - tm1; int

    86220

    Windows程序Dump收集

    如果有多个进程叫test.exe,则最好使用-p 进程ID>直接指定需要获取dump的唯一进程。...获取程序未响应时候的Dump 采用如下命令: ADPlus.exe -hang -po test.exe -o c:\dumps 本人测试了下也可以在程序正常运行的时候,直接用这个命令获取Dump。...在微软Sysinternals可以下载。 procdump.exe -ma test.exe -t -e -o C:\dumps 当然也可以指示进程的ID去获取dump。...有一种场景,当进程启动过程中或者启动一会儿就Crash,那么用Adplus就不适合,因为Adplus得进程启动后才能使用,那么可以用procdump如下命令, 等待test.exe启动,然后抓取dump...表示当有程序crash的时候利用ntsd产生dump到路径D:\dumps,dump的文件名中包含有时间和进程名字,避免了不同进程dump的文件覆盖问题。

    1.1K50

    linux系统编程之进程(五):终端、作业控制与守护进程

    一、终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道...默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输出到显示器上。...ttyname函数可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端设备而不能是任意文件。在linux上的命令tty 也可以查看到当前的终端。...三、守护进程 守护进程是在后台运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,用户关闭终端窗口或注销也不会影响守护进程的运行,只能kill掉。...守护进程的名称通常以d结尾,比如sshd、xinetd、crond等 我们用ps axj 命令查看系统中的进程,凡是TPGID(前台进程组ID)一栏写着-1的都是没有控制终端的进程,或者TTY一栏为

    2.7K90

    提权(1)信息收集

    提权,这里说的提权实际上指的是纵向的提权,从webshell权限到system权限 0x01 引言 通常,我们在渗透过程中很有可能只获得了一个系统的Guest或User权限。...渗透的最终目的是获取服务器的最高权限,即Windows操作系统中管理员账号的权限,或LINUX操作系统中root账户权限。 提升权限的方式分为两类。 l 纵向提权:低权限角色获得高权限角色的权限。...l 横向提权:获取同级别角色的权限。比如,通过已经攻破的系统A获取B的账户密码。 一般在web渗透中我们都是通过纵向提权,而后渗透也就是内网渗透或者域渗透了。...感觉一些常见的进程名还是要记住的, winlogon.exe 用户登录进程 explorer.exe 资源管理器 Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称 Safedog.exe...经过我的测试,在XP下低权限用户是不能使用WMIC命令,但是在Windows 7 和Windows8下,低权限用户可以使用WMIC,且不用更改任何设置。

    1.3K40

    python之调用系统命令 原

    参数Universal_newlines:不同操作系统下,文本的换行符是不一样的。如:windows下用’/r/n’表示换,而Linux下用 ‘/n’。...参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。...Popen.communicate(input=None) 与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。...同样,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。...Popen.pid 获取子进程的进程ID。 Popen.returncode 获取进程的返回值。如果进程还没有结束,返回None。

    2.3K40

    win32进程概念之句柄表,以及内核对象.

    二丶多进程共用内核对象 1.第一种方法. 使用OpenProcess 在windows程序中.我们操作的都是内核对象. 我们可以通过OpenProcess API来打开一个已有进程的内核对象....此时必须先关闭线程.在使用CloseHandle 是引用计数 -1才可以. 2.使用继承句柄技术 在windows程序中. A创建 B .或者带有内核对象的 API在创建的时候....不允许继承的为0 都赋值为0 二丶进程PID解析 在windows任务管理器中.有PID选项.我们可以选中查看. 而且在windows中也常常听到进程ID的概念. 那么进程ID到底是个什么东西....GetModuleFileName()  获取当前模块路径 例如:  c:\\1.exe 2.GetCurretDirectory()     获取当前的工作目录 例如:  c:\text\abc 3....OpenProcess()  根据进程PID打开进程.获取进程句柄. 4.FindWindow()    根据类名以及文件名.返回窗口句柄. 5.GetWindowsThreadProcessId()

    1.1K20

    win32进程概念之句柄表,以及内核对象.

    此时必须先关闭线程.在使用CloseHandle 是引用计数 -1才可以. 2.使用继承句柄技术 在windows程序中. A创建 B .或者带有内核对象的 API在创建的时候....A进程创建的 B D是可以继承的. 所以 子进程可以完全复制A进程 可继承句柄表. 不允许继承的为0 都赋值为0 二丶进程PID解析 在windows任务管理器中.有PID选项.我们可以选中查看....而且在windows中也常常听到进程ID的概念. 那么进程ID到底是个什么东西. 其实进程ID是全局的句柄表的一个索引.  上面所讲的句柄表.都是自己私有的句柄表. PID是全局句柄表里面的....GetModuleFileName()  获取当前模块路径 例如:  c:\\1.exe 2.GetCurretDirectory()     获取当前的工作目录 例如:  c:\text\abc 3....OpenProcess()  根据进程PID打开进程.获取进程句柄. 4.FindWindow()    根据类名以及文件名.返回窗口句柄. 5.GetWindowsThreadProcessId()

    98910

    windows10 记事本进程 键盘消息钩子 dll注入

    4、如图点击配置管理器: 5、将Debug配置的平台改为64位,原因是:我的windows是64位的,记事本软件也是64位的(虽然它的执行文件在System32文件夹下,但是用PCHunter可以看到它是...= NULL) { GetModuleFileNameEx(hProcess, NULL, ProcessName, 1024); //根据进程句柄获取到进程完整的名称,如C:\Windows...\System32\notepad.exe //第一个参数是输入参数,输入需要获取进程名的进程句柄 //第二个参数是输入参数,输入需要获取的模块的模块句柄,为NULL表示获取进程主模块...)ProcessName; //把LPSTR类型转为CString类型,便于进行字符处理 //CString在ANSI字符集下以存储char数组,在Unicode字符集下以存储wchar_t...\Windows\System32\notepad.exe转为notepad.exe if (ProcessBaseName == TargetProcessName) //如果该进程名与目标进程名相同

    1.8K10

    windows下查看进程(进阶)

    windows下查看进程(进阶) 背景 最近在搞appium(后续会总结一下),跑安卓的在windows上,经常启动进程,查看进程,学了一些实用的命令 之前就知道一些命令,如下: # 启动appium...所以这就是windows蛋疼的地方,我明明执行的appium命令,为啥给我来个node的,虽然实际调用确实是nodejs去启动appium的,但我的目的是获取到执行命令 进阶 找了一些资料,但仍然不够好...如果,通过进程号或进程名去查看进程详情,但processName也只是简陋的显示node而已 翻阅了一些资料也没有显示命令行的 wmic 这个是cmd命令,所以需要去cmd窗口执行,这个可以满足我们的需求...,查看到命令行的东西,但执行wmic会提示 wmic已经废弃,但还是可以用 ?...这个勉强实现了linux下的ps -ef | grep appium get-process -id id> wmic process where caption="node.exe

    7.5K20

    linux系统编程之进程(三):exec系列函数和system函数

    一、exec替换进程映象 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。...当我们创建 了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。...execv、execvp和execvpe的第二个参数是一个字符串数组,新程序在启动时会把在argv数组中给定的参数传递到main 名字含字母“p”的函数会搜索PATH环境变量去查找新程序的可执行文件...三、执行exec函数,下面属性是不发生变化的: 进程ID和父进程ID(pid, ppid) 实际用户ID和实际组ID(ruid, rgid) 附加组ID(sgid) 会话ID 控制终端 闹钟余留时间 当前工作目录...= NULL; i++)         printf("%s\n", environ[i]);     return 0; } 其中environ是全局变量但没有在头文件中声明,所以使用前需要外部声明一下

    2.2K60

    Android中常用的adb shell命令

    android 常用shell命令记录下来备忘 \n 在shell命令中的作用是换行(而\r\n会将一个二进制文件格式从unicode变为混合格式) & 可以用来连接多个命令 -help 可以快速知道一个命令怎么用的...(windows系统下)。...pm path 应用包名 获取手机上已经安装的所有的程序 pm list packages 过滤grep 和findstr 在windows上直接使用findstr来过滤你想要的信息 adb shell...// 1,遍历”/proc”文件夹下面的文件夹,其中有些”文件夹名称”就是进程id(PID) ls /proc // 2,cat命令获取对应进程的名字(cat /proc/PID/cmdline.../proc/12073/status 查看进程的状态 ##通过packages.xml文件查看app安装信息 在/data/system/packages.xml文件中,找到你应用相关内容 我在小米上使用

    2.9K20

    基于AD Event日志检测LSASS凭证窃取攻击

    01、简介 简单介绍一下,LSASS(本地安全机构子系统服务)在本地或域中登录Windows时,用户生成的各种凭证将会存储在LSASS进程的内存中,以便用户不必每次访问系统时重新登录。...一般LSASS窃取凭证有两种方式,第一种就是直接从LSASS内存解析获取密码,第二种是将LSASS进程转储到本地进行离线解析。...Procdump64.exe -accepteula -ma lsass.exe lsass.dmp 在Windows事件ID:4663 中,可以看到进程名Procdump64.exe 尝试访问内存对象...ID:4663 中,可以看到进程名shell.exe 尝试访问内存对象lsass.exe。...(4)CS模块获取用户哈希 使用hashdump或logopasswords 获取用户密码哈希值 在Windows事件ID:4663 中,可以看到进程名rundll32.exe 尝试访问内存对象lsass.exe

    68530

    将gitbub下载的docker-compose项目运行在docker

    Integrates with 15+ databases and any API. 1.通过github指令获取 右键点击 Git Bash Here  输入指令: git clone  从github...获取请求链接  失败示例(clone有时会超时,需要多尝试几次才能把包获取下来):  成功示例(看到日志全部是“done”后代表项目拉取成功):  2.通过zip的方式直接把包下载到本地  下载完成后会直接得到一个...配置国内加速器 可以添加在Docker Engine下配置国内加速器,添加在Docker Engine下 { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn..."] } 在[]里面的网址可以随意更换为国内镜像源的网址,我这里用的是中国科技大学的镜像源, 大家可以随意选择,填写之后保存文件之后点击Apply&restart重启一下docker就完成配置了 docker....com 阿里云: https://{your_id}.mirror.aliyuncs.com daocloud: http://{your_id}.m.daocloud.io 3.右键windows

    69440

    Linux学习笔记(二)

    接下来一段时间打算学一下linux 学习来源书本《Linux命令行与shell脚本编程大全 第三版》 一、进程管理 ps命令 ps 命令默认会显示运行在当前控制台下的属于当前用户端的进程,显示的选项 UID...# 启动这些进程的用户 PPID # 父进程的进程号 CMD # 启动程序的名称 PID # process ID 进程id TTY # 运行在哪个终端 TIME # 已占用的CPU时间 常用参数 ps...top命令 kill killall命令 kill命令可通过进程ID(PID)给进程发信号。...kill $pid # 杀掉进程id为pid的进程 killall # killall命令支持通过进程名而不是PID来结束进程,也支持通配符 以root身份执行此命令当小心,很可能会误杀重要的系统进程...tar function [options] object1 object2 ... tar -c # 创建一个新的归档文件 tar -v # 在处理文件时显示文件 tar -f # 输出结果到文件或设备

    49410

    C和C++安全编码笔记:文件IO

    绝对路径名以一个文件分割字符开始(在POSIX系统中,通常是一个正斜杠”/”,而在Windows系统中是反斜杠”\”),这意味着路径名中的第一个文件名前面是这个进程的根目录。...它们用权限字符串中的第一个字母p来表示。套接字(socket)允许在同一台机器上运行的两个进程之间通信。它们用权限字符串的第一个字母s来表示。...在可能的情况下,系统应采用这种方法设计,而不是创建设置用户ID为root的程序。在撤销特权时注意正确的撤销顺序。  管理权限:进程特权管理是成功的一半,另一半则是文件权限管理。 ...在Windows系统上,还可能提供驱动器盘符(例如C:),以及其它特殊文件名,如”…”,它相当于”../..”。...例如,一个进程用一个众所周知的名字或一个临时名称在共享目录中创建一个临时文件,并把它传达给合作的进程,那么就可以使用该文件,在这些合作的进程之间共享信息。

    98500
    领券