

图片是PVZ在NT4下运行,所有模式都正常,唯独不支持3d加速(PVZ3D加速功能需要支持D3D8及以上的显卡,而NT4最高支持D3D 5.0,且Swiftshader只能让很少一部分游戏运行于NT4)
方法也很简单,对GDI42.DLL做如下patch:利用PEMaker或CFF Explorer VIII等支持修改win32可执行二进制文件的imported API的软件,找到kernel32一节,将图中的GetFileSizeEx替换为GetFileSize,同时修改PVZ主程序的子系统支持版本为4.0(原PE文件头的相应片段为5.0,若直接执行会提示“不是有效的Windows NT程序”)

另:因为程序本身系Unicode编码,即使是做完如上修改也无法在98/me下直接执行,只能安装kernelex在执行
注2:DirectSound8.1的DLL主文件(Dsound.DLL)完全支持NT4.0,将DirectX 8.1的Dsound复制到System32下可解决一部分程序的兼容性问题(其实连3.51都支持),吞食鱼在使用DirectSound 8.1以后能在NT4下发声(吞食鱼是支持DirectDraw3的(不是用GDI32绘图的(至少不是纯粹的使用GDI32),因为在NT3.51下会报DirectDraw错误)(因而至少兼容NT 4 SP3/95),不知道是否支持DirectDraw)
最后再来个NT4 SP6支持的DirectX组件全版本:
DirectDraw/D3D 5.0
DirectSound 8.1
DXMedia 6.0
DirectPlay 7.0/8.0?/8.1?