找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 634|回复: 2

[【原创】] 仙乃日的封装思路!

[复制链接]
发表于 2009-4-12 09:04:02 | 显示全部楼层 |阅读模式
一。封装思路之注册表基础篇!
虽然说的是注册表,但和封装有着密切相关。这篇也是仙乃日封装思路的基础知识,明白这些才能更好地理解其应用。
  Windows设计之初,并没有采用注册表这种方式来存放软硬件配置信息,而是使用了两个扩展名为INI的文件(system.ini和win.ini)。对于INI文件大家应该很熟悉了,很多“绿色软件”都声称其不在注册表中写入任何数据,但大多会在其安装目录下留下一个或几个INI文件。既然当初使用的是INI,为什么后来又改成注册表了呢?这是因为INI文件有一个致命的弱点就是大小不能超过64KB,随着软硬件功能的日益进步,其所需的配置数据体积也在不断膨胀,INI文件早已无法满足这种数据量的要求了。另外INI其实是依据某种定义规范的文本文件,编辑过程极易出错并由此导致系统故障,为了克服这些问题,在Windows 95及其后的版本中,Window系统都无一例外的采用了注册表机制,并将原来由多个INI组成的软硬件配置信息统一到了一起,形成一个数据库,那就是注册表。注册表是一个保存系统、软件设置数据的数据库,而“注册表编辑器”只是对于整个系统的读取/修改工具。
    既然注册表是一个数据库,那么这个数据库文件在那里呢?其实,难怪不少刚接触电脑的朋友误以为regedit.exe就是注册表,这是由于对注册表数据库的组成不清楚而造成的。Windows 98注册表的数据文件主要由System.dat和User.dat这两个文件组成,并保存在C:\\Windows目录下,其中System.dat存储的是系统和硬件相关的配置,而User.dat则保存软件配置和用户配置,Windows 2000/XP注册表的数据文件主要存储在%Windir%\\System32\\config目录中的Default,Sam,Security,System,software和Userdiff等6个文件中,除此之外,还有部分数据保存在用户的配置文件目录中,比如Window 2000/XP中的Administrator的部分注册表数据就保存在C:\\Documents and Settings\\Administrator目录的Ntuser.dat文件中,所以只需要Administrator登陆系统后其目录下的NTUSER.DAT就不能被删除,因为它已经被加载到注册表中了。
   注册表分支和其相对应的数据库文件。
   HKEY_LOCAL_MACHINE\\SYSTEM这个分支相对应的文件就是%Windir%\\System32\\config目录中的System。
   HKEY_LOCAL_MACHINE\\SOFTWARE这个分支相对应的文件就是%Windir%\\System32\\config目录中的software。
   这2个分支和封装的关系比较密切。HKEY_LOCAL_MACHINE\\SYSTEM是记录计算机的硬件信息,每个驱动安装后的信息都会被系统记录在这个分支中的。做封装时所预先加载硬盘控制器驱动的注册表信息也是保存在这个分支的。HKEY_LOCAL_MACHINE\\SOFTWARE这个分支保存的是软件信息,包括windows自身的一些信息。明白这个对应关系,可以应用于不用重新封装而再次直接修改定制已经生成的映像。
  驱动信息是记录在HKEY_LOCAL_MACHINE\\SYSTEM这个分支中,具体的关系又是如何的呢?自己没找着微软官方的资料,以下说明全是自己猜测出来的。仅仅代表个人观点!
  HKEY_LOCAL_MACHINE\\System 注册表分支包含用于 Windows XP 启动过程的三个控件组: ControlSet001、ControlSet002、CurrentControlSet。 每个注册表项都有相同的子项结构。 Windows XP 提供 ControlSet001 的副本,名为 CurrentControlSet,这样,应用程序就不必考虑在启动过程中用几号控件组。  “Current”数据项目表示 Windows XP 在这次启动过程中使用的控件组。
   “Default”数据项目表示 Windows XP 在下次启动时将使用的控件组,它与这次启动使用的控件组相同。
   “LastKnownGood ”数据项目表示您在启动过程中选择“最近一次的正确配置”时 Windows XP 将使用的控件组。
   “Failed”数据项表示 Windows XP 在其中保存失败启动产生的数据的控件组。 此控件组在用户第一次调用“最近一次的正确配置”选项之前并不实际存在。 操作系统每成功启动一次,它都将 CurrentControlSet 和 ControlSet001 中的数据复制到 ControlSet002 中。 这样,在对配置进行更改时,所作的更改就会写入 CurrentControlSet 和 ControlSet001 中。 如果下次启动时出现问题,选择“最近一次的正确配置”将命令 Windows XP 使用 ControlSet002 中的数据,该数据代表系统在上次正确启动时的状态。 请注意,Windows XP 直到用户成功登录之后才将启动视为“正确”。
  首先说这个HKLM\\SYSTEM\\CurrentControlSet\\Enum这个分支。
注册树包含关于系统中设备的信息。PNP管理器为每个设备创建了一个子键, 子键的名字形式如同
HKLM\\SYSTEM\\CurrentControlSet\\Enum\\enumerator\\deviceID . 在每个这些键下是一个子键,代表了系统中存在的设备实例。这个子键,众所周知是设备的硬件键(或,设备键) ,有的信息如设备描述,硬件ID号,兼容ID号,资源需求等等。
Enum树是被操作系统保留自己用的,而且它的规划是变化的主题。驱动和用户模式安装
组件使用系统支持的函数,如同IoGetDeviceProperty和SetupDiGetDeviceRegistryProperty
,去获得这个树的信息。驱动和安装应用程序不能直接访问Enum树。当你调试驱动的时候,你可以使用注册表编辑器来直接看Enum树。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum这个分支中是保存着机器设备和信息。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\ACPI为电源管理。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\ACPI_HAL硬件抽像层。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\DISPLAY显示设备(显示器)。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\HID人体工学输入设备。
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\IDE IDE设备
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\PCI 挂在PCI总线上的设备包括(显卡,声卡……)
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\PCIIDE IDE控制器
  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\Root 虚拟设备和物理的非即插即用设备。
  一个硬盘控制器驱动如果被正确安装到机器上,那在HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\PCI上就可以找到其相关的注册表信息。这个信息是系统自动处理生成的。所以这边也可以作为,清除多余的硬盘控制器驱动驱动的判断条件之一。在这边能找着相应的信息的SRS驱动就应该被保留的,没找着的可以被删除。那些没有被使用到的硬盘控制器驱动驱动,系统也会将相对应的信息记录在:        HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\Root 这个分支中。因为系统将其识别为非即插即用设备啦。但如果这里多余的SRS驱动如果没被清除,系统在启动时还是会将其加载的。这个会增加启动时间,占用内存空间并且有可能引发系统的不稳定。
  接着说HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services这个分支。这个是保存驱动服务加载和其它服务的。
  HKLM\\SYSTEM\\CurrentControlSet\\Services这个注册树保存了关于系统中每个服务的信息。
  每个驱动有一个键形式如同HKLM\\SYSTEM\\CurrentControlSet\\Services\\
DriverName.
PnP管理器调用驱动的DriverEntry
的例程时,会将这个地址传送到驱动的RegistryPath参数
中去。(终于知道这个参数的来由了,哈哈) 一个驱动可以在Services
树下的DriverName键
中存储驱动定义的全局数据。在驱动初始化时,信息存储在这个键下是允许的。
下面的键和值入口是特别感兴趣的:
ImagePath是一个值入口,它指定了驱动文件的修饰全路径。安装时通过使用驱动的Inf文
件中的ServiceBinary入口创建了这个值。这个入口在service-install-section中,参考驱动的INF中的AddService子节。
directive , 对于这个路径一个典型的值是
%windir%\\system32\\Drivers\\DriverName.sys ,而DriverName是驱动的Services键的名字。
Parameters
一个键用于存储驱动指定数据。一些类型的驱动,系统期望去找到指定的值入
口。你可以添加到这个子键中,通过在驱动的INF文件中使用AddReg
入口。
Performance
一个键用于指定可选的监控行为的信息。这个键下的值指定驱动的行动DLL
的名字和那个DLL特定输出接口的名字。你可以通过在驱动的INF文件的AddReg
入口添加的值。
例如:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\iaStor]
\"Type\"=dword:00000001
\"Start\"=dword:00000000
\"ErrorControl\"=dword:00000001
\"Tag\"=dword:00000019
\"ImagePath\"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,61,00,53,00,74,00,6f,00,72,\\
00,2e,00,73,00,79,00,73,00,00,00
\"DisplayName\"=\"Intel RAID Controller\"
\"Group\"=\"SCSI Miniport\"
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\iaStor\\Enum]
\"0\"=\"CI\\\\VEN_……\"--->使用iaStor这个驱动的设备的硬件ID。
\"Count\"=dword:00000001--->说明iaStor这个驱动只被一个设备使用。
\"NextInstance\"=dword:00000001
这是intel的串口硬盘控制器驱动.
其中的\"Type\"=dword:00000001说明是一个核心设备驱动程序服务.
\"Start\"=dword:00000000 是引导时就会被NTLDR加载的服务.
\"ErrorControl\"=dword:00000001就是错误控制的意思.将错误记录到系统日志并提示警告信息,但继续启动过程。
\"Tag\"=dword:00000019就是指在\"SCSI Miniport\"组内的加载顺序.
\"ImagePath\"就要加载的驱动文件路径.
\"DisplayName\"=\"Intel RAID Controller\"显示的名称.
\"Group\"=\"SCSI Miniport\"指定驱动程序或者服务隶属的组。此项设定允许驱动程序或者服务同步启动(比入:文件系统驱动程序)注册表子键 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\ServiceGroupOrder 中的 List 项指定了组项启动顺序。
HKLM\\SYSTEM\\CurrentControlSet\\Control
注册树包括了控制系统启动和一些方面的驱配置。下面的子键是特别感兴趣的:
HKLM\\SYSTEM\\CurrentControlSet\\Control\\Class
包含关于系统中设备安装类的信息。每个类有一个子键, 名字使用安装类的GUID。每个子键包含了关于一个安装类的信息,如同class installer (假设这里有一个), 注册类上层过滤驱动,注册类下层过滤安装驱动等等。
每个类子键包含其他的子键如大家知道的软键(或驱动键),对于类安装的系统的每个设备实
例。每个这样的软键使用设备实例ID号来命名,是基于十进制的,四位数字的顺序值。
CoDeviceInstallers
包含关于类指定co-installers的信息,注册在系统中的co-installers 。
DeviceClasses
包含关于系统中设备接口的信息。There is a subkey for each device interface
class and entries under those subkeys for each instance of an interface that is registered for the
device interface class 。

二。仙乃日封装思路之“破剑式”!
  此“破剑式”非金庸笔下独孤大侠所著之招式,实乃仙乃日的“破见识”。因自己的见识都是些比较破的。
   现在的封装可以说是进入了后封装时代,与封装相关的一些技术细节也大多比较明朗了。如果你从未接触过封装,想从头开始学习的话。仙乃日建议你可以从微软原版光盘中自带的帮忙文档Ddeploy.chm开始学习,这个文档自己估计看过N(N>100)次。
   有接触过WIN98的人都知道,当年WIN98的封装是非常简单的。个人的破见识—认为XP的封装也应该重返简单模式。XP封装相对WIN98封装多了一些限制。只要去除微软设置在XP身上的这些限制,就能让XP的封装和WIN98一样的简单明了。
   第一个限制注册激活:随着VOL版本的流行和各种破解方式的出现,这个限制应该是早已荡然无存了。
   第二个限制就是著名的硬件抽像层(HAL)限制:在XP封装时要求主安装和目标计算机必须有兼容的硬件抽象层 (HAL)。自从微软破解中心提出套用Windows Longhorn的HAL判断方式,就完美地解决了硬件抽像层(HAL)限制。计算机电源管理就是对应于硬件抽象层的另一种说法。网上流传的封装教程,大多要求将计算机的电源管理模式设置为Standard PC,并且在注册表删除原主安装和HAL相关的注册表项目。仙乃日认为此种做法是完全没有必要的。采用了Longhorn的HAL自动判断,计算机将会在启动到Ntldr的检测硬件和核心装载阶段时(Ntldr 负责将 Windows 核心层 (Ntoskrnl.exe) 和硬件抽象层 (HAL) 装载到内存。)就会自动加载与目标计算机相适应的HAL。即使目标计算机为Standard PC,Longhorn的HAL自动判断也能加载其对应的HAL。而加载到内存的Windows 核心层 (Ntoskrnl.exe) 和硬件抽象层 (HAL)被统称为windows 执行体。接着Windows 执行体才扫描储存在注册表control sets中的信息,并启动服务和驱动程序。
  第三个限制硬盘控制器驱动限制:WIN98是基于BIOS直接识别硬盘,故不存在这个限制。而如果封装出来的XP系统中不含有相适用的硬盘控制器驱动,部署到目标计算机时就会现蓝屏。习惯上我们将硬盘控制器驱动分为IDE和S&R&S两种模式。这两模式都可以采用预安装驱动来解决的。对于IDE模式,传统教程习惯预先将IDE控制器设置为“标准双通道”。但是做法在封装XP SP3时,当映像部署到某些NF主板(如NF2U,个人亲自测试过NF2U主板)时,就有可能出现在“最小安装”完成后,却不断重启。对于IDE模式,个人采用的方法和S&R&S模式完全相同。只要在sysprep.inf中[SysprepMassStorage]子节中添加:
[SysprepMassStorage]
primary_ide_channel=c:\\windows\\inf\\mshdc.inf  ;假设原主安装在C盘
secondary_ide_channel=c:\\windows\\inf\\mshdc.inf
pci\\cc_0101=c:\\windows\\inf\\mshdc.inf
这样当运行Sysprep进行封装时,Sysprep就会自动完成“标准双通道”硬盘控制器驱动的预安装。第3方S&R&S驱动预安装的方法可以自己查阅Ddeploy.chm或者网上相关教程。
  总结一下仙乃日封装流程:1.安装系统和软件并完成相关设置——>2.套用Windows Longhorn的HAL判断方法——>3.预安装(集成)硬盘控制器驱动和其它驱动——>4.运行sysprep工具进行封装并克隆映像。
  在仙乃日封装流程中并没有提及卸载任何驱动。理论上映像部署到目标计算机时,原主安装上的即插即用驱动都将成为“幽灵设备”。而“幽灵设备”不会被启动加载的,最多是在注册表中遗留一些垃圾信息和系统目录中残留一些多余的驱动文件。自己没看见过微软的官方文档有提及过“幽灵设备”会对系统的稳定性造成不良影响的说词。但是那些采用预安装技术集成的S&R&S驱动,是应该要清除的。因为这些驱动如果没清除在启动时是会被系统加载的,也才有可能造成驱动冲突和系统资源的浪费。具体的清除方法可以查阅Ddeploy.chm中有关\"Sysprep -clean\"的用法,也可以采用第3方工具来进行清除的。

三。仙乃日封装思路之终极逆转!
 好些时候我们需要对已经封装好的映像进行更新修改。如何对映像进行修改呢?仙乃日使用的是终极逆转技术,使用此种方法也能比较容易地修改别人制作好的映像。个人推崇出于研究探讨的目的而修改他人的作品,BS出于商业利益简单粗暴的恶意修改。个人将终极逆转的修改技术分为2种模式。
  第一种模式适合软件修改更新,特别是大型的软件修改与更新。自己只介绍大概的流程。仔细的操作步骤不想多说,会修改映像的人,大多会明白具体的操作步骤的。具体的流程如下:
  1.在PE下将要修改的原映像恢复到C盘。
  2.在PE下直接修改原映像恢复到C盘的文件。首先去除boot.ini的HAL选择接口参数“/detecthal”,备份转移所有的第3方自启动项目(记得自启动文件夹哦),将注册表中的“HKEY_LOCAL_MACHINE\\SYSTEM\\Setup”下的值项“SetupType”更改为“0”。“HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\PlugPlay”中的“Start”值更改为“4”。
  3.备份原“C:\\WINDOWS\\system32\\config\\system”文件。
  4.重启进入系统,这时也许会出现驱动安装的过程(不用理会)。可以像未封装前那样,卸载或者安装软件,对系统打补丁或者优化。特别注意某些软件会涉及“HKEY_LOCAL_MACHINE\\SYSTEM”,就要将其修改或者添加的注册表项目找出来(只是记录在HKEY_LOCAL_MACHINE\\SYSTEM中,才有必要的。正常的情况下,会修改此处的软件并不多)
。在这一个步骤中,还可以比较方便地备份出原系统所添加的S&R&S驱动。
  5.在完成第4步骤时,要记得清除由此带来的一些垃圾文件。重新添加boot.ini的HAL选择接口参数“/detecthal”,恢复原来所有的第3方自启动项目。
  6.再次进入PE,恢复第3步骤中备份原“C:\\WINDOWS\\system32\\config\\system”文件。接着就可以重新克隆C盘啦。注意整个修改过程最好在虚拟机中进行。
   第二种模式,适合更换或者修正S&R&S驱动或者一些特殊的软件。
这需要用到commander.2003.boot中的REGEDIT.EXE这个小工具,一般PE系统都有自带的。
   1.用commander.2003.boot中的REGEDIT.EXE将原映像中的“C:\\WINDOWS\\system32\\config\\system”打开。
   2.删除“HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001”,再将“HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002”更名为“HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001”。
接着可以直接导入准备好的SRS驱动的注册表项,再将驱动文件复制到驱动目录中即可。
   3.有的映像本身已经删除了“HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002”。这种情况更改起来,就要用到几个小工具。利用工具,可以比较容易在第一种模式步骤4中备份出原映像所添加的SRS驱动并且从C盘完全清除这些驱动。这样就可以重新导入新的SRS驱动,适用于驱动更新。

四。仙乃日封装思路之封装轻骑逐!
  这里想说的减肥是指操作系统已经安装完毕的时候所进行的精简。关于安装版的精简,建议大家搜索有关nLite的知识。
1.垃圾文件或者临时文件的清除。
首先可以依据文件的扩展名来确定垃圾文件或者临时文件。
*.1st ..... (system.1st 是个 Windows 诊断文件)
*.$$$ ..... MS-DOS 临时文件
*.&db ..... 临时文件 (dBASE IV)
*.--- ..... 安装时产生的临时文件
*.?$? ..... 临时文件(st Reader)
*.?~? ..... 临时文件
*.MS ...... Microsoft 产品备份文件
*.^ ....... 临时文件
*.__ ...... 临时文件
*._dd ..... 丢失簇文件
*._detmp ..临时文件
*.mp ...... 临时文件
*.bak ..... 备份文件
*.b~k ..... 备份文件, 某些文本编辑器产生的
*.bk ...... 备份文件
*.bk? ..... 可能是垃圾文件
chklist.* . 丢失簇文件
*.chk ..... 丢失簇文件
*.cpy ..... 备份文件
*.db$ ..... 临时文件 (dBASE)
*.dmp ..... 可能是垃圾文件
*.edb ..... Exchange Server 保存的文件 (一个数据库)
*.err ..... 错误文件
*.fic ..... 可能是垃圾文件
*.fnd ..... 查找结果文件
*.ftg ..... .HLP 的词语列表文件
*.fts ..... HLP 的词语列表文件
*.gid ..... Windows 帮助索引文件
*.nav ..... 备份文件
*.nu3 ..... Symantec 备份文件
*.old ..... 备份文件
*.prv ..... 备份文件 (bootlog.prv: Windows 诊断文件)
*.sav ..... 备份文件.
*.sdi ..... 存档目录文件
*.sik ..... 可能是垃圾文件
*.spc ..... 临时文件 (WordPerfect 产生的)
*.syd ..... 备份文件
*.temp .... 临时文件
*.tmp ..... 临时文件
*.wbk ..... Word 备份文件
*.~* ...... 临时文件
*__ofidx*.* ..... Microsoft 快速查找索引文件
*.license.txt ... 可能是垃圾文件
*install*.txt ... 可能是垃圾文件
*.log.txt ....... 日志文件
*modemlog.txt ... Windows Modem 日志文件
*order*.txt ..... 可能是垃圾文件
readme.txt ... 可能是垃圾文件
*whatsnew*.txt ...可能是垃圾文件
0*.nch ........... Outlook Express 产生的临时文件
ABEND.LOG ........ Novell Abend 日志文件
anti-vir.dat ..... F-Prot Anit-Virus 产生的文件
eula.txt ......... Microsoft 最终用户许可协议
file_id.diz ...... 共享软件的说明文件
ghosterr.txt ..... Norton Ghost 错误文件
iebak.dat ........ Internet Explorer 垃圾文件
modemdet.txt ..... Windows 诊断文件
msoe.txt ......... Microsoft Outlook(TM) Express 的自述文档
mssecure.xml ..... Microsoft Baseline Security Analyzer 产生的文件
pq_debug.txt ..... PowerQuest 产生的分区信息文件
pspbrwse.jbf ..... Paint Shop 文件夹图像信息缓存文件
suhdlog.dat ...... Windows诊断文件
system.st ........ Windows诊断文件
twain???.mtx ..... TWAIN 临时文件
扩展名为以上所列出的,基本都查以放心删除。
你可以自己编写一个简单的批处理来自动删除这些文件。例如:
del %windir%\\*.tmp
del %windir%\\*.old
这个简单的写法能删除当前能够被删除的垃圾文件或者临时文件。
2.一些特殊目录的清除。
回收站:del /s /q %windir%\\recycled\\*.*
预读取目录:del /s /q %windir%\\prefetch\\*.*
临时目录:del /s /q %windir%\\temp\\*.*
     del /s /q \"%USERPROFILE%\\Local Settings\\Temp\\*.*
升级目录:del /s /q \"%ProgramFiles%\\UPDATE\\*.*
     del /s /q \"%ProgramFiles%\\windowsUpdate\\*
最后一次正确配置目录:
     rd /s /q %windir%\\LastGood
     md %windir%\\LastGood
DLL缓存目录:del /s/q %windir%\\system32\\dllcache\\*.*
3.一些非必要驱动相关文件的清除
驱动预编译文件,删除了还会自动生成:del /s /q %windir%\\inf\\*.pnf
第3方的INF文件,删除这个可以避免一些驱动的错误安装或者提示找不着驱动文件。del /s /q %windir%\\inf\\oem*.inf
4.自己还会删除的一些文件
mrt.exe是微软增强安装技术相关程序,用于监视间谍软件和其它系统进程在你不知情的情况下访问网络。
删除命令:del /s/q %windir%\\system32\\mrt.exe
softwareDistribution目录,其实这只是windows自动更新所使用的临时存储的一个目录,这里关系着系统的更新问题,如下级目录的download是下载补丁。由于WINDOWS在WINDOWSpUPDATE时会在硬盘上建立相应记录文件夹,该文件夹就是C:/Windows/SoftwareDistribution,并把相应升级信息写入注册表,假如升级出现错误,注册表也相应记录错误信息。并在每次WINDOWSpDATE中去自动访问SoftwareDistribution目录,以至于出现依次升级错误就会造成以后屡次出现错误,而造成升级次次失败。SoftwareDistribution由于在正常模式下系统会自动调用,所以正常模式下无法改名或删除。进入安全模式修改后,再次WINDOWSpUPDATE,系统找不到该文件夹,会自动重建该目录,并重新扫描系统升级信息,以至可以成功升级 。
删除命令:del /s /q %windir%\\softwareDistribution\\download\\*
系统升级后的备份文件也是可以安全地删除的。
删除命令:dir %windir%\\$* /a:d /b >%windir%\\CYJ.txt
     for /f %%i in (%windir%\\CYJ.txt) do rd %windir%\\%%i /s /q
     del %windir%\\hdj.txt
RegisteredPackages目录,这个文件夹里面存储的应该是和Windows Media Player相关的一些系统文件。可以删除,因为部署的时候是相当于重新安装一次Windows Media Player。
删除命令:rd /s /q %windir%\\RegisteredPakages
     md %windir%\\RegisteredPakages
catroot2目录,这个是存放本机的加密服务-Cryptographic service的相关系统文件。删除这个目录,还能增加兼容性,减少部署时卡在“请稍候”那里。在某些智能主板上,没删除这个目录,基本不能部署成功的。
删除命令:net stop cryptsvc
Ren %systemroot%\\System32\\Catroot2 oldcatroot2
Rd /s /q %systemroot%\\System32\\oldcatroo2
net start cryptsvc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2009-4-12 09:05:33 | 显示全部楼层
自己暂时不玩封装了,将自己对封装的一点点小收获与大家分享。
1.源码中包括USB键盘鼠标驱动的通用解决方案(借鉴TiGer-X的)。
2.通用的驱动残留和幽灵硬件清除。(自己花了很多时间的心得)。
3.关闭无用的IDE通道。(借鉴深度某某人的)。
4.AUTOAUTO病毒清除。(借鉴江民社区的)。
5.驱动判断和安装的。(也可以用于安装版)。
6.从驱动的层面解决出现“即插即用监视器”的问题。(自己的测试通过)。
7.不重新安装一些已经安装的组件,用于加快部署。(最早的思路源于龙帝国,自己修正并完善)。
8.还有大量的垃圾功能。
感谢给予自己帮助的网友们。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2009-4-12 11:34:51 | 显示全部楼层
这是楼主原创啊.厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-5-12 16:38 , Processed in 0.325256 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表