无忧启动论坛

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

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

  [复制链接]
跳转到指定楼层
#
发表于 2018-12-16 12:11:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 slore 于 2019-1-3 10:03 编辑

背景
手机能上网,下载东西传到电脑的话,不需要网络的维护PE就够了。

所以想解决WIN10PE下无法使用MTP驱动的问题。

再次感谢Noelblanc(原生显示桌面功能开启方法发现者,善于反编译调试爱骑自行车的法国退休老爷爷)

不能启动的原因是,系统启动的时候,services.exe调用InitWudfDriverManager()函数初始化UMDF服务失败。InitWudfDriverManager: Cannot initialize UMDF driver manager in WinPE(骑行旅游了3,4个月没给我消息,上个月回来给了我这条重要的线索).

当HKLM\System\Control\MiniNT存在就失败了。
不知道是PE下功能不全,还是单纯的微软限制,所以进行了验证。


我开始想着把services.exe中的MiniNT字符串改成NiniNT就可以了。结果这个进程是系统保护程序,改动1个字节就蓝屏了。

然后想着离线把MiniNT删除试试,结果发现离线的SYSTEM中不存在此项,应该是启动时初始化的。
尝试用已经不流行(补充:XPE, WIN7PE还有,WIN8之后就没有再用了)的native shell,在进系统前删除该注册表项(native下确认存在MiniNT),
然后还是蓝屏,应该是PE下的其他系统进程服务需要该项存在。

目前是写了个dll注入winlogon.exe在services.exe启动前删除该项,等几秒,再添加该项让winlogon.exe继续启动。这个秒数不固定,但是通过这种方法我们得以验证,PE下无法启动WUDF服务是微软限制。把不固定秒数问题解决,这种“曲线”方式我会发布一个MTP的WimBuilder2用的补丁。(通过进程检测代替等不确定秒数来实现,补丁见#6,如果不行源码也在自己修改等待时间编译测试。)

(2019-01-02)最终最小依赖补丁见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411399

如果使用此dll跳过限制后,要注意,没有WUDFPlatform.dll初始化失败蓝屏,没有
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF注册表,初始化失败蓝屏。
(#6的补丁在MTP_Drv_Srv补充中添加了)


正规的方法估计需要写个ring0级别驱动,可以控制只让services.exe读取不到该项目。
最近没什么空闲时间,就把原因和解除限制方法分享出来,有时间折腾的人来搞吧。

(我和Noel都是不使用PE的人。。。调查到这个地步搞清楚原理,我们就算完成。。。)




noel的手机:


我的Mate10手机:


评分

参与人数 6无忧币 +30 收起 理由
wuxin9712 + 5
1301994096 + 5 手机电脑两用U盘可以互传啊
whyme22 + 5
tools241 + 5 了解微软的限制是最困难的, 其他问题便能迎.
sghihor + 5
freesoft00 + 5

查看全部评分

推荐
发表于 2018-12-25 15:02:01 | 只看该作者
总算搞定了,看上去还是ISO的问题。可能是我破解的BOOTMGR版本低了。

点评

最终确定是BCD的原因,你试试这样操作。 用BOOTICE编辑BCD,然后删掉默认的启动项,新建一个一样的启动项,这样启动之后就不产生那个DAT文件了。  详情 回复 发表于 2018-12-25 18:21
用WimBuilder2从零构建,不同版本(v1709, v1809, x86, x64)每次都成功。所以功能验证还是用原版的东西好,避免误导。  发表于 2018-12-25 17:20
回复

使用道具 举报

推荐
 楼主| 发表于 2018-12-22 14:36:10 | 只看该作者
本帖最后由 slore 于 2018-12-24 13:20 编辑

秒数不固定的问题,通过检测服务进程的方式,解决了,我机器600毫秒后可以了恢复MiniNT项目,
还测试了一个4秒的环境,机器有限,不过从代码来看没有问题。
(附件的Hook.dll是会在X:\写Hook.dat进程日志,如果其他人的环境也OK的话,元旦后我更新一个不写日志的版本。)

做了一个WimBuilder2的 MTP支持 补丁。
另外x64位的话,对未签名驱动有限制,所以顺便也放一个不检查驱动签名的补丁。


MTP_Support.zip (85.73 KB, 下载次数: 369)
Patch_drvinst.zip (49.33 KB, 下载次数: 250)


解压到WimBuilder2的任意工程目录下即可。如果不使用WimBuilder2的话,自己看批处理脚本,非常简单易懂。

犯了一个低级的错误,导致昨天没有成功,System32下面补充winusb.dll就行了。
(补丁包中给INF, System32,Drivers, FileRepository添加文件,就单把System32下给漏了。。。)

点评

收到,有的折腾了。以前一直折腾,就是服务启动不起来,再折腾一次试试  详情 回复 发表于 2018-12-22 15:07
回复

使用道具 举报

105#
发表于 2023-1-23 14:51:31 | 只看该作者
谢谢分享
回复

使用道具 举报

104#
发表于 2023-1-23 14:51:11 | 只看该作者
谢谢分享
回复

使用道具 举报

103#
发表于 2021-2-4 11:44:59 | 只看该作者
你好,专家,有没有现成的PE下载?
回复

使用道具 举报

102#
发表于 2021-2-3 21:50:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

101#
发表于 2021-1-30 17:08:32 | 只看该作者
slore 发表于 2021-1-30 14:45
WimBuilder2会自动补充,dll文件对应的mui,mun文件。

我自用的PE,不知啥原因,用WimBuilder2添加了MTP,能启动,启动完后也能看到添加的文件和注册表,但插上手机,无法看到手机。

点评

WimBuilder2直接做成的可以麽?W2是已winre为基础添加功能,你自己用的比winre少文件和注册表的话,不一定加的了。  发表于 2021-1-30 17:10
回复

使用道具 举报

100#
 楼主| 发表于 2021-1-30 14:45:55 | 只看该作者
gbzx 发表于 2021-1-30 14:34
楼主,我想把自己的pe添加MTP,用最新的WimBuilder2-Full.v2021-01-01制作没有MTP的PE与有MTP的PE进行比较 ...

WimBuilder2会自动补充,dll文件对应的mui,mun文件。


另外,你的注册表内容少的多,不是只加新的文件服务就完了,驱动对应的Drivers的注册表项目,服务的System。Software的dll对应的clsid,appid,interface,explorer下面的设定,你都没加。

MTP_Support/main.bat批处理自己对比补充。

点评

我自用的PE,不知啥原因,用WimBuilder2添加了MTP,能启动,启动完后也能看到添加的文件和注册表,但插上手机,无法看到手机。  详情 回复 发表于 2021-1-30 17:08
回复

使用道具 举报

99#
发表于 2021-1-30 14:34:46 | 只看该作者
楼主,我想把自己的pe添加MTP,用最新的WimBuilder2-Full.v2021-01-01制作没有MTP的PE与有MTP的PE进行比较,提取MTP需要的文件,如下表:
\inf\netrndis.inf
\inf\rndiscmp.inf
\inf\wceisvista.inf
\inf\wpdcomp.inf
\inf\wpdfs.inf
\inf\wpdmtp.inf
\inf\wpdmtphw.inf
\inf\wudfusbcciddriver.inf
\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Microsoft-Windows-WPD-UltimatePortableDeviceFeature-Feature-Package~31bf3856ad364e35~amd64~zh-CN~10.0.16299.15.cat
\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Microsoft-Windows-WPD-UltimatePortableDeviceFeature-Feature-Package~31bf3856ad364e35~amd64~~10.0.16299.15.cat
\system32\drivers\mtpHelper.sys
\system32\drivers\RNDISMP.sys
\system32\drivers\UMDF\EhStorPwdDrv.dll
\system32\drivers\UMDF\en-US\IddCx.dll.mui
\system32\drivers\UMDF\IddCx.dll
\system32\drivers\UMDF\Microsoft.Bluetooth.Profiles.HidOverGatt.dll
\system32\drivers\UMDF\NfcCx.dll
\system32\drivers\UMDF\PosCx.dll
\system32\drivers\UMDF\SDFLauncher.dll
\system32\drivers\UMDF\SensorsCx.dll
\system32\drivers\UMDF\SMCCx.dll
\system32\drivers\UMDF\UcmCx.dll
\system32\drivers\UMDF\uiccspb.dll
\system32\drivers\UMDF\usbdr.dll
\system32\drivers\UMDF\WpdFs.dll
\system32\drivers\UMDF\zh-CN\hidscanner.dll.mui
\system32\drivers\UMDF\zh-CN\idtsec.dll.mui
\system32\drivers\UMDF\zh-CN\mgtdyn.dll.mui
\system32\drivers\UMDF\zh-CN\Microsoft.Bluetooth.Profiles.HidOverGatt.dll.mui
\system32\drivers\UMDF\zh-CN\NfcCx.dll.mui
\system32\drivers\UMDF\zh-CN\SensorsCx.dll.mui
\system32\drivers\UMDF\zh-CN\SensorsHid.dll.mui
\system32\drivers\UMDF\zh-CN\UsbccidDriver.dll.mui
\system32\drivers\UMDF\zh-CN\wpdmtpdr.dll.mui
\system32\drivers\UMDF\zh-CN\WUDFUsbccidDriver.dll.mui
\system32\drivers\usb8023.sys
\system32\drivers\WpdUpFltr.sys
\system32\drivers\WUDFPf.sys
\system32\drivers\WUDFRd.sys
\system32\PortableDeviceApi.dll
\system32\PortableDeviceClassExtension.dll
\system32\PortableDeviceConnectApi.dll
\system32\PortableDeviceStatus.dll
\system32\PortableDeviceSyncProvider.dll
\system32\PortableDeviceTypes.dll
\system32\PortableDeviceWiaCompat.dll
\system32\vaultcli.dll
\system32\winusb.dll
\system32\wpdbusenum.dll
\system32\WPDShextAutoplay.exe
\system32\WPDShServiceObj.dll
\system32\WPDSp.dll
\system32\wpd_ci.dll
\system32\WUDFCoinstaller.dll
\system32\WUDFCompanionHost.exe
\system32\WUDFHost.exe
\system32\WUDFPlatform.dll
\system32\WudfSMCClassExt.dll
\system32\WUDFx.dll
\system32\WUDFx02000.dll
\system32\zh-CN\wudfplatform.dll.mui

并把下面这段注册表导入
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\mtpHelper]
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  72,00,69,00,76,00,65,00,72,00,73,00,5c,00,6d,00,74,00,70,00,48,00,65,00,6c,\
  00,70,00,65,00,72,00,2e,00,73,00,79,00,73,00,00,00
"Start"=dword:00000001
"ErrorControl"=dword:00000000
"Type"=dword:00000001
"DisplayName"="mtpHelper"

不能启动,是不是注册表其它地方还要修改?请指教。

点评

WimBuilder2会自动补充,dll文件对应的mui,mun文件。 另外,你的注册表内容少的多,不是只加新的文件服务就完了,驱动对应的Drivers的注册表项目,服务的System。Software的dll对应的clsid,appid,interface  详情 回复 发表于 2021-1-30 14:45
回复

使用道具 举报

98#
发表于 2020-12-7 16:56:46 来自手机 | 只看该作者
怎么没权限下载
回复

使用道具 举报

97#
发表于 2020-10-16 18:35:58 | 只看该作者
谢谢分享
回复

使用道具 举报

96#
 楼主| 发表于 2020-7-8 14:25:18 | 只看该作者
HenryNewman 发表于 2020-7-8 13:49
发布的Win10PE(带MTP驱动)文件只能单向传输,请尽快解决文件双向传输问题:
========================== ...

WimBuilder2默认工程加MTP正常双向复制,勾选精简项目,体积可以260MB。
回复

使用道具 举报

95#
发表于 2020-7-8 13:49:11 | 只看该作者
发布的Win10PE(带MTP驱动)文件只能单向传输,请尽快解决文件双向传输问题:
=================================================
测试Win10PE(带MTP驱动:10PE19569x64_No_Admin_C.iso 483M 2020/05/30 18:11 20H2 推荐使用 可与手机连线, 内建微软五笔/拼音):
发现文件只能单向传输,只能从手机文件夹复制到电脑文件夹,不能反向复制。
恳请尽快解决文件双向传输问题。
另外,WinPE启动时间较长,请再尽量精简,大小最好不超过250MB,只保留最有用的工具即可。

点评

WimBuilder2默认工程加MTP正常双向复制,勾选精简项目,体积可以260MB。  详情 回复 发表于 2020-7-8 14:25
回复

使用道具 举报

94#
发表于 2020-4-28 17:27:33 | 只看该作者
谢谢,下载了
回复

使用道具 举报

93#
发表于 2020-4-27 08:23:43 | 只看该作者
能连手机上网,就厉害了

点评

连手机上网,ADK就带,补几个文件就行了。比MTP简单的多。WimBuilder2有对应的选项勾选就行了。  发表于 2020-4-27 09:40
回复

使用道具 举报

92#
发表于 2020-3-26 17:00:08 来自手机 | 只看该作者
感谢感谢感谢
回复

使用道具 举报

91#
发表于 2019-2-2 18:28:15 | 只看该作者
mtphlp工具延时还是有问题,有的机器可以有的机器不行,感觉需要换一种方式来解决这个问题。直接改字节确实蓝屏。
回复

使用道具 举报

90#
发表于 2019-2-2 18:26:19 | 只看该作者
makimaki2 发表于 2019-2-1 23:35
在線不給改,是硬件CPU有保護模式(或軟件有保護)
離線不給改,那就是軟件有保護 如校驗碼或是簽章

换什么版本?
回复

使用道具 举报

89#
发表于 2019-2-1 23:35:56 | 只看该作者
在線不給改,是硬件CPU有保護模式(或軟件有保護)
離線不給改,那就是軟件有保護 如校驗碼或是簽章

換個 版本services.exe試試

点评

换什么版本?  详情 回复 发表于 2019-2-2 18:26
回复

使用道具 举报

88#
 楼主| 发表于 2019-2-1 16:49:29 | 只看该作者
本帖最后由 slore 于 2019-2-1 16:50 编辑
红毛樱木 发表于 2019-2-1 13:32
请教下slore大,新版win10是不是没有native环境了?弄半天没弄出来最小native环境


native环境是有的,32位直接改下注册表启动native.exe就行了。你说最小我就不知道了,我没精简是直接winre.wim修改BootExecute就可以用。
回复

使用道具 举报

87#
发表于 2019-2-1 13:32:13 | 只看该作者
请教下slore大,新版win10是不是没有native环境了?弄半天没弄出来最小native环境

点评

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

使用道具 举报

86#
发表于 2019-1-31 20:37:40 | 只看该作者
hhh333 发表于 2019-1-31 11:58
我发布的那个PE一直都有支持啊

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

使用道具 举报

85#
发表于 2019-1-31 18:08:18 | 只看该作者
本帖最后由 makimaki2 于 2019-1-31 18:31 编辑

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

点评

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

使用道具 举报

84#
发表于 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
回复

使用道具 举报

83#
发表于 2019-1-25 14:45:41 | 只看该作者
hhh333 发表于 2019-1-25 13:14
之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充 ...

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

使用道具 举报

82#
发表于 2019-1-25 13:16:34 | 只看该作者
不知这个工具能不能用于win8,8.1

点评

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

使用道具 举报

81#
发表于 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
回复

使用道具 举报

80#
发表于 2019-1-25 13:03:48 | 只看该作者
红毛樱木 发表于 2019-1-24 21:44
50#
之前winbuilder删除了这里的注册表

是的,加上可以了
回复

使用道具 举报

79#
发表于 2019-1-25 12:20:49 来自手机 | 只看该作者
slore 发表于 2019-1-13 20:46
附件是把dllmain.c改成30秒的编译版本,没有进程监控,没有日志。

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

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

方便分析研究一些问题

点评

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

使用道具 举报

78#
发表于 2019-1-25 03:07:31 来自手机 | 只看该作者
frg521 发表于 2019-1-25 02:48
...

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

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

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

使用道具 举报

77#
 楼主| 发表于 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
回复

使用道具 举报

76#
 楼主| 发表于 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
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 14:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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