无忧启动论坛
标题: 给PE添加外置扩展功能详解 [打印本页]
作者: sunsmile23 时间: 2022-12-17 12:00
标题: 给PE添加外置扩展功能详解
本帖内容简单,没什么技术含量。我也是在本坛学的,算是一个学习笔记。还没有入门的喜欢动手的PE爱好者,可作为参考。本帖特点是一步一步按照操作就行,省得到处去查阅资料。这也是本人的一贯特点。本帖对大师们而言是一点用都没有,因为对他们来说太简单,属于基本常识。当然大师们若有闲情帮忙指出其中的不当之处、或者能优化之处、或者还有其他更好的办法,本人感激不尽。
除了喜欢精益求精的技术爱好者、或者具有其它目的的人们,可能大多数使用PE的人,是奔着PE本身的用处来的:就是维护系统和应急。论坛内外的PE有很多制作精良,随便拿来一款就能很好的使用。但是每款PE制作者有各自的理念,每个PE使用者有各自的想法,众口难调。
不少人没有时间、或像我一样没有能力自己去撸一个自己需要的PE出来。我的做法是,选择一款有比较强的核心功能、可扩展性强的PE,然后在里面加上一个加载脚本,再把自己需要的各种工具和驱动(把它叫插件)存放在PE之外的某个可见或隐藏分区(或U盘)的某个地方,供PE启动时加载。这样既满足了自己的要求,升级或换PE也方便。PE升级了或换PE时,就用新的PE加上加载脚本。外置工具和驱动改变也方便,因为不用动PE.
作者: sunsmile23 时间: 2022-12-17 12:00
本帖最后由 sunsmile23 于 2022-12-23 20:23 编辑
具体分作以下几步介绍:
1.修改PE,把加载脚本放进去。 2.加载脚本的编写。 3.插件的编写。
一、修改PE,添加加载脚本。
需要工具:DISMGUI,UltraISO,PE文件以雷电的为例。
具体步骤如下:
1. 如果PE是wim格式,略过这一步。如果是ISO格式,双击加载到虚拟光驱(或用UltraISO打开),把里面最大的那个wim格式文件拷贝出来。通常在sources文件夹下面,名叫Boot.wim,大小一般是几百M.
2. 使用DISMGUI编辑修改刚才拷贝出来的Boot.wim. 在我使用过的几种修改wim文件的工具中,DISMGUI最符合使用习惯,就是打开(这儿叫挂载)、修改、保存。而且最稳定可靠,也不用管什么细节。我修改过的几个wim文件(不多,也许不具有代表性)都可以稳定可靠的挂载、修改、保存。而其它几个工具均无法挂载。
按照下图所示1、2、3的顺序挂载需要修改的wim文件。注意,需要单击选中2框中需要修改的卷才能挂载,因为wim文件中也许不只一个卷。下图4框中便是挂载后的样子,但它只是名义上挂在那儿供我们查看修改,实际并没有把文件解出来放在那里,所以它并不占用挂载盘的空间。另外,必须把wim文件从虚拟光驱里面拷贝出来加载。如果直接在虚拟光驱加载,就只能是只读的,没法修改。
上图4框里面的东西(就是MOUN\BOOT_1下面的东西)就是该PE里面的内容。里面的东西可以按需求修改、增删。
我们这里是最简修改,只是添加一个加载脚本loadplugins.cmd而已。这需要做两件事,第一这个脚本放在哪里,第二要让PE能够启动它。
现在PE一般都是pecmd管理启动过程的,所以先在它的配置文件中加上启动语句。以便启动我们的脚本。如下图所示,在挂载的PE结构中,找到Windows\System32下面的Pecmd.ini, 在其末尾添加一句 EXEC %SystemRoot%\Loadplugins.cmd即可。这句话有两个意思要注意,第一就是你的脚本名称Loadplugins.cmd. 前面这样写在PE启动时加载窗口是可见的。如果加一个感叹号即这样写EXEC !%SystemRoot%\Loadplugins.cmd, 那么启动时加载窗口是不可见的,暗中进行的,我自己喜欢可见状态,这样我知道加载情况。
第二就是存放路径。比较方便的是使用它的内部预设路径,如这里的%SystemRoot%, 它代表PE的Windows文件夹。我们就把加载脚本放在Windows文件夹里,如下图所示。当然,你放在其它的地方也行,只需在配置文件中写明路径即可。但最好使用内部预设的路径变量,如%SystemRoot%、%programs%等。这种预设的路径变量就在上面的配置文件中去找。
文件放好后,在DISMGUI中的右边选中“保存更改”,然后单击“保存并卸载”,这个PE的wim文件便修改成功了。
所以DISMGUI修改wim文件很方便,符合我们的使用习惯(打开、修改、保存),也不用管wim文件的细节。
wim文件修改好后,再用UltraISO打开原来的ISO文件,把原来的boot.wim删除,换上修改后的wim文件,然后另存(最好是另存,不要按保存)。添加脚本操作结束。
作者: sunsmile23 时间: 2022-12-17 12:00
本帖最后由 sunsmile23 于 2023-1-10 21:35 编辑
二、编写加载脚本
加载脚本就是批处理文件,扩展名一般为.cmd,这是个纯文本文件,可以用记事本编写。
脚本要解决两个问题:寻找插件和加载。
先要明确插件的位置。插件可以放在硬盘分区(或U盘)的一个文件夹中,如pe\plugins.
因为有可能放在隐藏分区,所以首先要把所有隐藏分区分配盘符,并显示出来。下面的语句可以达到这个目的:
pecmd SHOW -check -1:-1
我们使用一个for循环从后向前(包括U盘)遍历来查找存放插件的文件夹pe\plugins, 查找到后,就调用加载过程LoadPlugins. 注意调用参数"%%U:\pe\plugins"一定要加上英文引号,因为路径可能含有空格。下面的语句因为简单,会把所有分区上面放有pe\plugins的插件都加载。最后不要忘了写上exit,因为后面还要接着写加载过程:
for %%U in (Z Y X W VU T S R Q P O N M L K J I H G F E D C ) do (
if exist %%U:\pe\plugins call :LoadPlugins "%%U:\pe\plugins"
)
exit
下面是加载过程。调用过程要以英文的冒号开头。过程的最后不要忘了写上goto :eof,因为后面可能还要继续写其他的过程。
:LoadPlugins
goto :eof
调用过程主要解决两件事:一是把插件解压到PE系统的某个位置,因为所有插件都是压缩包。二是调用插件中的设置脚本。
因为插件包可能不止一个,我们可以使用下面的语句来遍历所有的插件包(包括子文件夹):
for /r %1 %%i in (*.7z,*.rar,*.zip) do (
)
这里的%1代表前面传入的参数,就是前面找到的插件包的位置,如H:\pe\plugins,注意%1两端不能再用英文引号。里面的%%i代表遍历到的每一个压缩包,可以是7z, rar, zip格式,如H:\pe\plugins\chrome.7z.
对于遍历到的每一个压缩包,可以用下面的语句来解压:
"%ProgramFiles%\7-Zip\7z.exe" x "%%i" -y -aos -o"%ProgramFiles%\OutPlugins\%%~ni"
%ProgramFiles%是内部定义的一个变量,代表PE系统盘的Program Files. "%ProgramFiles%\7-Zip\7z.exe"代表7z.exe的路径,如果你的PE里面7z.exe不在这儿,就按你的PE里面的路径写。OutPlugins是统一存放插件解压后文件的位置,这个随便你自己设定。%%~ni是压缩包文件名,用作存放解压文件的文件夹名。
下面调用插件(压缩包)里面的设置脚本,即压缩包最顶层路径里面的所有cmd和wcs
for /f "delims=" %%a in ('dir "%ProgramFiles%\OutPlugins\%%~ni\*.cmd" /b') do (
PECMD EXEC ^^!^^%ProgramFiles%\OutPlugins\%%~ni\%%a
PECMD wait 100
)
%ProgramFiles%\OutPlugins\%%~ni是刚才的解压文件夹,%%a是遍历到的里面的所有cmd脚本。如果你的插件里面不止一个cmd脚本,没法分先后。^^!^^是最小化执行窗口。
for /f "delims=" %%a in ('dir "%ProgramFiles%\OutPlugins\%%~ni\*.wcs" /b') do (
PECMD LOAD %ProgramFiles%\OutPlugins\%%~ni\%%a
PECMD wait 100
)
这里面的意义跟上面的cmd一样,只是调用方式不一样(EXEC/LOAD)。
脚本编写完毕,还是很简单的。整个脚本看起来就是这个样子:
loadplugins.cmd
=========================
@echo off
rem 设置变量延迟,以便下面 for 循环中给变量赋值
setlocal EnableDelayedExpansion
rem 给隐藏盘分配盘符,以便下面搜索时访问
pecmd SHOW -check -1:-1
rem 寻找插件的盘符 (插件存放文件夹为 pe\plugins、或 petools)
for %%U in (Z Y X W V U T S R Q P O N M L K J I H G F E D C ) do (
if exist %%U:\pe\plugins (
rem 找到了,例如 H:\pe\plugins,然后调用子过程,把插件路径作为参数传递
call :LoadPlugins %%U:\pe\plugins
rem 找到一份后,其余的盘就不看了
exit
) else if exist %%U:\petools (
call :LoadPlugins %%U:\petools
exit
)
)
exit
:LoadPlugins
rem 参数%1就是前面传入的插件位置,如 H:\pe\plugins
rem 本子过程使用了两种 for 循环来遍历磁盘文件
rem for /r %1 %%i in (*.7z) do 支持子文件夹
rem for %%i in (%1\*.cmd) do 不支持子文件夹
for /r %1 %%i in (*.7z,*.rar,*.zip) do (
rem %%i 代表搜索到的每一个压缩文件,如 H:\pe\plugins\chrome.7z,
rem 包括子文件夹,如 H:\pe\plugins\basics\FileTools.7z
rem 这里 n 指文件名,如 %%~ni 就是 chrome 或 FileTools, 用作存放解压文件的文件夹名
rem 路径 %ProgramFiles%\OutPlugins\%%~ni 就是如 X:\Program Files\OutPlugins\chrome
rem 设置为变量 pp, 方便下面各处写路径,因为这个路径有多处使用
rem 注意使用变量延迟后,使用变量的值要用 !pp!, 而不是 %pp%
set pp=%ProgramFiles%\OutPlugins\%%~ni
rem 解压到 !pp!。除了 7z.exe、%%i、!pp! 外,其它的是 7z 的解压参数。路径可能含有空格,所以要用双引号
"%ProgramFiles%\7-Zip\7z.exe" x "%%i" -y -aos -o"!pp!"
rem 执行 .cmd 批处理,%%a 代表 !pp! 文件夹里面的每一个 *.cmd, 如 chrome.cmd,!表示隐藏执行
for %%a in ("!pp!\*.cmd") do (
PECMD EXEC !"%%a"
PECMD wait 100
)
rem 执行 .wcs 脚本,%%a 代表 !pp! 文件夹里面的每一个 *.wcs, 如 chrome.wcs
for %%a in ("!pp!\*.wcs") do (
PECMD LOAD "%%a"
PECMD wait 100
)
)
goto :eof
=========================
把上面两条双横线之间的内容复制下来,粘贴到记事本中。不过浏览器不知咋回事会吃掉一些空格,所以若是不能正常工作,或者不能按预期工作,要检查一下空格。检查完后,保存为loadplugins.cmd。通用插件加载脚本编写完毕。
编写完后,按照前面所述,加入你的PE中即可。当然,若怕麻烦,你也可以不加进PE中去,把它放在任何地方,硬盘、优盘都行。在你的PE启动后,人工去双击执行也行。实际上,你可以在使用PE的任何时候去执行。灵活、方便。
作者: sunsmile23 时间: 2022-12-17 12:00
本帖最后由 sunsmile23 于 2022-12-30 15:51 编辑
三、编写插件
插件使用压缩包的方式,每个插件压缩成一个文件,可以是7z, rar, zip格式。
下图是压缩包的结构。也就是说,在压缩包的最上层,要有一个或多个设置脚本。设置脚本可以是.cmd或者.wcs格式。不然的话,加载脚本就只会给你解压了事。
设置脚本的主要目的有两个:一是建立桌面或开始菜单的快捷方式,二是启动安装(如输入法、驱动程序)或进行一些设置(如有些免安装软件)。
1. 添加快捷方式
桌面快捷方式。如Chrome浏览器的目录结构如下图,它的主程序路径为Chrome_v81\App\Chrome.exe,那么桌面快捷方式在.cmd文件中的写法为:
pecmd link "%Desktop%\Chrome81","%~dp0Chrome_v81\App\Chrome.exe"
如下图所示:
写好保存为.cmd格式文本。如果快捷名称包括中文,似乎要用ansi编码,不然就会乱码。完成后全选打包即可,如下图所示。这就是一个最简单的插件写法。所有绿色直接运行的软件,若只考虑桌面快捷方式,都可以这样写。
开始菜单快捷方式。若希望在开始菜单中也加上一个快捷方式,可以写上如下语句:
pecmd link "%Programs%\网络工具\Chrome81","%~dp0Chrome_v81\App\Chrome.exe"
这是效果图:
一些技巧。为让插件适应性强,里面可以使用预设路径,如%Desktop%(桌面)、%Programs%(开始菜单)。%~dp0为批文件所在路径。这样的话不管解压到哪里,都能形成正确的快捷方式。如果是.wcs格式,可以省掉路径,使用相对路径,像这样:
Link "%Desktop%\Chrome81","Chrome_v81\App\Chrome.exe"
2. 执行设置或安装
有些软件使用前必须先运行一些批处理设置一下(如一些免安装软件),有些软件要安装才能使用(如输入法)。
若是批处理,使用call进行调用,如:
call %~dp0PS_CS3\install.bat
若是安装,直接调用即可,如下图所示。软件支持自动静默安装最好,一般是加上/s参数。
%~dp0WinRAR_v6.11_Setup.exe /s
书写时注意路径。如前所述,建议使用 %~dp0 来代表批处理文件路径,或者改为.wcs格式,省掉路径。当然,下级子目录得写对。对于批处理文件,优先使用.wcs格式。上面的语句可以分别这样写:
EXEC =!PS_CS3\install.bat
EXEC =!WinRAR_v6.11_Setup.exe /s
上面介绍的是工具类型插件的编写。当然,当你熟悉以后,也不一定一个工具打一包,也可以众多工具打一包。比如同一类的磁盘工具打在一个包内,在设置文件中都写上相关的快捷方式和设置调用即可。只不过,一个工具打一包的方式取舍更灵活。
3.安装驱动
首先把众多驱动按文件夹放好集中打包,再放上驱动安装工具 DrvIndex.exe,写好安装脚本 installdrive.cmd,三个文件放一个文件夹中,再在上层文件夹里面写上供加载脚本调用的文件 installdrive.wcs,如下图所示:
然后一起压缩打包即可,如下图所示:
供加载脚本调用的 installdrive.wcs 中的语句如下,它就是调用 drivers 下面的安装脚本 installdrive.cmd:
EXEC drivers\installdrive.cmd
安装脚本 installdrive.cmd 的语句如下,就是调用 DrvIndex.exe 安装驱动:
DrvIndex.exe -b surface4.7z
DrvIndex.exe 不用解压整个驱动压缩包,直接从压缩包中搜索需要的驱动进行安装,性能不错。安装驱动的工具不少,我试用的结果是这一个能够成功安装的驱动个数最多。
4.现成的插件
如果懒得自己制作插件,也有很多现成的插件可用。比如
FirPE 网站介绍了一种 Edgeless 插件,并提供了下载地址,比较丰富,有各种应用、大量的驱动。
当然,Edgeless插件有一些特定的路径,要想使用它们,要么修改一下加载脚本,要么修改一下插件里面的路径。如迅雷精简版里面的设置内容为:
LINK X:\Users\Default\Desktop\迅雷精简版,%ProgramFiles%\Edgeless\迅雷PE版.exe
如果不改动前面的加载脚本的话,就需要把这一句改为:
LINK X:\Users\Default\Desktop\迅雷精简版,迅雷PE版.exe
一般而言,就是把Edgeless及其前面的路径删除便是。
本帖介绍的东西看起来多,主要是写得详细。其实不多,也简单。没有入门的朋友,稍稍操作一下就熟悉了。能够自己 DIY 一下,就又多了不少的选择,还是有乐趣的。家里的马桶不通了,自己尝试着捅一下,不仅省了几百块钱,关键是灵活快捷,不用眼巴巴靠别人,是吧。自己动手,丰衣足食。我这个人一是比较喜欢维持现状,不改动或者不要改动过多,二是喜欢透明,不喜欢黑盒子。比如,不喜欢程序一阵安装,往电脑上一通鼓捣,谁知道它私下干了些啥。在我的另一篇帖子中 (点击查看
把PE装在硬盘上--入门级),也更体现了这个特色。当然,有些朋友天生文字恐,看见字多就头晕目眩,哪怕实际上非常的简单。这种情况就只有让人同情了。关键是有些东西也不是几句话能说清楚的。本帖注意图文并茂,尽量降低理解难度。
我觉得能用插件的方式,就免除了有些选择的麻烦。因为很多时候我们看到这款PE这里好,那款PE那里好,很难取舍。其实它们大多数情况下主要是应用工具和驱动的差别。这恰好是本文的内容。以后,选好一款核心PE就行了。工具和驱动,拷贝到优盘上就行了。每款PE都能用。
本来是崭新的空房:
现在变成了豪华装修的HOUSE(当然你可以添加更多):
这里有更多的例子(PE及插件),可点击查看。其加载脚本有更强大的功能:
作者: jjbj66 时间: 2022-12-17 12:08
谢谢分享
作者: mrzhonghb 时间: 2022-12-17 12:20
坐等详细教程
作者: ppmjb2005 时间: 2022-12-17 13:59
多谢分享,学习了。
作者: feiyang0227 时间: 2022-12-17 17:57
学习教程,坐等
作者: 旁观者清 时间: 2022-12-17 18:49
谢谢分享。
作者: ldejin 时间: 2022-12-17 21:16
谢谢分享
作者: amsdre 时间: 2022-12-18 14:04
感谢分享
作者: likeyouli 时间: 2022-12-19 08:46
代表我这样的小白感谢,,楼主好人
作者: lizhh 时间: 2022-12-27 15:38
谢谢分享
作者: mingsir 时间: 2022-12-28 19:12
感谢分享
作者: shy20070509 时间: 2022-12-29 11:05
谢谢分享,学习一下
作者: zl2019 时间: 2022-12-30 10:36
感谢分享!
我是把ventoy装硬盘里面,换pe更方便
作者: fjice 时间: 2022-12-30 11:16
感谢楼主分享
作者: dpxqs 时间: 2023-1-6 16:30
楼主不如把文件分享出来让我们自己添加
作者: gutaiping2006 时间: 2023-1-8 12:01
小白向大佬请教:LoadPlugins中, set pp=%%~dpi set pp=!pp:%~1\=! set pp=%ProgramFiles%\OutPlugins\!pp!%%~ni语句,能否详解每句pp变量是啥意思,为何这样设置?
实在是没搞懂,
作者: sunsmile23 时间: 2023-1-9 22:46
那样写主要是想保持原来的文件夹结构 (如果含有子文件夹的话)。不过那样好像没有多少意义,还是统一解压到一个文件夹 OutPlugins 算了 (包括子文件夹的压缩包)。现增加了注释,你再去看看吧。
作者: minchengan 时间: 2023-1-9 23:07
没仔细看楼主的教程,随便看了一眼,那个搜寻外置插件的循环,其实pecmd有一个FORX命令挺好用的
作者: sunsmile23 时间: 2023-1-9 23:12
是的。FORX很方便,但好像没有for灵活。
作者: gutaiping2006 时间: 2023-1-10 08:08
楼主好人,注释非常详细,学习了,谢谢!
作者: hackerxmls 时间: 2023-1-10 21:39
感谢分享
作者: ZMLoveLH 时间: 2023-1-13 17:07
看看这个帖子,学习如何给PE添加外置扩展功能啊
作者: oym2016 时间: 2023-1-13 17:50
外置放在ISO镜像中安全性高点,编辑也方便。
DEVI $%programfiles%\imdisk\imdisk.inf,DefaultInstall
.......
FORX !\PEAppX\PEAppX.iso,&MyI,1,EXEC -hide -wait imdisk -a -f "%&MyI%" -m T:
.......
快捷方式都可免了 要用时去 T:上找……。
作者: Sim683 时间: 2023-1-15 17:50
好文,图文并茂,谢谢分享
作者: minghao 时间: 2023-1-19 10:18
支持拔掉U盘不
作者: wuming520 时间: 2023-2-5 14:41
楼主第一步创建Loadplugins.cmd我都没成功
作者: zyy 时间: 2023-2-10 23:40
谢谢分享,备用
作者: boaz199 时间: 2023-2-13 17:45
顶,谢谢楼主的劳动和分享!
作者: 13963431845 时间: 2023-2-27 14:16
赞一个
作者: 遨游的风 时间: 2023-2-27 14:43
感谢分享
作者: 遨游的风 时间: 2023-2-27 14:44
学习一下
作者: yyz2191958 时间: 2023-2-27 14:58
谢楼主的分享
作者: juecky 时间: 2023-2-27 15:12
学习了,后面有空再折腾
作者: bing1009 时间: 2023-2-27 15:12
感谢分享
作者: 2010wxy 时间: 2023-2-27 15:14
谢谢分享
作者: tjh_1960 时间: 2023-3-5 22:54
thanks
作者: xjwtzq 时间: 2023-3-29 10:33
非常好的教程
作者: czp0706 时间: 2023-3-29 13:45
这篇文章太实用了对我们小白特别友好!
作者: 无为安静 时间: 2023-4-9 06:36
感谢分享,学习了
作者: topa2023 时间: 2023-4-11 19:29
感谢分享
作者: topa2023 时间: 2023-4-12 15:56
不动wim怎么修改
作者: zhangjiti 时间: 2023-4-12 19:54
谢谢提供分享
作者: 老鼠打洞 时间: 2023-4-12 22:41
不是搞计算机的,纯爱好。N年了,就学会这句EXEC %中国%\无忧启动\给PE添加外置扩展功能详解\sunsmile23.cmd
作者: hbpgyb 时间: 2023-4-21 22:14
一直有这想法 只是自己小白不会做 现在楼主给出指导方法 好好学习一下 感谢了
作者: qyppvip 时间: 2023-4-22 13:57
非常详细的教程,感谢!
作者: maxlost 时间: 2023-4-24 15:13
太牛了,万分感谢!
作者: 龙之吻li 时间: 2023-5-10 09:44
学习一下
作者: iaanqrm 时间: 2023-5-10 09:54
作者: stop900130 时间: 2023-5-20 23:30
我看看
作者: zhjhy8 时间: 2023-8-14 11:06
谢谢
作者: kokozzz123 时间: 2023-8-15 10:09
学习了
补充一个
在exec和load命令 加一个!可以做到静默执行命令(好比bat运行不会有界面,当然对部分特定程序没用)
作者: jingjiefeiyang 时间: 2023-8-15 13:43
看一下,学一下
作者: yaoguoguo820 时间: 2023-8-15 15:52
1111
作者: xcsg 时间: 2023-8-15 16:38
作者: 2010yuhongxi 时间: 2023-9-5 14:18
感谢分享
作者: rhdou 时间: 2023-10-25 07:28
学习学习再学习
作者: martin313 时间: 2023-10-25 07:34
感谢分享!
路过学习了
作者: rhdou 时间: 2023-10-25 12:36
感谢分享
作者: gy0000 时间: 2023-10-29 12:39
很實用 感謝您的分享ˋ ~
作者: 艺馨 时间: 2023-11-5 09:21
原来是这样,难怪我下载的Kuerpe超级精简啥都没。
作者: 艺馨 时间: 2023-11-6 00:51
比较累
作者: 艺馨 时间: 2023-11-6 00:56
一大串文字,先收藏慢慢研究。
作者: atone 时间: 2023-11-17 14:17
妙不可言,多谢楼主的教程,步骤清晰,受教了。
作者: 开飞机的企鹅 时间: 2023-11-27 12:37
值得学习
作者: nowayer 时间: 2023-12-4 00:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: sjh87 时间: 2023-12-29 13:55
感谢分享
作者: dayeye 时间: 2024-1-3 15:35
感谢分享
作者: lgl007 时间: 2024-1-3 16:14
谢谢楼主分享,辛苦了。学习中
作者: skyenq 时间: 2024-1-3 19:27
很详细,谢谢分享。
作者: taotao00586 时间: 2024-1-28 17:28
说得对
作者: wang1126 时间: 2024-3-6 09:14
详细教程,谢谢分享
作者: 丙子亥1221 时间: 2024-3-6 17:04
谢谢分享
作者: xzst110 时间: 2024-3-7 11:58
楼主真是个热心人,详细,我要好好学习,谢谢!
作者: lingege29 时间: 2024-3-26 23:15
学习学习
作者: misiteZhou 时间: 2024-3-27 10:58
非常全面的教程 小白也能看懂
作者: D9gHH_I[(Mf8 时间: 2024-6-29 15:35
666
作者: 偷情闪了鸟 时间: 2024-7-9 12:43
感谢分享
作者: 孤山飞雪 时间: 2024-7-11 00:55
感谢分享
作者: 2011medp7060 时间: 2024-7-11 07:12
谢谢分享!这么好的贴子,一定要顶!!!!!!!!
其实,@管理员:应该把此贴顶置,让更多的人看到。
作者: 孤山飞雪 时间: 2024-7-12 12:35
谢谢
作者: 混世牛魔王 时间: 2024-7-16 10:31
学习是个复杂的过程
作者: 远大的理想 时间: 2024-7-17 16:45
感谢分享
作者: xsen 时间: 2024-8-2 14:36
学到了谢谢
作者: gwywzh 时间: 4 天前
多谢分享,学习了。
作者: cutebe 时间: 4 天前
感谢分享,学习了!
欢迎光临 无忧启动论坛 (http://wuyou.net/) |
Powered by Discuz! X3.3 |