无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: slore
打印 上一主题 下一主题

[原创] (2022-02-02 更新) Re:WIN10XPE - 从零开始构建的全功能PE

    [复制链接]
181#
 楼主| 发表于 2019-5-7 23:56:25 | 显示全部楼层
本帖最后由 slore 于 2019-5-7 23:58 编辑


93.

写了一个"宏" AddFilesByList.cmd, 放到lib\macros\下面,
然后main.bat或者last.bat你可以用
call AddFilesByList mype.txt来提取.

AddFilesByList.cmd
  1. echo [MACRO]AddFilesByList %1

  2. set "_add_batch=%_WB_TMP_DIR%\_AddFileList.bat"

  3. if 1==1 (
  4.   echo call AddFiles "%_add_batch%" :end_files
  5.   echo goto :end_files
  6. )>"%_add_batch%"
  7. for /f "usebackq delims=" %%i in ("%~1") do (
  8.     if not exist "%X_SYS%\%%i" (echo %%i)>>"%_add_batch%"
  9. )
  10. echo goto :end_files>>"%_add_batch%"

  11. call "%_add_batch%"
  12. set _add_batch=
复制代码


看的懂吧, 就是文件列表循环检查,X盘没有的话,生成一个call AddFiles的临时批处理文件后调用即可.

如果要用install.wim的注册表HIVE文件的话, call AddFilesByList之前,先用
call PERegPorter.bat Tmp UNLOAD 1>nul

把Tmp_XXXXX注册表卸载掉.

回复

使用道具 举报

182#
 楼主| 发表于 2019-5-10 12:34:10 来自手机 | 显示全部楼层
本帖最后由 slore 于 2019-5-10 12:36 编辑

Re:foxfirefox

要集成.Net框架 3.5的话,

dism 命令对 install.wim /Enable-Feature /FeatureName:NetFx3
再dism挂载,提取。。。

集成3.5花时间。。。

点评

关键的就是有没有.net 3.5的文件精简列表  发表于 2019-5-10 15:26
回复

使用道具 举报

183#
 楼主| 发表于 2019-5-11 06:14:53 | 显示全部楼层
本帖最后由 slore 于 2019-5-11 08:31 编辑


800m是现成的ISO(PE 17736.107 x64),没有作者同意暂时不便提供直接镜像。带.net,powershell,远程桌面,远程协助,多用户, 声音, 网络, WIFI, BITS, winRM,hyperV,打印,网络打印,USB弹出功能等。。。
是学习用的PE,不使用任何第三方软件,工具,从制作到里面系统必要的hacker,系统文件修改,都是用powershell脚本写的,好几万行代码。。。

花了1天多,没把远程桌面服务单独需要的搞出来,但验证至少3389服务需要修改些PE判定才行,还在调查。


精简网络版是另一件事情,等文件列表和网络驱动外置包,另外App自动集成,自定义驱动包,离线导入需要实现。

精简windows10工程,是打算挂载insttall.wim,用dism等命令,精简小娜,内置应用,winsxs远程,打印等,和这个PE一样可以选择适应不同需要。(优先度低)


4.tscon命令不能直接切到已经启动好的system桌面。注销admin,用提权命令重建桌面是另外的方法,慢。


5.最初是utf8支持的,结果需要Ado组件,正常系统可以用。但默认winre.wim没有,确保默认winre.wim启动也可以用wimbuilder2,格式就只能Ansi了。

lib\macros\AddFiles.cmd,在调用wimlib前,你可以用vbs或者第三方工具转utf8后调用。

可以使用set AddFiles_utf8_support这类环境变量来控制。或者if exist a2u.exe等手段。

全部用utf8或者调用AddFiles宏前,set AddFiles_use_utf8=1来限定个别文件列表。。。

需要自己添加20行代码吧。
回复

使用道具 举报

184#
 楼主| 发表于 2019-5-13 12:44:19 | 显示全部楼层
本帖最后由 slore 于 2019-5-13 14:08 编辑
foxfirefox 发表于 2019-5-13 11:46
18885及后续版本出现右键点击 任务栏 图标时重启explorer.exe的解决方法是
添加:Windows\System32\Window ...


谢谢补充。

4月28日的版本启用Admin帐户会添加下面的2个文件,不然无法切换。
所以启用了Admin的话,没有这个问题(不管用SYSTEM还是Admin)。
没想到Shell基本功能也受到影响。
把这3个文件, 也補充到explorer\submain.bat就好了。

SwitchToAdmin.bat
  1. +ver > 18800
  2. ;实际测试18894,还得老版本SwitchToAdmin的6个文件
  3. CoreMessaging.dll,CoreUIComponents.dll,rmclient.dll,twinapi.appcore.dll,InputHost.dll,TextInputFramework.dll
  4. WindowManagement.dll
  5. WindowManagementAPI.dll
  6. Windows.UI.dll
  7. +ver*
复制代码


另外默认情况任务栏是无法弹出右键菜单的,如果使用了StartIsBack
它使得jumplist还有pin菜单有效,才需要这些文件

回复

使用道具 举报

185#
 楼主| 发表于 2019-5-13 22:54:57 | 显示全部楼层
黑中见白 发表于 2019-5-13 21:49
任务栏的右键菜单和开始菜单进程有关,
没有开始菜单进程,右键 任务栏 关闭窗口什么的是弹不出的.
显示 ...

>显示桌面也无效.

这个与开始菜单无关,没有用StartIsBack一样的,5BA可以开启。

借用原版SYSTEM SAM SECURITY
注册表...
难弄吗


如果是最后完全使用,途中不修改的话,直接从install.wim提取,
放到 Projects\WIN10XPE目录,last.bat最后会自动替换。

(SAM, SECURITY中途都没改过。SYSTEM的话,驱动,还有服务会被影响。。。)
回复

使用道具 举报

186#
 楼主| 发表于 2019-5-14 16:18:14 | 显示全部楼层
本帖最后由 slore 于 2019-5-14 16:20 编辑

foxfirefox
S大的win+D功能是如何实现的???


最初2016年,从winxshell提取了显示桌面的代码,注入explorer,响应显示桌面动作时调用。

2017年,noel(mtp限制发现者)的调查,explorer的桌面模式初始化在PE没执行,导致不响应显示桌面动作,通过发送0x5BA消息给explorer就好了。

此消息被集成到后来的pecmd,我前面介绍的fixscreen也包含了这个发送消息的处理。

我这个制作的PE是用pecmd实现的。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378303

点评

在用户双切时,当进行多次切换时,win+D功能会无效。  发表于 2019-5-22 22:26
希望大神尽快解决启动引导文件数字证书错误的方案。。。。。。静等大佬佳音。。。。  详情 回复 发表于 2019-5-14 21:46
那就是我用PEcmd.exe版本太旧了。  发表于 2019-5-14 16:59
回复

使用道具 举报

187#
 楼主| 发表于 2019-5-16 14:36:12 | 显示全部楼层
kevinmars 发表于 2019-5-16 14:25
wimbuilder2-master.7z.002.7z
wimbuilder2-master.7z.001.7z
這兩個檔案我下載解壓縮都是錯誤!wimbuild ...

http://bbs.wuyou.net/forum.php?m ... &fromuid=166812

最新版在这里,这里需要下载4个附件。

上面反映预览版UEFI需要改bcd参数才可以启动。

点评

楼主,5月16日更新了什么?看到首页你编辑了。。。。  详情 回复 发表于 2019-5-17 11:40
回复

使用道具 举报

188#
 楼主| 发表于 2019-5-21 22:50:07 | 显示全部楼层
还有很多需要研究调查的功能,不过noel要进行半年的骑行旅游,最后RS5的ISO分享出来了。

利用ADK的winpe.wim添加 .Netframework, powshell等库后, 从install.wim补充了:
桌面, DWM, 搜索,BitAdmin,HyperV, 远程桌面, 远程桌面服务,远程协助,打印机,扫描仪,读卡器,MTP,
声音支持,无线网络支持,WINRM(远程管理),IE,网络打印,网络控制中心,USB弹出,管理员帐户(密码:+noel)等。

有兴趣的自行下载。


    $t_packages = @( "WinPE-WMI",
                     "WinPE-Scripting",
                     "WinPE-HTA",
                     "WinPE-MDAC",
                     "WinPE-NetFx",
                     "WinPE-PowerShell",
                     "WinPE-PPPoE",
                     "WinPE-RNDIS",
                     "WinPE-Dot3Svc",
                     "WinPE-DismCmdlets",
                     "WinPE-SecureBootCmdlets"



链接:https://pan.baidu.com/s/1v9jdV8zRANxLgKyF42QAAg
提取码:3v6f

点评

编辑过却没有导出,wim里面有30多兆无用文件,导出后体积减少7兆  详情 回复 发表于 2019-5-22 16:01
已下载  详情 回复 发表于 2019-5-22 08:53
usb弹出太诱人了  详情 回复 发表于 2019-5-21 22:59
回复

使用道具 举报

189#
 楼主| 发表于 2019-5-22 22:30:46 | 显示全部楼层
本帖最后由 slore 于 2019-5-22 22:34 编辑


对于UTF8的我理解了。

如果是非标准install.wim,提取其中中文名的文件,确实需要UTF8化。

至于你说的UNICODE特殊字符,我觉得是你准备文件列表时需要注意。
call AddByFileList mylist.txt

mylist.txt你应该用dir /b /s 获取,手动编辑, 建议用高级点文本编辑器,
然后利用正则宏,自己处理文本,比如替换掉UNICODE, X:\替换掉.并保存为UTF8格式.

不应该是wimbuilder2来处理.
原因有2点,批处理中unicode存在字符,main.bat本身会出错.
UTF8格式存在unicode的话,wimlib也当成名字的一部分,不会正确提取.

你这个需求不是简单编码问题,而且对不规范字符的过滤处理.


空格的话,两边的可以去掉,中间如果存在空格,不知道wimlib是不是需要加引号.
如果是,程序可以处理.

AddFiles.vbs 判断if InStr(line, " ") > 1 then 保存时多加2个引号就行了.

不过我所知wimlib是支持空格路径的,比如
\Program Files\Internet Explorer\
可以正常提取.我不明白"空格"为什么需要处理.

还是说你说的"空格"是看不见的UNICODE?
回复

使用道具 举报

190#
 楼主| 发表于 2019-5-25 13:00:33 | 显示全部楼层
本帖最后由 slore 于 2019-5-25 13:05 编辑
chiannet 发表于 2019-5-25 12:11
楼主的最新制作工具对付1903时发现,本工具使用的是winre.wim的windows\system\config\system、DRIVERS, ...


把SYSTEM放到工程目录WIN10XPE下,将自动替换。
不过因为是最后完全替换,不能修改了。

我在配置页面加一个选项吧。


自己这2天想用的话,
WIN10XPE\prepare.bat第35行添加:

  1. call AddFiles \Windows\System32\config\SYSTEM
复制代码
回复

使用道具 举报

191#
 楼主| 发表于 2019-5-25 13:29:02 | 显示全部楼层
chiannet 发表于 2019-5-25 12:11
楼主的最新制作工具对付1903时发现,本工具使用的是winre.wim的windows\system\config\system、DRIVERS, ...

本工程旨在给wimbuilder2的使用提供一个相对完善的例子。

wimbuilder2本身,扩展性非常强,简单的批处理自己随意改。
会powershell的也可以直接拿来。

此工程的网络支持是直接搬运老外的dll和注册表,我没进行任何完善或者精简,
因为使用的人比较多,都正常。我个人的USB无线WIFI直接能用,本地有线网卡也都能识别到,
就不特别处理了。



加驱动,加服务都是一句话的事,关键是什么组件,依赖什么服务才是必要的,那些文件,注册表,致力于最小需要。

如果为了总功能完善,堆个1.5~2GB的PE就是了。
回复

使用道具 举报

192#
 楼主| 发表于 2019-5-25 16:26:46 | 显示全部楼层

Windows\WinSxS\


是固定的。仅根据是否支持WOW64多加x86的文件。

如果需要补充,添加类似下面的文件名到AddFiles的文件列表块即可:
  1. \Windows\WinSxS\%SxSArch%_microsoft.windows.c..-controls.resources_*_%Language%*\*.*
  2. \Windows\WinSxS\%SxSArch%_microsoft.windows.common-controls*\*.*
  3. \Windows\WinSxS\%SxSArch%_microsoft.windows.gdiplus.systemcopy_*\*.*
复制代码


支持环境变量,支持*通配符。

Windows\INF\
Windows\System32\drivers\
Windows\System32\DriverStore\FileRepository\


使用call AddDrivers宏命令会自动补充。

Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\

自己根据功能补充到AddFiles块中即可。

例如:
  1. +if "x%opt[support.photo]%"="xtrue"
  2. Microsoft-Windows-PhotoBasic-Feature-Package~*.cat
  3. +ver >= 17763
  4. Microsoft-Windows-PhotoBasic-PictureTools-Package~*.cat
  5. +ver*
  6. -if

  7. +if "x%opt[component.search]%"="xtrue"
  8. Microsoft-Windows-SearchEngine-Client-Package~*.cat
  9. +ver >= 17763
  10. WindowsSearchEngineSKU-Group-Package~*.cat
  11. +ver*
  12. -if

  13. +if "x%opt[component.mstsc]%"="xtrue"
  14. +ver < 17763
  15. Microsoft-Windows-RemoteDesktop-*.cat
  16. +ver >= 17763
  17. Microsoft-Windows-TerminalServices-CommandLineTools-Package~*.cat
  18. +ver*
  19. -if

  20. +if "x%opt[component.MTP]%"="xtrue"
  21. Microsoft-Windows-WPD-UltimatePortableDeviceFeature-Feature-Package~*.cat
  22. -if
复制代码


现在统一写在Catalog.bat中。我马上就把它们分离到对应的组件的main.bat中,
省得判断if选项了,只用考虑版本就行了。
回复

使用道具 举报

193#
 楼主| 发表于 2019-5-25 22:10:56 | 显示全部楼层
gen_x 发表于 2019-5-25 20:37
忘记回来说了,就上面说的改了bat后执行他,然后能开启了了现在,但估计是少文件了吧。我直接手动addfile ...


你用install.wim+winre.wim生成一个PE,然后用promon.exe监控这个命令的访问的文件和注册表。
对比下你的PE缺少啥,补充看看。

我是以按照winre.wim为基础添加文件的,winre.wim有基础bitlocker的组件,
可以用命令行查询,和解锁。我的补丁补了驱动的GUI解锁界面。
自定义的PE可能精简掉些文件了。

你自己对比下吧。我用20H1(10.0.18898)生成了一个,访问的日志见附件。
Excel过滤Load Image,把文件名添加到main.bat试试。
添加了还不行的话,得考虑注册表了。

BitLocker-Logfile.7z (32.29 KB, 下载次数: 6)

点评

提問的 PE 版本是 17134.167 X64 , 用 17134.1 的 ISO 來補檔 老實說新版本不會勾選 , 用 2019.02.04 的舊版本處理 [attachimg]394040[/attachimg] [attachimg]394041[/attachimg] 處理後開機 [attachimg]3  详情 回复 发表于 2019-5-26 03:55
回复

使用道具 举报

194#
 楼主| 发表于 2019-5-26 06:57:04 | 显示全部楼层
本帖最后由 slore 于 2019-5-26 07:00 编辑
nf17b 发表于 2019-5-26 03:55
提問的 PE 版本是 17134.167 X64 , 用 17134.1 的 ISO 來補檔
老實說新版本不會勾選 , 用 2019.02.04 的 ...


感谢提供详细的图文说明。

新版本将没有界面选择的项目整合,使得界面简洁些,确实存在组件如果一个没选的话,
【组件】的这些项目不会应用的问题。



但是还是建议用新版本(19H1之后自动补mun文件),看了WimBuilder2的说明应该明白(补丁结构),
把BitLocker变成独立组件很容易(补丁节点,可以在补丁树上打勾选择),
只用给下面路径添加一个main.html,即使是0大小的空文件也可以。
WimBuilder2\Projects\WIN10XPE\01-Components\BitLocker\



另一个方法就是我上面评论提到的:
选择【组件】-【Windows 附件】,但是去掉【画图】和【Windows图片查看器】。


点评

是的,看到新版本界面做了整合,所以我采用了直接把bitlocker的bat和main的整合。这样什么都不选,直接运行构建就行了  详情 回复 发表于 2019-5-27 19:27
感谢  详情 回复 发表于 2019-5-27 19:26
回复

使用道具 举报

195#
 楼主| 发表于 2019-5-26 10:41:24 | 显示全部楼层
D:\D e v\UTF8-PATH-AND-LIST.TEST3>dir /b
mype-wim-iso.MODEL.3.iso
wimbuilder2-master.(cn-tw-en-jp-kr)(微软-微軟-Microsoft-マイクロソフト-마이크로소프트
wimbuilder2-master.0
wimbuilder2-master‎(
wimbuilder2-master‎2016‎年‎6‎月‎17‎日,‏‎02518
wimbuilder2-master中文


关于这种路径,其实用最简单的英文就好了嘛。
ANSI的,非UNICODE的程序多少都是有问题,我手里简单UltraEdit都无法编辑这目录里面的文本了。


HTA,批处理的环境变量是支持的,非系统语言支持的文字,
但是通过vbs保存文本或者自动生成的批处理,导致编码错误,无法利用。

具体出错有以下原因:
1.默认保存界面选项到auto_config.js,如果使用测试boot.wim将无法保存选项。(以修改为相对路径test\boot.wim)
2.默认preset中对壁纸设定用的绝对路径project.full_path + "\_CustomFiles_\wallpaper.jpg",导致无法保存_patches_opt.bat
   (以修改为"%WB_ROOT%\Projects\...\_CustomFiles_\wallpaper.jpg")

但是如果非相对路径,选择其他目录,依然存在无法使用的问题。这种情况请将壁纸复制到_CustomFiles_下,或者简单目录(D:\wallpapers\xxx.jpg)选择。


3. _precess.bat的调用,其实WimBuilder.cmd中已经将bin目录放到PATH中了,直接调用即可。
HTA界面中的调用全部改成相对路径,或者省略路径。

4._process.bat中挂载镜像,卸载等使用相对路径。(处理复杂多字节,文件名中有括号"()"字符,将影响批处理。)

5. 补丁的main.bat,last.bat及相关调用脚本,以及lib\macros的宏,必须使用绝对路径,因为工作目录可能被cd切走,
相对路径无法保证。(这也是最初都用绝对路径)

这里当前的补丁和lib引用的路径变量都改了。(以后写自定义补丁需要注意,用_WB_PE_WIM的话,要自己补充%WB_ROOT%),
WB_PE_DIR需要用WB_PE_PATH代替,不过除了精简wim,其他补丁不用。

改起来比想的复杂多了,花了半天时间都改好了。不过还是建议直接放到D:\Tools\WimBuilder2这种简单路径下使用。
回复

使用道具 举报

196#
 楼主| 发表于 2019-5-26 10:48:15 | 显示全部楼层

至于从第三方install.wim中提取,中文名的文件。
我看了你的例子,这些正常操作系统都是英文的,然后通过desktop.ini让人看着名字是中文的来解决。

wimlib-image支持UTF8的文件,那么我添加了一个AddFilesByFile.cmd宏一句话调用wimlib就行了。

你的mype.txt保存UTF8就行了。


AddFilesByFile.cmd
  1. echo [MACRO]AddFilesByFile %1
  2. rem extract %1 to mounted directory with wimlib

  3. call wimextract "%WB_SRC%" %WB_SRC_INDEX% @"%~1" --dest-dir="%_WB_MNT_PATH%" --no-acls --nullglob
复制代码


原先写的AddFilesByList.cmd宏,使用生成临时文件,用AddFiles调用,
好处是,将自动补充 .mui, .mun这种关联文件。

文件编码转换的脚本,工具第3方的有,但是大部分是只用x86,有点恶心,
所以我用lua也写一个编码转换库,可以用于PE,不过感觉直接AddFilesByFile更简单,自己保存txt为UTF8编码,
没必要程序进行转换。
回复

使用道具 举报

197#
 楼主| 发表于 2019-5-26 11:04:38 | 显示全部楼层
本帖最后由 slore 于 2019-5-26 23:20 编辑

2019-05-26
修复:专门测试用的复杂多字节文件路径无法使用问题
新增:AddFilesByList, AddFilesByFile 宏命令
新增:使用完整install.wim的SYSTEM注册表文件选项
新增:完整系统任务管理器 组件
修复:BitLocker在20H1上没有菜单问题
修复:使用修改过的PE,无法添加BitLocker功能问题
修复:使用ADK的PE,无法开启DWM服务问题
新增:_CustomFiles_补充main.html使得其成为一个特殊“补丁” —— "_私人定制_"
       作为特殊补丁,将最优先执行此补丁的main.bat与last.bat
       作为特殊补丁,新增了几个特别的文件,
       _Prepare_.bat --- wim挂载前运行,注册表加载前运行
       _Premain_.bat  --- 工程目录的main.bat运行前执行(仅设计,感觉没必要没添加)
       _PreISO_.bat  --- 创建ISO镜像前将调用(可以用来修复预览版BCD,解决UFEI启动问题,复制外置工具等,暂时为空)
更新:wimlib为1.13.1
修复:快速构建按钮不可用问题
修复:无法对Windows 7系统进行构建问题(mun文件的自动添加处理仅19H1以上才进行)
修复:禁用cmd的AutoRun功能无效的问题(更改拼写错误 HKCR=>HKCU)

本次更新主要为了后续更新,进行结构调整以及细小问题修正,对于生成PE,无实质更新。
“私人订制”补丁,将补充 “自动下载第3方工具”,“自动更新第3方工具”,“我的主题”,以及 “我的驱动”, “驱动清单”等,
针对特定机器加速启动处理。

以上更新已经提交到github的代码库,想尝鲜的自行下载。
打包PECMD,StartIsBack,PENetwork等第3方工具的附件包,有时间了更新。

点评

大佬,你的更新怎么论坛没有看到?  详情 回复 发表于 2019-5-27 15:22
回复

使用道具 举报

198#
 楼主| 发表于 2019-5-27 20:37:09 | 显示全部楼层
gen_x 发表于 2019-5-27 19:27
是的,看到新版本界面做了整合,所以我采用了直接把bitlocker的bat和main的整合。这样什么都不选,直接运 ...

不建议自己整合main.bat,比如BitLocker我针对20H1做了右键的更新,
你还得自己再整合。

如果你想默认选择,工具提供“预设”,_assets_\preset\
你把default.js复制为custom.js,然后
添加一个
  1. "component.bitlocker":true,
复制代码

选项就好了。

或者直接改default.js也行(不过如果我更新,添加了新的默认选项,需要自己比差分)。


当然,如果你希望不管选什么预设清单,都默认都补充BitLocker的话,

本次新增的“_私人定制_” --- _CustomFiles_\main.bat添加一行:
  1. set opt[component.bitlocker]=true
复制代码

即可。
回复

使用道具 举报

199#
 楼主| 发表于 2019-5-28 00:48:49 | 显示全部楼层
本帖最后由 slore 于 2019-5-28 00:51 编辑

-1.文件夹右键打开cmd按键W与系统新建W冲突,请修改下,简单点的改为cmd,同样希望从根本解决,


操作系统亦是如此。例如 powershell的S和创建快捷方式的S重复。
字母就那么多,第三方工具也有菜单,无法避免。

这种因个人习惯不同的,请利用“私人定制”功能。

更新github上的最新版,复制 MyCustom_Samples\CmdMenuName.bat 到 MyCustom 下面。

-2.15063制作的新建,点不出来,(与卡死服务有关)最新版本好像没事。


我主要维护最近的3个版本。老版本我连ISO都删除了。
请利用“私人定制”功能,补充MyCustom\NewMenuFor15063.bat,
如果你愿意分享,就贴出来,我放到MyCustom_Samples。

参照我2年前的帖子,http://bbs.wuyou.net/forum.php?mod=viewthread&tid=386879
补充StateRepository服务及相关文件。

-3.桌面加个重启系统bat,右键,加个重启桌面命令。

明明有开始菜单,为什么要添加这些。右键我也不喜欢加花哨的菜单项。

自己X目录放置CLaunch,双击桌面空白,可以出Dock。
或者X_Desktop目录放置reboot.bat。

可以用wpeutil命令,或者WinXShell.exe -luacode wxsUI('UI_Shutdown')

建议自己添加到“私人定制” MyCustom\RebootOnDesktop.bat
echo wpeutil.exe reboot > "%X%\Users\Default\Desktop\reboot.bat"


-4.顺便提起winxshell打开的系统属性,窗口缩小时,文字部分没处理导致,
    我想只看开机时间,不行,应该改为自动换行自己加纵横滚动条,对比系统的修改下


UI_SystemInfo.zip/main.xml添加一个<纵向滚动条>标签就好了,我下次更新WinXShell时带上。
如果你只想开机时间,建议自己做一个UI_SystemTime。


使用完整software或者system,需要强制补充精简sxs与完整sys目录,
,强制的意思是本工具违反规则,直接替换系统注册表,如果不强制不合理。


因为本工具默认会加载注册表到Src,Tmp,无法自己用
AddFiles \Windows\System32\config\SOFTWARE,覆盖注册表HIVE, 因为被使用,
所以提供2个选项,在挂载前自动提取。便于后续修改。
(虽然可以主动调用call PERegPorter.bat Tmp UNLOAD)

是因为WimBuilder2框架的原因提供的选项,这个选项的后果,自行负责。
自己AddFiles *.sys。因为可能使用的修改过的SYSTEM,不用补充。
或者精简用的,自己后续bat将对SYSTEM进行变更,所以本工具没有什么违反规则一说。

完整SOFTWARE补充WinSxS,虽然我一直没有遇到蓝白屏,补充了一个Merge方式(自动判断),
完整SOFTWARE和完整WinSxs时,从install.wim更新。

你更新github上的代码试试。

5.关于ado相比不使用,有差别吗?(条件设定为系统ado可用)
   比如,中文系统与英文互相交换测试制作,可能含有中文这样路径或者文件名。


我不想维护2套编码,因为去掉ADO,所有的语言JS都是UNICODE的,
ANSI,UNICODE,UTF8会搞得混乱,而且本身BAT不支持UTF8, 会引入很多问题。
不是单纯改1,2处。

中文测试制作 中文,英文没问题,英文下就不行了。能对应,我需要实际测试环境以及修改,
相对路径的问题花了我半天了,这种简单命名就能回避的,我觉得从使用上注意就是了。

WimBuilder2虽然支持修改过的install.wim,但是还是建议官方ISO。从0开始制作。
自己解压出来,用copy命令吧。

就好比winre和install的版本要一致,是工具的要求,你能选个WIN10的winre,选个win7的install来制作。
对应版本的PE制作,在对应的语言下进行吧。

6.权限替换,把所有文件权限改everyone,

发现有一些系统服务还有dll因为1拿不到权限启动不了
。  例如noel的脚本关于3389那块改了,
在postde*.ps1查找3389退几行39行,


我删除powershell,.netfx, wow64, ps1无法运行的环境,3389端口依然可以启动。。。
这里看到了,但是我想着和权限应该没关系(我进PE看过了)。

也许这个ISO生成时已经改过了吧。我回头试试。


如果想给文件,注册表更新权限,直接config.js添加2个参数就行了(默认是1,跳过权限修改)。

  1. //skip update files' rights operation
  2. $wb_skip_ufr = '0';
  3. //skip update registry's rights operation
  4. $wb_skip_urr = '0';
复制代码


这个开启了很费时间,2,3分钟,所以建议生成一个新的boot.wim,后再在这个权限修改过的基础上更新。
(本来打算界面做选项的,Nsudo提权后,发现没必要。)

如果特定功能需要文件注册表权限,应该利用ACLRegKey宏,SetACL.exe命令对必要的文件进行处理。
而不是全部权限都改,搞不清依赖关系。
回复

使用道具 举报

200#
 楼主| 发表于 2019-5-28 23:45:28 | 显示全部楼层

-1.文件夹右键打开cmd按键W与系统新建W冲突,
    默认系统 在桌面 或 文件夹,右键,是没有cmd的


这个菜单是有的,默认是扩展菜单类型,按住SHIFT,右键就出来了。
没有在系统上设置powershell改cmd,会显示powershell菜单,
菜单键是S,和创建快捷方式冲突。

已经保留Extended属性和系统一致。如果需要总是显示,勾选 私人定制 界面选项。


重启系统,希望加到实体文件与shutdown.bat位置

建一个X_Desktop文件夹,reboot.bat放进去就好了。

桌面右键添加 重启桌面

私人定制 界面自己设置,默认命令是taskkill /f /im explorer.exe,文件管理器也结束。

具体命令可以编辑 MyCustom\_RestartExplorerMenu.bat

另外 bin\_Process.bat      加行数到最大32766 ,新版好多RE或者系统默认不全是9001而是300

mode命令不会自动调整窗口位置,导致内容到任务栏后面不友好。
避免修改bin,影响代码更新,在 私人定制 界面提供 选项。

3.在win7我的ie不是9依旧,点构建,还有首启动2处报错


我在不同WIN7上从来没出现过,我想确认根本原因。
你的这个做法,很多空工程也创建目录不好,你保留吧。

建议你用 TXTReplace宏,写一个自动合并你的修改的脚本。简单update下。
WimBuilder.cmd很少修改。

当然建议你直接装git,右键 更新,自动就合并代码了。(如果固定一台机器的话)


使用完整software或者system,需要强制补充精简sxs与完整sys目录,


加红加粗提示补充 sys驱动文件,另外改成RegCopy SYSTEM\ControlSet001了,其他键没有意义没必要完整覆盖。


需求功能,设置权限 假设为宏为 setacl ,需要 设置为 everyone / system / 'NT SERVICE\termservice'  如何实现设置不同权限,下面实例


查看
WimBuilder2\lib\macros\_ACLRegKey.cmd

把Administrators改成 对应的用户名就是了。

新版本更新了可选参数
call _ACLRegKey RegKey everyone
call _ACLRegKey RegKey system
call _ACLRegKey RegKey "NT SERVICE\termservice"

不过你需要把这个cmd和setacl复制到wim内核,因为用户身份不能在构建时添加,
不然是WimBuilder2运行时的机器的以上用户,没有意义。

3389


基于800MB的WIM的话,没有意义。ps1我知道步骤的。
希望完成winre.wim的3389。
远程桌面 补丁中已经有了 TermService.bat,不过
启动后修改的东西,我打算做到
WimBuilder2\Projects\WIN10XPE\_CustomFiles_\PEMaterial\Autoruns\TermService3389.bat
没做完,先goto :EOF退出了。

6.权限替换,把所有文件权限改everyone,
文件全部权限修改     (懒得考虑很多,一次修改了,再也不理了,全程无忧),


WimBuilder2\Projects\WIN10XPE\_CustomFiles_\_Prepare_.bat
set WB_SKIP_UFR=0即可, 暂时沒做界面对应。




回复

使用道具 举报

201#
 楼主| 发表于 2019-5-29 08:00:51 | 显示全部楼层
本帖最后由 slore 于 2019-5-29 08:24 编辑

2019-05-28 github最新开发版打包(版本号未更新)

WimBuilder2.part1.rar (4 MB, 下载次数: 159)
WimBuilder2.part2.rar (4 MB, 下载次数: 159)
WimBuilder2.part3.rar (3.93 MB, 下载次数: 168)


修复:专门测试用的复杂多字节文件路径无法使用问题
新增:AddFilesByList, AddFilesByFile 宏命令
新增:合并完整install.wim的SYSTEM(ControlSet001)注册表选项 [请自己确保会添加必要的SYS驱动文件]
新增:完整系统任务管理器 组件
修复:BitLocker在20H1上没有菜单问题
修复:使用修改过的PE,无法添加BitLocker功能问题
修复:使用ADK的PE,无法开启DWM服务问题
新增:_CustomFiles_补充main.html使得其成为一个特殊“补丁” —— "_私人定制_"
       作为特殊补丁,将最优先执行此补丁的main.bat与last.bat
       作为特殊补丁,新增了几个特别的文件,
       _Prepare_.bat --- wim挂载前运行,注册表加载前运行
       _Premain_.bat  --- 工程目录的main.bat运行前执行(仅设计,感觉没必要没添加)
       _PreISO_.bat  --- 创建ISO镜像前将调用(可以用来修复预览版BCD,解决UFEI启动问题,复制外置工具等,暂时为空)
更新:wimlib为1.13.1
修复:路径存在空格时,开始菜单设置界面显示异常问题
修复:快速构建按钮不可用问题
修复:无法对Windows 7系统进行构建问题(mun文件的自动添加处理仅19H1以上才进行)
修复:禁用cmd的AutoRun功能无效的问题(更改拼写错误 HKCR=>HKCU)

评分

参与人数 1无忧币 +5 收起 理由
我是小青蛙 + 5

查看全部评分

回复

使用道具 举报

202#
 楼主| 发表于 2019-5-29 13:03:21 | 显示全部楼层
hhh333 发表于 2019-5-28 21:21
想问一下通知区网络图标右键网络和共享设置要重定向到打开penetwork或者指定的某个程序,要如何改注册表?

WinXShell.lua中,添加
ms-settings:network可以接管,网络图标右键,
打开网络和Internet设置,
app:run或者exec命令可以让他启动PENetwork或者其他任意命令。
回复

使用道具 举报

203#
 楼主| 发表于 2019-6-1 14:12:22 | 显示全部楼层

WIN7的WINRE.wim不带,HTA组件,要ADK麻烦。我只直接装的WIN7虚拟机测试的。做了IE兼容。
仅测试这个框架的使用环境。
后续改动挺多的,没多测试,不过正常WIN10,WIN7系统做过,
WIN10原版winre.wim啥也不改启动也可以就够了。

既然就做个PE,跑到7PE下没啥优势,而且正常驱动可能是显卡驱动还是怎么样,
比PE下构建快50%,40多秒,WINRE.WIM下要1分多钟。

Lite预设清单不过是选项改变的例子而已。。。估计还是路径改了,个别语句影响到了我没测试那么全。
后续这里将自动识别目录中的js文件。

full.js, net+wow.js, 我的组件.js, 精简网络版.js, 极限精简维护.js ...
之类的。。。

回复

使用道具 举报

204#
 楼主| 发表于 2019-6-3 01:14:50 | 显示全部楼层
本帖最后由 slore 于 2019-6-3 07:55 编辑
2011wanglei5207 发表于 2019-6-1 18:05
slore老是您好,用wimbuilder2制作了17763的网络版,尝试添加7-zip关联失败操作如下:
挂载SOFTWARE注册 ...


关于第3方软件的集成。。。

因为我预想的设计还没做出来就没发出来。。。

我对于WimBuilder2的第3方设想:
1.界面可以自动下载最新版或者指定版本,      (方便升级软件,升级软件只用改版本号即可)
2.官方EXE等自动解压补充到WIM中                (方便升级软件,升级软件只用改版本号即可)
3.关于注册表,文件设定,界面提供选择进行更改。                        (满足不同人口味)
   例如7-zip的话,关联哪些扩展名,菜单选项等。
4.快捷方式可以选择创建到桌面,开始菜单,任务栏                       (满足不同人口味)

技术上都验证过可以,不过需要添加下载命令,7za解压EXE等。。。

先给你一个 没得选不联网自动的7-Zip 19.00的补丁包吧。

解压到WimBuilder2\Projects\WIN10XPE\02-Apps\
                                                                   7-Zip

7-Zip.zip (3.88 MB, 下载次数: 50)
回复

使用道具 举报

205#
 楼主| 发表于 2019-6-3 21:38:06 | 显示全部楼层
源代码在这里
https://github.com/hfiref0x/SXSEXP

EXE也提供了。
https://github.com/hfiref0x/SXSEXP/tree/master/Binary

WIN7上配合wimlib好像也可以,不过需要额外检查文件头,判断是否是压缩格式。。。

这周忙,有时间了再处理。自己先手动处理吧。
回复

使用道具 举报

206#
 楼主| 发表于 2019-6-11 10:28:51 | 显示全部楼层
hhh333 发表于 2019-6-11 10:04
打印组件我已经在论坛发了,可以参考。

另外可不可以做一个64位的输入法显示器啊,internat.exe的那种, ...


嗯,打印组件打算抄你的做一个main.bat。
主要虚拟打印机,XPS,PDF看看能不能用起来。
真实打印直接上ramos就好了。

WinXShell做的时候就看过2000的指示器,做过验证。不过,输入法的中英状态无法获取。
只是显示当前输入法意义不大啊。

输入法有自带的工具条,不需要专门指示器可以用啊。
另外小小输入法,自带状态指示,没必要了就停止开发了。
回复

使用道具 举报

207#
 楼主| 发表于 2019-6-12 10:06:31 | 显示全部楼层
本帖最后由 slore 于 2019-6-12 10:13 编辑

D:\Dev\binmay>binmay_x64
use: binmay [options] [-i infile|-u file|-U file] [-o outfile] [-s search] [-r replacement]
      search:        the string to search for
      replacement:   the string to replace "search" with
  options:
      -v             verbose
      -b             use binary rather than hex (obsolete)
      -i [infile]    specify input file (default: stdin)
      -u [file]      specify infile and output file(update)
      -U [file]      specify infile and output file(remove backup file)

      -p [string]    puke raw binary
      -o [outfile]   specify output file (default: stdout)
      -s [string]    string to search for (in hex, see below)
      -r [string]    replacement string (in hex, see below)
      -S [string]    search mask (see readme)
      -R [string]    replace mask (see readme)

  string format:
      By default search/replace/mask strings are treated as hex.
      Non-hex characters are ignored.  You can have strings
      treated as binary by using the -b switch.  You can also
      specify different formats as follows:

      b:binary
      t:text
      T:text (auto set mask for case insensitive searching)
      u:text (convert to unicode text)
      U:text (auto set mask for case insensitive unicode text searching)

      h:hex
      f:file_input


新版本binmay,对于想直接更新(update)文件提供-u|-U 参数。
对修改文件重命名为 file.org, 然后更新为 file
-U大写时,将删除备份的file.org文件。

另外替换内容从原来的 16进制数据进行了扩展,支持 直接文本,和UNICODE的文本。

例如:
binmay.exe -u "%X_SYS%\spoolsv.exe" -s u:SystemSetupInProgress -r u:DisableSpoolsvInWinPE
fc /b "%X_SYS%\spoolsv.exe.org" "%X_SYS%\spoolsv.exe"

文本内容的模式
t:string ANSI字符串,查找时忽略大小写
T:string ANSI字符串,查找时忽略大小写
u:string  UNICODE字符串,查找时精确匹配大小写
U:string  UNICODE字符串, 查找时忽略大小写


替换前,建议先只用-s参数(search搜索),不用-r参数(replace替换),对文件中的信息进行查询。
(binmay不支持正则)
最新版github上bin目录中自行提取先。
回复

使用道具 举报

208#
 楼主| 发表于 2019-6-12 10:11:08 | 显示全部楼层

\WimBuilder2\lib\macros\TextReplace.cmd
rem NOTICE: can't use // at begin, so use #// to instead
rem ESCAPE: #q => ", #s => #, #p => %, #t => \t, #r => \r, #n => \n


对批处理的字符已经进行了替换处理。

不过最终TextReplace.js中只是调用
txt = txt.replace(regex, repl)

进行一次文本替换。暂时无法支持正则,
添加2行代码改成正则替换就行了。

TextReplaceEx回头不上。

建议你给出测试文本,还有想从什么替换到什么。
我完成了,方便进行测试。

回复

使用道具 举报

209#
 楼主| 发表于 2019-6-12 23:26:59 | 显示全部楼层

>2.ISO不管是否中文,因为制作环境中文,添加重启桌面,菜单,也许英文更好,或者改为,复选框,默认英文,可选自定义

确实应该根据PE的语言,而不是制作的语言,zh-CN.js自己改成Kill Explorer吧。

不同人的自定义,尽可能的集中到_CustomFile_这个目录里了。
自由发挥吧。界面不好统一。我写的这几个都是例子。。。


>次要问题,
>1.程序放win7根目录,启动报错,获取wim信息失败

之前说过了,默认系统桌面路径(C:\Users\xxxx\Desktop)下也可能导致dism命令失败。
自建目录或者放到别的分区吧。系统限制没法处理。

>-3. 重启系统希望加到实体文件与shutdown.bat位置

自己建立X_Desktop目录放进去吧。下版本shutdown.bat都没必要了。

>3.新注册表权限设置宏,好像只设置了所有者没改权限。  请测试一下。比如设置

目前设计的是,owner不设置将设置为Administrators管理员组。
这个制作工具设置没有意义,用户不是PE下的用户。
所以仅管理可以修改编辑用。其他用户身份ACL到PE下都成了未知用户。

PE下特殊用户身份的话,setacl和批处理要复制到PE中,且启动时设置才有效。

我的宏是2句,你拆成aclown,addacl就行吧。就是直接调用setacl,具体参数看帮助吧。
文件权限也一样的,需要PE中设置。


回复

使用道具 举报

210#
 楼主| 发表于 2019-6-13 01:42:01 | 显示全部楼层

TextReplace老版本就对 引号等提供了转义字符。 #q替换引号就能替换了。

最新版提供了第3个参数 TextReplace str1 str2 正则修饰符

"" , i 忽略大小写, g 全局匹配, m 多行匹配

http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

js的.*或者.+在匹配的时候把换行符的\r也会匹配,所以整行替换时,可能需要注意下。

具体例子在 lib\macros\tests\_Test_TextReplace.bat中有。

  1. echo Replace all "//EXP_"
  2. copy /y tests\Pecmd.ini tests\tmp\Pecmd.ini
  3. call TextReplace tests\tmp\Pecmd.ini #//EXP_ "" g

  4. echo Replace with escape mark
  5. call TextReplace tests\tmp\PecmdAdmin.ini "DefaultPassword=#q#q" "DefaultDomainName"

  6. echo Replace with escape mark
  7. call TextReplace tests\tmp\PecmdAdmin.ini "REGI HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword=#q#q" "REGI HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName"
  8. pause

  9. echo Replace all "Default" to "Admin"
  10. call TextReplace tests\tmp\PecmdAdmin.ini "Default" "Admin" g
  11. pause

  12. echo Replace *userinit.exe,* line to empty line
  13. call TextReplace tests\tmp\PecmdAdmin.ini "^.+userinit.exe,.+$" "#r" m
  14. pause

  15. echo Replace *userinit.exe,* line to empty line
  16. call TextReplace tests\tmp\PecmdAdmin.ini ".*userinit.exe,[^\r]*" "" ""
  17. pause

  18. echo *Remove* *userinit.exe,* line
  19. call TextReplace tests\tmp\PecmdAdmin.ini ".*userinit.exe,.*#r#n" "" ""
  20. pause

  21. echo Replace all _SUB XXXX to _FUNC XXXX()
  22. call TextReplace tests\tmp\PecmdAdmin.ini "^_SUB\s([^\r]+)$" "_FUNC $1()" mg
  23. pause
复制代码
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-28 22:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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