如果你的电脑出了问题,比如运行卡顿、开机慢,甚至老是崩溃,Windows 自带了一些工具能帮你找出问题。例如,任务管理器能告诉你是不是某个进程占用了太多磁盘或内存,启动应用能让你查看并搞定开机慢的问题。还有事件查看器,能告诉你系统为啥崩溃、啥时候崩的。
但这些工具只能看个大概。你只知道出了啥问题,但很少知道为啥。你可以装第三方工具来补上这个缺口,但我没必要。微软自家的 Sysinternals 套件已经提供了更厉害的工具来替代这三个,它们是由最懂 Windows 内部机制的那帮人做的。现在我自己电脑上,Process Explorer、Autoruns 和 Sysmon 早就取代了任务管理器、启动应用和事件查看器。
Process Explorer 能让你看到任务管理器藏起来的东西
真正的带颜色标记的进程树
任务管理器应付基本操作还行。我可以快速看一下进程选项卡,按内存或 CPU 排个序,然后关掉吃资源的进程。它甚至有个标签页,你切换到性能视图时,能准确告诉你电脑为啥变慢。但一旦我想搞清楚某个进程为啥存在、它到底在干嘛,任务管理器就不够用了。
Process Explorer 是 Sysinternals 的一个工具,它通过展示真正的父子进程树解决了这个问题。它同时用了父 PID 和启动时间,这样一来就算父进程已经退出了,子进程也不会被错误地挂到另一个恰好用了相同 PID 的新进程上。所以如果你想追踪一个可疑子进程是从哪启动的,你完全可以相信你看到的东西。
进程列表中的每一行颜色都不一样,代表不同的进程类型。黄色的是 .NET 进程,粉色标记服务(有个专门的服务选项卡,显示每个 svchost 里跑着哪些服务),青色突出显示 UWP 和 WinRT 进程,紫红色标的是受保护进程,管理员权限也看不到里面。下面那个窗格才是它真正比任务管理器厉害的地方。您可以打开句柄视图,找到是哪个进程锁住了你删不掉的文件,然后直接关掉那个句柄就行,不用把整个进程都杀掉。模块视图里能看到每个进程加载的所有 DLL,被重定位的还会高亮显示,要是觉得哪不对劲,这功能就很有用了。
Autoruns 能找到所有 Windows 忽略掉的启动项
列出了开机时加载的所有东西
任务管理器的启动应用选项卡(或设置 > 应用 > 启动下的那个)是查开机慢的好起点。它会显示那些常见的元凶,还会评估它们对开机速度的影响,我一般就是看这个决定先禁用哪些启动应用。把最影响速度的那些关掉,通常能快个几秒钟。
问题在于,启动应用列表被精心筛选过,藏了很多东西。Windows 把大部分真正的自动启动项都藏起来了,可能是怕用户把系统搞坏了。像服务、计划任务、注册表的 Run 项、Active Setup 项、还有资源管理器扩展都会在启动时加载,但它们基本都不会出现在任务管理器里。所以你清理了能看到的那几个,还挺得意,但其实一半的开机启动程序还在后台偷偷跑着。
Autoruns 去除了那层烟雾弹,让你更好地看清这些进程。启动 Autorun 后,登录选项卡会显示任务管理器中没有的多个条目,其中很多是已卸载但没清理注册表条目的应用留下的痕迹。在我的一台机器上,我发现了 Adobe 更新程序、一个每次启动都试图打开 CMD 的自定义条目,以及一个反复出现的 Google Chrome Active Setup 条目。但在启动应用选项卡里一个都看不见。
你可以取消勾选条目而非删除它们,这样万一你禁用了不该禁用的,还能撤销。建议你只处理明显的第三方残留、不用的游戏启动器和废弃的更新服务。凡是微软签名或跟驱动有关的,千万别动。这条规则让我省了不少麻烦,并且在每台我运行过的电脑上都显著加快了开机速度。
Sysmon 让事件查看器更有用
Windows 日志中丰富的进程、网络和文件遥测数据
事件查看器是出了问题之后才去翻的地方。比如你电脑夜里崩溃了,你可以打开 Windows 日志 > 系统,查找崩溃时间附近的关键错误,并尝试将其与某个驱动程序或服务匹配。这办法管用,但默认日志写得很含糊。就是说,你知道出错了,但搞不清是什么问题。
不过呢,事件查看器还有另一个替代方案,比前两个更技术流一点,先给你打个预防针。Sysmon(系统监视器)是一款Sysinternals工具,它接入Windows日志记录管道,记录Windows默认不记录的事件类型。它能捕捉到带完整命令行和文件哈希的进程创建、关联到特定进程的网络连接、文件的创建删除事件,还有注册表修改。所有这些都会跑到事件查看器里,路径是应用程序和服务日志 > Microsoft > Windows > Sysmon,所以你用的还是那个熟悉的工具。
搞定它只需要三步。你需要从Sysinternals网站下载Sysmon,弄个现成的配置文件(GitHub上SwiftOnSecurity的模板就挺好),然后用管理员身份打开命令提示符,运行sysmon64 -accepteula -i sysmonconfig.xml就行。就这么简单。事件立马就会涌入事件查看器。
至于怎么用,出了事之后你可以用它往回查。如果某个文件夹里多了个你没碰过的文件,Sysmon的事件ID 11(文件创建)会告诉你是哪个进程写进去的。如果你不在的时候网络流量突然飙升,事件ID 3(网络连接)会清清楚楚告诉你哪个程序在联网、连到哪去了。它没法替代正经的EDR,而且日志量涨得很快。但如果你就是想知道一台机器上到底发生了什么,它能让你在事件查看器里真正查起来,而不是只能盯着屏幕发呆。
当系统自带工具不输第三方时
我没卸载任务管理器——因为卸不掉,而且我也不想卸。要快速关闭一个卡死的程序,Ctrl + Shift + Esc 仍然比其他任何方式都快。设置里的“启动应用”用来关掉某个忘了的启动项就挺合适。蓝屏后,单独用事件查看器查一次也够了。
这些不够用时,我就会用Sysinternals三件套。需要看某个进程到底是什么时,用 Process Explorer;要彻底清理电脑时,用 Autoruns;想要日志便于之后复盘时,用 Sysmon。虽然学起来要多花点功夫,但比起瞎猜,它们能让你更清楚地知道电脑到底出了啥问题。
热门跟贴