中国DOS联盟论坛

中国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