slore 发表于 2016-7-6 22:39:05

手把手一起做WIN10维护PE,有渔也有鱼

本帖最后由 slore 于 2016-8-30 21:36 编辑

----------------------------------------------------------------------
XP时代之后的PE都太大了,就没有自己编辑过PE了,拿来主义很省事。
最近做了个WIM构建框架,发现编辑起来比想象中容易很多,
这个帖子将在boot.wim的基础上,一步步补充我想要的功能。
并给出这些功能的PATCH目录。
希望各位可以更加了解WIM_Builder的设计和用法,最最主要的是
抛砖引玉,希望大家可以分享PE修改PATCH。
----------------------------------------------------------------------

首先,列出一个维护PE,我想要的功能。


[*]安装系统
[*]访问文件系统,备份文件
[*]硬盘分区/格式化等
[*]小巧些,删除无用的功能组件
[*]网络功能


除了网络,boot.wim基本上满足了维护要用的基本功能(cmd/diskpart)。

访问文件系统,我们可以打开“记事本”-> 文件 -> 打开文件,进行选择。
但是仍有不方便的地方。


[*]无法查看文件/文件夹属性
[*]设置安全权限,删除文件
[*]打开多个窗口复杂
[*]无法进行拖拽
[*]复制文件没有进度条显示
[*]不能最小化任务
[*]任务切换不方便
[*]无法快速启动程序


第一步,方便文件操作,任务切换,我们先加入个简单的SHELL+文件资源管理器吧。
shell的选择:bblean,EmergeDesktop,PExlorer等。
文件资源管理器:explorer.exe++,XYplorer等。

这里我用PExlorer.exe,因为直接运行就可以,方便,也不用集成到内核。
以下是PExlorer的补丁。



PExlorer
|   DEL_FILES.txt<- 内容为:Windows\System32\WallpaperHost.exe
|   LAST.bat
|
\---X
    \---Windows
      \---System32
                PExlorer.jcfg
                PExlorer_x64.exe
                PExlorer_x86.exe
                wallpaper.jpg


LAST.bat

if "%PB_PE_ARCH%"=="x64" (
del X:\Windows\System32\PExlorer_x86.exe
) else (
del X:\Windows\System32\PExlorer_x64.exe
)
ren X:\Windows\System32\PExlorer_%PB_PE_ARCH%.exe PExlorer.exe


这个PATCH运行的话,会复制PExlorer到System32下,并删除掉内核的WallpaperHost.exe,
LAST批处理会根据内核体系结构删除掉无用的文件并改名对应x86/x64版本的为PExlorer.exe

如果只这样我们构建出来的boot.wim还是启动到系统安装界面,
光加入文件不行,boot.wim的启动对象我们也改改。

boot.wim的启动顺序简单如下:
winpeshl.exe -> wallpaperhost.exe (不使用PExlorer的话,这个程序不删除,会被winpeshl.exe调起来,显示壁纸)
             -> winpeshl.ini
             -> setup.exe
             -> startnet.cmd (不存在setup.exe, winpeshl.ini)

所以我们写个启动PATCH。


PE_Startup
|   INIT.bat         <- 复制startnet.cmd到System32下,复制PEconfig到X盘根目录
|   DEL_FILES.txt    <- 内容为:setup.exe
|   startnet.cmd   <- wpeinit.exe后调用X:\PEConfig\INIT.bat
|
\---PEConfig
      INIT.bat   <- 启动处理


PEConfig\INIT.bat

rem add for PExlorer.exe
if exist X:\Windows\System32\WallpaperHost.exe (
taskkill /f /im WallpaperHost.exe
)
set USERPROFILE=X:\Users\Default
start PExlorer.exe -winpe



运行WIM_Builder构建启动镜像,此时我们应该看到桌面和一个命令提示符画面了。
但是此时按WIN+E不能打开我的电脑,因为PExlorer使用的是高版本的“文件打开对话框”模拟
文件资源管理器操作,记事本这种可以使用低版本“文件打开对话框”外,系统的
任务管理器,WIN+R运行的浏览按钮是无法使用的。

这里有2个方向,第一,使用explorer.exe++之类的第3方程序(走这条路太没意思了),
第二,我们来研究下如何使PE可以使用新版的“文件打开对话框”。

=================================================================================
后续的PATCH及更新会上传到以下地址
链接: http://pan.baidu.com/s/1kVwbKOZ 密码: k6ut (2016/08/30补链接)
无特殊说明,提供的PATCH为通用补丁,应该不限体系结构(x86/x64),不限语言,不限系统版本,适当修改config.ini进行构建
=================================================================================

2012bzsb 发表于 2016-7-7 16:53:49

其实,我只要XP那样简单风格的SHELL, 任务栏+桌面+资源管理器, 第三方的,如果好用,我要原版做什么?

任务栏, 目前这个基本可以,如果可以加个目录到任务栏就好了, 原版的可以弄个目录动任务栏,里面可以再建目录,可以放快捷方式,文件,用来做"开始菜单"
8,10我都是这么弄的,除了位置靠近系统托盘,其它没什么,用惯了就好了. 我链接在系统根目录"开始"目录.

桌面,原版SHELL的习惯了拖放个文件,右键什么的.
资源管理器,XP那个比较习惯.(其实是:我的电脑 ,平时是直接打开我的电脑,而不是资源管理器), 如果实现打开目录功能, 和原版SHELL差不了多少文件了

slore 发表于 2016-7-6 22:39:31

本帖最后由 slore 于 2016-7-7 21:46 编辑

第一个内核PATCH---文件打开对话框(NewFileOpenDlg)

渔:
如何知道内核需要补充那些文件?

a.论坛搜索,互联网搜索
——没找到。(懒不了了-。-)

b.是否是未解决问题
NO,是个PE任务管理器都可以打开浏览窗口。

OK,那我们来偷吧。

找一个此功能有效PE(假设叫OKPE.wim),获取System32的文件列表,
和boot.wim的System32比较,看看都加了什么文件。

例如:

apphelp.dll
audiodg.exe
AudioEng.dll
...
ExplorerFrame.dll
...
PECMD.exe
...
wlandlg.dll
WLanConn.dll
...


我找的带这个功能的是有声音和网络功能的,所以列表下来100+,头疼。。。

WIM_Builder新建一个工程:FileOpenDlg
config.ini中配置基础PE文件为OKPE.wim

建立一个DEL_FILES.txt,记录上述文件列表,补足路径并开头加分号。

;Windows\System32\apphelp.dll
;Windows\System32\audiodg.exe
;Windows\System32\AudioEng.dll
...
;Windows\System32\ExplorerFrame.dll
...
;Windows\System32\PECMD.exe
...
;Windows\System32\wlandlg.dll
;Windows\System32\WLanConn.dll
...


把自己知道的肯定和这个功能没关系的文件前面的分号去掉。

保存,构建,测试功能是否有效。

有效,这些文件删除不影响我们要的功能,去掉分号的号移动到文件末尾(记得住,不移动也行)

无效的话,自己判断失误,有必要文件被删除了,通过加分号保留,再构建,来确定。

固态硬盘上,基本上30秒可以构建一次,20~30个文件左右后,大概1小时可以确定出来必要文件了。

鱼1:
经过不断尝试,得出了新版打开文件对话框需要的文件列表如下:

NewOpenDlg:
ADD_ITEMS.txt

Windows\System32\ExplorerFrame.dll
Windows\System32\shellstyle.dll
Windows\System32\StructuredQuery.dll

;some version of WIN10 need this file,
;some version will broke if have this file.
Windows\System32\edputil.dll


注意:如文件列表的注释,有的内核需要edputil.dll否则错误,有的则不能存在edputil.dll否则错误。
   10586需要此文件,10240不需要此文件,默认PATCH会改名为edputil_dll替换到内核,如果错误,
   可能内核中运行ren edputil_dll edputil.dll来,把这个PATCH放到我们的MaintPE工程下面吧。

构建,运行,WIN+E
...
...
...
没有反映,任务管理器,新建,浏览
...
...
...
仍然没有反映。

好吧,看来这个机能只加文件是不行的,应该还缺注册表。
那么问题来了,
如何知道内核需要补充那部分注册表信息呢?

a.论坛搜索,互联网搜索
——没找到。(懒不了了-。-)

b.是否是未解决问题
NO,是个PE任务管理器都可以打开浏览窗口。

好吧,那么这个能运行的PE的差分我们搞出来就好了吧,
确实是的,但是内容太多了,差分作为我们后续手段吧。

一个dll一般会在注册表的CLSID中注册,并有文件位置信息,
我们在能运行的PE或者正常系统下搜素上面补充的几个DLL试试。


哈哈,狗屎运(后面测试通过咯),只要补充ExplorerFrame.dll的注册表项目就可以了。



鱼2:
完整的文件打开对话框(NewFileOpenDlg)PATCH

NewOpenDlg:
ADD_ITEMS.txt

Windows\System32\ExplorerFrame.dll
Windows\System32\shellstyle.dll
Windows\System32\StructuredQuery.dll

;some version of WIN10 need this file,
;some version will broke if have this file.
Windows\System32\edputil.dll


NewOpenDlg.reg

Windows Registry Editor Version 5.00

;explorerframe.dll

@="Explorer Navigation Bar"

@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,00,78,00,\
70,00,6c,00,6f,00,72,00,65,00,72,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,\
00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"


@="Shell Name Space ListView"

@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,00,78,00,\
70,00,6c,00,6f,00,72,00,65,00,72,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,\
00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"
;@="X:\\Windows\\system32\\explorerframe.dll"


来,把这个PATCH放到我们的MaintPE工程下面吧。
构建,运行,WIN+E,OK可以看到我的电脑的内容了。


补充:
修改我的电脑打开默认内容

中间不显示用户文件夹
NoUserFolders.reg

Windows Registry Editor Version 5.00

;remove Downloads
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}]
;remove Pictures
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}]
;remove Music
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}]
;remove Documents
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}]
;remove Videos
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}]
;remove Destop
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}]


左侧快速访问:
PE下修改好后,复制以下文件:
X:\Users\Default\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms

PEConfig\INIT.bat添加2行导入注册表和复制文件的命令即可。
效果如图:

slore 发表于 2016-7-6 22:41:15

本帖最后由 slore 于 2016-7-7 15:49 编辑

文件拖拽功能

[*]桌面图标拖拽移动
[*]拖拽复制/移动/删除文件
[*]拖拽到应用程序
[*]拖拽到命令提示符,文本框




注意:Windows 10之前的boot.wim(例如:Win8.1)本来就可以拖拽可跳过此楼PATCH。

如法炮制,我们可以得到图标拖拽需要的文件列表如下:

Windows\System32\d3d11.dll
Windows\System32\DataExchange.dll
Windows\System32\dcomp.dll
Windows\System32\dxgi.dll
Windows\System32\ksuser.dll


做一个ADD_ITEMS.txt试试加到我们的MaintPE中。
...
...
...
果然不能用还得加点注册表料啊。

老方法搜索添加的dll文件名,发现同样CLSID下面有DataExchange.dll的定义,
我们加下注册表。

DragAndDrop.reg

Windows Registry Editor Version 5.00

;dataexchange.dll


@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,61,00,\
74,00,61,00,65,00,78,00,63,00,68,00,61,00,6e,00,67,00,65,00,2e,00,64,00,6c,\
00,6c,00,00,00
"ThreadingModel"="Both"


再构建,测试,发现还不行。
考虑是否地方要引用这个CLSID,我们搜索下:
{9FC8E510-A27C-4B3B-B9A3-BF65F00256A8}

bingo!补充下面项目即可。

;need update ACL rights for offline importing.
;or you can add this on WinPE startup.

"DragDropExtension"="{9FC8E510-A27C-4B3B-B9A3-BF65F00256A8}"


注意:如注释所述,此项目离线导入是需要更新权限,
   此项目进入PE导入也可以生效。

MaintPE就是在PEConfig\INIT.bat导入此项目。

slore 发表于 2016-7-6 22:41:43

本帖最后由 slore 于 2016-7-7 22:03 编辑

文件/文件夹属性显示

[*]文件/文件夹属性
[*]多个文件/文件夹属性
[*]磁盘驱动器属性
[*]回收站属性


如法炮制,我们可以得到查看文件属性列表如下:

Windows\System32\actxprxy.dll
Windows\System32\apphelp.dll
;need for "security" tab
Windows\System32\rshx32.dll


做一个ADD_ITEMS.txt试试加到我们的MaintPE中。
...
...
...
果然不能用还得加点注册表料啊。

老方法搜索添加的dll文件名,发现同样在CLSID下面有actxprxy.dll和
rshx32.dll的定义,同时搜索下关联的CLSID,发现有几处,
我们一同加入到注册表中。

Prop.reg






@="rshx32.dll"
"AccessPermission"=hex:01,00,04,80,60,00,00,00,70,00,00,00,00,00,00,00,14,00,\
00,00,02,00,4c,00,03,00,00,00,00,00,14,00,03,00,00,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,14,00,07,00,00,00,01,01,00,00,00,00,00,05,0a,00,00,00,\
00,00,14,00,03,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,cd,cd,cd,cd,cd,\
cd,cd,cd,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,\
00,05,20,00,00,00,20,02,00,00
"DllSurrogate"=""
"LaunchPermission"=hex:01,00,04,80,78,00,00,00,88,00,00,00,00,00,00,00,14,00,\
00,00,02,00,64,00,04,00,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,1f,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,00,\
00,14,00,0b,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00,cd,cd,cd,cd,cd,cd,\
cd,cd,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,00,\
05,20,00,00,00,20,02,00,00


@="Security Shell Extension"
"AppId"="{1f2e5c40-9550-11ce-99d2-00aa006e086c}"
"LocalizedString"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,\
6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
00,5c,00,72,00,73,00,68,00,78,00,33,00,32,00,2e,00,44,00,4c,00,4c,00,2c,00,\
2d,00,35,00,39,00,00,00


"Enabled"=dword:00000001
"IconReference"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,\
6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
00,5c,00,69,00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,\
6c,00,2c,00,2d,00,33,00,00,00


@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,73,00,\
68,00,78,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"


@="ShellWindows"
"AppId"="{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"


@="PSFactoryBuffer"


@="X:\\Windows\\System32\\ActXPrxy.dll"
"ThreadingModel"="Both"


@="IStreamGroup"

@="{fd7f2b29-24d0-4b5c-b177-592c39f9ca10}"


@="ICheckDiskDialog"


@="{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}"


@="IPropertySheetHandler"


@="{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}"


再构建,测试,发现还不行。(这都是套路啊。。。回回这样,能不能一次加成功)

这时该怎么办呢?(这里搞了2天-。-)

先确定是不是注册表的问题,我们用OKPE.wim的SOFTWARE替换,
测试。发现确实可以显示了,那就是注册表了。
(这里有个小插曲,我先精简了WinSxs,结果写错为了,丢了2个目录,
x86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_5.82.10586.0_zh-cn_f6ad7353800c302a
x86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.10586.0_zh-cn_4954983c79a25127
这2个目录没有,注册表完全替换了也没用!当时我不知道,把想到APPID,CLSID,CLASSIC,MICROSOFT,INTERFACE,
几个大项一个个试试了边,最后整个System32目录替换掉了都没有成功显示
文件属性,直到我把Windows整个目录一个个都替换了,才发现是WinSxs精简失误。
所以重要的事情说一下:没有前人开路,精简放到最后做!)

既然,整个SOFTWARE可以用,我们就导出些关键项试试:
APPID.reg
CLSID.reg
INTERFACE.reg
CLASSIC.reg
MICROSOFT.reg

崩溃不行?哎,全部导入算了,ALL.reg,构建,启动测试。
...
...
...
什么,竟然没有用!
等等,完全替换SOFTWARE可以用,用reg文件却不可以?
哪里有问题?

思考1.权限不对?部分项目没写入?(导入命令没有提示权限错误)
思考2.难道注册表多内容也不行?

回忆下,一条龙手动做PE的时候,有说删除注册表的
"RunAs"="Interactive User"

也没见谁将过为什么,这种知其然而不知其所以然我自然也没有去做,
那么,我们现在来看看是不是这个原因,导出2份注册表信息进行比较,
看看有没有"RunAs"被删除的项目。

诶,只看差异部分,立马我们可以找到还确实有一项。


我们bing一下{448aee3b-dc65-4af6-bf5f-dce86d62b6c7},有关于
WIN10下管理者不能查看属性的网页,甚至有这个,早看到就好了CRY。
http://www.ghisler.ch/board/viewtopic.php?t=42571

这里证实了,"RunAs"="Interactive User"删除的必要性,
但是所有都删除是否有必要,自己可以斟酌处理。

至此,我们可以得到显示文件属性的"鱼"了。

FileProperty
+ADD_ITEMS.txt
+FileProperty.reg

ADD_ITEMS.txt

Windows\System32\actxprxy.dll
Windows\System32\apphelp.dll
;need for "security" tab
Windows\System32\rshx32.dll
;mui
Windows\System32\%PB_PE_LANG%\rshx32.dll.mui



FileProperty.reg

Windows Registry Editor Version 5.00





@="rshx32.dll"
"AccessPermission"=hex:01,00,04,80,60,00,00,00,70,00,00,00,00,00,00,00,14,00,\
00,00,02,00,4c,00,03,00,00,00,00,00,14,00,03,00,00,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,14,00,07,00,00,00,01,01,00,00,00,00,00,05,0a,00,00,00,\
00,00,14,00,03,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,cd,cd,cd,cd,cd,\
cd,cd,cd,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,\
00,05,20,00,00,00,20,02,00,00
"DllSurrogate"=""
"LaunchPermission"=hex:01,00,04,80,78,00,00,00,88,00,00,00,00,00,00,00,14,00,\
00,00,02,00,64,00,04,00,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,1f,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,00,\
00,14,00,0b,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00,cd,cd,cd,cd,cd,cd,\
cd,cd,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,00,\
05,20,00,00,00,20,02,00,00


@="Security Shell Extension"
"AppId"="{1f2e5c40-9550-11ce-99d2-00aa006e086c}"
"LocalizedString"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,\
6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
00,5c,00,72,00,73,00,68,00,78,00,33,00,32,00,2e,00,44,00,4c,00,4c,00,2c,00,\
2d,00,35,00,39,00,00,00


"Enabled"=dword:00000001
"IconReference"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,\
6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
00,5c,00,69,00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,\
6c,00,2c,00,2d,00,33,00,00,00


@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,73,00,\
68,00,78,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"


@="ShellWindows"
"AppId"="{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"


@="PSFactoryBuffer"


@="X:\\Windows\\System32\\ActXPrxy.dll"
"ThreadingModel"="Both"


@="IStreamGroup"

@="{fd7f2b29-24d0-4b5c-b177-592c39f9ca10}"


@="ICheckDiskDialog"


@="{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}"


@="IPropertySheetHandler"


@="{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}"

;this(PE_SOFTWARE) isn't a typo, WIM_Builder will also import this to offline hive file.
;need update ACL rights for offline importing.
;or you can add this on WinPE startup.(PE_SOFTWARE->SOFTWARE)

;"RunAs"="Interactive User"
"RunAs"=-


遗留问题,选项卡改变所有者会提示无法打开控制程序,看来还是缺点什么。(解决不了就右键加个命令行)

slore 发表于 2016-7-6 22:42:05

本帖最后由 slore 于 2018-1-27 17:09 编辑

复制文件时的进度条

本帖最后由 slore 于 2016-07-08 20:40 编辑

ADD_ITEMS.txt
Windows\System32\chartv.dll







本帖最后由 slore 于 2018-01-27 17:08 编辑

对于Win10 v1607确实是上面的文件,但是有点遗漏,就是之前 文件属性对话框 补充的
actxprxy.dll文件,以及对应CLSID的注册表项也是必须的。

INTERFACE我没有再继续下去,今天对最新版v1709进行确认的时候,发现文件补丁有差异,
通过和ljycslg的PE进行比较,很容易的得出了额外需要的1个新文件。借此机会也搞清楚了INTERFACE需要的具体接口注册表项目。
特在此更新,以便留档。

鱼:对于Win10 v1709需要的补丁(Patch):

ADD_ITEMS.txt
Windows\System\chartv.dll
Windows\System\OneCoreUAPCommonProxyStub.dll

ProgressDlg.reg
Windows Registry Editor Version 5.00


@="PSFactoryBuffer"


@="x:\\Windows\\System32\\OneCoreUAPCommonProxyStub.dll"
"ThreadingModel"="Both"


@="IInterruptedOperationHandler"


@="{95E15D0A-66E6-93D9-C53C-76E6219D3341}"


@="IFileOperationProgressSink"


@="{95E15D0A-66E6-93D9-C53C-76E6219D3341}"


@="IOperationsProgressDialog"


@="{95E15D0A-66E6-93D9-C53C-76E6219D3341}"


@="IOperationStatusTile"


@="{95E15D0A-66E6-93D9-C53C-76E6219D3341}"


@="IOperationStatusService"


@="{95E15D0A-66E6-93D9-C53C-76E6219D3341}"

利用{95E15D0A-66E6-93D9-C53C-76E6219D3341}的Interface有20个左右吧,对于对话框上面这个就行了,建议导入的用完整的INTERFACE省事,以后功能只用补充DLL和CLSID下的项目。

渔:
有人觉得1楼的有点像我的WinXShell的广告,不过这个功能系统的各种“浏览。。。”按钮都有,所以我觉得并不是。
只是这个是我的第一个需求,所以把调查的过程和方法(渔)记录下了。

其实到这里渔的方法也还是一样。

搞出文件差分,凭经验或者逐个排除不影响的文件。
另外分享下经验,第一次,建议把所有文件(System32)都加进去,然后把SOFTWARE使用install.wim的或者自己参照的PE的复制过去,
先把文件列表确认下来,然后在根据文件来确定具体的注册表项目。

对于PE的DLL文件,最主要的键就是上面的CLSID,文件名找到{xxxx-yyyy-xxxx}这个Class ID,然后再通过这个ClassID找使用的地方(这里估计可以自动化)。
另外某些DLL可能还需要对应的mui文件,所以补充比较的时候也请注意,别错过了,其实对的文件。

slore 发表于 2016-7-6 22:42:21

添加应用程序

slore 发表于 2016-7-6 22:42:48

本帖最后由 slore 于 2016-7-6 22:46 编辑

通过ADK添加网络功能

slore 发表于 2016-7-6 22:42:52

占一楼备用

pseudo 发表于 2016-7-6 23:18:10

史上最好帖子之一。
楼主高人,能耐心科普,鱼渔兼备,更难得。

小建议:
“固态硬盘上,基本上30秒可以构建一次,20~30个文件左右后,大概1小时可以确定出来必要文件了。”
考虑一次构建一批供测试,下一批基于上一批结果。
设法利用正交试验法之类,或许不用1小时。

窄口牛 发表于 2016-7-6 23:25:22

楼主辛苦,支持动手,支持技术分享。

2012cwz 发表于 2016-7-7 08:50:23

占楼学习。

engineerlzk 发表于 2016-7-7 09:04:22

向楼主学习!

xzf680 发表于 2016-7-7 10:31:18

感谢分享,学习一下,什么时候分享个8.1PE工程与教程
也来个有渔也有鱼

2012bzsb 发表于 2016-7-7 11:29:25

强烈建议: 基于WINRE 而不是BOOT ,WIN10后,RE是支持无线, 以前版本比较过,差别不大.
平板,只有无线啊. 所以,WINRE

slore 发表于 2016-7-7 11:31:08

xzf680 发表于 2016-7-7 10:31
感谢分享,学习一下,什么时候分享个8.1PE工程与教程
也来个有渔也有鱼

没有精力测试多平台,但是思路一样的,至少目前的内容8.1PE是适用的。
直接修改MaintPE中的config.ini指向install8.1.wim和boot8.1.wim就可以构建出来。

高级用法(工程共存):

MaintPE81
+config.ini
+INIT.bat

config.ini:
set PB_SRC_WIM=H:\install81x86.wim
set PB_BASE_WIM=%PB_MNT_DIR%\FA_Boot81x86.wim

INIT.bat:
call PB_APPLY_PACKAGE.bat %~dp0..\MaintPE

2012bzsb 发表于 2016-7-7 11:44:03

其实吧,目前比较有用的是WIN10,其它版本真意义不大.

而RE 或者BOOT ,最需要的是一个SHELL ,原版最好. 最多余的是WINSXS,所以,如果给个标准模板:
精简WINSXS +原版SHELL( 有线,无线当然是必须的),是不是就很好了?然后,在给个多功能版,加入声卡支持,显卡支持.

其它功能, 好像就一个BITLOCK ,一个打印机 有部分人需要.

系统自己的浏览器,WMP播放器,图片查看,NET 这些都可以不用或者使用第三方的.

2012bzsb 发表于 2016-7-7 11:48:13

DISM,由于有DISM++那个神器, 能支持它就好

slore 发表于 2016-7-7 12:40:24

2012bzsb 发表于 2016-7-7 11:29
强烈建议: 基于WINRE 而不是BOOT ,WIN10后,RE是支持无线, 以前版本比较过,差别不大.
平板,只有无线啊. 所 ...

boot.wim的第2卷,就是winre.wim。PE_Setup的加一个删除winpeshl.ini的DEL_FILES.txt即可。

2012919497149 发表于 2016-7-7 12:56:21

2012bzsb 发表于 2016-7-7 11:29
强烈建议: 基于WINRE 而不是BOOT ,WIN10后,RE是支持无线, 以前版本比较过,差别不大.
平板,只有无线啊. 所 ...

winre.wim里确实多了几个无线驱动文件

四海皆狂龙 发表于 2016-7-7 15:54:50

2012bzsb 发表于 2016-7-7 11:44
其实吧,目前比较有用的是WIN10,其它版本真意义不大.

而RE 或者BOOT ,最需要的是一个SHELL ,原版最好. 最 ...

恰恰相反,我认为原版shell是最没有意义的,原版shell是为固定桌面而生的,实现不适合pe这个非固定的系统。使用原版的shell就意味着用零散而没有灵活性的方式去添加应用和修改设置,所以目前凡是用标准shell都是做屁格局的,要修改就要对系统做手术。

lanmeizhuangyua 发表于 2016-7-7 16:27:39

楼主辛苦谢谢

wplin 发表于 2016-7-7 21:53:03

謝謝大大
還是新手
大大說明還是有很多雖然說得很清楚
但是還是弄不明白
努力學習中

slore 发表于 2016-7-7 21:54:54

2012bzsb 发表于 2016-7-7 16:53
其实,我只要XP那样简单风格的SHELL, 任务栏+桌面+资源管理器, 第三方的,如果好用,我要原版做什么?

任务 ...

如果实现打开目录功能, 和原版SHELL差不了多少文件了

希望可以提供原版SHELL的PATCH目录。

自然有很多已经实现系统原版的explorer.exe,但是文件还有很多才稳定,而且注册表要添加的项目更复杂。
还有系统的explorer目前WIN+D没人解决,很不方便。还有窗口的按回退键不好使。

当然,这里只是说明怎么来实现这个“打开文件”功能,至于用不用,自己根据添加文件SIZE,来决定是否第3方性价比更高,
我们是有选择权利的。

moran 发表于 2016-7-7 22:43:07

好教程,支持一下。。

红毛樱木 发表于 2016-7-8 07:57:06

slore 发表于 2016-7-7 21:54
希望可以提供原版SHELL的PATCH目录。

自然有很多已经实现系统原版的explorer.exe,但是文件还有很 ...

原版的shl参考winbuilder脚本。
s写的在这边,winbuilder.cn

2011npwjm 发表于 2016-7-8 11:07:25

不错,谢谢楼主的分享

窄口牛 发表于 2016-7-9 07:22:22

再顶,呱唧呱唧。

2012hzy6420 发表于 2016-7-9 07:49:03

支持了支持楼主{:3_148:}

2012_Supreme 发表于 2016-7-9 17:07:05

好贴,有空自己也弄弄
页: [1] 2
查看完整版本: 手把手一起做WIN10维护PE,有渔也有鱼