为什么这些进程会出现在进程资源管理器窗口的顶部,而不是出现在wininit.exe
它们应该出现的部分的下方?
一些事实
- 系统启动约 10-30 分钟后开始发生。
- 发生在 (1) 全新安装和 (2) 完全更新安装的 Win 10 LTSC 2021 21H2 上
- 发生在全部版本进程浏览器(当前版本为 v17.02)
- 发生在ProcessHacker v2.39
- 做不是發生系统通报器(每晚 2023-02-19)
- 很难排除故障,因为操作系统似乎需要大约 30 分钟才能预热
经过近一个小时,John 建议的命令到目前为止仍然有效。我仍在测试它们。
$ Dism.exe /Online /Cleanup-image /StartComponentCleanup
$ Dism.exe /Online /Cleanup-Image /RestoreHealth
$ sfc.exe /SCANNOW
答案1
Windows 会循环使用进程标识符 (PID)... 每个进程都有一个父标识符 (PID),它保持静态且永远不会改变。即使父进程终止并且 PID 重新分配给不同的进程,您也始终拥有相同的父 PID。
由于标识符被回收利用,因此无法显示父/子家族树关系,因此应用程序还将根据子代的创建时间来验证父代的创建时间 - 即使系统时钟或时区发生变化,创建时间在进程的整个生命周期内也不会改变(保持静态)。
如果创建时间较新,则真实父进程已终止且父进程 PID 已回收(即不能是真实父进程),而较旧的创建时间绝对是正确的父进程?子进程不能先于父进程创建...问题是当系统时钟或时区发生变化时,现有进程会根据前一个时钟(2050 年时间)返回时间值,而新进程会根据新时钟(1995 年时间)返回时间值。
在下午 3 点启动机器,并更改时钟或时区,使时间变为下午 2 点,并且每个新进程的创建时间 (2PM) 都早于其他进程 (3PM),并且显示在系统进程上方,因为它们的创建时间 (2PM) 早于系统进程 (3PM)。此外,由于新进程是使用从终止进程中回收的 PID 创建的,因此时间变化会导致子进程显示为其父进程(祖父悖论)或显示在错误的位置,父进程或子进程不正确,并且无法采取任何措施来修复此问题。
例如(使用您的屏幕截图来演示):
您的屏幕截图中的某些进程(例如注册表)显示为父进程,但它们应该是子进程,而其他一些进程则错误地显示为 svchost.exe 的子进程,而它们应该是父进程。
修复父级关系的唯一方法是重新启动机器,以便所有进程都具有正确的创建时间时区...如果您正在使用虚拟机,请确保已在虚拟机内配置系统时钟和时区,因为同步软件只会在登录期间暂时更改时钟,并在关闭虚拟机时重置。
系统启动约 10-30 分钟后开始发生。
物理硬件还是虚拟机? 物理机上是否启用了 Hyper-V、核心隔离、VBS 和虚拟机管理程序? 这些会覆盖物理时钟振荡器芯片频率,而 Microsoft 的虚拟机管理程序始终返回固定值,这可能会干扰软件或导致时钟漂移。
PC 附带的芯片是廉价组件,每天的时钟偏差在 6 秒到 1 小时之间。NTP 服务将在 10-30 分钟后运行,并使用错误的值更新时钟... 检查事件日志 > 系统中是否存在任何可疑大增量的 NTP 事件:
在 System Informer 上不会发生这种情况
System Informer 最近添加了对最新 Windows 10 和 Windows 11 内核引入的一项非常新的(并且未记录的)功能的实验性支持,该功能名为进程序列号,它们是单调非递减序列,其排序保证不受 PID 回收、时钟/时区变化或任何其他干扰的影响。
单调序列标识符具有一定的数学保证,并且对于子/父验证和 100% 准确显示父/子进程树而言,比以前版本的 Windows 上使用 PID 更加可靠......它们已经被 Windows 任务管理器和 System Informer(仅限夜间版本)使用,而 Process Explorer 也不会太远。
如果有什么不明白的地方,请随时询问更多信息:)
答案2
我检查了 3 台机器和 1 台虚拟机,所有机器对于 V17.03 都产生相同的结果。您可能需要单击进程列两到三次才能循环回到相同的显示。
如果您的系统无法正常运行,则 DISM/SFC 可能会修复此问题。
(1) Open cmd.exe with Run as Administrator.
(2) DISM.exe /Online /Cleanup-image /StartComponentCleanup
(3) DISM.exe /Online /Cleanup-Image /Restorehealth
(4) SFC /SCANNOW
(5) Restart when all the above is complete and test.