安装版系统导入注册
的方法
安装版系统导入注册表的方式有多种,我认为比较理想的方法是通过inf文件导入 如果你现在手头上的注册表信息是 reg 格式的话,可以通过 reg2inf 这个工具转换成 inf 命令示例
reg2inf Tweak.reg Tweak.inf
复制代码
例如如下注册项
1. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
2. "HideFileExt"=dword:00000000 复制代码
转换后的结果是
1.
Microsoft\Windows\CurrentVersion\Explorer\Advanced","HideFileExt",0x0001 HKCU,"Software\
0001,0
复制代码
下面几个方法是我认为比较好的方法
方法1、直接修改 HIVESFT.INF
用记事本打开 HIVESFT.INF ,直接把上述 inf 格式的注册表项添加到 [AddReg] 段下即可 现在开始安装 XP, 当文本安装模式结束时就会导入你的注册表设置了
注册表inf格式要注意的是,如果键名或键值中有空格的话必须用引号括起来
方法2、通过txtsetup.sif来调用inf导入注册表
用记事本建立一个如下格式的inf文件 Tweak.inf 1. [Version]
2. Signature="$Windows NT$"
3. [AddReg]
4.
HKCU,"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","HideFileExt",0x0001
0001,0
复制代码
此inf文件注意的格式同方法1
然后用 makecab 把 Tweak.inf 压缩成 Tweak.in_ ,然后把 Tweak.in_ 放到安装盘的 i386 目录
修改 txtsetup.sif,在 [SourceDisksFiles] 区段下添加一行 1. Tweak.inf = 1,,,,,,_x,3,,3 复制代码
然后转到 txtsetup.sif 的 [HiveInfs.Fresh] 区段,添加一行
AddReg = Tweak.inf,AddReg 1.
复制代码
最后修改 dosnet.inf,在 [Files] 区段下添加一行 1. d1,Tweak.inf
复制代码
注册表导入的时间同方法1
方法3、通过sysoc.inf来调用inf导入注册表
这种方法是系统自带组件,像游戏、Movie Maker等的集成方法 还是刚才那个例子,用记事本建立一个如下格式的inf文件 Tweak.inf
1. [Version]
2. Signature="$Windows NT$" 3. [Optional Components] 4. Tweak
5. [Tweak]
6. OptionDesc = "Tweak"
7. Tip = "Tweak"
8. Modes = 0,1,2,3
9. AddReg = Tweak.AddReg
10. [Tweak.AddReg]
11.
HKCU,"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","HideFileExt",0x1000
1,0
复制代码
这时候inf文件的格式就不用要求那么严格了,因为这个方法inf文件要在进入图形安装界面之后才导入 然后用 makecab 把 Tweak.inf 压缩成 Tweak.in_ ,然后把 Tweak.in_ 放到安装盘的 i386 目录
修改 txtsetup.sif,在 [SourceDisksFiles] 区段下添加一行
1. Tweak.inf = 100,,,,,,,20,0,0
复制代码
修改 dosnet.inf,在 [Files] 区段下添加一行
1. d1,Tweak.inf
复制代码
在i386目录中找到 sysoc.in_ ,用 WinRAR 解压得到 sysoc.inf 在 [Components] 区段下添加一行
1. Tweak=ocgen.dll,OcEntry,Tweak.inf,HIDE,7 复制代码
最后用 makecab 把 sysoc.inf 压缩成 sysoc.in_ 替换到 i386 目录就行了
方法4、T13导入注册表
虽然很想说这个接口叫做SVCPACK接口,毕竟微软提供的资料是这么写的,反正是在安装时间剩余13分钟调用就对了
首先你要打开 dosnet.inf 找到 [OptionalSrcDirs] 有没有 SVCPACK 这一项,如果没有的话就加上 这个部分的修改对于光盘安装到没有什么影响,如果是硬盘安装的话没有这一句安装程序在最初复制文件的过程中就不会复制 SVCPACK 这个目录,SVCPACK调用就无法实现了
这次就不用inf文件了,直接编辑如下内容保存为 Tweak.reg 放到 svcpack 目录中 1. Windows Registry Editor Version 5.00 2. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
3. "HideFileExt"=dword:00000000
复制代码
然后在 i386 目录中找到 regedit.exe 同样放到 svcpack 目录中
之后在 i386 目录中找到 svcpack.inf (也有能是 svcpack.in_,不用说,用WinRAR解压就行) 在 [SetupHotfixesToRun] 区段下添加一行 "regedit.exe /s Tweak.reg"
如果没有 svcpack.inf 可以按照如下内容建立一个
1. [Version]
2. Signature="$WINDOWS NT$"
3. BuildNumber=2600
4. MinorVersion=1
5. MajorVersion=5
6. [SetupData]
7. CatalogSubDir="\I386\svcpack"
8. [ProductCatalogsToInstall]
9. [SetupHotfixesToRun]
10. "regedit.exe /s Tweak.reg"
复制代码
最后用 makecab 把 svcpack.inf 压缩成 svcpack.in_ 替换到 i386 目录,当然不压缩也行,但要把原来的 svcpack.in_ 删掉
方法5、T9导入注册表
这时候要把 Tweak.reg 复制到硬盘上,方法有两种
一种方法同方法3,是修改 dosnet.inf 和 txtsetup.sif,并把 Tweak.reg 压缩后放到 i386 里,具体
方法不再阐述,代码如下
dosnet.inf 的 [Files] 区段
1. d1,Tweak.reg
复制代码
txtsetup.sif 的 [SourceDisksFiles] 区段
1. Tweak.reg = 100,,,,,,,1,0,0 复制代码
另一种方法是利用 $OEM$ 文件夹来分发文件
i386 目录的同级目录下建立一个名字为 $OEM$ 的文件,再从里面建立一个名为 $$ 的目简单来说就是在
录并把方法4中的 Tweak.reg 放进去
目录结构像这个样子
\$OEM$\$$\Tweak.reg
\i386\
要实现 $OEM$ 文件夹的分发需要自动应答文件的支持,需要修改 winnt.sif 的 [Unattended] 区段下
OemPreinstall=Yes
硬盘安装的时候需要把 $OEM$ 目录复制到 i386 中并调用 winnt32.exe 的 /unattend 参数 以上两种分发方式选一种即可
最后在 winnt.sif 的 [SetupParams] 区段下添加一行
1. UserExecute="%windir%\regedit.exe /s %windir%\Tweak.reg"
复制代码
方法6、[GuiRunOnce] 导入
此方法注册表内容会在系统安装完第一次登陆系统的时候导入
Tweak.reg 的分发方式同方法5
最后修改 winnt.sif ,在 [GuiRunOnce] 区段下添加一行
1. command0="%windir%\regedit.exe /s %windir%\Tweak.reg" 复制代码
这里如果已经有 command0 了,那就改作
1. command1="%windir%\regedit.exe /s %windir%\Tweak.reg" 复制代码
以此类推