无法打开输出文件,权限被拒绝。

85

我在使用CodeBlocks编译C++代码时,一直出现以下错误:

无法打开输出文件[filename.exe],权限被拒绝

这个问题是今天才开始出现的,而且它是间歇性和不一致的。如果我关闭CodeBlocks并重新启动项目,它通常会消失,但并非总是如此。有时只需按几次F9(构建和运行),它甚至就会自己消失。我总是检查任务管理器,但从未发现任何与我文件名相关的.EXE或任何相关内容。

我还注意到,如果出现此问题,然后尝试手动删除.EXE文件或以其他方式与其交互,Windows会告诉我需要管理员权限才能这样做(这是私人计算机,并且据我所知我是管理员)。

第一次出现这个问题时,我仅向cout发送了一个调试报告,几乎没有什么神秘之处。有时甚至在先前版本中没有更改任何代码的情况下也会出现这种情况。

这可能是什么原因呢?虽然它还没有影响到我的程序执行,但它很烦人,我希望它不会变得更糟。

编辑:虽然现在这已经过时了,但以防其他人遇到类似的问题,我目前使用的解决方法是在再次运行代码之前始终删除[filename.exe]。这可以避免这个问题,尽管它很烦人。


当我尝试删除可执行文件时,由于它仍在后台运行,会出现错误。我解决的方法是在任务管理器中找到该任务,然后结束任务。 - ᴇɴᴅᴇʀᴍᴀɴ
20个回答

136

6
不一定是正在运行,其他进程可能有一个打开的句柄,Process Explorer 是这类工作的首选工具。 - Gearoid Murphy

17

我曾经遇到和你一样的问题。我发现这可能与你终止代码运行结果的方式有关。当你运行代码时,如果它有输出,调试器将调用控制台并打印“按任意键继续...”。如果你通过按键来终止控制台,那没问题;但如果你通过点击关闭按钮来终止,就会出现你所描述的问题。当你以后一种方式终止时,你必须等待几分钟才能重新构建你的代码。


6
我刚遇到了同样的问题。每当我在程序运行时更改一些代码时,总是会发生这种情况。之后,会出现“权限被拒绝”的消息。
我通过点击控制台窗口右上方的“终止”按钮(红色按钮),然后点击“删除所有已终止的启动”(终止按钮旁边的双重X)来解决这个问题。 这将关闭正在运行的程序。之后一切都正常工作。希望这对某人有所帮助!

5

我也遇到了同样的问题,让我十分烦恼:

Windows7 64位系统,MinGW,Eclipse,CDT

出现权限被拒绝的错误、可执行文件消失、ld.exe错误。有时可以正常运行,但再次运行时又会出现问题,例如:“无法打开输出文件***.exe:权限被拒绝”

请检查您的杀毒软件。在关闭工作区的杀毒软件并清理工作区后,重新启动项目,我就再也没有遇到这个问题了。


4

当 IDE 由于崩溃或其他故障而仍然掌握着 EXE,则通常会出现此错误,这会防止用户(您自己)在重新构建期间覆盖/删除 EXE。


3

你好,我知道这篇文章已经有些年头了,但是我还是想发表一下自己的看法。 如果你使用关闭图标来关闭控制台输出窗口而不是按下“任意键继续”,就会出现这个错误。


3
问题与Sam的回答有关:
“我遇到了你遇到的同样的问题。我发现它可能与您终止运行结果的方式有关。当您运行代码时,无论它是否有输出,调试器都会调用控制台打印“按任意键继续...”。如果您通过按键终止控制台,则没问题;如果您通过单击关闭按钮来终止,则会出现您所描述的问题。当您以后一种方式终止它时,您必须等待几分钟才能重新构建您的代码。” 避免杀死进程,我们有两个选择,等待进程释放.EXE文件或重新启动IDE可以更快地解决此问题。

这并没有对问题提供答案。如果你想批评或者请求作者进行澄清,请在他们的帖子下方留言。 - AstroCB
我的答案是:“避免杀死进程,我们有两个选择,等待进程释放.EXE文件或重新启动IDE来更快地解决这个问题。”再读一遍... - Jorgesys
@Elanasys 如果我误解了您的回答,我很抱歉。它被标记为“非常低质量”,我从审核队列来到这里。您可能需要考虑稍微扩展一下您的答案,因为目前来看,它要完全清晰需要参照Sam的答案。无论如何,在我的一个答案上进行投票是不应该的。 - AstroCB
请注意,您的“答案”最好作为对Sam帖子的评论,因为它似乎并没有直接回答问题。 - AstroCB

2

我曾经遇到过同样的问题。只需将你的 .CPP 文件重新命名为其他名称,然后再尝试一次即可。 这对我有用。


2

尝试重新启动您的IDE。这对我有用。 虽然我尝试在任务管理器中结束进程,但该进程从未被终止。


1
这种情况的主要原因(我最近就遇到了),是如果你将它放在例如闪存驱动器上。
你可以开发和做任何事情,但在大多数系统上,它会阻止你从那里运行.exe文件,无论是调试版还是发布版。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接