2011-10-05 161 views
39

我最近在Windows 7 Ultimate 32bit上安装了带有mingw32的CodeBlocks以清除掉我的c技能,但是这个问题让我有些难住。ld.exe:无法打开输出文件...:权限被拒绝

我决定点燃一根短斐波那契发生器,以确保我的设置正常,但我遇到了一个障碍。

该程序编译,链接和不像一个魅力,我得到一个相应的可执行文件运行如预期。如果我试图重新编译发生

的问题,然后我得到如下:

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知道从哪里开始搜索。

任何人有任何想法?

+4

下面是一个总猜测......如果你正在构建bin \ Debug目录,那么code :: blocks可能会对它的集成调试器做一些事情,让可执行文件上的文件句柄保持打开状态。尝试建立它的发布,看看你是否有同样的问题 –

+1

我认为@布赖恩戈登的猜测是一个很好的。如果程序正在运行,请在尝试重建之前将其终止。 –

+0

它在Debug和Release中表现相同,并且如果我从cmd运行gcc。 在附注中,似乎只有在我实际运行可执行文件后才会发生。 我开始认为这绝对是一个安全设置的事情。 – gzzzur

回答

31

我关掉一些(在我看来是不需要的)windows服务后,我有完全相同的问题。事实证明,当我再次打开“应用程序体验”时,一切恢复正常。

可能您只需打开此服务?打开应用程序体验:

  1. 单击左下方的Windows开始按钮。

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

  3. 右键单击 “应用程序体验” 行,并从弹出菜单中选择 “属性”

  4. 变化的Starup类型为 “自动(延时启动)”

  5. 重新启动计算机

应用程序经验应该可以防止将来出现问题。

+0

这似乎是这个真正令人讨厌的问题的真正的好解决方案。我看到它在某些论坛主题等方面没有解决。 – Cimbali

+0

也为我工作,但我不明白发生了什么事。 – 5agado

+0

很好的答案在重新启动后回来+1 +1 –

19

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

如果不够用,可以使用进程监视器(再次从SysInternals)来跟踪系统上Fibonacci.exe上所有进程的活动。通过一点分析(调用堆栈),您可能会发现为什么文件的访问被拒绝以及是什么使其消失。

+0

我选择了你的答案,因为它看起来像给出我的问题陈述的最合理的解决方案。但是我没有试过,因为我使用的机器崩溃了。 因为我现在已经决定去用linux,所以对我来说这是一个有争议的问题。 – gzzzur

9

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

2

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

6

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

+0

这是最好的解决方案,每个人都使用eclipse应该使用这个 –

3
  1. 打开任务管理器 - >进程 - >点击.EXE(Fibonacci.exe) - >结束进程

    ,如果它不能正常工作

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

2

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

+0

谢谢,我能解决通过关闭Symantec Endpoint Protection中的文件系统自动防护功能可以解决同样的问题。 –

1

得到了同样的问题。阅读this。禁用防病毒软件(mcaffee)。等瞧

防病毒日志证实:

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

1

这可能是你的杀毒软件。

在我的情况的Malwarebytes拿着一个手柄上我的程序的可执行文件:

enter image description here

使用Process Explorer中关闭句柄,或者只是禁用杀毒软件的一些工作就好了。

相关问题