呼唤高手关于XP/win2003的ScanDisk的起动原理

weill 2005-09-28 09:17:19
我们知道,XP/win2003在非法关机后,再起动时系统就会在一个类DOS的界面下调出ScanDisk。

现在KV2006也使用了类似技术。

我想知道,这是怎么实现的,我们有可能自个写个DOS程序加到这个过程中去吗?

给分原则还是给最先给出答案的朋友,或是给出有效提示的几位朋友。
...全文
361 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ma100 2005-10-01
  • 打赏
  • 举报
回复
是某个隐含
ma100 2005-10-01
  • 打赏
  • 举报
回复
要是我的话我会在系统启动时在每个隐含的地方写上0,关机的最后动作写上1,每次开机检查这个地方不就行了
weill 2005-10-01
  • 打赏
  • 举报
回复
UP一下,看看C++里有没有高人出来说说。
wohow 2005-09-30
  • 打赏
  • 举报
回复
alloutoflove(andrew)的回答在FAT(包括FAT32)上是对的,NTFS一致性由NTFS文件系统自己保证,所以即使非正常关机,如果系统分区和引导分区均为NTFS,那也看不到Scandisk(在2000后已经被Chkdsk取代)的出现,看看NTFS的数据结构就明白了。
weill 2005-09-30
  • 打赏
  • 举报
回复
constantine(飘遥的安吉儿)的解答只怕是把简单的东西复杂化了。
weill 2005-09-30
  • 打赏
  • 举报
回复
看了上面这么多朋友的回复,我很高兴有这么多朋友对此感兴趣参与进来,并帮我解答。
在这儿先行谢过。

alloutoflove(andrew)的解答似乎比较好,我再自个试试。
alloutoflove 2005-09-29
  • 打赏
  • 举报
回复
具体可以在网上搜一下NATIVE APPLICATION相关的东西...
alloutoflove 2005-09-29
  • 打赏
  • 举报
回复
HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\Session Manager
下有一键值:
BootExecute
用来指定在启动时运行的程序

详细可以参考这里:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;160963&sd=tech

KV2006加入后该项值为:
autocheck autochk *
KvNative.exe

KvNative是32位程序,不过不让在GUI环境下启动, 也不是我们常见的一般可执行PE文件, 我试着用ollydbg装载不成功,不过用PEEditor可以看出这个程序只调用了Ntdll.dll中的函数, 所以应该不一定非要用驱动,但在启动时运行的话有好多平时的API不能用.

yind192168 2005-09-29
  • 打赏
  • 举报
回复
可能是写成了类似硬件驱动这样的东西,在跑完那几圈滚动条的时候就已经加载了,然后判断标志是否要执行,猜测的,具体的我是不懂的,我不是高手,只是经常安装系统,还有个O&O BlueCon软件还可以在滚动条跑完的时候运行起来提供一个命令行处理,好像这个时候系统还没有加载注册表,因为可以在这个命令行下对注册表文件删除操作,到了GUI里面,这些注册表文件就都删除不了了。
xibingwuqing 2005-09-29
  • 打赏
  • 举报
回复
如果是原理,到其它版块问问吧
constantine 2005-09-29
  • 打赏
  • 举报
回复
这个是我个人的见解,不一定对,不过屏蔽Ctrl+Alt+Del就可以这样做来干预系统的一些操作,我想应该这个也可以吧
constantine 2005-09-29
  • 打赏
  • 举报
回复
应该不是dos吧,想要在这个过程中动手脚,你可以考虑这个过程是在系统那个程序或是什么dll中运行的
最好就自己做个dll,然后用远程注入的方法注入到系统这个对应的dll中,不过还要了解对应这个过程发送什么事情,有没有对应的消息什么的,不然估计也没有用
alloutoflove 2005-09-29
  • 打赏
  • 举报
回复
刚看了一下kv2006的运行截图, 实现起来应该不简单, 对KV系列感觉好只是在Dos时代的kv100/200/300
alloutoflove 2005-09-29
  • 打赏
  • 举报
回复
我觉得应该是系统启动时会置一个标志, 正常关机时会清掉该标志, 如果是非正常关机, 下次启动时该标志依然有效, 则说明上一次是非正常关机. 在STOP蓝屏时, 应该也会置一个标志, 这可以为什么有时2003能在STOP后重启动系统时会自动将错误关机原因置成STOP错误.
lz_zxf 2005-09-29
  • 打赏
  • 举报
回复
应该是XP/win2003在非法关机后系统留下了一个尾巴,启动时系统查找到有尾巴就调用ScanDisk。
Behard 2005-09-29
  • 打赏
  • 举报
回复
查看 setupact.log 发现 Windows 通过 Task 来实现的
Behard 2005-09-29
  • 打赏
  • 举报
回复
你字节测试一下可以知道的

首先监控注册表,然后手工启动硬盘检测【检测系统安装所在分区,这时是不能马上检测的】
然后选择重启之后检测硬盘,看看注册表有什么变化

BTW:这个是系统自己设置的,你手工设置更他一样,应该能达到目的吧
binbin 2005-09-28
  • 打赏
  • 举报
回复
肯定不是"DOS"程序吧???

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧