MinGW/GCC/CodeBlocks 等在 Win7 编译出现 Permission Denied 错误 - 解决方法

本文分享了以 MinGW 为主要编译模块的编译器,如 MinGW 自身,以及Dev-Cpp、CodeBlocks 这些调用 MinGW 进行编译的编译器,在编译连接过程中出现 Permission Denied 错误的解决方法。同样,可能也适用于其他 EXE 文件突然出现的莫名拒绝访问问题。
本文并非转载,但解决方法转自 StackOverflow。

着急的童鞋可以直接看 解决方法 部分,不能保证针对所有人都有效,但实际证明大部分 Windows 7 中出现这个问题都可以有效解决。

问题描述

不知何时起,我们的编译连接逐渐成为一件难事。Win 7 下使用 MinGW、Dev-Cpp、CodeBlocks 等进行编译时有时候会 Permission Denied 的问题,大致描述如下:

·通常第一次编译连接不会出问题,程序也能正常运行
·第二次编译往往会出现 ld 报错 Permission Denied 的情况
·再过几分钟后,故障莫名消失,编译连接运行后的再次编译连接,故障复现

很是无奈……尤其是这故障貌似还是间歇式的。
在解决问题之前,我曾对故障分析了很久,又详细记录了从编译连接到程序运行至结束再到下一次编译连接的过程中,系统的各种举动。起初还怀疑过 MSE 和 Windows Defender。这些分析与记录我不打算详列了,毕竟那没有对我解决问题起到任何帮助作用。

解决方法

来来回回翻了不知道多少论坛、博客,一直没有找到可行的方法,最后终于在 StackOverflow 一个英文页面中找到了关键之处。

最简单处理方法:启动 AeLookupSvc 即可。

  1. 直接到 cmd 下(管理员)输入如下:
    C:\> sc config AeLookupSvc start= delayed-auto
    [SC] ChangeServiceConfig 成功

    C:\> sc start AeLookupSvc
    最后一个启动服务的似乎可以不加,delayed-auto 也可以写成 demand,不过如果不行的话还是 delayed-auto 吧。注意不要缺少空格。

  2. 或是到 services.msc 中修改 Application Experience 启动类型为手动或自动(延迟),最好是自动(延迟)。

重新编译连接程序,然后运行,马上再次重新编译连接,成功。如果经尝试不曾成功,请尝试重启。如果还是不能解决问题,请评论留下你遇到的问题及你的电脑一些相关状况。

来源

在 StackOverflow 上看到的问题链接 click here。
本文所介绍方法原回答 click here。
MinGW/GCC/CodeBlocks 等在 Win7 编译出现 Permission Denied 错误 - 解决方法_第1张图片

写在最后

在百度或是谷歌很久却无缘答案后,不如到英文网站上看看,有很多国内高手懒得回答而小白却不会的疑难也许就能解决。
同时,就当学英语了。

你可能感兴趣的:(编译连接)