在执行快照的进程遍历后,如何获取所有进程的完整命令行?

2023-12-23

所以,我的目标是获取所有当前正在运行的进程的完整命令行。为此,我所做的就是使用CreateToolhelp32SnapshotAPI,然后执行一个流程来存储PROCESSENTRY32在名为的数组中键入进程process_list:

BOOL GetProcessList( FILE *f, PROCESSENTRY32* process_list, int process_count)
{
  HANDLE hProcessSnap;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;
  DWORD dwPriorityClass;


  hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
  if( hProcessSnap == INVALID_HANDLE_VALUE )
  {
    return( FALSE );
  }

  // Set the size of the structure before using it.
  pe32.dwSize = sizeof( PROCESSENTRY32 );

  // Retrieve information about the first process,
  // and exit if unsuccessful
  if( !Process32First( hProcessSnap, &pe32 ) )

  {
    CloseHandle( hProcessSnap );          // clean the snapshot object
    return( FALSE );
  }
  // Now walk the snapshot of processes, and
  // display information about each process in turn
  int i = 0;
  do
  {
    // Retrieve the priority class.
    dwPriorityClass = 0;
    hProcess = OpenProcess( PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, pe32.th32ProcessID );

    if( hProcess == NULL ) { }

    else
    {
      dwPriorityClass = GetPriorityClass( hProcess );
      if( !dwPriorityClass )
      CloseHandle( hProcess );
    }

    process_list[i] = pe32;
    i++;

  } while( Process32Next( hProcessSnap, &pe32 ) && i <= process_count);

  CloseHandle( hProcessSnap );
  return( TRUE );
}

现在,是否可以遍历这个进程数组并收集每个进程的完整命令行?我怎样才能做到这一点?

如果它很重要,我会将代码编译为 64 位进程,并且需要主机上运行的所有进程的完整命令行。


对于每个进程 ID:

  1. use OpenProcess()得到一个HANDLE到这个过程。

  2. 然后使用QueryFullProcessImageName() http://msdn.microsoft.com/en-us/library/windows/desktop/ms684919%28v=vs.85%29.aspx, GetProcessImageFileName() http://msdn.microsoft.com/en-us/library/windows/desktop/ms683217%28v=vs.85%29.aspx, or GetModuleFileNameEx http://msdn.microsoft.com/en-us/library/windows/desktop/ms683198%28v=vs.85%29.aspx获取进程的路径和文件名。

  3. 然后使用NtQueryInformationProcess() http://msdn.microsoft.com/en-us/library/windows/desktop/ms684280%28v=vs.85%29.aspx检索进程的地址PEB http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706%28v=vs.85%29.aspx结构,其中包含一个ProcessParameters包含进程命令行参数的成员(您还可以从PEB以及)。使用ReadProcessMemory() http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553%28v=vs.85%29.aspx阅读的内容PEB.

请参阅以下文章了解更多详细信息:

使用 NtQueryInformationProcess 获取进程信息 http://www.codeproject.com/Articles/19685/Get-Process-Info-with-NtQueryInformationProcess

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在执行快照的进程遍历后,如何获取所有进程的完整命令行? 的相关文章

随机推荐

  • Angular 2 表单验证,minLength 验证器不起作用

    我有以下 Angular 2 形式
  • SQL 更新 - 多列

    我想使用第二个表中的值来更新表中的多个列Select语句来获取这样的值 UPDATE tbl1 SET col1 col2 col3 SELECT colA colB colC FROM tbl2 WHERE tbl2 id someid
  • 如何自动将 C++ 文件转换为 Wireshark Lua 解析器

    我有一个定义特定协议的 C 文件 该文件包含定义协议中使用的消息的结构 每个结构体都包含特定消息的字段 示例如下 struct STATS00 MESSAGE T uint8 t message type uint16 t num send
  • 在这个CGBitmapContextCreate中,为什么bytesPerRow为0?

    我在Apple的示例代码中注意到 他们经常在CGBitmapContextCreate的bytesPerRow参数中提供0值 例如 这来自反射 http developer apple com library ios samplecode
  • Android 上不显示 OneSignal-Pushnotification 小图标

    我们有一个 Cordova 应用程序 其中每个 drawable xy 文件夹中都包含一个文件 icon png 我们使用 OneSignal 提供推送通知 通知正在按预期工作 除了那个小图标 我的手机顶部栏上只有一个空白图标 其中显示应用
  • 粗体文本行高高于普通文本行高

    一定是我在这里缺少的一些基本东西 我认为 font weight bold 不应该改变文本占用的垂直空间 特别是当行高设置为高于字体大小时 http jsfiddle net Arkkimaagi 7xAyy http jsfiddle n
  • 使用 phpseclib 库连接到 mysql 数据库

    我已使用 phpscelib 库成功连接到我的 VPS 现在我想连接到我现有的数据库 请帮助我吗 首先 允许该用户远程访问mysql不是更好吗 不过 我不知道你的理由 最常见的
  • R中双变量经验累积分布函数的代码[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 你好 我正在尝试在 R 中获取该函数的代码 但没有办法 R 中有一个名为 mecdf 的包 但现在不可用 有人可以帮我吗 VincentG
  • Angular 2 自定义验证器用于检查何时需要两个字段之一

    我正在尝试实现一个自定义验证器功能来检查是否输入了电话号码 家庭电话和手机 我想在两个字段都被触摸并且没有有效值时在这两个字段上显示错误消息 由于某种原因我的代码无法按预期工作 请帮我完成这件作品 谢谢 这是 stackblitz 链接ht
  • 使用可从 Excel(或非 VFP)读取的 C# 代码创建 .DBF

    语言 C 系统 Windows7 Excel 2007 我想从一些数据创建一个 DBF 并且我想从 Excel 2007 打开它 它可以是 dBase 或 Foxpro 我目前正在FoxPro9中做 顺便说一句 这段代码来自互联网 OleD
  • Haskell 中函数的序列化

    有没有办法在 Haskell 中序列化 读取 显示 函数 例如 考虑到 t 1 1 Num a gt a gt a 我希望能够拥有类似的东西 read 1 Num a gt a gt a 不幸的是这会引发一个错误 Could not ded
  • 我可以在其他类中创建 Activity 的对象吗?

    我定义了一个函数MainActivity现在我想从我的应用程序中的另一个类访问该函数 我创建了一个对象MainActivity我用这个对象调用了该函数 虽然没有错误 但是没有执行 每次我尝试执行时 应用程序都会崩溃 Activity A 应
  • 在 C# 中使用多种表单

    我正在尝试制作一个小项目 该项目针对不同的状态使用多种表单 对话框 并遇到一些问题 我的对话框是登录 设置和显示 当应用程序启动时显示登录表单 Application Run new login 用户可以从中打开 设置 表单 或者如果满足某
  • 高效退出多线程应用程序(具体)

    我已经阅读了一些有关将消息从线程冒泡到所有其他线程以优雅退出的正确方法的资料 每个线程执行其自己的退出例程 其中 我喜欢全局原子布尔值的想法 它可以从任何线程进行标记 并且所有其他线程检查此标记以执行退出例程 当所有线程都加入时 主线程可以
  • 为单选按钮组中的每个单选按钮添加图片

    我想实现一个单选按钮组 其中每个单选按钮旁边都有一张图片 在单选按钮的左侧 那可能吗 如果是这样 怎么办 html div class form group div
  • 更改监听器而不提交表单

    我有一个列表框 我想捕获选择的更改 以便根据它填充另一个列表框 我已经尝试过以下方式
  • 如何解决“CASCADE() 缺少必需的位置参数”TypeError

    我是 Django 和 Python 的新手 我已经在 Django 中创建了一些模型 现在由于以下错误而无法再运行该应用程序 TypeError CASCADE 缺少 4 个必需的位置参数 collector field sub objs
  • Mongoose 版本控制:什么时候禁用它是安全的?

    来自docs http mongoosejs com docs guide html versionKey versionKey 是每个文档首次创建时设置的属性 由猫鼬 该键值包含的内部修订 文档 该文档属性的名称是可配置的 这 默认为 v
  • 随机自定义视图选择器[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我创建了一个视图控制器 其中包含一个滚动视图 在滚动视图上我水平添加 5 个不同的自定义 UIView 我希望自定义 UIView 应根据自
  • 在执行快照的进程遍历后,如何获取所有进程的完整命令行?

    所以 我的目标是获取所有当前正在运行的进程的完整命令行 为此 我所做的就是使用CreateToolhelp32SnapshotAPI 然后执行一个流程来存储PROCESSENTRY32在名为的数组中键入进程process list BOOL