ld.exe:无法打开输出文件...:权限被拒绝

时间:2011-10-05 00:20:36

标签: c windows windows-7 codeblocks mingw32

我最近在Windows 7旗舰版32bit上安装了mingw32的CodeBlocks以消除我的技能,但这个问题让我感到有点难过。

我决定启动一个短的Fibonacci发生器,以确保我的设置正常,但我遇到了障碍。

该程序编译,链接和诸如魅力之类的东西,我得到一个相应的可执行文件,按预期运行。

如果我再次尝试编译会出现问题,然后我会得到以下结果:

c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied

我甚至无法编辑生成的可执行文件的权限。

我检查了通常的嫌疑人:

  • 可执行文件确实没有运行。
  • 可执行文件的路径是可读/写到mingw32(否则它将无法在第一时间构建)
  • 我没有以任何形式或形式运行cygwin。

现在有趣的是:通常在几分钟之后,mingw32生成的任何显示此拒绝访问行为的可执行文件将自动消失而无需我的任何干预。

我在谷歌上搜索了一下,但大多数其他结果要么含糊不清,要么不适用。

我想知道是否有一些Windows 7安全设置对我的.exe有严重破坏,但我不知道Win 7知道从哪里开始搜索。

任何人都有任何想法?

12 个答案:

答案 0 :(得分:35)

在关闭一些(在我看来是不必要的)Windows服务之后,我遇到了完全相同的问题。事实证明,当我再次打开时,"Application Experience"一切恢复正常。

可能你只需要打开这项服务?要打开应用程序体验:

  1. 单击Windows开始按钮。

  2. 在标有“搜索程序和文件”的框中,键入services.msc,然后单击搜索按钮。将打开一个标题为“服务”的新窗口。

  3. 右键点击“应用体验”行,然后从弹出菜单中选择“属性”。

  4. 将启动类型更改为“自动(延迟启动)”。

  5. 重新启动计算机。

  6. 应用程序体验应该可以防止将来出现此问题。

答案 1 :(得分:20)

如果您认为可执行文件已被进程锁定,请尝试从SysInternals处理Process Explorer。在文件/句柄中,输入Fibonacci.exe,您应该看到谁拥有该文件。

如果还不够,您可以使用Process Monitor(再次来自SysInternals)来跟踪Fibonacci.exe上系统上所有进程的活动。 通过一些分析(调用堆栈),您可以找出拒绝访问该文件的原因以及使其消失的原因。

答案 2 :(得分:12)

您的程序仍在运行。你必须通过关闭命令行窗口来杀死它。 如果你按下控制alt删除,任务管理器,进程`(杀死与你的文件名匹配的那些)。

答案 3 :(得分:7)

最佳解决方案是在eclipse IDE中进入控制台,然后单击红色按钮以终止该程序。 您将看到您的程序正在运行并且可以在那里看到输出。 :) !!

答案 4 :(得分:3)

  1. 打开任务管理器 - >流程 - >单击.exe(Fibonacci.exe) - >结束过程

    如果它不起作用

  2. 关闭eclipse IDE(或您使用的任何IDE)并重复步骤1.

答案 5 :(得分:2)

我有相同的行为,并通过以管理员身份运行Code :: Blocks来修复它。

答案 6 :(得分:2)

我有类似的问题。使用名为Unlocker(版本1.9.2)的免费软件实用程序,我发现我的防病毒软件(Panda free)在可执行文件上留下了一个挂锁,即使它没有检测到任何威胁。 Unlocker能够解锁它。

答案 7 :(得分:1)

遇到同样的问题。阅读this。禁用防病毒软件(mcaffee)。 Et voila

由防病毒日志确认:

Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create

答案 8 :(得分:1)

它可能是您的防病毒软件。

在我的案例中,Malwarebytes正在处理我程序的可执行文件:

enter image description here

使用Process Explorer关闭句柄,或者只是禁用防病毒工作就好了。

答案 9 :(得分:1)

问题原因: 当前程序的进程仍在运行而没有中断。 (这就是重启后仍未出现此问题的原因)

修复很简单: 转到 cmd 并键入命令 taskkill -im process-name.exe -f

例如:

 taskkill -im demo.exe -f

在这里

演示-是我的程序名称

答案 10 :(得分:0)

使用Atom编辑器和mingw(通过名为gpp-compiler的包)进行C ++时出现此错误。关闭打开的控制台窗口解决了我的问题。

答案 11 :(得分:0)

我遇到了类似的问题。 Bitdefender自动隔离由MinGW g ++创建的每个exe文件。而不是完整的exe文件,我发现了带有奇怪扩展名'qzquar'的文件 testAutoPtr1.exe.48352.gzquar

当我在Bitdefender中打开隔离项目时,我发现我的exe文件被隔离了。