1分钟解救 run 不出来的 Autoruns

简介: 1分钟解救 run 不出来的 Autoruns

缘起

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

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

捕获事件

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

add-autoruns-to-include-filter

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

小意外

process-monitor-filter-empty

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

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

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

autoruns-events-show-up

分析

捕获的事件有了,我们就可以继续分析了。我猜测,Autoruns 应该把配置保存到了注册表中,所以排除其它几类事件,只保留注册表相关事件。应该是成功读取到了某些错误的设置,所以只保留 ReusltSuccess 而且 OperationRegQueryValue 的事件。(当然,这是我的猜测。还有可能是没读取到某些关键设置,如果是没读取到,我们应该把 Result 列是 Success 的排除掉。)

一般情况下,很多程序会把对应的设置保存到 HKCU 下,而不是 HKLM。因为写入 HKLM 需要管理员权限,读取不用。所以我们还可以排除 PathHKLM 开头的记录。

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

autoruns-position-registry-setting

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

友情提示:

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

回顾

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

总结

  • Autoruns 会保存相关设置到注册表中,对应的注册表位置是HKCU\Software\Sysinternals\AutoRuns
  • 猜想其它 Sysinternals 工具也会把设置保存到 HKCU\Software\Sysinternals\ 下面。
  • process monitor 默认会过滤一些事件,其中就包括 Autoruns 相关的事件。
  • process monitor 真的是排错的神兵利器。但是一定要用好过滤才行。否则就是大海捞针!
相关文章
|
3月前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
59 7
|
6月前
|
XML Android开发 数据格式
Dialog里面用ComposeView竟会直接闪退?深挖Lifecycle与Compose的爱恨情仇
Dialog里面用ComposeView竟会直接闪退?深挖Lifecycle与Compose的爱恨情仇
301 0
关于vagrant up的一个终结之谜
关于vagrant up的一个终结之谜
43 0
|
存储 运维 Java
不认识docker,怎么好意思说自己是干IT的
不认识docker,怎么好意思说自己是干IT的
98 0
|
Kubernetes Ubuntu Linux
Docker Desktop 宣布支持 Linux!从被弃用到“憋大招”卷土重来
Docker Desktop 宣布支持 Linux!从被弃用到“憋大招”卷土重来
404 0
Docker Desktop 宣布支持 Linux!从被弃用到“憋大招”卷土重来
|
程序员
【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!
新一轮的面试已经开始了,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识。我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只要掌握了核心知识和底层原理,吊打面试官应该不难吧。玩笑归玩笑,学习知识并不只是为了应付面试,更应该将这些知识运用到实际的工作中。
219 2
【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!
|
Oracle Java 关系型数据库
聊一聊多线程的 run() 和 start(),挖一挖start0
聊一聊多线程的 run() 和 start(),挖一挖start0
149 0
聊一聊多线程的 run() 和 start(),挖一挖start0
|
存储 NoSQL 关系型数据库
六脉连环大总结,教你干趴Docker
六脉连环大总结,教你干趴Docker
151 0
六脉连环大总结,教你干趴Docker
|
Web App开发 Prometheus 监控
BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住
BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住