无忧启动论坛

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

[原创] WIN10PE连接手机(MTP支持)

  [复制链接]
 楼主| 发表于 2019-1-13 15:00:25 | 显示全部楼层
红毛樱木 发表于 2019-1-13 14:23
http://up.usbrun.com/USM1PE8F.WIM

补丁文件是\windows\wxsHook.dll
  1. D:\Dev\WimBuilder2\Projects\USM>tree /f
  2. 卷 软件 的文件夹 PATH 列表
  3. 卷序列号为 0009-6BF5
  4. D:.
  5.     main.bat
  6.     mtpHelper_x64.dll
  7.     mtpHelper_x86.dll
  8.     USM1PE8F.WIM
复制代码


main.bat
  1. set WB_PE_ARCH=x86
  2. set X_SYS=X:\Windows\System32

  3. rem install mtpHelper hook
  4. echo copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
  5. copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
  6. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /d mtpHelper.dll /f
  7. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
  8. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0 /f
复制代码


用WimBuilder2生成新的BOOTPE.ISO结果如图,没有字体问题。

要么是和之前一样你的启动ISO模板的BOOT\BCD有什么区别,要么就是你的“加载外置”的脚本在外置存在的时候,
有地方对字体进行了影响。

USM_TEST.png


点评

你开下测试模式试试  详情 回复 发表于 2019-1-13 17:47
mtpHelper.dll 和 wxsHook.dll是一个文件,只是改名了。  发表于 2019-1-13 15:00
回复

使用道具 举报

发表于 2019-1-13 17:47:42 来自手机 | 显示全部楼层
slore 发表于 2019-1-13 15:00
main.bat



你开下测试模式试试
回复

使用道具 举报

发表于 2019-1-13 18:21:00 | 显示全部楼层
1.png
2.png

用原版ISO直接套上BOOT.WIM启动
一个带补丁 一个不带补丁,对比很直观。

点评

17763.165.181109-1706.RS5_RELEASE_SVC_PROD3_CLIENTPRO_OEMRET_X86FRE_ZH-CN.ISO boot.wim的第二卷[Setup],只应用MTP支持补丁,没有其他的。 [attachimg]385684[/attachimg] [attachimg]385685[/attachimg]  详情 回复 发表于 2019-1-13 18:49
回复

使用道具 举报

 楼主| 发表于 2019-1-13 18:49:54 | 显示全部楼层
红毛樱木 发表于 2019-1-13 18:21
用原版ISO直接套上BOOT.WIM启动
一个带补丁 一个不带补丁,对比很直观。

17763.165.181109-1706.RS5_RELEASE_SVC_PROD3_CLIENTPRO_OEMRET_X86FRE_ZH-CN.ISO
boot.wim的第二卷[Setup],只应用MTP支持补丁,没有其他的。

source10.png

MTP_ONLY.png


启动如图所示:
boot+MTP.png

可以看到 cmd的标题: [管理员: ]

[无标题 - 记事本]

都是正常的字体。

你最好把其他的添加都去掉了,只添加这个补丁来测试,避免干扰。

(X:\hook.dat存在,所以补丁生效的。)

点评

实在搞不懂为什么,研究了一下还是没找到关键所在。 只有一个明显的区别,你那边没有DWM,我这里有DWM。不知道是不是这个影响  详情 回复 发表于 2019-1-13 20:12
回复

使用道具 举报

发表于 2019-1-13 20:12:39 | 显示全部楼层
slore 发表于 2019-1-13 18:49
17763.165.181109-1706.RS5_RELEASE_SVC_PROD3_CLIENTPRO_OEMRET_X86FRE_ZH-CN.ISO
boot.wim的第二卷[Se ...

实在搞不懂为什么,研究了一下还是没找到关键所在。
只有一个明显的区别,你那边没有DWM,我这里有DWM。不知道是不是这个影响
回复

使用道具 举报

 楼主| 发表于 2019-1-13 20:46:17 | 显示全部楼层

mtpHelper_sec.zip (79.91 KB, 下载次数: 36)

点评

能不能搞一个补丁,只删注册表不恢复的补丁?而且带日志的。 方便分析研究一些问题  详情 回复 发表于 2019-1-25 12:20
回复

使用道具 举报

发表于 2019-1-13 21:25:24 来自手机 | 显示全部楼层
frg521 发表于 2019-1-13 20:51
...

等你结果,,,

点评

换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。 不过把你USM1PE8F.WIM直接打包,啥也不改也正常。 估计你推测的是对的,影响services.exe启动的子程序fontdrvhost.exe。 winlogon.ex  详情 回复 发表于 2019-1-13 21:58
回复

使用道具 举报

 楼主| 发表于 2019-1-13 21:58:24 | 显示全部楼层

换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打包,啥也不改也正常。

估计你推测的是对的,影响services.exe启动的子程序fontdrvhost.exe。
winlogon.exe的子程序fontdrvhost.exe不会受到影响。

不过在fontdrvhost.exe中不存在MiniNT字符串,那就是services.exe做了什么其他事情?

关于 记事本 字体 是 “宋体”应该是你的注册表设置有关系,窗口标题,开始菜单都显示正常字体,
或者禁用了AppInitDLL,删除wxsHook.dll,结果 记事本 也是 "宋体"。

我先试试用30秒的,在原版boot.wim上是不是也存在相同现象。

点评

两个fontdrvhost.exe进程启动有参数和先后顺序之分吗?自己启动这两个进程不知道行不行。  详情 回复 发表于 2019-1-14 18:40
好的,那我不折腾了。等你调试代码。 我感觉这个延时可能还不好,毕竟没有抓住重点  详情 回复 发表于 2019-1-13 22:11
回复

使用道具 举报

 楼主| 发表于 2019-1-13 22:10:19 | 显示全部楼层
我先试试用30秒的,在原版boot.wim上是不是也存在相同现象。


用了30秒的,标题显示有问题了。记事本内容没有问题,是雅黑。

主要services.exe不能被修改,也不能注入。。。只影响MTP的初始化比较困难。

我的环境用进程检查的dll没出现过,估计还是跟启动速度,时机有关系。

回复

使用道具 举报

发表于 2019-1-13 22:11:57 来自手机 | 显示全部楼层
slore 发表于 2019-1-13 21:58
换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打 ...


好的,那我不折腾了。等你调试代码。
我感觉这个延时的机制可能还不太好,毕竟没有抓住重点
回复

使用道具 举报

发表于 2019-1-14 18:40:19 来自手机 | 显示全部楼层
slore 发表于 2019-1-13 21:58
换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打 ...

两个fontdrvhost.exe进程启动有参数和先后顺序之分吗?自己启动这两个进程不知道行不行。

点评

services.exe的fontdrvhost.exe,没控制手段,winlogon的不知道自己重启是否可行。不知道重启某个服务能不能改善。  发表于 2019-1-14 19:26
回复

使用道具 举报

 楼主| 发表于 2019-1-14 19:28:59 | 显示全部楼层
顺序的话,从进程日志可以看到是services.exe的先启动,winlogon的是,sleep之后,MiniNT恢复后才启动的。
我环境,日志也有这个进程但是字体正常,应该不单单是启动程序来解决。

点评

这样不知道行不行,mtp组件我是外置的,不知道调用外置mtp组件的时候改这个注册表键值还有没有效?  详情 回复 发表于 2019-1-14 20:09
回复

使用道具 举报

发表于 2019-1-14 20:09:41 来自手机 | 显示全部楼层
slore 发表于 2019-1-14 19:28
顺序的话,从进程日志可以看到是services.exe的先启动,winlogon的是,sleep之后,MiniNT恢复后才启动的。
...

这样不知道行不行,mtp组件我是外置的,不知道调用外置mtp组件的时候改这个注册表键值还有没有效?

点评

或者做个X86的单MTP吧,100MB?需要时重启备用。  发表于 2019-1-14 21:31
要么native命令,等待3秒,要不要启用MTP支持,不需要的话删除改注册表即可。  发表于 2019-1-14 21:31
必须services.exe启动前处理,你有办法让services.exe重启的话,可以。  发表于 2019-1-14 21:30
回复

使用道具 举报

发表于 2019-1-15 23:10:33 | 显示全部楼层
sshot-1.png

sshot-2.png

有研究过蓝牙吗?
搞了一下,但是还不能设置为可见设备,也不能搜索到别的可见蓝色设备。
看上去和打印组件有关,等您的打印补丁

点评

请大神指教,不知什么地方出错了,谢谢了 [attachimg]386108[/attachimg] hook.dat显示 2019-01-19 17:03:56.530 2019-01-19 17:03:56.530 0:[System Process] 4:System 268:smss.exe 352:csrss.exe  详情 回复 发表于 2019-1-19 17:23
回复

使用道具 举报

发表于 2019-1-19 17:23:03 | 显示全部楼层
本帖最后由 bjlbjl 于 2019-1-19 17:43 编辑
红毛樱木 发表于 2019-1-15 23:10
有研究过蓝牙吗?
搞了一下,但是还不能设置为可见设备,也不能搜索到别的可见蓝色设备。
看上去 ...


请大神指教,不知什么地方出错了,谢谢了

sshot-2.png


hook.dat显示
2019-01-19 17:03:56.530
2019-01-19 17:03:56.530
0:[System Process]
4:System
268:smss.exe
352:csrss.exe
416:wininit.exe
424:csrss.exe
484:services.exe
496:lsass.exe
588:winlogon.exe
2019-01-19 17:03:57.044
0:[System Process]
4:System
268:smss.exe
352:csrss.exe
416:wininit.exe
424:csrss.exe
484:services.exe
496:lsass.exe
588:winlogon.exe
632:svchost.exe


sshot-1.png

点评

把winusb.sys放一个到inf文件夹中就不会找不到了。  详情 回复 发表于 2019-1-24 20:52
补丁中有一个mtp_support.bat是安装驱动的,进了PE运行后,再接入设备就可以识别了。  发表于 2019-1-20 12:35
回复

使用道具 举报

发表于 2019-1-24 20:51:03 | 显示全部楼层
折腾了一下,手机是找到了,就是资源管理器中不出来
sshot-1.png

点评

50# 之前winbuilder删除了这里的注册表  详情 回复 发表于 2019-1-24 21:44
回复

使用道具 举报

发表于 2019-1-24 20:52:33 | 显示全部楼层
bjlbjl 发表于 2019-1-19 17:23
请大神指教,不知什么地方出错了,谢谢了

把winusb.sys放一个到inf文件夹中就不会找不到了。

点评

其实mtp_support.bat直接一句: drvload X:\Windows\System32\DriverStore\FileRepository\wpdmtp.inf_amd64_79762cfde1a9fe38\wpdmtp.inf 就可以了。 RE:WIN10XPE中更新了。 感觉直接dism /add-driver离  详情 回复 发表于 2019-1-25 00:34
回复

使用道具 举报

发表于 2019-1-24 21:44:31 来自手机 | 显示全部楼层
hhh333 发表于 2019-1-24 20:51
折腾了一下,手机是找到了,就是资源管理器中不出来

50#
之前winbuilder删除了这里的注册表

点评

是的,加上可以了  详情 回复 发表于 2019-1-25 13:03
回复

使用道具 举报

 楼主| 发表于 2019-1-25 00:31:05 | 显示全部楼层
hhh333 发表于 2019-1-24 20:52
把winusb.sys放一个到inf文件夹中就不会找不到了。

rem install mtpHelper hook
copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /d mtpHelper.dll /f
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0 /f

rem hook requirement(or BSOD)
call RegCopy "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF"
rem call AddFiles WUDFPlatform.dll MUI

rem ==========update filesystem==========

set AddFiles_Mode=merge

call AddDrivers winusb.inf
call AddDrivers "wpd*.inf,wudf*.inf" FILE

call AddFiles %0 :end_files
goto :end_files
@windows\system32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
Microsoft-Windows-Client-Desktop-Required-Package*
;Microsoft-Windows-WPD*

@windows\system32\
drivers\UMDF\
+mui
winusb*,wpd*,WUDF*,PortableDevice*
:end_files

call DoAddFiles

rem ==========update registry==========
rem WPD class(Portable Devices)
call RegCopy SYSTEM\ControlSet001\Control\Class\{EEC5AD98-8080-425F-922A-DABF3DE3F69A}

rem add services
call RegCopyEx Services "WINUSB,WPDBusEnum,WpdUpFltr,WudfPf,WUDFRd"

rem winusb.inf (already added by AddDrivers macro, only two items in <1KB)
rem has high cost performance to copy all DriverDatabase items, just 4MB SYSTEM size(608KB compressed)
rem call RegCopy SYSTEM\DriverDatabase

rem explorer Portable device
rem Portable Devices ::{35786D3C-B075-49b9-88DD-029876E11C01}

call RegCopy HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders
rem [optional]call SharedPatch NewBrowseDlg
rem put mtp_support.bat on Desktop
call X2X
回复

使用道具 举报

 楼主| 发表于 2019-1-25 00:34:42 | 显示全部楼层
hhh333 发表于 2019-1-24 20:52
把winusb.sys放一个到inf文件夹中就不会找不到了。

其实mtp_support.bat直接一句:
drvload X:\Windows\System32\DriverStore\FileRepository\wpdmtp.inf_amd64_79762cfde1a9fe38\wpdmtp.inf
就可以了。

RE:WIN10XPE中更新了。
  1. @echo off
  2. set DrvRepo=%SystemRoot%\System32\DriverStore\FileRepository
  3. call :InstDriver wpdmtp.inf
  4. pause
  5. goto :EOF

  6. :InstDriver
  7. set DrvFolder=
  8. for /f "delims=" %%i in ('dir /b %DrvRepo%\%1_*') do set DrvFolder=%%i
  9. if "x%DrvFolder%"=="x" goto :EOF
  10. drvload %DrvRepo%\%DrvFolder%\%1
复制代码


感觉直接dism /add-driver离线应该也可以。。。驱动我以前没搞过。

点评

之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充HKEY_LOCAL_MACHINE\pe-sys\DriverDatabase中winusb的相关项就可以到DriverStore中自动去找了。否则会提示找  详情 回复 发表于 2019-1-25 13:14
回复

使用道具 举报

发表于 2019-1-25 03:07:31 来自手机 | 显示全部楼层
frg521 发表于 2019-1-25 02:48
...

看来这里有个逻辑上的冲突了。
pe环境初始化的时候会自动安装一些pnp设备驱动,而用了补丁的时候正好否定了"pe环境",所以驱动没有自动安装。
不知道我上面的理解对不对。
不过有解决办法的,如果注册表和驱动文件都齐全完整的话,可以利用第三方工具startnet.exe的-pnp达到命令自动安装mtp驱动的效果。

也还有一种更高级的程序方式,判断设备不正常的设备,卸载之,再刷新设备就行了。这种方式简单的devcon.exe批处理应该就能实现。

当然还有别的方法处理驱动问题,但是我觉得关键性的问题还是补丁中的延时机制不够完美。
回复

使用道具 举报

发表于 2019-1-25 12:20:49 来自手机 | 显示全部楼层
slore 发表于 2019-1-13 20:46
附件是把dllmain.c改成30秒的编译版本,没有进程监控,没有日志。

如果要其他秒数,UltraEdit或者 ...

能不能搞一个补丁,只删注册表不恢复的补丁?而且带日志的。

方便分析研究一些问题

点评

那你直接用native中的nreg.exe删除改键值就行了。  发表于 2019-1-25 12:37
回复

使用道具 举报

发表于 2019-1-25 13:03:48 | 显示全部楼层
红毛樱木 发表于 2019-1-24 21:44
50#
之前winbuilder删除了这里的注册表

是的,加上可以了
回复

使用道具 举报

发表于 2019-1-25 13:14:16 | 显示全部楼层
slore 发表于 2019-1-25 00:34
其实mtp_support.bat直接一句:
drvload X:\Windows\System32\DriverStore\FileRepository\wpdmtp.inf_a ...

之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充HKEY_LOCAL_MACHINE\pe-sys\DriverDatabase中winusb的相关项就可以到DriverStore中自动去找了。否则会提示找不到文件,MTP设备安装失败

点评

应该是可以添加,DISM也可以的  详情 回复 发表于 2019-1-25 14:45
AddDriver winusb.inf就自动添加了注册表和文件。下载wimbuilder2做一个看看就清楚了。  发表于 2019-1-25 13:45
回复

使用道具 举报

发表于 2019-1-25 13:16:34 | 显示全部楼层
不知这个工具能不能用于win8,8.1

点评

8不需要补丁破解,注册表和文件补了就行。  发表于 2019-1-25 13:45
回复

使用道具 举报

发表于 2019-1-25 14:45:41 | 显示全部楼层
hhh333 发表于 2019-1-25 13:14
之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充 ...

应该是可以添加,DISM也可以的
回复

使用道具 举报

发表于 2019-1-31 11:58:32 | 显示全部楼层
本帖最后由 hhh333 于 2019-1-31 11:59 编辑
makimaki2 发表于 2019-1-1 00:32
请问slore前辈, 打印支持,MSI,.net,wmv播放 有解决了吗


我发布的那个PE一直都有支持啊

点评

都是组件方式,应该基本是按功能分开的  详情 回复 发表于 2019-1-31 20:37
有没有,按功能分开的文件列表/注册表  发表于 2019-1-31 19:42
回复

使用道具 举报

发表于 2019-1-31 18:08:18 | 显示全部楼层
本帖最后由 makimaki2 于 2019-1-31 18:31 编辑

直接修改serviceX.exe离线文件MiniPE为NiniPE如何

点评

蓝屏  发表于 2019-1-31 19:41
回复

使用道具 举报

发表于 2019-1-31 20:37:40 | 显示全部楼层
hhh333 发表于 2019-1-31 11:58
我发布的那个PE一直都有支持啊

都是组件方式,应该基本是按功能分开的
回复

使用道具 举报

发表于 2019-2-1 13:32:13 | 显示全部楼层
请教下slore大,新版win10是不是没有native环境了?弄半天没弄出来最小native环境

点评

native环境是有的,32位直接改下注册表启动native.exe就行了。你说最小我就不知道了。我是直接winre.wim修改BootExecute就可以用。  详情 回复 发表于 2019-2-1 16:49
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 21:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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