Answers:
Process Monitor是一个工具,它将收集所有正在运行的进程的文件系统,注册表和网络事件。然后可以分析收集到的事件,以确定在某些情况下系统(或应用程序)在内部的行为方式。
在这种情况下,我们希望利用该工具来确定启动过程中花费了较长时间才能完成的事件。
下载并运行Process Monitor。
在“ 选项”菜单中,选中“ 启用启动日志记录”。

在出现的对话框中,选中生成概要分析事件,然后单击确定。

重新启动系统并复制您的问题。登录过程完成后,启动过程监视器。
Process Monitor将通知您它收集了启动时活动,并询问您是否要立即保存该数据。单击是确认过程。

选择文件的适当存储位置,.pml然后等待数据转换。加载数据后,通过打开列标题之一上的上下文菜单并单击“ 选择列...”来显示“ 持续时间” 列。
...并在出现的对话框中选中相应的复选框。

通过从“过滤器”菜单中选择“ 过滤器...”来创建新的过滤器。

为“ 持续时间”列创建一个过滤器,该过滤器的值大于1,在这种情况下,应包括 “条目” 。单击“ 添加”将过滤器添加到列表,然后单击“确定”确认选择。

此时,Process Monitor中的事件列表将仅显示完成时间超过1秒的事件。您将要检查“ 持续时间”列,以了解花费很长时间才能完成的事件。
出于演示目的,这里选择了一些事件,这些事件花费了超过10秒的时间才能完成。为了演示目的,将其捕获在虚拟机中。
虽然这些事件不一定非要阻止登录过程完成,但禁用Windows Indexing服务和Avast Anti-Virus在此安装上还是值得尝试的。
xperf是Windows Performance Toolkit中的性能分析工具。使用它并能够分析收集的数据可能是一个挑战。不过,我们将看到如何收集所需的数据以及如何查看其相关部分。
请注意,为此所需的Windows评估和部署工具包(ADK)仅在Windows 7及更高版本上有效。
下载Windows ADK并至少安装Windows Performance Toolkit组件。
安装完成后,打开提升的命令提示符。

转到要在其中放置跟踪的目录。就像桌面一样。
建议的方法(根据使用XBOOTMGR捕获缓慢的启动,或由缓慢启动引起的缓慢登录)在引导过程中捕获跟踪:
xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10
系统现在将启动跟踪并重新启动。
重新启动后,请按照屏幕上的说明进行操作。系统将要求您允许收集过程提升。该过程完成后,您将在启动跟踪的文件夹中找到结果跟踪。
就我而言,它在桌面上创建了一个boot_1.etl(和相应的boot_1.cab)。
.etl在Windows Performance Analyzer中打开文件。
打开跟踪之后,您已经可以看到问题可能与硬件绑定的迹象。快速浏览Graph Explorer中的Computation,Storage和Memory概述将显示需要进一步分析的峰。
出于演示目的,让我们看一下“ 按过程使用情况”图。要显示内容,只需双击图形即可将其添加到“ 分析”视图中。
请注意,所有图表均未显示任何相关峰。开始时的蓝色峰值属于系统进程,预计在此时发生。
在上下文中可以更好地查看“ CPU使用率”图中的其他峰值。因此,让我们向Analysis视图添加另一个图形。我们正在寻找的图是“ 引导阶段”图,该图位于“ 系统活动”部分。
在上面的屏幕截图中,我还在底部添加了“ 通用事件”图,以提供其他上下文。但是,此处应注意的事实是,CPU使用率的第一个可见峰值是由Avast服务引起的。我们已经在Process Monitor分析中注意到,该过程是启动过程中花费大量时间的过程之一。
我们还看到这里,现在我们可以看到它在启动阶段的背景下,是高峰期发生后的Winlogon中初始化阶段(甚至在后启动阶段发生的时候,你已经可以看到桌面)。因此,在我们看到桌面之前,该过程实际上不可能在阶段中给我们造成问题。
我们要寻找的是Winlogon Init阶段中或附近发生的事件。为了简化操作,您可以在“ Boot Phases”(引导阶段)图中选择阶段。这将突出显示该阶段发生的所有图中的所有条目。
更好看的图肯定是“ 服务”图,因为其中大多数是在Winlogon Init阶段启动的。
就像我在简介中所说的那样,分析这些数据可能会很复杂,除非一旦打开跟踪,问题就直接跳到了您身上。但是,这绝对是分析问题的正确工具。根据情况,您甚至可能希望使用它来收集堆栈跟踪信息以进行更深入的研究。但是,此过程远远超出了本文的范围。