1分钟解救 run 不出来的 Autoruns

缘起

今天,被某些开机自动运行的程序“惹毛”了。打算使用 Autoruns 查看这个进程为何会开机启动。没想到打开 Autoruns 后,只能在任务栏看到图标,怎么点都点出不来。Autoruns 已经启动了,否则任务栏不会看到图标,究竟是什么缘由致使的呢?继续阅读前,请回忆下是否遇到过相似的状况,有什么思路吗?工具

说明: 很早就写了初稿,一直没来得及编辑完善,直到周末才编辑完。code

捕获事件

照例请出咱们的老朋友 —— process monitor。开始捕获,而后打开 Autoruns,当任务栏出现 Autoruns 的图标后,中止捕获。经过 Tools -> Process Tree... (或者按 Ctrl + T)查找到 Autoruns,在其上面右键,Add Process to Include Filter,只显示 Autoruns 相关的事件,准备进一步分析。cdn

add-autoruns-to-include-filter
add-autoruns-to-include-filter

没想到!?竟然一篇空白,什么都没有了!blog

小意外

process-monitor-filter-empty
process-monitor-filter-empty

process monitor 确定捕获了对应的事件,可是为何什么都没有了呢?先检查下过滤条件。进程

process-monitor-filter-autoruns-excluded-by-default
process-monitor-filter-autoruns-excluded-by-default

原来,process monitor 默认会过滤掉 Autoruns 相关的事件。关闭这条过滤规则,点击 OK,关于 Autoruns 的事件都出来了。事件

autoruns-events-show-up
autoruns-events-show-up

分析

捕获的事件有了,咱们就能够继续分析了。我猜想,Autoruns 应该把配置保存到了注册表中,因此排除其它几类事件,只保留注册表相关事件。应该是成功读取到了某些错误的设置,因此只保留 ReusltSuccess 并且 OperationRegQueryValue 的事件。(固然,这是个人猜想。还有多是没读取到某些关键设置,若是是没读取到,咱们应该把 Result 列是 Success 的排除掉。)it

通常状况下,不少程序会把对应的设置保存到 HKCU 下,而不是 HKLM。由于写入 HKLM 须要管理员权限,读取不用。因此咱们还能够排除 PathHKLM 开头的记录。io

作好过滤后,往下浏览下,发现了四个跟位置有关的参数。event

autoruns-position-registry-setting
autoruns-position-registry-setting

发现,其中的 ypos 的值很奇怪,删除后从新启动 Autoruns 便可正常显示了。整个过程请参考下面的屏幕录像。class

troubleshoot-autoruns-can-not-show-up-screen-record
troubleshoot-autoruns-can-not-show-up-screen-record

友情提示:

Autoruns 在关闭的时候会保存相关配置到注册表,因此须要先关闭 Autoruns,再作修改操做。

回顾

在公司的时候,接过外接显示器。应该是 Autoruns 上次退出的时候的位置正在外接显示器,保存的位置是相对于外接显示器的位置。本次启动后,依然想在外接显示器中显示。可是,外接显示器已经没有了,因此不能正常显示出来。make sense!

总结

  • Autoruns 会保存相关设置到注册表中,对应的注册表位置是 HKCU\Software\Sysinternals\AutoRuns
  • 猜测其它 Sysinternals 工具也会把设置保存到 HKCU\Software\Sysinternals\ 下面。
  • process monitor 默认会过滤一些事件,其中就包括 Autoruns 相关的事件。
  • process monitor 真的是排错的神兵利器。可是必定要用好过滤才行。不然就是大海捞针!
相关文章
相关标签/搜索