当前位置: 主页 > 操作系统 > Win2000 > Windows2000磁盘扫描功能介绍

Windows2000磁盘扫描功能介绍

时间:2010-11-11来源:互联网 点击:

     Windows2000/XP 系统磁盘扫描已经升级到卷的高度,不再是简单的 SCANDISK。卷被定义为包含文件系 统的分区,它可以用驱动器号/卷安装点或全局唯一标识符(GUID) 来寻址。我们可以在系统运行时强制进行卷 检查,或安排在重新启动时进行卷

  检查,如果使用脚本还可以更准确地控制何时在卷上进行文件系统检查。要掌握磁盘扫描特点,需要灵活使用下面相互关联的3个工具:Chkdsk.exe、 Chkntfs.exe 以及Autochk.exe。让我们先来简单认识一下他们。

  chkdsk.exe

  检查硬盘驱动器的完整性,检查磁盘和修复文件系统就靠它了。chkdsk.exe 同时可以恢复文件系统错误, 并可以试图恢复坏扇区,如果无法修复就标记坏扇区,以避免文件被误写入导致丢失。

  Chkntfs.exe

  显示文件系统类型、文件系统“脏字位”状态,以及手工安排启动时运行 Chkdsk进行卷检查,或取消所 有安排的检查项目等。

  Autochk.exe

  查找每个卷上的“脏字位”,以及 Chkdsk /F 和 Chkntfs /X 或 /C 所作的注册表设置,决定是检查卷, 还是跳过检查。它可以区分是手工安排的卷检查,还是由于文件系统发现卷处于“脏”状态而自动进行卷检查 ,并会把相应的消息写入应用程序事件日志。该命令不能在 WIN32 模式下运行。


  一、在系统运行时强制进行卷检查

  安装 Windows2000/XP 后,“系统工具”文件夹中不显示磁盘扫描命令。不是没有了,具体这样做:

  双击我的电脑,然后右键单击要检查的硬盘驱动器。

  单击属性,然后单击工具。

  在查错下,单击开始检查。

  这样就可以在 Windows 中检查硬盘驱动器的完整性了。

  或者到命令提示符下执行CHKDSK /X 命令。

  /X 是一个新的命令参数,它运行 Chkdsk /F,并强制执行卷卸除,关闭非系统卷上打开的文件句柄,以 便立即对卷进行检查。这样,要运行 Chkdsk 并修复卷,就不必重新启动。

  二、安排在下一次重新启动时进行卷检查

  Autochk 通过有2个因素控制是否进行卷检查或跳过检查。一个是当文件系统检测到问题时,系统自己设置 的“脏字位”,设置脏字位的的目的就是为了在下次启动时对卷进行检查。 另一个是人工安排,既用 Chkdsk  /F 和 Chkntfs /X 或 /C 所作的注册表设置。通过 Chkntfs volume:命令可以查询文件系统类型、文件系统 “字位”状态,以及是否已手工安排启动时运行 Chkdsk 进行卷检查等信息。

  Autochk 在确定启动时检查哪些卷所使用的注册表项为:
  Hkey_local_machine\System\CurrentControlSet\Control\Session Manager\BootExecute:REG_MULTI_SZ:  autocheck autochk *

  这是 Autochk 的默认设置,也是使用 Chkntfs /d 安排启动时检查所有卷所得到的结果。

  下面通过设置或重设注册表,来控制 Autochk。

  命令             BootExecute键植

  Chkdsk C: /F         autochk /p \??\C: 
  Chkdsk C:\mountpoint /F    Autocheck autochk /p \??\VOLUME{GUID}

Chkntfs D: E: /X       Autocheck autochk /k:D /k:E * 
  Chkntfs G: /C        Autocheck autochk /m \??\G: 

  注解:

  /P \??\Volume:         安排 Chkdsk 无条件地运行来检查卷。 
  /p \??\VOLUME{GUID}      安排 Chkdsk 无条件地运行来检查卷安装点。 
  /k:Volume *          不对卷执行 Chkdsk 检查。 
  /m \??\Volume:         让 Autochk 仅查找卷上的脏字位,如果已设置脏字位,则运行 Chkdsk。 

  另外,Chkntfs /T:time: 在默认情况下,开机时扫描每个分区前会等待10秒钟,用户此时可以按任意键 跳过扫描继续启动。该参数就是用来设置等待时间的,即将Autochk 超时值改为指定时间(秒数),如果没有指定时间,则显示当前设置。系统在注册表项 key_local_machine\System\CurrentControlSet\Control\SessionManager\下增加一个键:AutoChkTimeOut,类型为 REG_DWord,数值为当前设置的超时值。


    三、用脚本从程序中安排卷的修复日程

  由于可以通过设置或重设注册表,来控制 Autochk,因此可使用脚本,从程序中安排卷的修复日程。

   在记事本程序中,使用.VBS文件扩展名存储相应文件(例如:MyScript.vbs)。同时,建议您在一个公共文 件夹(例如:C:\Scripts)中保存这些脚本。打开命令行窗口。如果需要,使用cd命令切换到用以存储脚本的 文件夹中。在命令行窗口中,输入CSript 命令并在其后跟随脚本名称。

  例如:

  cscript myscript.vbs

  1、修改 AutoChk 的 Timeout 值

  为 Autochk.exe 设定自动延迟时间为 30 秒。适用于 Windows XP 或 Windows 2003 Server。

  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set colAutoChkSettings = objWMIService.ExecQuery _
  ("Select * from Win32_AutochkSetting")
  For Each objAutoChkSetting in colAutoChkSettings
  objAutoChkSetting.UserInputDelay = 30
  objAutoChkSetting.Put_
  Next

  2、防止 AutoChk 在开机时自动运行
 
  即使电脑下次开机时,就算 C盘的 "字位" 已被设定, Autochk 也不会对C磁盘执行检查。适用于  Windows XP 或 Windows 2003 Server。

  strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set objDisk = objWMIService.Get("Win32_LogicalDisk")
  errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
  Wscript.Echo errReturn

  3、执行 ChkDsk

  对电脑的D盘执行ChkDks.exe。适用于 Windows XP 或 Windows 2003 Server。

  Const FIX_ERRORS = True
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set objDisk = objService.Get("Win32_LogicalDisk.DeviceID=‘D:‘")
  errReturn = objDisk.ChkDsk(FIX_ERRORS)
  Wscript.Echo errReturn

  4、安排在电脑下一次重新启动时,对 C 盘执行 Autochk.exe。适用于 Windows XP 或

  Windows 2003 Server 。

  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set objDisk = objWMIService.Get("Win32_LogicalDisk")
  errReturn = objDisk.ScheduleAutoChk(Array("C:"))
  Wscript.Echo errReturn

站长资讯网
. TAG: windows 2000 磁盘扫描
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言