让 32 位 windows 7 支持超过 4G 内存(PAE)

该方法由 Geoff Chappell 牛人提供,适用于 Vista 系统。经 Aulddays 测试,这种方法同样适用于目前最新版的 Windows 7 RTM 系统。此方法可以让 32 位 win7 完美支持多至 128G 的内存!(由于涉及到修改系统内核,请慎重考虑后再操作)

具体做法如下:

为避免原始内核被破坏,首先复制系统内核文件 ntkrnlpa.exe( 路径为:%systemdrive%/Windows/System32/),并命名为 ntkr128g.exe(保存在 SYSTEM32 目录下),之后的修改都在 ntkr128g.exe 上进行。

用 hex 编辑器打开 ntkr128g.exe,查找下列两个字符串:

特征串1:7C 11 8B 45 FC 85 C0 74 0a 
特征串2:7C 10 8B 45 FC 85 C0 74 09 
两个特征串在内核中都出现且只出现一次,虽然特征串内容不同,但修改方式相同:把 0x8B 开始的 7 个字节(即上面标记为红色的部分。最前两个字节不作修改!)修改成:
后7个字节修改成:B8 00 00 02 00 90 90

对于 Vista 和 Windows 7,修改处的文件偏移地址(即 0x8B 字节的位置)分别如下:
版本号                     版本                          文件偏移地址
6.0.6000.16386     Windows Vista         0x003040B1, 0x003040F2
6.0.6001.18000     Windows Vista SP1  0x00309AA3, 0x00309AE4
6.1.7600.16385     Windows 7               0x0035C243, 0x0035c283


接下来为修改后的内核重新计算 checksum 和生成数字签名:

editbin /release ntkr128g.exe
makecert -r -ss my -n "CN=Windows 7 PAE"
signtool sign -s my -n "Windows 7 PAE" ntkr128g.exe
 
上述签名过程需要用到三个命令行工具,其中 editbin 在 Visual Studio 中自带,而 makecert 和 signtool 在 Windows SDK 6.0 中自带,如果你机器上安装了 Visual Studio 2010 的话,第一个工具可以在 %VS2010_Dir%/ VC/ Bin/ 中找到,后两个工具可以在 %ProgramFiles%/ Microsoft SDKs/ Windows/ v7.0A/ bin/ 中找到。

 

最后在系统启动菜单中加入一条新的启动菜单项(需以管理员方式运行命令提示符)

bcdedit /copy {current} /d "Windows 7 PAE" 
运行成功后,该命令会返回一个 GUID 值,记录下该 GUID 值,并运行下面三条,用之前返回的 GUID 值替换命令中的 guid(命令中包含 guid 的大括号也要输入):
bcdedit /set {guid} pae ForceEnable 
bcdedit /set {guid} kernel ntkr128g.exe

bcdedit /set {guid} testsigning on


由于使用了“自签名的证书”对 新的内核文件执行了数字签名 ,因此需要将 bcd 中的 testsigning 选项设置为 on ,这样会使系统桌面上显示 “Test Mode”的提示现在,在启动时选择 Windows 7 PAE 试试。如果一切顺利,可以在系统属性中看到实际使用的物理内存超过了 3.25G。

你可能感兴趣的:(让 32 位 windows 7 支持超过 4G 内存(PAE))