NT6硬盘安装器 原理 源码.docx

上传人:b****5 文档编号:8636089 上传时间:2023-02-01 格式:DOCX 页数:15 大小:21.79KB
下载 相关 举报
NT6硬盘安装器 原理 源码.docx_第1页
第1页 / 共15页
NT6硬盘安装器 原理 源码.docx_第2页
第2页 / 共15页
NT6硬盘安装器 原理 源码.docx_第3页
第3页 / 共15页
NT6硬盘安装器 原理 源码.docx_第4页
第4页 / 共15页
NT6硬盘安装器 原理 源码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

NT6硬盘安装器 原理 源码.docx

《NT6硬盘安装器 原理 源码.docx》由会员分享,可在线阅读,更多相关《NT6硬盘安装器 原理 源码.docx(15页珍藏版)》请在冰豆网上搜索。

NT6硬盘安装器 原理 源码.docx

NT6硬盘安装器原理源码

NT6硬盘安装器原理+源码.txt其实全世界最幸福的童话,不过是一起度过柴米油盐的岁月。

一个人愿意等待,另一个人才愿意出现。

感情有时候只是一个人的事,和任何人无关。

爱,或者不爱,只能自行了断。

+------------------------------------------------------------------------------------+

|以下为模式1原理,也是网络上最早的利用grub4dos来安装vista,2008,win7,2008r2的教程|

+------------------------------------------------------------------------------------+

程序基于GRUB4DOS,对于系统引导一向不推荐第三方软件,对于大名鼎鼎的GRUB4DOS是个例外,也因为GRUB4DOS的强大引导功能,所以有了这个程序。

注:

2000/XP/2003下面全称XP,没有32位/64位之分;vista/2008/win7下面全称vista,也没有32位/64位之分,文中提及的C盘严格来说为硬盘的活动分区,为方便全部称C盘,活动分区盘符有特殊情况的自己对号入座。

对于没刻录机的朋友,硬盘安装系统是一个必谈话题,不过一些简单的安装方法就不再谈了:

如在原32位XP/VISTA上装32位VISTA、64位XP/VISTA上装64位VISTA,有相应的PE系统直接安装同位的VISTA系统。

这些都可以直接安装。

本方法针对的对象是32位XP/VISTA需装64位VISTA或者64位XP/VISTA需装32位VISTA的情况。

有刻录机的朋友也可以用这个方法省一张光盘,基于VISTA光盘引导安装和WINDOWS中SETUP安装会产生不同的盘符结果,需要实现光盘安装盘符结构的朋友也可以不刻盘使用这个方法。

本方法优点:

一、安全:

由于使用的是添加引导项而不是旧方法的修改引导项的方法,所以就算少数的机器不兼容grub4dos而无法进入安装界面,也不影响进入原系统。

二、通用:

本方法对原系统是XP或VISTA都可以,并且原系统和要新装的系统没有32位或64位的限制。

三、方便:

提取ISO中的安装文件只一次提取至同一位置,而无需分位置提取。

WIN7安装特别提示:

WIN7在安装过程和安装结果相对VISTA和WIN2008有不少改进。

如果用本方法安装WIN7,下面两种情况一样,第二步重启系统进VistaHardDiskInstaller后,无需进“修复计算机”和“命令提示符”,直接开始安装,全部过程和光盘一样直接安装,当然同样不推荐装在安装程序所在分区。

注:

本文采用的是MSDN版的VISTA安装盘ISO,OEM原版(如果带有修复计算机选项的也可以)或修改版(太杂太乱)不在本方法之内。

注:

MSDN版体积小/功能全/在OEM机器上安装后导入证书和更换密匙(或安装过程中输入)后的激活和相应OEM激活结果一样,所以我只备MSDN。

*************************************

废话说了不少,现在正文开始:

*************************************

前期准备:

下载MSDN的VISTA光盘映像ISO,用虚拟光驱加载后复制或UltraISO解压至硬盘一非系统分区(不推荐放在要用来装VISTA的分区中),注意是复制或解压至该分区根目录下,而不是某一文件夹下。

解压/复制后包括三个文件(bootmgr、setup.exe、autorun.inf),五个文件夹(boot、efi、sources、support、upgrade),这里给出,以方便完成安装后根据需要删除这些安装文件

下载附件至桌面,winrar解压至当前文件夹后在vistahddinstaller文件夹里有三个文件:

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盘,所以:

e:

cd\sources

setup

三、剩下的操作就和光盘安装完全一样,如果需要格式化安装所在分区,不能装在存放安装文件的E盘上,装在其它分区上成双系统、格式化C盘结果为VISTA单系统就全部由你自己决定了。

安装完成后如果是装成多系统的话删除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:

>nul

bcdedit/set%vhiuid1%ramdisksdipath\boot\boot.sdi>nul

bcdedit/create%vhiuid2%/d"nt6hddInstallermode2[EMSEnable]"/applicationosloader>nul

bcdedit/set%vhiuid2%deviceramdisk=[e:

]\sources\boot.wim,%vhiuid1%>nul

bcdedit/set%vhiuid2%path\windows\system32\boot\winload.exe>nul

bcdedit/set%vhiuid2%localeen-US>nul

bcdedit/set%vhiuid2%osdeviceramdisk=[e:

]\sources\boot.wim,%vhiuid1%>nul

bcdedit/set%vhiuid2%systemroot\windows>nul

bcdedit/set%vhiuid2%detecthalYes>nul

bcdedit/set%vhiuid2%winpeYes>nul

bcdedit/set%vhiuid2%emsYes>nul

bcdedit/displayorder%vhiuid2%/addlast>nul

pause

这个批处理右击执行后就可以添加mode2的启动菜单,重启调用e盘上的系统安装程序并进入安装界面,也从多次的试验上证明低版本的bootmgr文件可以调用高版本的系统安装程序.所以无需替换bootmgr等操作.其实原理非常简单,只是之前大家没想到而已,想到了并说明了就没什么特别之处了.

如果当前系统是2000/xp/2003,添加mode2的手工操作相对繁琐一些,这里就不介绍了,不过玩多系统的朋友应该一看就明白.

集成做为一个工具发布,只是为不同的朋友不同的系统情况作出不同的操作

 

+---------------------------+

|以下为v2.6的源程序代码|

+---------------------------+

 

鉴于有朋友要看源码,一段批处理而已,v2.6的源码,写得不好,见笑了.

rem>nul

cls

@echooff

modeconcols=80lines=25

setlocalenabledelayedexpansion

color1f

chcp936>nul

if!

errorlevel!

equ0gotostart

chcp950>nul

if!

errorlevel!

equ0gotostart

if%windir:

~0,2%equX:

gotostart

cls

echo.

echoPleaseChangeyourSystemNon-Unicodeto[SimplifiedChinese]

echo.

echoor[TraditionalChinese]

echo.

echoPressanykeytoContinue......

pause>nul

:

start

chcp950>nul

if!

errorlevel!

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ゼ杆ア毖

cls

titlent6hddInstallerv2.6!

msg1!

bychzhlh

echo.

if%windir:

~0,2%equX:

ifexistc:

\boot\bcd(

be>nul

if!

errorlevel!

gtr0echo!

msg19!

&echo.&echo!

msg20!

&echo.&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!

)else(

ifexist%windir%\system32\slmgr.vbs(

ifexistnt6hdd.temp.*attrib-r-h-snt6hdd.temp.*>nul&delnt6hdd.temp.*>nul

be/createstorent6hdd.temp>nul

if!

errorlevel!

gtr0echo!

msg2!

&echo.&echo!

msg3!

&pause>nul&exit

set/awver=6

setdriverall=A:

B:

C:

D:

E:

F:

G:

H:

I:

J:

K:

L:

M:

N:

O:

P:

Q:

R:

S:

T:

U:

V:

W:

X:

Y:

Z:

setmsg100=!

msg2!

be>nul

if!

errorlevel!

gtr0echo!

msg19!

&echo.&echo!

msg20!

&echo.&pause>nul&exit

)else(

ifexistc:

\boot\bcd(

be>nul

if!

errorlevel!

gtr0echo!

msg19!

&echo.&echo!

msg20!

&echo.&pause>nul&exit)

set/awver=5

setdriverall=C:

D:

E:

F:

G:

H:

I:

J:

K:

L:

M:

N:

O:

P:

Q:

R:

S:

T:

U:

V:

W:

X:

Y:

Z:

setmsg100=!

msg10!

setvhiuid={66666666-fa0f-11da-8ddf-001320035401}

setvhiuid1={77777777-fa0f-11da-8ddf-001320035401}

setvhiuid2={88888888-fa0f-11da-8ddf-001320035401}

:

begin

cls

echo!

line1!

echo!

msg6_0!

echo!

line3!

echo.

echo!

msg6_1!

echo.

echo!

line1!

echo!

msg5!

echo!

line2!

echo!

msg5_1!

echo!

line2!

echo!

msg6!

echo!

line2!

echo!

msg6_a!

echo!

line3!

echo.

setcoi=

setcoi1=

echo!

msg100!

echo.

Set/Pcoi=!

msg7!

setcoi1=%Coi:

~0,1%

if/i"!

coi1!

"=="1"gotoinstall

if/i"!

coi1!

"=="2"gotoinstall2

if/i"!

coi1!

"=="3"gotouninstall

if/i"!

coi1!

"=="4"gotoquitt

gotobegin

:

install

echo.

if!

wver!

equ0(

echo!

msg24!

!

msg4!

pause>nul

gotobegin

if!

wver!

equ6(

ifnotexistc:

\zchzrxcopy/yzchzrc:

\>nul

ifnotexistc:

\zchzr.mbrxcopy/yzchzr.mbrc:

\>nul

be/create%vhiuid%/d"nt6hddInstallermode1"/applicationbootsector>nul

be/set%vhiuid%devicepartition=c:

>nul

be/set%vhiuid%path\zchzr.mbr>nul

be/displayorder%vhiuid%/addlast>nul

be/timeout8>nul

if!

wver!

equ5(

ifnotexistc:

\boot.iniecho!

msg12!

&echo.&echo!

msg4!

&pause>nul&gotobegin

ifnotexistc:

\zchzrxcopy/yzchzrc:

\>nul

ifnotexistc:

\zchzr.mbrxcopy/yzchzr.mbrc:

\>nul

typec:

\boot.ini|find"zchzr.mbr"/i>nul

if!

errorlevel!

gtr0(

attrib-h-r-sc:

\boot.ini>nul

copy/yc:

\boot.ini%temp%\boot.ini.vhi>nul

echo[bootloader]>c:

\boot.ini

echotimeout=8>>c:

\boot.ini

type%temp%\boot.ini.vhi|find"loader]"/i/v|find"timeout"/i/v|find";"/i/v>>c:

\boot.ini

echoc:

\zchzr.mbr="nt6hddInstallermode1">>c:

\boot.ini

attrib+s+hc:

\boot.ini>nul

attrib+r+h+sc:

\zchzr.*

echo======================================================================

echo.

echont6hddInstaller!

msg13!

echo.

echo!

msg14!

echo.

echo!

msg4!

&pause>nul&gotobegin

:

install2

echo.

set

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1