NT6硬盘安装器 原理 源码Word文件下载.docx
《NT6硬盘安装器 原理 源码Word文件下载.docx》由会员分享,可在线阅读,更多相关《NT6硬盘安装器 原理 源码Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
zchzr.mbr、zchzr(这两个是我修改的基于GRUB4DOS的核心文件)、boot.ini(供下面情况二使用)
只讨论原系统是单系统的情况,多系统的情况太多,不一一给出,有特殊情况的朋友可以跟贴给出相应的安装方法
情况一:
当前系统XP
一、把附件中的zchzr.mbr、zchzr剪切至C盘根文件夹下。
再“我的电脑”右键》属性》高级》第三个“设置”》编辑》最后多加一行C:
\zchzr.mbr="
VistaHardDiskInstaller"
PS:
最后一行字符可以打开附件中的boot.ini后复制/粘贴。
二、重启系统,正常多出一个VistaHardDiskInstaller的选择菜单,选择进入,不选择开始安装,选择左下角的“修复计算机”,再选择“命令提示符”,本例在前期准备中安装程序放在E盘,所以:
e:
cd\sources
setup
三、剩下的操作就和光盘安装完全一样,如果需要格式化安装所在分区,不能装在存放安装文件的E盘上,装在其它分区上成双系统、格式化C盘结果为VISTA单系统就全部由你自己决定了。
安装完成后如果是装成多系统的话再修改相应的boot.ini(第一步)回原样,删除zchzr和zchzr.mbr。
情况二:
当前系统VISTA。
(单vista系统默认C盘不存在boot.ini文件)
一、把附件中的zchzr.mbr、zchzr、boot.ini剪切至C盘根文件夹下
这里一样要注意系统属性中高级设置的启动列表等待时间,方法就不述了。
二、重启系统,正常多出一个VistaHardDiskInstaller的选择菜单,选择进入,不选择开始安装,选择左下角的“修复计算机”,这里如果提示修复启动项,请选择“否”,搜索硬盘系统后出现已安装VISTA的话也点中间空白处,使出现的旧系统栏不要变成蓝色,跟着一样再选择“命令提示符”,本例在前期准备中安装程序放在E盘,所以:
安装完成后如果是装成多系统的话删除C盘的zchzr、zchzr.mbr、boot.ini
+--------------------+
|以下为模式2原理|
模式1的原理很早就已经介绍过了(
当前系统为VISTA/2008/WIN7/2008R2时,安装程序在E盘根目录为例
利用BCDEDIT为E盘的安装程序添加一个启动菜单就可以了.下面是实现批处理
setvhiuid1={66666666-fa0f-11da-8ddf-001320035401}
setvhiuid2={77777777-fa0f-11da-8ddf-001320035401}
bcdedit/create%vhiuid1%/d"
nt6hddInstallermode2"
/device>
nul
bcdedit/set%vhiuid1%ramdisksdidevicepartition=e:
>
bcdedit/set%vhiuid1%ramdisksdipath\boot\boot.sdi>
bcdedit/create%vhiuid2%/d"
nt6hddInstallermode2[EMSEnable]"
/applicationosloader>
bcdedit/set%vhiuid2%deviceramdisk=[e:
]\sources\boot.wim,%vhiuid1%>
bcdedit/set%vhiuid2%path\windows\system32\boot\winload.exe>
bcdedit/set%vhiuid2%localeen-US>
bcdedit/set%vhiuid2%osdeviceramdisk=[e:
bcdedit/set%vhiuid2%systemroot\windows>
bcdedit/set%vhiuid2%detecthalYes>
bcdedit/set%vhiuid2%winpeYes>
bcdedit/set%vhiuid2%emsYes>
bcdedit/displayorder%vhiuid2%/addlast>
pause
这个批处理右击执行后就可以添加mode2的启动菜单,重启调用e盘上的系统安装程序并进入安装界面,也从多次的试验上证明低版本的bootmgr文件可以调用高版本的系统安装程序.所以无需替换bootmgr等操作.其实原理非常简单,只是之前大家没想到而已,想到了并说明了就没什么特别之处了.
如果当前系统是2000/xp/2003,添加mode2的手工操作相对繁琐一些,这里就不介绍了,不过玩多系统的朋友应该一看就明白.
集成做为一个工具发布,只是为不同的朋友不同的系统情况作出不同的操作
+---------------------------+
|以下为v2.6的源程序代码|
鉴于有朋友要看源码,一段批处理而已,v2.6的源码,写得不好,见笑了.
rem>
cls
@echooff
modeconcols=80lines=25
setlocalenabledelayedexpansion
color1f
chcp936>
if!
errorlevel!
equ0gotostart
chcp950>
if%windir:
~0,2%equX:
gotostart
echo.
echoPleaseChangeyourSystemNon-Unicodeto[SimplifiedChinese]
echoor[TraditionalChinese]
echoPressanykeytoContinue......
pause>
:
start
chcp950>
gtr0(
chcp936
setline1=╭─────────────────────────────────────╮
setline2=││
setline3=╰─────────────────────────────────────╯
setmsg1=安装/卸载程序
setmsg2=当前系统:
Vista/2008/Win7,推荐使用模式2
setmsg3=错误!
!
请关闭UAC或右击本程序后以管理员身份运行,按键退出......
setmsg4=按键返回主界面......
setmsg5=│[1]安装nt6hddInstaller模式1:
当前系统为2000/xp/2003时推荐使用│
setmsg5_1=│[2]安装nt6hddInstaller模式2:
当前系统为vista/2008/7/PE时推荐使用│
setmsg6=│[3]卸载nt6hddInstaller模式1和模式2│
setmsg6_a=│[4]退出│
setmsg6_0=│安装前请确认已经把vista/2008/win7安装程序提取/解压至本地硬盘某分区根目录│
setmsg6_1=模式说明:
可以选择安装其中一种或两种模式同时安装
setmsg7=请选择要进行的操作[1/2/3/4],然后按回车:
setmsg10=当前系统:
2000/XP/2003,推荐使用模式1
setmsg11=当前系统:
WinPE,暂只能使用模式2
setmsg12=错误:
未知原因找不到启动菜单配置文件boot.ini,启动菜单未添加
setmsg13=模式1安装完成
setmsg13_1=模式2安装完成
setmsg14=重启选择nt6hddInstallermode1进行系统安装
setmsg14_1=重启选择nt6hddInstallermode2[EMSEnable]进行系统安装
setmsg16=本操作将同时卸载nt6hddInstaller模式1和模式2
setmsg18=卸载完成,
setmsg19=系统BCD存在错误,无法添加启动菜单,使用BCDautofix^(v1.0.3或更高版本^)进行修复
setmsg20=BCD后再次尝试安装或使用原始方法^(VistaHDDInstaller^),按键退出...
setmsg24=PE系统中暂不支持安装模式1,如有特别需要,请安装模式2,
setmsg25=错误:
在所有有效盘符中没发现Vista/2008/Win7安装程序,请将Vista/2008/Win7安
setmsg26=装程序提取至本地硬盘某分区根目录后再次安装模式2
setmsg27=上发现Vista/2008/Win7安装程序
setmsg28=模式2未知原因安装失败!
)else(
chcp950
setline1=ⅰ
setline2=
setline3=ⅱⅲ
setmsg1=杆/更祘
setmsg2=讽玡╰参Vista/2008/Win7崩ㄏノ家Α2
setmsg3=岿粇叫闽超UAC┪阑セ祘╰参恨瞶ō笲︽龄癶......
setmsg4=龄......
setmsg5=[1]杆nt6hddInstaller家Α1:
讽玡╰参2000/xp/2003崩ㄏノ
setmsg5_1=[2]杆nt6hddInstaller家Α2:
讽玡╰参vista/2008/7/PE崩ㄏノ
setmsg6=[3]更nt6hddInstaller家Α1㎝家Α2
setmsg6_a=[4]癶
setmsg6_0=杆玡叫絋粄竒рvista/2008/win7杆祘Α矗/秆溃セ祑絃琘だ跋ヘ魁
setmsg6_1=家Α弧:
匡拒杆ㄤい贺┪ㄢ贺家Α杆
setmsg7=叫匡拒璶秈︽巨[1/2/3/4]礛ó
setmsg10=讽玡╰参2000/XP/2003崩ㄏノ家Α1
setmsg11=讽玡╰参WinPE既ㄏノ家Α2
setmsg12=岿粇:
ゼтぃ秨诀垫虫皌竚ゅンboot.ini秨诀垫虫ゼ睰
setmsg13=家Α1杆ЧΘ
setmsg13_1=家Α2杆ЧΘ
setmsg14=币匡拒nt6hddInstallermode1秈︽╰参杆
setmsg14_1=币匡拒nt6hddInstallermode2[EMSEnable]秈︽╰参杆
setmsg16=セ巨盢更nt6hddInstaller家Α1㎝家Α2
setmsg18=更ЧΘ
setmsg19=╰参BCD岿粇礚猭睰秨诀垫虫ㄏノBCDautofix^(v1.0.3┪蔼セ^)秈︽蝋
setmsg20=BCDΩ沽刚杆┪ㄏノ﹍よ猭^(VistaHDDInstaller^)龄癶...
setmsg24=PE╰参い既ぃや杆家Α1Τ疭惠璶叫杆家Α2
setmsg25=岿粇┮ΤΤ絃才い⊿祇瞷Vista/2008/Win7杆祘叫盢Vista/2008/Win7
setmsg26=杆祘矗セ祑絃琘だ跋ヘ魁Ω杆家Α2
setmsg27=祇瞷Vista/2008/Win7杆祘
setmsg28=家Α2ゼ杆ア毖
)
titlent6hddInstallerv2.6!
msg1!
bychzhlh
(
ifexistc:
\boot\bcd(
be>
if!
gtr0echo!
msg19!
&
echo.&
echo!
msg20!
pause>
nul&
exit)
set/awver=0
setdriverall=C:
D:
E:
F:
G:
H:
I:
J:
K:
L:
M:
N:
O:
P:
Q:
R:
S:
T:
U:
V:
W:
Y:
Z:
setmsg100=!
msg11!
ifexist%windir%\system32\slmgr.vbs(
ifexistnt6hdd.temp.*attrib-r-h-snt6hdd.temp.*>
delnt6hdd.temp.*>
be/createstorent6hdd.temp>
msg2!
msg3!
pause>
exit
set/awver=6
setdriverall=A:
B:
C:
X:
setmsg100=!
)else(
ifexistc:
set/awver=5
setdriverall=C:
msg10!
setvhiuid={66666666-fa0f-11da-8ddf-001320035401}
setvhiuid1={77777777-fa0f-11da-8ddf-001320035401}
setvhiuid2={88888888-fa0f-11da-8ddf-001320035401}
begin
line1!
msg6_0!
line3!
msg6_1!
msg5!
line2!
msg5_1!
msg6!
msg6_a!
setcoi=
setcoi1=
msg100!
Set/Pcoi=!
msg7!
setcoi1=%Coi:
~0,1%
if/i"
!
coi1!
"
=="
1"
gotoinstall
2"
gotoinstall2
3"
gotouninstall
4"
gotoquitt
gotobegin
install
wver!
equ0(
msg24!
msg4!
equ6(
ifnotexistc:
\zchzrxcopy/yzchzrc:
\>
\zchzr.mbrxcopy/yzchzr.mbrc:
be/create%vhiuid%/d"
nt6hddInstallermode1"
/applicationbootsector>
be/set%vhiuid%devicepartition=c:
be/set%vhiuid%path\zchzr.mbr>
be/displayorder%vhiuid%/addlast>
be/timeout8>
)
equ5(
\boot.iniecho!
msg12!
typec:
\boot.ini|find"
zchzr.mbr"
/i>
attrib-h-r-sc:
\boot.ini>
copy/yc:
\boot.ini%temp%\boot.ini.vhi>
echo[bootloader]>
c:
\boot.ini
echotimeout=8>
>
type%temp%\boot.ini.vhi|find"
loader]"
/i/v|find"
timeout"
;
/i/v>
echoc:
attrib+s+hc:
)
attrib+r+h+sc:
\zchzr.*
echo======================================================================
echont6hddInstaller!
msg13!
msg14!
gotobegin
install2
set