本帖最后由 youxia1220 于 2026-1-3 23:11 编辑
一般说来,PE不是过于精简,DISM++能够离线注入或者手动复制相关文件,导入相关注册表,设备驱动应该可以集成成功。
但是Microsoft Hyper-V Virtualization Infrastructure Driver集成了 wvid.inf_amd64_7c50642b144b870d驱动,设备管理器仍然显示异常, 类似这种设备的驱动集成就有点麻烦。驱动异常说明PE环境缺少必须的文件, 有的可能还缺少必须的服务。实际上Microsoft Hyper-V Virtualization Infrastructure Driver设备驱动异常,就既缺少文件也缺少服务。 怎么查看缺少哪些文件?这里要用到一个小工具depends, 用depends打开前面提到的Vid服务的vid.sys文件,如图。
这是打开正常系统的vid.sys驱动文件,显示相关的文件列表如下:
\System32\NTOSKRNL.EXE
\System32\BOOTVID.DLL
\System32\CI.DLL
\System32\HAL.DLL
\System32\KDCOM.DLL
\System32\PSHED.DLL
\System32\drivers\CNG.SYS
\System32\drivers\KSECDD.SYS
\System32\drivers\MSRPC.SYS
\System32\drivers\WDFLDR.SYS
\System32\drivers\WINHVR.SYS
\System32\zh-cn\PSHED.DLL.mui 最后的一个\System32\zh-cn\PSHED.DLL.mui文件是\System32\PSHED.DLL的mui文件。
对比文件列表,不同的PE可能缺少的文件不同,缺少的文件自行复制到对应的目录。打包WIM测试,还是驱动异常。
与Vid.sysy驱动文件有关的文件是补齐了,驱动异常说明还缺少其他的文件甚至服务。
最省事的做法,将正常系统中
与这个驱动类似的文件vm*.dll,vm*.sys都复制过去(包括对应的mui文件),将CatRoot\
{F750E6C3-38EE-11D1-85E5-00C04FC295EE}文件夹中带HyperV,VM的文件也一起复制。
打包WIM测试,结果让人失望,还是异常。
怎么办?文件应该不缺,要缺的只有服务了。注册表虽然没有过度精简过,
但是指不定有些服务在注册表里被精简了。
打开注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services,与正常系统对比,
重点关注VM开头的服务,将vmbus服务,VMBusHID服务,vmgid服务都添加上。
别忘了这些服务对应的驱动或文件也要添加。
如vmbus服务要注入wvmbus.inf_amd64_a192dbf28b4634a7驱动,
vmgid服务要注入wvmgid.inf_amd64_3a0240393de08f95驱动,
VMBusHID服务要复制VMBusHID.sys文件。
最简单最省事的办法,说起来还是不少,操作时还不能粗心大意,不要忘了mui文件,
不要复制错文件夹等等。
再打包测试,打开设备管理器,有个小惊喜,驱动正常了!
就为了去掉这个设备驱动的黄色小感叹号,来来回回折腾。总算是成功了。
办法老土,我实在没有精准定位缺失哪些文件,注册表
设置甚至服务的能力,只能采取大而化之的办法。如果要精简到极致,
这个土办法不适合。要么能精确找到缺少的文件,注册表,
要么一个一个文件添加测试,总能成功的。
列举的文件,注册表,服务仅限于此PE,即使相同的版本,不同的PE可能也会不同。
只是给出驱动集成的思路和一般做法供参考,
在PE中没有测试虚拟机,如果虚拟机不能运行,那还要补充其他文件和服务。
|