locking卷上的CHKDSK / F如何在重新启动时“安排”?

我多年来一直运行chkdsk /F多次…今天我必须在我的一台2008 R2服务器上运行它,并得到正常的消息:

Chkdsk无法运行,因为该卷正在被另一个进程使用。 您是否希望在下次系统重新启动时检查此卷? (Y / N)y

系统下次重新启动时将检查该卷。

我已经看了在这里的Technet文档: http : //technet.microsoft.com/en-us/library/cc730714.aspx以及谷歌search和searchTechnet和网站:microsoft.com谷歌,但可以找不到我要找的东西

问题:

Windows如何在重新启动时安排这个工作? 它不是在任务计划程序或RunOnce或类似的,这是有道理的,如果它需要在Windowslocking卷之前运行…所以Windows设置这个“计划的任务”发生,以便服务器知道甚至一个一周后在维护时段重新启动?

很好的问题。 答案是VolumeDirty位设置在卷上,我(不得不假设)在启动时检查。 可能与插入闪存驱动器时所检查的方式类似,并且可以使用“扫描”或“不扫描”继续 。

我曾试图想出一种方法来安排一个自动服务器chkdsk几乎没有维护,通过设置volumedirty位通过powershell脚本( dirtybitset = $true ),但它不会工作。 我可能会重新看到,从我的链接看来,有一个ScheduleAutoChk可以做到这一点,并与dirtybit结合使用。

进一步的研究表明:

每次Windows重新启动时,内核会调用Autochk.exe来扫描所有卷以检查卷dirty位是否已设置。 如果脏位被设置。

更多关于autochk.exe信息可以在这里find,以帮助解释在微软Technet网站和维基百科中发生了什么 ,维基百科说:

一旦加载了所有Boot和System驱动程序,内核(系统线程)就启动会话pipe理器子系统(smss.exe)。

在打开任何文件之前,Autochk由smss.exe启动。 Autochk安装所有驱动器,并一次检查一个驱动器,查看它们是否完全卸下。 如果autochk确定一个或多个卷是脏的,它将自动运行chkdsk

具体来说,如果你看下面的registry:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

有一个BootExecute的值从autocheck autochk *更改为autocheck autochk /p \\??\C: autocheck autochk *