相关文章推荐
健壮的回锅肉  ·  C# String Dictionary ...·  9 月前    · 
仗义的沙发  ·  1.6 ...·  1 年前    · 
健壮的爆米花  ·  VBA办公自动化 - 知乎·  1 年前    · 

本文介绍如何安装进程监视器工具,以排查新式、收件箱和 Microsoft Store 应用无法启动的问题。

下载 进程监视器 工具。 在本地下载进程监视器工具后,提取文件。

若要捕获进程监视器跟踪,请使用提升的权限运行它, (以管理员) 身份运行。

请确保运行的进程监视器版本与 x86 系统的平台 ( Procmon.exe 、X64 系统的 Procmon64.exe 和 ARM )Procmon64a.exe 匹配。

启动后,将以前保存的所有筛选器重置为默认值,以确保以前设置的筛选器不会筛选出任何潜在事件。 如果是第一次运行进程监视器,或者没有设置筛选器,则可以在不使用弹出窗口的情况下开始录制。

默认情况下,录制应自动开始。 但是,可以通过选择以下图标来确保它正在运行:

或者,可以通过按 Ctrl + E 或从“ 文件 ”菜单中选择“ 捕获事件 ”来开始录制。 状态栏中记录的事件如下所示:

或者,如果图形用户界面 (GUI) 不是选项,或者仅可通过控制台访问远程访问系统,则可以使用Windows PowerShell或命令提示符来跟踪问题。 例如:

C:\ProcessMonitor>procmon64.exe -accepteula -backingfile C:\ProcessMonitor\Recording.pml -quiet -minimized

其他选项可用,包括筛选和设置最大文件大小。 有关详细信息,请参阅 进程监视器

若要终止并保存跟踪,可以使用以下命令:

C:\ProcessMonitor>procmon64.exe -terminate -quiet

此外,可以使用 PowerShell 或 PsExec 工具远程运行进程监视器。 例如:

C:\PSTools>psexec.exe -sd \\<Computer Name> C:\ProcessMonitor\procmon64.exe -accepteula -backingfile C:\ProcessMonitor\Recording.pml -quiet -minimized

若要停止录制,可以使用以下命令:

C:\PSTools>psexec.exe -sd \\<Computer Name> C:\ProcessMonitor\procmon64.exe -terminate -quiet

存储和保存事件

有多种方法可用于存储和保存事件。 可以从“文件”菜单中选择“备份文件”。 然后,可以看到两种存储事件的方法:

  • 使用虚拟内存
  • 使用名为 的文件
  • 使用虚拟内存

    此方法使用系统的内存来存储文件,直到用户手动保存该文件。

    长时间运行进程监视器(由虚拟内存提供支持)可能会导致进程监视器消耗所有可用的系统虚拟内存,这可能导致系统停止响应。

    如果开始录制为 虚拟内存支持,则需要在退出进程监视器之前保存录制。

    请确保选择“ 所有事件 ”,并将格式设置为 “本机进程监视器格式” (PML) 。 如果录制内容不包含所有事件,则只有显示或突出显示的事件可用于分析,这可能不够。

    由文件支持

    此方法使用文件来存储录制内容,不需要在退出进程监视器之前手动保存该文件。

    如果未定义最大文件大小,则运行进程监视器的时间过长(由文件提供支持)可能会导致进程监视器占用所有可用的系统磁盘空间,这可能导致系统停止响应。

    设置进程监视器并开始录制后,需要重现问题。

    故障排除示例

    以此问题为例;计算器应用程序不起作用。 首先,使用上述任何方法启动进程监视器录制。 然后通过尝试启动应用程序来重现问题。 重现问题后,停止进程监视器录制并保存数据。

    若要分析记录的进程监视器跟踪,请使用进程监视器将其打开。 在菜单上的“工具”下选择“进程树”,查看应用程序是否在录制期间启动。

    选择“计算器”过程:

    若要专注于进程,请右键单击应用程序名称,然后选择“ 添加进程以包括筛选器”。

    同样,可以手动为进程 ID 添加筛选器。

    退出“进程树”视图或在“进程监视器筛选器”窗口中选择“确定”,查看包含进程的筛选捕获行。 在此示例中, Calculator.exe 进程正在启动。

    然后转到进程捕获的末尾,并在进程退出事件之前查找一组线程退出事件。

    还可以看到 WerFault.exe的 Process Create 事件。 此时,应用程序已达到不可恢复的条件,并调用了默认错误处理程序。

    还应注意到,还会记录一些与应用程序崩溃相关的事件日志。

    在这种情况下,应检查以下注册表项对工作计算机的权限,以查看是否存在一些差异。

    \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

    在此示例中, 所有应用程序包 都缺少 User Shell 文件夹中的“读取”权限。

    也可以使用 PowerShell 或命令提示符执行此操作。

    对于工作系统:

    对于非工作系统:

    如果未发现任何附近可能可疑的权限问题,则始终可以检查任何可疑权限块的整个跟踪。 首先,通过在“筛选器”菜单下选择“ 重置筛选器 ”,删除“计算器”进程的 筛选器 。 然后,从“工具”菜单中选择“计数发生次数”选项。 可以从下拉菜单中选择结果 然后选择“ 计数”。

    筛选完成后,可以双击“拒绝访问”行以查看筛选的事件:

    如果浏览列表,并非所有“拒绝访问”结果都会导致代码失败。

    通常,要求“所有访问”的任何内容都会被拒绝,因此你可以将其排除在调查之外。 可以通过筛选包含 Desired Access: All Access 的事件来自动执行此操作,如下所示:

    在此示例中,结果如下所示:

    为“所有应用程序包”添加适当的权限可同时解决这两个应用程序的这两个问题。

    有时无法确定哪些权限更改正在阻止应用程序启动。 进程监视器仅捕获进程活动的某些部分。

    如果许多计算机受到同一问题的影响,请从新安装的新计算机启动,并缓慢添加策略,直到应用程序无法再次启动,从而排除故障。

    如果只有一台计算机受到影响,请恢复或重置计算机。 如果只有一个用户受到影响,请重新创建用户的配置文件。