![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-17 06:52 |
共 47,813 主题排行 / 349,903 发帖 / 今日 0 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 请高手把SRCMBR改造一下 |
| 可打印版本 2,581 / 33 |
| 第16楼 crshen | 发表于 2005-02-14 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
已经完成备份分区表功能,运行命令行patition.exe /backup filename
生成的文件大小应为:512*n字节,n=主分区个数+扩展分区个数+MBR分区1个,例如你的分区为C盘主分区,扩展分区1个(逻辑盘符D、E、F等),IBM_SERVICE隐藏主分区1个,那么n=4,生成的filename文件大小为2K,用二进制编辑器打开查看,应有4个对应的55AA,分别位于1FF、3FF、5FF、7FF处。 本版本只能在支持超过8.4G硬盘的电脑上使用(好像没必要支持老的486甚至386吧),仅供测试读扇区正确性与否,未加入各种出错时的提示及处理,并关闭了写扇区功能,防止损害硬盘重要数据。如果大家测试无误,将于近日发行正式版。有什么建议,请现在提出,以后不再更新。 |
|
| 第17楼 walu | 发表于 2005-02-14 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
请问CRSHEN,这个程序只支持最大137G的硬盘吗?是否可以支持超过200G的硬盘呢?
经刚才测试,这个程序可以将分区表备份成一个文件,但在恢复时却无效。 在下面操作前先用PATITION /BACKUP a.dat备份了分区表。 是这样测试的:硬盘分区主分区C盘及扩展分区(其中只有一个逻辑分区D盘),用PQMAGIC从C盘划出一块未用分区,再从D盘划出一块未用分区。 然后PATITION /RESTORE a.dat 但硬盘并没有恢复到原来未经PQMAGIC分区前的状态。 |
|
| 第18楼 crshen | 发表于 2005-02-15 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
不好意思,上面已经说清楚了,仅供测试读出扇区的正确性,而关闭了写扇区功能,所以不能用restore参数。这个程序利用LBA线性寻址方式,目前大多数的主板,它们使用的都是28位寻址方式,能读写逻辑块数理论极限是2的28次方即268435456块,容量为137G。为了兼容通用,程序只支持最大137G的硬盘。
|
|
| 第19楼 crshen | 发表于 2005-02-15 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
放出分区表备份/恢复情人节测试版,可以备份扩展分区及隐藏分区!restore参数已开放。
存在问题: 1.未对备份的分区信息文件进行检测,如果指定文件出错,将引起灾难性后果(当然,如果有备份在软盘或优盘上,只要再重新恢复一次就O.K.啦) 2.本程序主要设计用于批处理,故出错提示较少,下面是返回的errorlevel值含义: 0:成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区出错、4:写扇区出错 下一步可能完善的方面: 1.对备份分区文件进行保护,采用某种校验方法(未定) 2.恢复时首先校验指定文件 3.可选择恢复某个分区 |
|
| 第20楼 qqqmmkx | 发表于 2005-02-15 00:00 |
| 中级用户 发帖 33 积分 286 | |
|
可用 Spfdiskhttp://spfdisk.sourceforge.net/
|
|
| 第21楼 walu | 发表于 2005-02-15 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
谢谢crshen的努力!测试版经下面的测试方法:硬盘分区主分区C盘及扩展分区(其中只有一个逻辑分区D盘),用PQMAGIC从C盘划出一块未用分区,再从D盘划出一块未用分区。测试结果:恢复备份文件后,C盘能回到原来的样子,但D盘不能回到原来的样子,即依然有一块未用分区。
|
|
| 第22楼 crshen | 发表于 2005-02-16 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
在我自己的机子上测试是没问题的,昨天拿到单位的机子上时,也出现类似你说的情况,分析两台电脑分区不同点在于C盘即第一分区的大小有别,我的机子C盘>8.4G,故考虑当C盘太小时,导致后面的扩展分区表不能用扩展int 13写。而第一分区可以恢复,是因为专门加强了对MBR的保护。主要原因是我偷懒,判断分区类型只要不是00,就采用扩展int 13,测试又没问题,现在看来不行,等我修改一下。
|
|
| 第23楼 crshen | 发表于 2005-02-16 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
分区表备份/恢复兼容版
改进: 凡是不能用扩展int 13读写的扇区,均改为int 13读写,兼容旧机子、小硬盘 对备份分区文件进行保护,恢复时首先校验指定文件 附带checksum.exe程序,用于在对备份的文件进行修改后,重新生成校验信息 返回的errorlevel值含义:0:成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区出错、4:写扇区出错、5.文件校验出错 |
|
| 第24楼 walu | 发表于 2005-02-16 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
crshen兄,当C盘小于8.4G时正常,但调整至12G时,依然出现:恢复备份文件后,C盘能回到原来的样子,但D盘不能回到原来的样子,即依然有一块未用分区。
|
|
| 第25楼 Climbing | 发表于 2005-02-16 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
强烈建议楼主再次公布源程序。很长时间没有接触C语言了,在前面的源程序中知道了使用Int 13访问硬盘的方法,但还不知道在TC 2.0中如何使用扩展的Int 13,因此,很希望看到新的源程序,以便继续学习。估计楼主也不反对让自己的程序越来越完善的吧?干脆就做成开源的得了。
|
|
| 第26楼 crshen | 发表于 2005-02-16 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
已找到问题所在,可能有些主板BIOS不支持校验并写盘,故现改为不校验直接写扇区,在两台电脑不同分区大小的情况下均按照walu的方法测试成功,放出的版本仍有不完善的地方,但已不影响使用。
应climbing要求,正在整理源程序,并加注释,即将发布,请大家共同完善。 |
|
| 第27楼 Climbing | 发表于 2005-02-16 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
好东东啊好东东!期待源程序。
|
|
| 第28楼 crshen | 发表于 2005-02-16 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
硬盘分区表备份/恢复最终发行版
2005-02-16 by CRSHEN 使用方法: patition.exe </backup|/restore|checksum> filename /backup:备份分区表 /restore:恢复分区表 /checksum:如果对备份的分区表文件进行必要的修改,则用此参数重新计算校验值,对于文件末两位为55AA的禁止校验,因文件可能是其它程序备份的分区表。确信需要时,可用十六进制编辑器改为其它值再校验。 说明: 1. 生成的文件大小应为 512*n+2)字节,n=主分区个数+扩展分区个数+MBR分区1个,两个字节为校验信息2. 凡是不能用扩展int 13读写的扇区,均改为int 13读写,兼容旧机子、小硬盘 3. 对备份分区文件进行保护,恢复时首先校验指定文件 用于批处理: 返回的errorlevel值含义: 0:操作成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区0出错、4:写扇区0出错、5.文件校验出错 免责声明: 本程序仅供研究参考,如果不明白用途,建议不要随便尝试 对使用不当,造成数据丢失等后果者,概不负责。 |
|
| 第29楼 crshen | 发表于 2005-02-16 00:00 |
| 中级用户 发帖 126 积分 447 | |
|
源程序已发布,需要者可自行下载修改
|
|
| 第30楼 Climbing | 发表于 2005-02-17 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
发现了crshen程序中的一个大漏洞(希望真的是漏洞,我水平太洼,暂时只是感觉如此),相关资料发在了51ct.net论坛了,希望crshen朋友再接再励,继续完善程序,相关帖子链接如下:http://www.51ct.net/bbs/read.php?tid=500&fpage=1再次感谢你付出的辛苦劳动,如果我再年轻5岁,估计这个程序我可以自己改善一下。
|
|
| 上一页 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |