32位Windows应用升级Win11 24H2后崩溃 求无代码修改解决方案
求助:32位Windows应用在Win11 24H2上崩溃的无代码修改临时解决方案
我有一个基于ANSI C开发的32位Windows应用,通过Windows Installer完成安装。升级到Windows 11 24H2版本后,该应用频繁崩溃并触发“内存不足(Out of Memory)”错误,但在更早版本的Windows系统及其他Windows版本上都能正常运行。现在需要找到无需修改代码的临时解决方案。
事件日志信息
- 故障应用名称:Application.exe,版本:1.24.1.0,时间戳:0x61afe778
- 故障模块名称:Application.exe,版本:1.24.1.0,时间戳:0x61afe778
- 异常代码:0xc0000005
- 故障偏移量:0x0003896f
- 故障进程ID:0x2BD0
- 故障应用启动时间:0x1DB7E3A030EC62D
- 故障应用路径:
C:\Program Files (x86)\Application\Application.exe - 故障模块路径:
C:\Program Files (x86)\Application\Application.exe - 报告ID:8bf1851b-9a5d-48ba-ac67-818aef17abe2
- 故障包全名:(无)
- 故障包相对应用ID:(无)
可尝试的临时解决方案
1. 开启32位应用的大地址感知(LAA)支持
无需修改代码,可通过工具修改PE文件头,让32位应用能访问最多4GB内存(默认仅2GB):
- 使用Visual Studio自带的
editbin工具,以管理员身份打开命令提示符执行:editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\Application\Application.exe" - 也可以用第三方工具如CFF Explorer手动修改PE头中的LAA标志。
2. 调整系统内存管理设置
- 关闭虚拟内存自动管理:打开「系统属性」→「高级」→「性能设置」→「高级」→「更改」,取消勾选“自动管理所有驱动器的分页文件大小”,手动设置固定大小的分页文件(建议为物理内存的1.5-2倍)。
- 提升应用进程优先级:打开任务管理器,在「详细信息」找到
Application.exe,右键选择「设置优先级」→「高」,确保应用优先获取内存资源。
3. 以兼容模式运行
右键点击应用图标→「属性」→「兼容性」:
- 勾选“以兼容模式运行这个程序”,选择之前能正常运行的Windows版本(如Windows 10 21H2)。
- 同时勾选“以管理员身份运行此程序”,避免权限不足导致的内存分配失败。
4. 禁用Win11 24H2的干扰性功能
- 关闭内存压缩:在上述性能设置的「高级」选项卡中,取消勾选“启用内存压缩”,该功能可能干扰老旧32位应用的内存分配逻辑。
- 临时关闭Windows Defender实时保护(测试用,测试后建议恢复):部分安全软件的后台扫描可能占用过多内存或拦截应用的内存操作。
5. 检查安装目录权限
右键C:\Program Files (x86)\Application目录→「属性」→「安全」:
- 选择当前登录用户,编辑权限并勾选“完全控制”,应用后重启应用。权限不足可能导致应用无法写入临时数据,间接引发内存错误。
内容的提问来源于stack exchange,提问作者Sameer Parab
相关产品推荐
相关产品推荐

