Sysinternals Process Monitor (ProcMon):在过滤器上使用通配符

Sysinternals Process Monitor (ProcMon): Using wildcards on filter

我正在使用 Sysinternals Process Monitor 来调试一些传入事件,现在我正尝试在 Path 上创建一个过滤器并使用通配符。我要使用的是过滤以 c:\MyApp\MyDocuments\Temp 开头并以 .pdf

结尾的路径

路径过滤器应如下所示:c:\MyApp\MyDocuments\Temp*.pdf

我该怎么做?

据我所知,这是不可能的。你可以只使用

begins with c:\MyApp\MyDocuments\Temp 和另一个过滤器 ends with .pdf.

当您有两个像这样的过滤器时:

  • Path begins with c:\MyApp\MyDocuments\Temp
  • Path ends with .pdf

实际上以该临时文件夹开头的任何内容都包含在内,并且包含记录 .pdf 事件的任何其他位置,因此您会得到不想要的结果。像这样的东西:

C:\MyApp\MyDocuments\Temp.txt (not a PDF)
C:\Some\Other\Folder\file.pdf (not the folder I want)

Process Monitor 帮助文件解释了为什么 begins with / ends with 过滤器不能一起工作。来自帮助文件:

Process Monitor ORs together all the filters that are related to a particular attribute type and ANDs together filters of different attribute types. For example, if you specified process name include filters for Notepad.exe and Cmd.exe and a path include filter for C:\Windows, Process Monitor would only display events originating in either Notepad.exe or Cmd.exe that specify the C:\Windows directory.

因此,因为过滤器实体是“开始于”和“结束于”的“路径”,所以进程监视器对它们进行 OR,因此我们得到了我们不想要的噪音。这是一个按我们想要的方式工作的过滤器组合:

  • Path ends with .pdf Include
  • Path excludes C:\MyApp\MyDocuments\Temp Exclude

据我所知,“排除”关系运算符的行为类似于“不包含”。我找不到任何列出所有运算符及其作用的特定文档,但看起来就是这样。因此,即使我们有两个将进行 OR 运算的“路径”过滤器,因为一个是包含而另一个是排除,我们还是得到了我们想要的,这只是在该文件路径中编辑的 PDF。