WinPE3.0的制作

WinPE 3.1制作指南

前言

这是一个写给PE初学者的教程。高手请飘过。。。。。

本教程是本人制作WinPE 3.1的亲身经历,这些知识主要来源于本人制作WinPE的一些积累、微软WAIK的帮助文件,当然肯定会参考网上其他人制作的PE,很多问题也是通过百度、Google解决。PE制作需要的计算机知识并不难,但是涉及面非常广,本人的水平也有限,一本教程不可能包罗万象,也难免会有错漏;我只是尽我所能,希望给PE入门者提供一个PE制作的详细解说,使入门者能尽快制作出属于自己的PE。

第1章 制作源生WinPE 3.1

1.1    准备工作

WinPE基础知识请大家自行百度。

1.1.1下载Windows AIK

要制作源生WinPE 3.1,需要从微软官网下载如下软件:

自动安装工具包:Windows Automated Installation Kit(简称WAIK),我们需要下载的是WAIK 3.0(KB3AIK_CN.iso)以及3.1的补充包(waik_supplement_zh-cn.iso)。

PS:WAIK 3.0可以制作WinPE 3.0,补充包就可以做3.1了。

请自行在微软官网下载并安装,软件很大。

1.1.2工具软件的准备

① 虚拟机软件

VMware。制作过程中需要反复测试系统,所以这个是必须的。

② UltraISO

用来制作ISO文件的利器。

③Win7 SP1中文版安装镜像

cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso,网上很多类似版本。

④ 7-Zip压缩软件

7-Zip的优点是可以直接处理wim文件

1.2    预备知识

要制作WinPE 3.1,了解以下知识很重要。下面这些资料复制于WAIK的帮助文件,请仔细阅读体会。

1.2.1 WinPE 3.1的启动过程

① 加载特定媒体上的启动扇区(MBR)。将控制传递给 Bootmgr。Bootmgr 从启动配置数据 (BCD) 中提取基本的启动信息,并将控制权传递给 Boot.wim 中包含的 Winload.exe 文件。然后 Winload.exe 加载相应的硬件抽象层 (HAL),并加载系统注册表配置单元和必需的启动驱动程序。完成加载后,将会准备执行内核 Ntoskrnl.exe 的环境。

② 执行 Ntoskrnl.exe,完成环境设置。将控制权传递给会话管理器 (SMSS)。

③ SMSS 加载注册表的剩余部分,配置运行 Win32 子系统 (Win32k.sys) 的环境及其各种进程。SMSS 加载用于创建用户会话的 Winlogon 进程,然后启动服务和剩余的非必要设备驱动程序及安全子系统 (LSASS)。

④Winlogon.exe 根据注册表值 HKLM\SYSTEM\Setup\CmdLine 来运行设置。如果存在 %SYSTEMDRIVE%\sources\setup.exe,Winpeshl.exe 将启动它,否则 Winpeshl.exe 将查找在 %SYSTEMROOT%\system32\winpeshl.ini 中指定的应用程序。如果未指定任何应用程序,则 Winpeshl.exe 将执行 cmd /k %SYSTEMROOT%\system32\startnet.cmd。默认情况下,Windows PE 包含一个将启动 Wpeinit.exe 的 Startnet.cmd 文件。Wpeinit.exe 加载网络资源,并与网络组件(如 DHCP)进行协调。

⑤ Wpeinit.exe 完成后,将显示命令提示符窗口。此时,WinPE 3.1的启动过程完成。

1.2.2 WinPE 3.1的启动目录结构

├─bootmgr

├─boot
│  │─bcd
│  │─boot.sdi
│  │
│  └─fonts
│      └─chs_boot.ttf
│      └─wgl4_boot.ttf
└─Sources
    └─boot.wim

以上就是微软默认的WinPE3.1启动目录结构。

1.3    制作源生WinPE3.1

根据1.2小节中的知识,如果不修改任何启动配置文件,严格按照1.2.2的目录结构安排文件,我们就可以得到一个winPE3.1了;当然,我们还需要一个MBR,这个可以从Win7安装光盘映像中提取。以下就是按照这个思路制作winPE3.1的具体步骤:

1.3.1 按照1.2.2中的目录内容从waik_supplement_zh-cn.iso中提取相应的文件,提取的文件先保存在一个临时目录中,结构应该与1.2.1所示一样。

waik_supplement_zh-cn.iso中的winpe.wim文件对应1.2.2中的boot.wim文件,请提取后改名。

 

注:制作32位版本的PE请从X86文件夹中提取文件,64位请从AMD64文件夹中提取文件。

1.3.2使用UltraISO加载Win7SP1安装镜像,提取启动文件,也保存在临时目录中。

1.3.3UltraISO新建“启动光盘映像”,启动文件使用1.3.2中保存的启动文件,并将1.3.1中提取的文件目录等放入这个映像,并保存

1.3.4 可以使用VMware测试了。效果如图:

 

1.4    小结

本章所制作的源生WinPE3.1只有一个命令行窗口,并不具备使用价值。但是通过制作,可以学习一些WinPE的基本知识并熟悉工具软件的用法,为以后的制作打好基础。并且我们在本章中安装了WAIK,我们以后要用到WAIK提供的许多工具软件(如Dism、ImageX等等),并且WAIK的帮助文件对初学PE者来说是宝典类的读物,希望大家有机会通读一遍。

第2章 使用WinBuilder制作WinPE3.1

对于第1章制作的源生PE,如果要达到能使用的地步,需要手工增加explorer图形界面等很多功能模块,工作量很大很繁琐而且容易出错,对初学者来说更是困难。当然,有许多工具软件能实现我们需要的功能,WinBuilder就是其中之一。本章就介绍使用WinBuilder制作WinPE3.1的详细步骤,我的目标是制作一个带explorer的、以系统维护为目的并且尽量精简的WinPE3.1。

PS: WinBuilder的Bug与其优点一样多,所以务必严格按照以下步骤操作!

2.1    准备工作

2.1.1 WinBuilder的下载安装

我将本章使用的WinBuilder及其所需的项目文件、必要的工具打包,可以在以下地址下载:http://u.115.com/file/clnqo55q#

下载后直接解压至自定目录即可,本文使用F:\Winbuilder目录,以下皆以此目录为例。

2.1.2 Win7SP1安装镜像的处理

① 解压Win7SP1安装镜像至硬盘,本文以F:\Win7SP1目录为例。当然,你也可以使用虚拟光驱挂载安装镜像。

② 使用7-zip解压F:\Win7SP1\sources目录下的boot.wim和install.wim文件。

Boot.wim中有两个文件夹。目录2带有setup.exe,解压目录2至G:\2目录下。使用目录1可能造成WinBuilder设置系统路径错误。

Install.wim文件中有5个文件夹,对应不同版本的Win7。解压目录5至G:\5目录下。这个可以随便解压一个目录。

PS: 从理论上讲,只要第①步给WinBuilder提供Win7SP1源盘即可。但是在实际制作过程中,WinBuilder提示找不到源盘。因此第②步不能省略。

2.2    WinBuilder的详细设置

WinBuilder的设置项目多如牛毛,本章的主要目的是制作一个简洁的带explore的WinPE3.1,所以只讲解已经选择的设置项目。有关WinBuilder的教程网上很多,其他设置请自行搜索。

运行F:\Winbuilder\Win7PESE_Builder.exe。如图:

 

① 设置选项

② 运行,也就是设置完成后制作WinPE

③ 下载,如果项目文件有更新,可以点此下载

2.2.1 Source

选择Win7SP1安装镜像的路径

 

① 首先点击Source标签

② 在这里选择你的Win7SP1安装镜像解压后的目录

下面两个选项是目标目录以及制作的ISO文件的保存路径,使用默认值。

2.2.2 Main configuration

 

① 设置

Build model:winpe的运行模式,一般都选择ram盘运行

Screen resolution:屏幕分辨率,这个根据自己电脑的配置情况设置

Boot manager:选择启动管理器,standard意为使用WinPE本身的启动

Boot manager skin:选择启动管理器皮肤。

Wpeinit run mode:wpeinit.exe的运行模式。

System local:系统语言选项,选auto即可。

总之,我选择这些选项的原则是简单为主。

② 保存选项

③Winbuilder的每个选项都有这个绿色小箭头,点此运行,可以检查一下有无错误。

2.2.3 Images configuration

 

① 选择处理Wim文件的工具软件,Auto即可

② 检测并选择install.wim文件中包含的映像,默认即可。

③ 指定boot.wim和install.wim中已解压映像的位置。强烈建议指定位置!

④ 保存

PS:所有的文件路径最好使用纯英文路径,否则可能会出现错误!!

2.2.4 Build

2.2.4.1 Retrieve Tools

指定Wim工具所在的位置,由于前面我们已经安装了WAIK,选择Installed WAIK

2.2.4.2 0-Preconfig

这个可以不管

2.2.4.3 1-Copy Files

 

① 文件拷贝模式,Full模式我没有测试过,应该是全部拷贝,体积不好控制

② 文件拷贝选项

Clear Target Folder:拷贝前清除目标文件夹

Other Language Files(All Nls):是否拷贝所有的Nls文件。不选WinPE启动时会提示缺少Nls文件,估计做英文版的可以不用选。

Add All keyboards/Additional Fonts:拷贝所有的键盘模式/附加字体。这个根据需要选择吧。

Local Folder Names(desktop.ini):使用本地文件夹名称

③ Windows RE配置

出于体积的考虑,本项可以不选择。

2.2.4.4 2-Shell &Config

 

① FBWF cache size

选择WinPE RAM盘使用的内存。根据自己的电脑配置选择。

2.2.4.55-WoW64 Basic

64位WinPE支持32位程序的配置选项。制作32位PE不需要设置。

2.2.4.6 6-Common Files

VB5、VB6运行库。以后给PE添加绿色软件可能会用到它们。

2.2.5 Shell

2.2.5.1 0-Shell Swapper TimeOut

在启动时是否显示WinBuilder的Shell选择界面

2.2.5.2 1-Explorer Shell

Explorer正是我们需要的图形界面,其设置选项也非常多,我也没有一一测试这些选项,因此只能解说个大概。其实大部分都可以采用默认设置。

 

① 设置explorer为默认shell

② 采用新式的开始菜单。这个我没有选用,还是使用Windows默认的比较好吧

③ 桌面图标的样式

④ explorer的快捷方式设置。这个可以不做选择。

⑤ 任务栏按钮设置,默认即可。

⑥ 是否将命令提示符放入开始菜单

⑦ 任务栏设置,默认即可

⑧ 是否显示关机按钮。对于32位PE应该是必选项。

2.2.6 Components

WinPE可安装的组件选择,从PE的用途及体积考虑,我只选择了有限的几项,并且都取消了其在开始菜单中的显示。毕竟看到英文菜单很不舒服,在WinPE后期设置中,这些都可以使用PECMD进行进一步的设置。

① HwPnP

即插即用硬件检测。

② MMC

经测试,不选此项打不开设备管理器。

③ MSI Install

如果以系统维护为PE的使用用途,此项有选择的必要。

④ PENetwork

即使不选择安装IE,对局域网的支持也很有必要。

⑤ MS Visual C++ Runtimes(2005/2008)

运行库,以后添加绿色软件可能用到。

以上所有组件的设置均未选择,仅仅是将其添加进PE。

2.2.7 Tweaks

还是以精简为目的,只选择了两项:Wallpaper和Control Panel & Aero,这两项的设置都可以自定,没啥说的。

PS:不选择Control Panel & Aero则打不开显示属性。

2.2.8 Apps

只选择了7-zip一项,毕竟程序可以在后期设置中自行添加绿色版的。

 

① 语言选择简体中文

② 不选择建立快捷方式,以后在PECMD中建立

③ 关联相应的文件

④ 增加7-zip至explorer的右键菜单

2.2.9 Drivers

对于以系统维护为目的的PE来说,别的驱动都是浮云,只有SRS驱动比较重要。对Win7PE而言,目前不添加任何驱动也可以很好的适应大多数电脑,因此本项可以不选择。我是选择了USB 3.0 Support这一项。

2.2.10 Finalize

这是最后的选项了。

2.2.10.1 Optimization

 

① 这个没搞清楚是啥意思,就是按默认选择了

② PE中计算机名称,这个自己取名

③ 防火墙的设置,默认关闭防火墙,并且不在开始菜单中显示防火墙的设置

④ 其余都按默认选择吧

2.2.10.2 TrimdownPE

选择是否减小PE注册表、源文件的体积,以及是否移除dism工具。如果对PE体积敏感的话,可以都选上。

2.2.10.3 3-PostConfig

选择压缩比例,自定吧。我选择的是最大压缩。

2.2.10.4 4-Creat ISO

建立ISO文件的选项,没啥说的了。给即将要创建的ISO文件起个名字即可。本文以Win7PE_x86.iso为例。

2.3    制作WinPE3.1

所有设置完成后,点击2.2 ②所示的蓝色大箭头,WinBuilder即开始创建PE,中途可能会有假死现象,耐心等待。

完成后,可以在F:\WinBuilder\ISO文件夹下找到Win7PE_X86.iso文件,虚拟机加载后如图所示:

 

2.4    小结

本章我们使用WinBuilder制作了一个带有explorer的WinPE3.1,基本上具有了Windows系统的模样与功能。当然,要达到正常使用的地步,还有很多工作要做。我们将在下章讨论WinPE3.1的后期设置与美化。

第3章 WinPE3.1后期设置

在制作了一个基本成型的WinPE3.1的基础上,我们将陆续为其添加功能部件、常用软件,以及添加个性化信息,使WinPE3.1能更好的为我所用。

3.1    准备工作

3.1.1准备系统文件

① 由于要修改PE的系统文件、注册表等内容,需要处理2.3步骤中制作的ISO文件。请将F:\WinBuilder\ISO\Win7PE_X86.iso复制一份到F:\TEMP目录下(目录自定),并使用UltraISO提取Win7PE_X86.iso文件中的boot.wim文件到此目录下。

② 使用GimageX工具或者WAIK提供的DISM命令将boot.wim文件释放至F:\TEMP\BOOT文件夹下。

③ 参考2.1.2 ②,我们使用的Win7SP1的文件均来自G:\5目录下。

3.1.2准备工具软件

① PECMD

② 需要添加至PE的绿色软件

③ 需要添加至PE的驱动

3.2    PECMD的引入

3.2.1拷贝文件

将pecmd.exe文件拷贝至F:\temp\boot\windows\system32目录下,并在此目录下新建pecmd.ini文件。

3.2.2修改PE注册表

PE启动时默认使用winpeshl.exe进行设置,我们要将其修改为使用PECMD。

① 运行注册表编辑器,定位至HKEY_LOCAL_MACHINE项。

② “文件”→“加载配置单元”,找到F:\temp\BOOT\Windows\system32\config目录下的system文件,确定加载,随便起个名称,比如“111”。

 

③ 注册表编辑器中定位至HKEY_LOCAL_MACHINE\111\Setup\CmdLine项,双击,将数值数据中的“winpeshl.exe”改为“PECMD.EXE MAIN %WinDir%\System32\PECMD.INI”,确定

 

④ 卸载配置单元

3.2.3 PECMD.INI文件的简单解说

PECMD.INI文件是PECMD.EXE运行时的重要配置文件,具体命令的用法可以仔细阅读PECMD的帮助。以下是一个PECMD.INI文件的简单例子及简单解说,仅供参考(其实我使用的也基本是从网上PE系统抄来的)。

//

_SUB OSD

     DISP W1024 H768 B32 F60

     SCRN ScrW,ScrH

     ENVI TextLeft=20

     CALC #TextTop=%ScrH%-60

     CALC #TextRight=%TextLeft% + 400

     CALC #TextBoom=%TextTop%+40

_END

//

 

//

_SUB OSInit

     TEXT 鱼非子Win7PE正在初始化系统...#0xFFDDDD L%TextLeft% T%TextTop% R%TextRight% B%TextBoom% $20

EXEC !%WS%\winpeshl.exe

EXEC !=%WS%\Ux.exe

EXEC !=%WS%\regsvr32.exe /s x:\windows\system32\msi.dll

_END

//

 

//

_SUB CreateMemu

     TEXT 创建内置程序菜单...

     LINK %Programs%\附件\命令提示符,%WS%\cmd.exe

     PINT %Programs%\附件\命令提示符.lnk,附到「开始」菜单

_END

//

 

//

_SUB LoadShell

     TEXT 设定休眠键重启/电源键关机……

     HOTK #95,PECMD.EXE SHUT R  //休眠键重启

     HOTK #255,PECMD.EXE SHUT   //电源键关机

     TEXT 鱼非子Win7PE启动完成.稍候可去除启动盘 ...

     SHEL %W%\explorer.exe

//

 

主体执行流程/

TEAM ENVI W=%WinDir%|ENVI $WS=%WinDir%\SYSTEM32|ENVI WSD=%WS%\Drivers

CALL OSD

CALL OSInit

CALL CreateMemu

CALL LoadShell

 

主体执行流程结束

① 以“_SUB”开头的类似于编程中的子程序,直接在主体执行时调用。

② SUB OSD段主要设定了PE的屏幕分辨率以及启动文本的显示位置。

③ SUB OSInit段设定了PE启动时执行的程序

④ SUB CreateMemu建立PE的开始菜单、程序快捷方式等。

⑤ SUB LoadShell段主要是为了启动explorer,以后输入法也将在此段添加。

⑥ 主体执行流程设定环境变量,调用上述子程序。

3.2.4重建WIM文件

修改了F:\temp\boot中的文件后,需要重建wim文件以保存修改,步骤如下:

①启动GimageX,选项如图

 

② 点击直接创建按钮,GimageX开始创建boot.wim文件

③ UltraISO,将上一步创建的boot.wim文件添加到Win7PE_X86.iso文件中,替换以前的boot.wim文件。

④ 可以运行虚拟机测试了

PS:3.2.4的步骤是每次修改后都必须要做的,当然对wim文件的处理也可以用其他工具软件完成。

3.3    语言栏的显示及输入法的集成

3.3.1显示语言栏所需要的文件

\Windows\System32\input.dll

\Windows\System32\zh-cn\input.dll.mui

\Windows\System32\ctfmon.exe

\Windows\System32\zh-cn\ctfmon.exe.mui

\Windows\System32\msctf.dll

\Windows\System32\zh-cn\msctf.dll.mui

\Windows\System32\MsCtfMonitor.dll

\Windows\System32\msctfp.dll

\Windows\System32\msctfui.dll

\Windows\System32\zh-cn\msctfui.dll.mui

\Windows\System32\msutb.dll

\Windows\System32\zh-cn\msutb.dll.mui

请在Win7SP1安装映像中找到上述文件并拷贝至PE系统中。

3.3.2注册表的修改

经过与正常运行的Win7对比,需要在PE注册表中添加如下项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{0000897b-83df-4b96-be07-0fb58b01c4a4}\LanguageProfile\0x00000000\{0001bea3-ed56-483d-a2e2-aeae25577436}\Enable              值:1

请按照3.2.2中修改注册表的步骤,加载F:\temp\BOOT\Windows\system32\software文件进行修改

3.3.3集成智能ABC输入法

智能ABC输入法需要以下文件:winabc.cwd、winabc.ime和winabc.ovl,这些文件可以在网上下载的智能ABC安装文件中提取。按下列步骤安装:

① 将上述文件拷贝至PE系统windows\system32目录下。

② 在PECMD.INI文件“_SUB LoadShell”段添加如下内容:

EXEC !%WS%\ctfmon.exe

CALL $imm32,ImmInstallIMEW,%WS%\winabc.ime,智能ABC

3.4    应用软件的添加

从PE的用途、体积等方面考虑,没有给本PE外置大型软件,而只是添加了少许绿色软件,并全部内置。

3.4.1添加Windows自带程序

在PE的制作过程中,没有集成一些Windows自带的小工具,如记事本、写字板、画图等,如果需要,可以对比正常运行的Win7系统,自行拷贝这些小工具到PE系统的System32目录下即可。

PS:如果只拷贝exe文件无法执行,看提示缺什么文件就添加什么文件。

3.4.2添加系统维护用绿色软件

本PE系统添加的软件均放入PE系统ISO文件的programfiles目录下,也就是全内置方式。

3.4.3给添加的软件建立快捷方式

修改PECMD.INI文件,在“_SUB CreateMemu”段添加建立快捷方式的内容。如:

LINK %DeskTop%\网络支持,%ProgramFiles%\PENetwork\PENetwork.EXE

LINK %Programs%\附件\命令提示符,%WS%\cmd.exe

PINT %Programs%\附件\命令提示符.lnk,附到「开始」菜单

以上只是举例说明,可根据自己的实际情况进行修改。

3.5    驱动程序的添加

对于以维护系统为目的的PE而言,SRS驱动是最应该引起注意的。虽然Win7SP1已经是很新的操作系统了,但是随着时间的推移,难免会出现不能识别的硬件,所以还是应该添加最新版本的驱动以备不时之需。

3.5.1 SRS驱动的添加

现在以自由天空的SRS驱动为例,将其加入PE。

3.5.1.1 将下载的天空SRS驱动解压,目录应该如图所示

 

3.5.1.2 打开“SRS.Win7.x86.AMD”目录

① 将其中“drivers”目录下的3个文件ahcix86s.sys、amd_sata.sys、amd_xata.sys拷贝至“F:\temp\BOOT\Windows\system32\drivers”下

② 修改SRS.Win7.x86.AMD.reg文件

“SRS.Win7.x86.AMD”目录下的SRS.Win7.x86.AMD.reg文件需要添加进PE的注册表,但在添加之前需要修改。

使用记事本等软件打开SRS.Win7.x86.AMD.reg文件,如图:

 

 

查找字符串“[HKEY_LOCAL_MACHINE\SYSTEM“,并替换为”[HKEY_LOCAL_MACHINE\111“,保存文件。

运行注册表编辑器,参照3.2.2中修改注册表的步骤,加载F:\temp\BOOT\Windows\system32\system文件,并起名为“111”,双击修改后的SRS.Win7.x86.AMD.reg,将其合并到注册表。

3.5.1.3 对自由天空SRS驱动中的“SRS.Win7.x86.Intel”、“SRS.Win7.x86.Marvell”、“SRS.Win7.x86.nVIDIA”目录重复以上步骤,将其都添加至PE中。

3.5.2其它驱动程序的添加

对于其它驱动程序,基本都带有inf文件,可以参照WAIK帮助文件,直接使用drvload工具添加。

第4章 WinPE3.1的美化

所谓美化,主要是指为WinPE3.1添加个性化信息,并对WinPE3.1的外观(如壁纸、开始菜单等)做一些修改工作。顺便解释下,在写这章时,32位版本的PE已经制作完毕,正好在制作64位版本的PE,所以使用的图像是修改64位版PE的。但是两个版本的修改方法基本一样。

4.1    壁纸与用户头像

壁纸文件:F:\temp\boot\Windows\system32\winpe.bmp

用户头像文件:F:\temp\BOOT\ProgramData\Microsoft\User Account Pictures\user.bmp

可以使用相同格式的文件替换之。

PS:使用其他格式的图形文件会造成壁纸无法显示,原因不明。

4.2    开始菜单和桌面

控制开始菜单的显示项目:

\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

桌面图标的显示:

\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons

可以根据3.22的步骤修改default文件来设置开始菜单和桌面。

4.3    OEM信息的修改

Win7pe的OEM信息无法按照正常方法修改,需要修改文件。使用ResHacker_3.5修改Windows\System32\zh-CN下的systemcpl.dll.mui文件,如下图

 

可以按照自己的信息修改,但是注意修改的行号。修改后在PE中应该如图显示:

 

4.4    计算机名称的修改

加载system文件,修改如下键值:

 

Controlset001\Control\ComputerName\ActiveComputerName\ComputerName

 

Controlset001\Control\ComputerName\ComputerName\ComputerName

 

Controlset001\Control\Session Manager\Environment\COMPUTERNAME

 

Controlset001\Services\Tcpip\Parameters\Hostname

 

Controlset001\Services\Tcpip\Parameters \NV Hostname

4.5    杂项修改

其它一些杂项的修改基本和修改win7注册表一样,网上有很多教程,就不多说了。

结语

磕磕绊绊的终于写完了这个教程,其实里面写的东西都是些基本知识,也肯定有许多不准确的地方。总体来说,制作PE并不需要具备多么高深的计算机知识,但是就我个人感受而言,耐心是必不可少的,甚至可以说耐心也是PE制作技术的一个重要组成。希望大家都能制作出自己满意的PE,毕竟别人的东西再好,也不见得适合自己,自己动手也是有无穷乐趣的。

 

                                                                                                                              

转载于:https://www.cnblogs.com/EthanSun/archive/2013/03/08/2949198.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值