我遇到了一个几天前才出现的错误。我运行的是 Windows 7 Professional x64 位。
我有一个.cpp 文件,我使用命令提示符运行以下命令:
g++ -std=c++11 A.cpp
它创建了可执行文件 a.exe。但是,如果我立即再次运行相同的命令,则会收到此错误:-
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot
open output file a.exe: Permission denied
collect2.exe: error: ld returned 1 exit status
如果我尝试删除可执行文件,系统会提示“您需要权限才能执行此操作”(我使用的是管理员帐户)。在属性中的“安全”选项卡下,系统会提示“无法显示当前所有者”。如果我尝试更改其所有权,系统会提示“无法在 a.exe 上设置新所有者。访问被拒绝。”
此外,如果我尝试打开该文件,它会显示“Windows 无法访问指定的设备、路径或文件。您可能没有适当的权限来访问该项目。”
最奇怪的是,大约一分钟后该文件就自动消失了。
如果我只运行一次编译命令,这些都不会发生。如果我运行一次,我可以删除可执行文件,运行它,并且所有者会显示我的帐户名。该文件也不会消失。
请帮我解决这个问题,这很烦人。我尝试关闭防病毒软件(Kasperksy Internet Security),但这种情况仍然发生。
答案1
我发现此主题在此网站上,虽然列出的问题有点不同,但解决方案(启用“应用程序体验”服务并将其设置为“自动”)对我有用。
答案2
反恶意软件工具是否正在检查新创建的可执行文件并将其锁定?是 g++ 应用程序将其锁定了吗?
尝试使用第三方工具检查导致文件被锁定的原因,例如锁猎人. 它应该显示哪些进程打开了该文件的句柄。
另一种可能性是:Windows Search 索引,它已将 Thunderbird 消息删除锁定了几分钟。禁用搜索或排除 g++ 使用的所有 Foilder 将有助于确认这一点。