您的位置:首页 > 其它

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

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

具体做法如下:

为避免原始内核被破坏,首先复制系统内核文件 ntkrnlpa.exe,并命名为 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=My Own Testing Authority"

signtool sign -s my -n "My Own Testing Authority" ntkr128g.exe

上述签名过程需要用到三个命令行工具,其中 editbin 在 Visual Studio 中自带,而 makecert 和 signtool 在 Windows SDK 6.0 中自带,如果你机器上安装了 Visual Studio 2008 的话,第一个工具可以在 %VS2008_Dir%/ VC/ Bin/ 中找到,后两个工具可以在 %ProgramFiles%/ Microsoft SDKs/ Windows/ v6.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。

另外,启用 3G 开关的设置为:

bcdedit /set {guid} IncreaseUserVa 3072

特别提示:经过本人几个月的测试,使用此方法打开 PAE 后,没有遇到任何性能和稳定性问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: