无忧启动论坛

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

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

    [复制链接]
4951#
发表于 2020-11-22 07:38:38 | 只看该作者
回复

使用道具 举报

4952#
发表于 2020-11-22 11:18:01 | 只看该作者
感谢!!!!!!!这个可以下载!下载使用了!
回复

使用道具 举报

4953#
发表于 2020-11-22 17:55:20 | 只看该作者
本帖最后由 550 于 2020-11-22 17:57 编辑

启动默认是SYSTEM,1分钟后再成功切换到admin,此时 点击右键的“重启桌面进程”,奔溃,屏幕啥都看不见,唯有重启电脑.
回复

使用道具 举报

4954#
 楼主| 发表于 2020-11-22 18:01:03 | 只看该作者
550 发表于 2020-11-22 17:55
启动默认是SYSTEM,1分钟后再成功切换到admin,此时 点击右键的“重启桌面进程”,奔溃,屏幕啥都看不见, ...

有点奇怪,启动的explorer跑到Administor用户了,无限启动explorer,SYSTEM桌面没有外壳进程,要自己任务管理器启动。

SYSTEM的外壳进程守护是PECMD,对多用户支持不好。

点评

550
曾经调试加载自己的BAT到最合适的位置的时候发现一现象。由于仅仅是调试查找合适的位置,我的BAT只是加了延时命令,发现,在从SYSTEM到AMIN的这个顺序,调试的BAT是被调用3次. 这个位置就是PEMaterial\Autoruns\PES  详情 回复 发表于 2020-11-22 20:43
回复

使用道具 举报

4955#
发表于 2020-11-22 20:43:01 | 只看该作者
本帖最后由 550 于 2020-11-22 20:49 编辑

slore 发表于 2020-11-22 18:01
有点奇怪,启动的explorer跑到Administor用户了,无限启动explorer,SYSTEM桌面没有外壳进程,要自己任务 ...


曾经调试加载自己的BAT到最合适的位置的时候发现一现象。由于仅仅是调试查找合适的位置,我的BAT只是加了延时命令,发现,在从SYSTEM到AMIN的这个顺序,调试的BAT是被连续执行3次.依稀记得记得反向的顺序好像也试过一次,也是3次.
这个位置就是PEMaterial\Autoruns\PEStartupMain.bat 紧跟在@echo off的第二行.
于是这个肯定不是我想想的位置,我就放弃了。但是说明了,PEStartupMain.bat会不会被多次执行呢。
回复

使用道具 举报

4956#
 楼主| 发表于 2020-11-22 20:58:55 | 只看该作者
550 发表于 2020-11-22 20:43
slore 发表于 2020-11-22 18:01
有点奇怪,启动的explorer跑到Administor用户了,无限启动explorer,SYSTE ...

外置,自己会在Temp目录创建过程标记文件,理论上多次运行会自动忽略,有些就是要多次的,也会多次,理论上System.做一次,Admin做一次,像创建快捷方式之类的都设置了RunOnce自己运行完就改名了避免重复运行。

当然不排除有Bug。
回复

使用道具 举报

4957#
发表于 2020-11-22 21:11:29 | 只看该作者
本帖最后由 550 于 2020-11-22 21:14 编辑

刚才试了一把0606生成的1909老版。也是同样的顺序,system-->amin-->重启桌面进程。发现前30秒现象一样,但是1909过了30秒后,最终会醒过来,看见桌面,可以恢复正常。20H2就醒不了了.
由于制作的配置是一致的,估摸着又是微软版号的差异导致的
回复

使用道具 举报

4958#
 楼主| 发表于 2020-11-22 21:49:31 | 只看该作者
550 发表于 2020-11-22 21:11
刚才试了一把0606生成的1909老版。也是同样的顺序,system-->amin-->重启桌面进程。发现前30秒现象一样,但 ...

Admin用户啊。那是WinXShell的问题了,因为PECMD不支持多用户SHEL explorer.exe,

SYSTEM帐户用的PECMD, Admin用户用的WinXShell守护。
新版本的WinXShell,我把winapi.dll和lua_helper编译到WinXShell.exe中了,
感觉是查找外壳进程/窗口的API出了问题(WinXShell是Unicode的,winapi.dll是ANSI的)。


建议把 重启进程菜单 改成  脚本, kill explorer.exe 然后 wait 2000, exec explorer.exe。
回复

使用道具 举报

4959#
发表于 2020-11-22 21:56:58 | 只看该作者
本帖最后由 550 于 2020-11-22 22:01 编辑

把BAT文件转成ANSI编码吗,操作哪里呢
PS:无数次在你的工具里,添加中文名称的BAT,都遇到ANSI的问题。后来一气之下,也全改成英文名称或路径了。免得在编码里被自己埋伏掉坑。
回复

使用道具 举报

4960#
 楼主| 发表于 2020-11-22 22:05:30 | 只看该作者
550 发表于 2020-11-22 21:56
把BAT文件转成ANSI编码吗,操作哪里呢
PS:无数次在你的工具里,添加中文名称的BAT,都遇到ANSI的问题。后 ...

微软的记事本,默认UTF8,自己要写了中文,另存为可以选择编码。

点评

550
是的,以前记事本不是UTF8的编码,中文没事,一路畅通。长期来习惯保存下来了,习惯和惯性还在,又不经常玩BAT,故这个编码问题经常一部留神自己把自己埋了. 你刚才说的,建议修改哪里,ADMIN可能会醒过来呢,没理  详情 回复 发表于 2020-11-22 22:21
回复

使用道具 举报

4961#
发表于 2020-11-22 22:21:32 | 只看该作者
本帖最后由 550 于 2020-11-22 22:28 编辑

slore 发表于 2020-11-22 22:05
微软的记事本,默认UTF8,自己要写了中文,另存为可以选择编码。


是的,以前记事本不是UTF8的编码,中文没事,一路畅通。长期来习惯保存下来了,习惯和惯性还在,又不经常玩BAT,故这个编码问题经常一不留神自己把自己埋了.
你刚才说的,建议修改哪里,ADMIN可能会醒过来呢,没理解“重启进程菜单 改成  脚本” ,如何操作呢,就是哪个文件里的哪些代码.
回复

使用道具 举报

4962#
 楼主| 发表于 2020-11-22 22:38:40 | 只看该作者
550 发表于 2020-11-22 22:21
slore 发表于 2020-11-22 22:05
微软的记事本,默认UTF8,自己要写了中文,另存为可以选择编码。

重启外壳进程,是注册表右键,执行了一个pecmd kill explorer命令,把这个改成一个restartshell.ini,写上结束进程,等待2秒,再启动explorer。
回复

使用道具 举报

4963#
发表于 2020-11-22 22:50:15 | 只看该作者
本帖最后由 550 于 2020-11-22 22:51 编辑

还是等待老大的1212的 关于-更新 了
我在D:\WimBuilder2-Full.v2020-11-11,没找到可疑对象,你可能说的是进PE后的在PE里修改文件。
没理解正确的操作步骤
回复

使用道具 举报

4964#
 楼主| 发表于 2020-11-22 22:59:25 | 只看该作者
本帖最后由 slore 于 2020-11-22 23:09 编辑
550 发表于 2020-11-22 22:50
还是等待老大的1212的 关于-升级 了
我在D:\WimBuilder2-Full.v2020-11-11,没找到可疑对象,你可能说的是 ...

添加重启外壳进程 菜单 在 【私人定制】界面, 右键【私人定制】打开所在目录,

MyCustom下面有 重启外壳进程菜单的注册表项目。

"Z:\WimBuilder2\Projects\WIN10XPE\_CustomFiles_\MyCustom\_RestartExplorerMenu.bat"

目前代码是
reg add HKLM\Tmp_Software\Classes\Directory\background\shell\restartshell\command /ve /d "taskkill /f /im explorer.exe" /f

改成一个 pecmd的脚本,或者一个批处理,你放到
Z:\WimBuilder2\AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\
      restartshell.ini /restartshell.txt


自己再制作一个简单批处理补丁,copy命令复制到System32下面,然后 这个命令改成批处理。

restartshell.txt (重启外壳进程菜单命令)
  1. taskkill /f /im explorer.exe /fi "USERNAME eq %USERNAME%"
  2. if "%USERNAME%"=="SYSTEM" goto :EOF
  3. start explorer.exe
复制代码


fixrestartshellmenu.bat  (构建时,私人定制 节点将自动运行)
  1. copy /y "%~dp0\restartshell.txt" "%X_SYS%\restartshell.cmd"
  2. reg add HKLM\Tmp_Software\Classes\Directory\background\shell\restartshell\command /ve /d "restartshell.cmd" /f
复制代码



回复

使用道具 举报

4965#
发表于 2020-11-22 23:39:07 | 只看该作者
本帖最后由 550 于 2020-11-22 23:41 编辑

操作如下
把你的论坛上方框里的2段代码,变成了2个文件,分件名分别是fixrestartshellmenu.bat和restartshell.txt,

然后把她两放到 _RestartExplorerMenu.bat的边上,然后把_RestartExplorerMenu.bat删掉。

然后直接开始构建并生成ISO,右键 的名称是英文的“resartshell”,不是中文的“重启桌面进程”.

结果是成功的,但是如何把右键菜单的名称变成中文的“重启桌面进程”的文字呢.
PS:醒过来的速度蛮快,也就10秒不到
回复

使用道具 举报

4966#
发表于 2020-11-22 23:43:57 | 只看该作者
从上面的规律看,我又想把她改成中文的冲动了
restartshell.cmd,改成重启桌面进程.cmd;大概就成中文菜单了。但感觉太野蛮,老大应该有其他正确的法子
回复

使用道具 举报

4967#
 楼主| 发表于 2020-11-22 23:47:48 | 只看该作者
本帖最后由 slore 于 2020-11-22 23:50 编辑
550 发表于 2020-11-22 23:39
操作如下
把你的论坛上方框里的2段代码,变成了2个文件,分件名分别是fixrestartshellmenu.bat和restartsh ...

不要删除原来的。

菜单名字是原来的_RestartExplorerMenu.bat的第二行代码,你不用删除_RestartExplorerMenu.bat。
(你可以复制过来在自己的fixrestartshellmenu.bat,也可以自己修改菜单名)

  1. reg add HKLM\Tmp_Software\Classes\Directory\background\shell\restartshell /ve /d "%opt[custom.restart_explorer_item]%" /f
复制代码


%opt[custom.restart_explorer_item]% 是你WimBuilder2界面的 添加 重启桌面进程 菜单:【重启桌面进程】。



注意新的文件所放的路径是 AppData 目录,是你自己特有的自定义补丁,这样不会和我修改代码,自动更新产生冲突。

fixrestartshellmenu.bat中的注册表修改,会覆盖_RestartExplorerMenu.bat的修改。

1212版本,我会再改版,现在的代码是结束explorer.exe进程,对于打开资源管理器,文件夹都会关闭,
不太好,我打算直接用 WinXShell.exe -code CloseShellWindow,仅退出桌面进程。
另外,桌面进程不再了,自动重启的守护功能也会修复。

点评

550
好的,我还是等等老大的1212好了。  详情 回复 发表于 2020-11-22 23:49
回复

使用道具 举报

4968#
发表于 2020-11-22 23:49:57 | 只看该作者
slore 发表于 2020-11-22 23:47
不要删除原来的。

菜单名字是原来的_RestartExplorerMenu.bat的第二行代码,你不用删除_RestartExplor ...

好的,我还是等等老大的1212好了。
回复

使用道具 举报

4969#
 楼主| 发表于 2020-11-22 23:51:27 | 只看该作者
本帖最后由 slore 于 2020-11-22 23:53 编辑
550 发表于 2020-11-22 23:49
好的,我还是等等老大的1212好了。

你放到这个目录就好了。

WimBuilder2\AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\
restartshell.txt (重启外壳进程菜单命令)
  1. taskkill /f /im explorer.exe /fi "USERNAME eq %USERNAME%"
  2. if "%USERNAME%"=="SYSTEM" goto :EOF
  3. start explorer.exe
复制代码


fixrestartshellmenu.bat  (构建时,私人定制 节点将自动运行)
  1. copy /y "%~dp0\restartshell.txt" "%X_SYS%\restartshell.cmd"
  2. rem reg add HKLM\Tmp_Software\Classes\Directory\background\shell\restartshell /ve /d "%opt[custom.restart_explorer_item]%" /f
  3. reg add HKLM\Tmp_Software\Classes\Directory\background\shell\restartshell\command /ve /d "restartshell.cmd" /f
复制代码




点评

550
是的,还原删除的文件了。但是把里面的第二句注册表内容给删掉。 测试后,中文名称回来了,醒过来的速度约10秒内。  详情 回复 发表于 2020-11-23 00:08
回复

使用道具 举报

4970#
发表于 2020-11-23 00:08:49 | 只看该作者
slore 发表于 2020-11-22 23:51
你放到这个目录就好了。

WimBuilder2\AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\

是的,还原删除的文件了。但是把里面的第二句注册表内容给删掉。
测试后,中文名称回来了,醒过来的速度约10秒内。
回复

使用道具 举报

4971#
 楼主| 发表于 2020-11-23 00:12:28 | 只看该作者
本帖最后由 slore 于 2020-11-23 00:16 编辑
550 发表于 2020-11-23 00:08
是的,还原删除的文件了。但是把里面的第二句注册表内容给删掉。
测试后,中文名称回来了,醒过来的速度 ...

原批处理的第二句你也不用删除。。。

自定义的补丁后运行,会覆盖掉的。
要是没有覆盖的话,你放到
MyCustom\Last\目录下面。

WimBuilder2的设计是,你可以不改变Projects的任何文件,对boot.wim进行自定义。

Projects目录下面的,工程是可以生成一个基本标准模板PE,
然后再通过用户的自定义补丁进行优化,精简,个性化定制。

回复

使用道具 举报

4972#
发表于 2020-11-23 00:21:41 | 只看该作者
明白了,就算暂时是错的,由于是自定义的补丁后,就是\AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\里面的那个私人节点的地方,修正过来,覆盖掉模板里面的错误内容的。
然而这样的设计好处就是自动升级的时候,不会又被升级回来,达到统一化的MD5
回复

使用道具 举报

4973#
发表于 2020-11-23 00:29:36 | 只看该作者
难怪我每次升级后,都要修改last.bat,因为我把自己的BAT挂在这里了。但是自动升级的时候,MD5不同,就被升级掉了。以后我全扔到私人节点里去
先放这里 \AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\
若遇到不起作用的就到 \AppData\Projects\WIN10XPE\_CustomFiles_\MyCustom\Last\
回复

使用道具 举报

4974#
发表于 2020-11-23 09:53:39 | 只看该作者
slore 发表于 2020-11-20 17:19
Windows 10 RS5镜像,制作。然后,X:\PEMETERIAL下面有个批处理,启用远程桌面服务,运行下。

原来是因为我用的版本太新了呀
回复

使用道具 举报

4975#
 楼主| 发表于 2020-11-23 10:05:57 | 只看该作者
kizas 发表于 2020-11-23 09:53
原来是因为我用的版本太新了呀

新版本微软有改动,不能用了,很少用的功能就没继续调查了。

点评

有一个小问题咨询一下S大,wimbuilder2构建的PE采用小小输入法,其状态栏不能显示在正常的任务栏位置,设置了右下,会直接跑到最右下角,遮住了任务栏,有反馈说在explorer之后启动,但是问题依旧!  详情 回复 发表于 2020-11-23 10:58
回复

使用道具 举报

4976#
发表于 2020-11-23 10:58:52 | 只看该作者
slore 发表于 2020-11-23 10:05
新版本微软有改动,不能用了,很少用的功能就没继续调查了。

有一个小问题咨询一下S大,wimbuilder2构建的PE采用小小输入法,其状态栏不能显示在正常的任务栏位置,设置了右下,会直接跑到最右下角,遮住了任务栏,有反馈说在explorer之后启动,但是问题依旧!

点评

我以前代码写的是RunBeforeShell,会自动写到pecmd. ini中。 你先把启动前的去掉,然后,让yong.exe再外壳启动完毕再运行。 我进了PE再运行就正常了。 晚上我构建一版试试。  详情 回复 发表于 2020-11-23 12:01
回复

使用道具 举报

4977#
 楼主| 发表于 2020-11-23 12:01:53 | 只看该作者
2011wanglei5207 发表于 2020-11-23 10:58
有一个小问题咨询一下S大,wimbuilder2构建的PE采用小小输入法,其状态栏不能显示在正常的任务栏位置,设 ...

我以前代码写的是RunBeforeShell,会自动写到pecmd. ini中。

你先把启动前的去掉,然后,让yong.exe再外壳启动完毕再运行。

我进了PE再运行就正常了。

晚上我构建一版试试。

点评

我这边测试就是shell explorer之后启动输入法,现象还是一样的,不清楚是不是还要补充什么注册表或者文件?  详情 回复 发表于 2020-11-23 12:33
回复

使用道具 举报

4978#
发表于 2020-11-23 12:33:55 | 只看该作者
slore 发表于 2020-11-23 12:01
我以前代码写的是RunBeforeShell,会自动写到pecmd. ini中。

你先把启动前的去掉,然后,让yong.exe再 ...

我这边测试就是shell explorer之后启动输入法,现象还是一样的,不清楚是不是还要补充什么注册表或者文件?

点评

进桌面后手动运行是正常的,那么如何来写Pecmd配置,让小小在进入桌面后运行呢?  详情 回复 发表于 2020-11-23 12:35
回复

使用道具 举报

4979#
发表于 2020-11-23 12:35:13 | 只看该作者
2011wanglei5207 发表于 2020-11-23 12:33
我这边测试就是shell explorer之后启动输入法,现象还是一样的,不清楚是不是还要补充什么注册表或者文件 ...

进桌面后手动运行是正常的,那么如何来写Pecmd配置,让小小在进入桌面后运行呢?

点评

Apps\yong_IME\main.bat先删除 call RunBeforeShell的代码。 将启动小小输入法的命令写到Pecmd.ini的PostShell下面。 或者这个批处理放到PEMatrial\Autoruns下面。  详情 回复 发表于 2020-11-23 12:44
回复

使用道具 举报

4980#
 楼主| 发表于 2020-11-23 12:44:41 | 只看该作者
2011wanglei5207 发表于 2020-11-23 12:35
进桌面后手动运行是正常的,那么如何来写Pecmd配置,让小小在进入桌面后运行呢?

Apps\yong_IME\main.bat先删除 call RunBeforeShell的代码。

将启动小小输入法的命令写到Pecmd.ini的PostShell下面。
或者这个批处理放到PEMatrial\Autoruns下面。

点评

直接Pecmd最后启动就可以了,解决了,感谢S大!  详情 回复 发表于 2020-11-23 13:34
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 23:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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