Process Monitor 中文帮助文档

Process Monitor 帮助文档
【介绍】

Process Monitor(进程监视器)是一个Windows下的高级监视工具,可以实时显示文件系统、注册表和进程/线程的活动。它将Sysinternals以前的两个实用程序Filemon(文件监视器)和Regmon(注册表监视器)结合在一起,并且添加了大量的改进功能,包括丰富的非破坏性的过滤器,全面的事件属性——如会话ID和用户名,可靠的进程信息,对每个操作带有集成的调试符号支持的完整线程堆栈,同步记录日志文件等等。Process Monitor独特的强大功能将使它成为你在系统故障排除和恶意软件查杀中使用的核心实用程序。

Process Monitor可以在Windows 2000 SP4 with Update Rollup 1、Windows XP SP2、Windows Server 2003 SP1、Windows Vista,以及64位版本的Windows XP、Windows Server 2003 SP1和Windows Vista等系统上运行。(译者注:Process Monitor不支持Windows 98、Windows NT等以前的系统,不过可以使用Filemon和Regmon来实现它的部分功能。)

【在Filemon和Regmon基础上的改进】

Process Monitor的用户界面和选项与Filemon和Regmon很相似,但它是从头全部重写的,并且包括许多重大改进,例如:

  (此处引用自wbpluto的汉化版说明)
  • 监视进程和线程的启动和退出,包括退出状态代码
  • 监视映像 (DLL 和内核模式驱动程序) 加载
  • 捕获更多输入输出参数操作
  • 非破坏性的过滤器允许你自行定义而不会丢失任何捕获的数据
  • 捕获每一个线程操作的堆栈,使得可以在许多情况下识别一个操作的根源
  • 可靠捕获进程详细信息,包括映像路径、命令行、完整性、用户和会话ID等等
  • 完全可以自定义任何事件的属性列
  • 过滤器可以设置为任何数据条件,包括未在当前视图中显示的
  • 高级的日志机制,可记录上千万的事件,数GB的日志数据
  • 进程树工具显示所有进程的关系
  • 原生的日志格式,可将所有数据信息保存,让另一个 Process Monitor 实例加载
  • 进程悬停提示,可方便的查看进程信息
  • 详细的悬停提示信息让你方便的查看列中不能完整显示的信息
  • 搜索可取消
  • 系统引导时记录所有操作

 要熟悉Process Monitor的功能,最好的方法是通读帮助文件,然后在一个实际运行的系统中尝试使用一下每一个菜单和选项。

 【使用Process Monitor】

运行Process Monitor需要本地管理员组成员的权限。当你启动Process Monitor后,它会立刻开始监视三类操作:文件系统、注册表和进程。

 • 文件系统
  Process Monitor显示Windows文件系统中的所有文件系统活动,包括本地存储器和远程文件系统。Process Monitor能够自动检测到新添加的文件系统设备并且对它们进行监视。所有的文件系统路径相对于执行文件系统操作的用户会话来显示。例如,如果用户A将一个共享路径映射为驱动器盘符Z:,那么任何对此共享路径的访问在Process Monitor中都会显示为相对于Z:盘的路径。

   在Process Monitor的工具栏上取消“显示文件系统活动”按钮的选择,就可以从视图中移除文件系统操作的记录,按下这个按钮又会将文件系统操作添加回视图。

  • 注册表
  Process Monitor记录所有注册表操作,并使用习惯的缩写形式来显示注册表根键(例如将HKEY_LOCAL_MACHINE显示为HKLM)。

   在Process Monitor的工具栏上取消“显示注册表活动”按钮的选择,就可以从视图中移除注册表操作的记录,按下这个按钮又会将注册表操作添加回视图。

  • 进程
  在进程/线程监视子系统中,Process Monitor跟踪所有进程和线程的创建和退出操作,以及DLL(动态链接库)和设备驱动程序的加载操作。

   在Process Monitor的工具栏上取消“显示进程和线程活动”按钮的选择,就可以从视图中移除进程和线程操作的记录,按下这个按钮又会将进程和线程操作添加回视图。

  • 剖析事件
  这种事件类型可以在“选项”菜单中启用。当它被启用时,Process Monitor扫描系统中所有的活动线程,并为每个线程创建一个剖析事件,记录它耗费的核心和用户CPU时间,以及该线程自上次剖析事件以来执行了多少次上下文转换。注意:在剖析中不包括System进程。 

有一些基本选项控制着Process Monitor的基本操作:

 捕获:使用“文件”菜单中的“捕获事件”菜单项,工具栏上的“捕获”按钮,以及快捷键Ctrl+E来切换Process Monitor的捕获行为。

自动滚动:选择“编辑”菜单中的“自动滚动”项,工具栏上的“自动滚动”按钮,以及快捷键Ctrl+A来切换Process Monitor的自动滚动行为,以保证最近的操作在视图中是可见的。

 清除:选择“编辑”菜单中的“清除显示”菜单项,工具栏上的“清除”按钮,以及快捷键Ctrl+X,可以清除视图中显示的所有内容。

 【选择列】

你可以拖动列来重新排列它们的顺序。选择“选项”菜单中的“选择列”菜单项,打开“列选择”对话框,你可以在这里定制要显示的列。可供选择的列包括:

 应用程序详细信息

• 进程名 发生事件的进程名称
• 映像路径 在进程中运行的映像文件的完整路径
• 命令行 启动进程时所使用的命令行
• 公司名称 在进程映像文件中嵌入的公司名称版本字符串文本,该文本由应用程序开发者所选择定义
• 描述 在进程映像文件中嵌入的产品描述字符串文本,该文本由应用程序开发者所选择定义
• 版本 在进程映像文件中嵌入的产品版本号,该信息由应用程序开发者所选择定义
• 体系架构 应用程序的体系架构(如32位、64位等)

 事件详细信息

• 序号 Process Monitor分配给一个特定事件的唯一数字编号
• 事件类 事件的类型(文件、注册表、进程)
• 操作 特定的事件操作(例如读取文件、注册表查询值等)
• 日期和时间 操作发生的日期和时间
• 时间 仅包括操作发生的时间
• 类别 操作的类别(例如读取、读取元数据等)
• 路径 事件引用资源的路径
• 详细信息 事件的额外具体信息
• 结果 操作完成后返回的状态代码
• 相对时间 相对于Process Monitor启动时间或上次清除视图时间的操作时间
• 持续时间 已完成操作的持续时间

 进程管理

• 用户名 执行操作的进程运行时所使用的用户帐号的名称
• 会话ID 执行操作的进程运行时所属的Windows会话
• 认证ID 执行操作的进程运行时所属的登录会话
• 进程ID 执行操作的进程ID(PID)
• 线程ID 执行操作的线程ID(TID)
• 父ID 执行操作的进程的父进程ID
• 完整性 执行操作的进程运行中的完整性(仅适用于Windows Vista)
• 虚拟化 执行操作的进程的虚拟化状态(仅适用于Windows Vista)

 【事件属性】
你可以通过在事件上双击鼠标来查看某个特定事件的属性,或者选择“事件”菜单下的“属性”菜单项,或者当用右键单击某个事件时,在上下文菜单中选择“属性”。“事件属性”对话框由“事件”、“进程”和“堆栈”三页组成,你可以使用对话框下方的箭头按钮移动到下一个或上一个显示的或高亮的事件。 

事件
“事件”页显示某个事件的详细信息,包括它的序号、线程、事件类型、操作、结果、时间戳,如果可用的话,还包括资源路径。只有文件系统和注册表两类事件定义了资源路径。“事件”页的下半部分列出了由事件操作所决定的详细信息。这些详细信息与事件在主窗口的详细信息列中所显示的内容相同,但是每条详细信息都显示为单独的一行。 

进程
事件的“进程”页显示关于产生事件的进程的信息,还包括与进程的映像文件相关的数据,例如路径和版本字符串。“进程”页显示进程的运行属性,如进程ID、运行进程的用户帐号,如果事件发生在64位的Windows系统中,还可以显示该进程是32位还是64位的。如果进程在Windows Vista系统上运行,Process Monitor可以显示进程的完整性和是否被虚拟化。

 “进程”页的底部显示了当进程中的事件发生时,由该进程加载的映像文件列表和加载它们的内存地址。双击列表中的映像文件,可以查看关于该映像文件的更多信息,包括它的版本信息等。 

堆栈
“堆栈”页显示当事件被记录时该线程的堆栈。堆栈在判定事件发生的原因和导致事件发生的组件时很有用。堆栈的内核模式帧在左侧以字母K标记,用户模式帧(仅在32位系统上有效)以字母U标记。如果Process Monitor能够找到在跟踪中引用的映像文件所使用的调试符号,它会尝试把内存地址解析为它们所属的函数名。如果符号必须从网络上获取,例如使用微软符号服务器,符号解析会花费一些时间。使用“选项”菜单下的“配置符号”对话框,可以对符号进行设置。 

如果你在“配置符号”对话框中指定了一个源文件的路径,当行号符号信息可用并且在你指定的路径下存在源文件时,“堆栈”对话框中的“来源”按钮将对该帧可用。点击“来源”按钮会打开一个文本查看器,高亮显示被引用的源代码行。

 要查看堆栈跟踪记录中关于映像文件的更多信息,可以双击某个帧,或者选择该帧后点击堆栈跟踪区下方的“属性”按钮。

 选择“事件”菜单下的“堆栈”菜单项,可以打开事件属性对话框并直接显示“堆栈”页。

 【过滤和高亮显示】

Process Monitor提供了几种不同的方法来配置过滤器和高亮显示。

 包括和排除过滤器
你可以在过滤器中指定事件属性,Process Monitor将只显示或排除与属性值相匹配的事件。所有的过滤器都是非破坏性的,意思是说它们只影响事件在Process Monitor中的显示,而不影响事件的基础数据。 

当选择了一个事件之后,“事件”菜单下的“包括”和“排除”子菜单可以让你通过简单地添加一个事件属性来设置“包括”和“排除”过滤器。例如,想要只显示由某个特定名称的进程执行的事件,就选择“包括”子菜单下的“进程名”。你还可以选择多个事件,同时为这些事件中包含的所有唯一值配置属性过滤器。Process Monitor把与某个特定属性类型相关的所有过滤器当作“或(OR)”的关系,把不同属性类型的过滤器当作“与(AND)”的关系。例如,如果你为Notepad.exe和Cmd.exe指定了“包括—进程名”过滤器,并为C:\Windows指定了“包括—路径”过滤器,Process Monitor将只显示来源于Notepad.exe或Cmd.exe,并且指定了C:\Windows目录的事件。 

在“过滤器”对话框中可以使用更复杂的过滤选项,你可以选择“过滤器”菜单下的“过滤器”菜单项,或者点击工具栏上的“过滤器”按钮。一个过滤项目包括一个属性域(如认证ID,进程名等)、一个比较操作符、一个属性值和一个“保留”或“排除”的过滤类型。为了方便,Process Monitor会自动在下拉列表中列出在已加载的跟踪数据中出现的属性值,但是你也可以输入任意的值。

 注意:因为Process Monitor在一个操作完成之前并不知道结果,涉及到结果属性的过滤器只能应用于已经收集到的项目。在过滤器被应用之后收集的项目将不受结果属性过滤器影响。

 过滤器上下文菜单
如果你在视图中的一个项目上单击鼠标右键,Process Monitor会显示一个上下文菜单,让你查看项目的属性或设置一个基于项目属性的过滤器。而且,在菜单中添加了快速过滤器入口,可以根据你的鼠标点击的列的值创建过滤器。

 破坏性过滤
默认情况下,Process Monitor的过滤器应用于显示的数据,而不是保存的数据。这使你能够通过改变过滤器来获得数据的不同视图,并且不会影响到被排除的数据。然而,你可以通过选择“过滤器”菜单下的“忽略已过滤的事件”,将Process Monitor切换到破坏性过滤模式,这样所有被过滤器排除的数据都会被同时删除。

 包含来自窗口的进程
工具栏上有一个形状像靶子的按钮,你可以将它拖放到一个窗口上,Process Monitor会将拥有这个窗口的进程的进程ID添加到“包括”过滤器中。

 基本和高级模式
“选项”菜单中的“启用高级输出”菜单项控制着Process Monitor工作在基本模式还是高级模式。当Process Monitor工作在基本模式下时,它配置了内置的过滤器,从视图中排除与系统相关的活动,并且使用直观的名称来表示内部文件系统操作。例如,在基本模式下,Process Monitor会把内部的IRP_MJ_READ操作显示为“读取文件”。基本模式使输出更易读,并省略了通常与排除应用程序故障无关的事件。

 保存和加载过滤器
当你配置了一个过滤器之后,可以使用“过滤器”菜单下的“保存过滤器”将其保存起来。Process Monitor把你保存的过滤器添加到“加载过滤器”子菜单下以方便访问。打开“过滤器”菜单下的“组织过滤器”对话框,可以重命名或删除已保存的过滤器,将这些过滤器导出到文件中保存,或者从文件中导入之前保存的过滤器。

 高亮显示
Process Monitor高亮显示过滤器允许你指定事件属性,使事件以高亮颜色显示。“事件”菜单中的“高亮显示”子菜单提供了定义高亮显示过滤器的快速访问入口,在“过滤器”菜单下的“高亮显示”菜单项将打开“高亮显示”对话框,它的操作与包括/排除过滤器对话框类似。

 【进程树】 

使用“工具”菜单下的“进程树”菜单项打开“进程树”对话框,它以层次形式显示已加载的跟踪数据所引用的所有进程,反映出他们的父子关系。同一个父进程下的子进程按照它们的启动时间排序。排列在窗口最左边的进程的父进程没有在跟踪记录中留下任何事件。

 当你在进程树中选择了一个进程,对话框底部会显示出Process Monitor获取的关于此进程的一部分数据,例如它的映像路径、用户帐号、启动时间。如果要查看关于此进程的更多信息,你可以点击“转到事件”按钮,这将使Process Monitor选择并定位到由该进程执行的第一个可见项目。注意,通过使用过滤器从视图中排除指定进程的所有事件,可以阻止这个操作的完成。

 【跟踪摘要工具】

 Process Monitor包含了一系列的对话框,让你在跟踪收集的事件中进行简单的数据挖掘。

 唯一值
使用“工具”菜单下相应的菜单项打开“唯一值”对话框,可以让你看到跟踪记录中的事件的不同属性的唯一值。例如,如果你想快速查看在跟踪记录中引用的所有路径,在下拉列表中选择“路径”。

 在显示的值上双击,或者点击“过滤器”按钮,可以将当前选择的值添加到“包括”过滤器。

 统计出现次数
在“工具”菜单下打开“出现次数”对话框,它显示你指定的属性类型在跟踪记录中可见的唯一值,连同在跟踪记录中包含这个值的事件出现的次数。

进程活动摘要
这个对话框概括了在跟踪数据中可见的进程,包括它们的进程ID、映像文件名和命令行等信息。

 文件摘要
“文件摘要”对话框列出了过滤后的跟踪记录中每一个唯一的文件系统路径,对该文件执行I/O操作所花费的时间,引用这个路径的事件总数,并分别计算不同类型的操作的数量。

 注册表摘要
“注册表摘要”对话框列出了过滤后的跟踪记录中每一个唯一的注册表路径,对该注册表路径执行I/O操作所花费的时间,引用这个路径的事件总数,并分别计算不同类型的操作的数量。

 堆栈摘要
使用“堆栈摘要”对话框查看每个进程的堆栈跟踪记录的实例,包括堆栈跟踪发生的次数和同一个跟踪记录中的事件花费的总时间。

【选项】

 “选项”菜单中的一些设置可改变Process Monitor的行为。

 启用高级输出
这个选项控制内置的高级操作过滤器,在“过滤和高亮显示”一节中已经描述过了。

 字体
这个选项打开字体选择对话框,你可以选择Process Monitor用来显示的字体。

 高亮颜色
这个菜单项打开一个对话框,可以选择文字和背景的颜色,Process Monitor用它们来显示与高亮显示过滤器相匹配的项目。

 配置符号
如果符号信息可用的话,Process Monitor能够用它来显示事件堆栈所引用的函数名称。你可以在Microsoft Debugging Tools for Windows网站上找到关于配置符号的信息。

 历史记录深度
Process Monitor监视着已提交的内存使用,当虚拟内存过低时它会将自身关闭。但是“历史记录深度”对话框可以让你限制它保留的项目数量,所以你能让Process Monitor长期运行并保证它保留了最新的事件。

 【保存和日志】

 文件格式
你可以使用“文件”菜单中的“保存”菜单项,将Process Monitor的数据保存为原生格式(PML)、逗号分隔的值(CSV),或者XML格式。PML格式保存了捕获到的所有数据,所以你可以把它重新加载进同一个系统或不同系统中的Process Monitor。CSV文件可用于导入到Excel或其他数据分析应用程序。最后,XML格式的数据可以被操作XML的工具所解析。

 日志
缺省情况下,Process Monitor使用虚拟内存来储存捕获到的数据。使用“文件”菜单下的“后备文件”对话框,可以配置Process Monitor将捕获的数据储存在磁盘上的文件中。启用这个选项后,Process Monitor会在捕获数据的同时以原生的PML格式将日志数据保存到磁盘上。

 “后备文件”对话框还会显示诊断信息,包括已捕获的事件数量、进程数量等信息和捕获线程的加载状态。

 【引导日志】

 Process Monitor能够在启动设备驱动程序初始化时,从引导进程中很早的一个时刻开始记录活动。选择“选项”菜单下的“启用引导日志”,可以配置Process Monitor在下次系统引导时记录日志。Process Monitor的驱动程序将会在下次系统引导时将活动日志记录到%Windir%目录下,并继续记录日志,直到关机或者你再次运行Process Monitor。因此,如果你在启动期间不运行Process Monitor,你将捕获到从开机到关机的整个周期的跟踪记录。

 当你运行Process Monitor时,它查看之前是否生成了一个引导日志,如果是的话,会询问你想要把处理过的引导日志输出文件放在哪里。当转换完成后,Process Monitor将显示跟踪记录。如果要查看引导过程早期的唯一进程——System进程的活动,需要在“过滤器”菜单中选择“启用高级输出”。

 如果你设置了启用引导日志,而系统在引导过程的初期崩溃了,你可以通过在Windows启动菜单(在引导过程中按F8键)中选择“最近一次的正确配置”来取消引导日志。

 【命令行选项】

 Process Monitor支持一些命令行选项:

 /Openlog <保存的PML日志文件>
让Process Monitor直接打开并加载指定的日志文件。

 /Backingfile <日志文件名>
让Process Monitor创建并使用指定的文件名作为日志文件。

 /Pagingfile
将事件保存到虚拟内存中。

 /Noconnect
当此标记存在时,Process Monitor不会自动开始记录活动。

 /Nofilter
启动时清除过滤器。

 /AcceptEula
自动接受并跳过最终用户许可协议(EULA)对话框。

 /Profiling
启用线程剖析事件类。

 /Minimized
启动Process Monitor时最小化窗口到任务栏。

 /WaitForIdle
等待Process Monitor实例准备完毕。

 /Terminate
终止Process Monitor的所有实例并退出。

 /Quiet
在启动时不确认过滤器设置。

 /Run32
使用这个开关在64位的Windows上运行32位版本的Process Monitor,用来打开在32位系统上创建的日志。

 /HookRegistry
这个开关只在32位的Vista和Server 2008上有效,它让Process Monitor使用系统调用钩子代替注册表回调机制,来监视注册表的活动。这使它能够在这些操作系统上看到SoftGrid虚拟注册表操作。这个选项必须在Process Monitor在系统中第一次运行时使用,并且仅用于SoftGrid应用程序的故障排除。

 【编写Process Monitor脚本】

 你可以在批处理文件中使用Process Monitor命令行选项。例如要跟踪捕获notepad.exe的执行过程,批处理文件应该像下面这样写(译者注:可以将此脚本保存成.cmd或.bat文件):

  set PM=C:\sysint\procmon.exe
  start %PM% /quiet /minimized /backingfile C:\temp\notepad.pml
  %PM% /waitforidle
  notepad.exe
  %PM% /terminate

对Process Monitor的第一次调用使用了start以确保进程脱离控制台窗口,这使它能够与后面的命令并行运行。第二次调用带有/WaitForIdle,可以使批处理文件暂停执行,直到第一个实例启动完毕并开始捕获事件。最后一次调用带有/Terminate,让第一个实例停止捕获,提交所有未保存的数据到后备文件并干净退出。

 ---------------------------------------分-----隔-----线---------------------------------------

 好了,看完了上面的帮助文档,是不是对它的功能基本有了一些了解?下面我再以wbpluto汉化版为例,介绍一下在Process Monitor的使用中需要注意的一些问题。

 当你下载了Process Monitor之后,把下载的压缩包解开,无需安装直接运行Procmon.exe即可。当程序第一次启动时,会显示一个用户许可协议窗口,点击“同意”按钮,以后它就不会再出现了。

 由于软件原版是英文的,其默认设置的字体对中文来说比较小,我们首先在“选项”菜单下的“字体”对话框中,将显示的字体改为“宋体”,字号“小五”,这样就看得比较清晰了。

 程序启动之后就会自动开始捕获事件,接下来的具体操作参考上面的帮助文档就可以了。

 该软件的设置信息保存在注册表的以下键值中,如果想恢复其默认设置,将此键删除即可(注册表操作有风险,不了解的用户请勿随便删除)。

HKEY_CURRENT_USER\Software\Sysinternals\Process Monitor

 下面说一说在Process Monitor中使用调试符号的方法,对于一般用户来说,这个功能用处不是很大,但是对于有编程经验和对系统底层操作感兴趣的人来说,这是一个挺实用的功能,它能够把线程堆栈中的16进制地址转换为有意义的名称,更方便判定问题发生的原因。

 要使用这个功能,首先需要相关的符号文件。如果要调试你自己开发的程序,使用编译程序时生成的符号文件就可以了。如果要调试Windows的组件,就需要下载Windows Symbol Packages,但是这个库有几百兆大小,如果不是经常使用的话,最好是使用Microsoft Symbol Server,它可以根据需要在线下载符号信息。

 我们需要先在本地硬盘上创建一个目录来保存将要下载的符号信息,如C:\localsymbols,然后在Process Monitor的“选项”菜单下的“配置符号”对话框中,填入下面的符号路径:

SRV*C:\localsymbols*http://msdl.microsoft.com/download/symbols

 但是这样还不够,因为WindowsXP自带的调试工具帮助程序dbghelp.dll不支持从网络下载符号信息,所以还需要安装微软的Debugging Tools for Windows工具,在以下地址下载适合你的操作系统的版本:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

 如果装完后出现无效的DLL版本错误,就在“配置符号”对话框中将dbghelp.dll文件指向Debugging Tools for Windows安装路径下的同名文件即可。

 好了,关于Process Monitor就介绍到这里,也许你不会立刻用到它,但是当你遇到软件问题时,不妨试试这个小而强大的工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值