
使用 Txtsetup 添加注册表预设出处: (http://gosh.msfnhosting.com/infresh.htm) 作者:nosh 翻译:tingpu (tingpu@hotmail.com) 目前已知有一种方法可以用 txtsetup.sif 来添加自定义的注册表条目. 每次文本安装模式即将结束时, 安装程序就会利用txtsetup.sif 中的某些定义来创建注册表(文件复制结束时). 如果是全新安装的话, 安装程序就会按照 txtsetup.sif 的 [HiveInfs.Fresh] 区段中的定义来生成注册表. 你可以使用这个区段来添加你自己的注册表条目. 添加注册表条目 如果你已经把你的注册表设置保存为一个 .reg 文件的话, 那么你需要用.inf 文件导入这些设置. 将你的 .reg 文件重命名为 settings.reg 并将其置入i386 文件夹中. 将以下内容复制到一个新文件中并另存为settings.inf, 然后将其保存到 i386 文件夹中. [Version] Signature = "$Windows NT$" DriverVer=07/01/2001,5.1.2600.1106 [update] HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce","MyUpdate",0x00020002,"%systemroot%\regedit.exe /s %systemroot%\system32\settings.reg" 添加 inf 条目 如果你已经有了一个 .inf 文件, 那么将其复制到 i386 文件夹中并将其重命名为settings.inf. 确保这个 .inf 文件中有个名为 [update] 区段, 只有这个区段下的设置会被使用! 你可以用 makecab.exe 把 settings.inf 压缩成 settings.in_, 但这只是可选的. 添加方法 打开 txtsetup.sif 并转到 [HiveInfs.Fresh], 按以下粗体添加一行. [HiveInfs.Fresh] AddReg = hivedef.inf,AddReg AddReg = hivesys.inf,AddReg AddReg = hivesft.inf,AddReg AddReg = hivecls.inf,AddReg AddReg = hiveusd.inf,AddReg AddReg = dmreg.inf,DM.AddReg AddReg = settings.inf,update 再把以下 2 行添加到 txtsetup.sif 的 [SourceDisksFiles] 区段下. 如果你要使用一个 .reg 文件, 那么就要添加第二行, 不需要的只需添加第一行. settings.inf =1,,,,,,_x,3,,3 settings.reg =100,,,,,,,2,0,0 把以下 2 行添加到dosnet.inf 的 [Files] 区段下. 如果你要使用一个 .reg 文件, 那么就要添加第二行, 不需要的只需添加第一行. d1,settings.inf d1,settings.reg 现在开始安装 XP, 当文本安装模式结束时就会导入你的注册表设置了. 你不需要使用无人值守安装方式. 疑难解答 文本模式安装程序所用的解释引擎不同于 SetupAPI. 因此, 处理相关的 inf 文件时要小心点以免设置无效. 当你编辑用于文本安装模式下用的 inf 文件时, 应当遵循以下方针. 1 - 避免 strings. 就是那些在 [strings] 下定义的字符串. 我听说在文本安装模式下无法使用字符串. 2 – 总是使用引号. 请你尽可能地用引号括住你的设置. 3 – 避免缩写. 在一般的 inf 中你可以使用 0x1 或 0x1002. 而在文本安装模式下, 以上值不起作用. 4 - 避免不必要的空格. 这个可能不是强制性的, 但是我觉得你最好这么做. 5 - 无法确定能用文本安装模式 .inf 做什么事情? 那么请参考 hivesys.inf, hivesft.inf. (我个人对以上说法持保留意见..) 以下是 5 个不同的 .inf 设置. 粗体的那个是正确的, 而其它的则无法工作且文本模式安装程序会报错. 1 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed",0x00010001,1 2 - HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939,"Installed",0x00010001,1 3 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed",0x10001,1 4 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed"",0x00010001,1 5 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939",Installed,0x00010001,1 1 – 此行没有任何错误. 注意第二段和第三段都用引号括住了. 你必须用引号将其括住! 2 – 此行无法工作, 因为第二段没用引号括住. 3 - 此行无法工作, 因为 0x00010001 被搞成了0x10001. 在正常情况下没有问题, 但是在文本安装模式下, 安装程序就无法理解它的含义了. 有所怀疑的话, 请不要使用任何缩写. 4 - 此行无法工作, 因为 Installed 后有两个引号. 5 - 此行无法工作, 因为 Installed 没有被引号括住! 试着按照我的指南创建你自己的 inf 吧. 如果文本安装模式“不喜欢”你的Inf 文件, 那么它会告诉你错在哪行的. 然后你就要转到此行并试着找出问题所在. 其它 此指南中的某部分, 包含的第一个 inf 文件, 摘自 MSTest 所写的材料 |