![运行 Windows 时内存故障且无法更换](https://linux22.com/image/1461662/%E8%BF%90%E8%A1%8C%20Windows%20%E6%97%B6%E5%86%85%E5%AD%98%E6%95%85%E9%9A%9C%E4%B8%94%E6%97%A0%E6%B3%95%E6%9B%B4%E6%8D%A2.png)
对于带有焊接/集成 RAM 的设备(例如平板电脑和超极本),内存缺陷意味着计算机将成为昂贵的镇纸。
显然,最好的选择是更换有缺陷的 RAM,但是当这不可能并且设备不再享受保修时,是尝试其他解决方案的好时机。
我一直在研究bcdedit /set badmemorylist
,但bcdedit /set badmemoryaccess
没有成功。
这个问题几年前就讨论过这个问题:在 RAM 有缺陷的情况下运行 Windows
在当时和那些情况下,有可能更换 RAM,并且没有进行进一步调查。
现在我已经没有可能更换 RAM 了,我想重新审视这个问题。
答案1
我成功了几次。传递损坏的内存参数的关键是:
地址 memtest86,与 Windows 中使用的地址匹配。
必须标记4KBytes的完整页面。
在memtest中0x10000000,对应Windows中的0x10000。
在memtest中,0x00001000对应Windows中的0x1。
意思是:windows里的页码去掉memtest的最后3位十六进制数。
意思是:Windows 会消除左边的零。
考虑5和6,以避免页码出现错误。
正确的说法是:bcdedit /set {badmemory} badmemorylist 0xB7 0xB8 0xB9 0xBAmemtest 中的错误从 0x000B7000 到 0x000BAFFF。请注意,您不能放置一个内存范围,而必须逐一放置所有页面。
无法添加页面;所有页面都应使用同一命令进行标记。如果是新页面,则添加的页面将覆盖旧页面。我仅使用一个命令就成功添加了 4096 个页面。我还没有尝试更多。
bcdedit / 枚举 {badmemory}显示标记页面的列表。
bcdedit /设置 badmemoryaccess 否防止使用标记的页面。
标记页面并删除访问权限后需要重新启动。
现在它运行起来不会崩溃。
答案2
您可以设置Windows允许使用的最大内存。
如果您可以确定坏的 RAM 地址,则可以使用此设置强制 Windows 仅停留在良好的内存区域内。
要修改此设置:
- 打开 msconfig(按开始按钮,输入 msconfig,然后按回车键)
- 选择“启动”选项卡
- 按高级选项...按钮
- 启用最大内存复选框
- 指定允许 Windows 使用多少内存(以及允许其使用的最高物理地址)