webentwicklung-frage-antwort-db.com.de

ld.exe: Ausgabedatei kann nicht geöffnet werden ...: Berechtigung verweigert

Ich habe vor kurzem CodeBlocks mit mingw32 unter Windows 7 Ultimate 32bit installiert, um meine C-Kenntnisse abzuschwächen, aber dieses Problem hat mich etwas ratlos gemacht.

Ich habe beschlossen, einen kurzen Fibonacci-Generator abzufeuern, um sicherzustellen, dass mein Setup funktioniert, aber ich bin auf eine Hürde gestoßen.

Das Programm kompiliert, verlinkt und so weiter und ich bekomme eine entsprechende ausführbare Datei, die wie erwartet läuft.

Die Probleme treten auf, wenn ich erneut versuche zu kompilieren, dann erhalte ich Folgendes:

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

Ich kann nicht einmal die Berechtigungen der generierten ausführbaren Datei bearbeiten.

Ich habe die üblichen Verdächtigen überprüft:

  • Die ausführbare Datei läuft wahrlich nicht.
  • Der Pfad zur ausführbaren Datei ist für mingw32 lesbar/beschreibbar (andernfalls kann sie nicht erstellt werden).
  • Ich verwende Cygwin in keiner Form.

Und nun zum Witzigen: In der Regel verschwinden alle von mingw32 generierten ausführbaren Dateien, die dieses Zugriffsverweigerungsverhalten anzeigen, nach einigen Minuten automatisch, ohne dass ich eingreifen muss.

Ich habe das etwas gegoogelt, aber die meisten anderen Ergebnisse waren entweder vage oder nicht anwendbar.

Ich frage mich, ob es eine Windows 7-Sicherheitseinstellung gibt, die mit meiner .exe-Datei Chaos anrichtet, aber ich weiß nicht so genau, wo ich mit der Suche beginnen soll.

Hat jemand irgendwelche Ideen?

45
gzzzur

Ich hatte genau das gleiche Problem, nachdem ich einige (meiner Meinung nach nicht benötigte) Windows-Dienste ausgeschaltet hatte. Es stellte sich heraus, dass beim erneuten Einschalten der "Application Experience" alles funktionierte wieder einwandfrei.

Möglicherweise müssen Sie diesen Dienst nur einschalten? So schalten Sie Application Experience ein:

  1. Klicken Sie auf die Windows-Startschaltfläche.

  2. In das Feld "Programme und Dateien suchen" geben Sie services.msc und klicken Sie auf die Suchschaltfläche. Ein neues Fenster mit dem Titel "Dienste" wird geöffnet.

  3. Klicken Sie mit der rechten Maustaste auf die Zeile "Anwendungserfahrung" und wählen Sie "Eigenschaften" aus dem Popup-Menü.

  4. Ändern Sie den Starttyp in "Automatisch (verzögerter Start)".

  5. Starte den Computer neu.

Anwendungserfahrungen sollen das Problem in Zukunft verhindern.

35
Ralf

Wenn Sie der Meinung sind, dass die ausführbare Datei durch einen Prozess gesperrt ist, versuchen Sie es mit Process Explorer von SysInternals. Geben Sie im Feld Datei/Handle Fibonacci.exe ein, und Sie sollten sehen, wer die Datei enthält.

Wenn dies nicht ausreicht, können Sie Process Monitor (erneut von SysInternals) verwenden, um die Aktivität aller Prozesse auf Ihrem System in Fibonacci.exe zu verfolgen. Mit ein wenig Analyse (Aufruflisten) können Sie herausfinden, warum der Zugriff auf die Datei verweigert wird und warum sie nicht mehr angezeigt wird.

20

Ihr Programm läuft noch. Sie müssen es beenden, indem Sie das Befehlszeilenfenster schließen. Wenn Sie die Strg-Taste oder die Entf-Taste drücken, werden die Prozesse ausgeführt (töten Sie diejenigen, die Ihrem Dateinamen entsprechen).

13
plodoc

Die beste Lösung ist, in Eclipse zur Konsole zu gehen IDE und auf rote Taste zu klicken, um das Programm zu beenden. Sie werden sehen, dass Ihr Programm ausgeführt wird und die Ausgabe dort angezeigt wird :) !!

7
Black_Rider

Ich hatte das gleiche Verhalten und habe es behoben, indem ich als Administrator Code :: Blocks ausgeführt habe.

3
Luis
  1. Öffnen Sie den Task-Manager -> Prozesse -> Klicken Sie auf .exe (Fibonacci.exe) -> Prozess beenden

    wenn es nicht geht

  2. Schließen Sie Eclipse IDE (oder was auch immer IDE Sie verwenden)) und wiederholen Sie Schritt 1.

3
Khokhar

Ich hatte ein ähnliches Problem. Mit einem Freeware-Dienstprogramm namens Unlocker (Version 1.9.2) stellte ich fest, dass meine Antivirensoftware (Panda free) die ausführbare Datei blockiert hat, obwohl sie keine Bedrohung erkannt hat. Unlocker konnte es freischalten.

2
R. Strickland

Dies kann Ihre Antivirensoftware sein.

In meinem Fall hatte Malwarebytes die ausführbare Datei meines Programms im Griff:

enter image description here

Die Verwendung von Process Explorer zum Schließen des Handles oder das Deaktivieren von Antivirus für ein bisschen funktioniert einwandfrei.

1

Problem Ursache: Der Prozess des aktuellen Programms läuft noch ohne Unterbrechung. (Dies ist der Grund, warum Sie dieses Problem nach einem Neustart nicht haben.)

Das Update ist einfach: Gehen Sie zu cmd und geben Sie den Befehl taskkill -im process-name.exe -f ein

zB:

 taskkill -im demo.exe -f

hier,

demo - ist mein Programmname

1
Arun Joshla

Habe das gleiche Problem. Lesen Sie this . Deaktivierte die Antivirensoftware (mcaffee). Et voila

Bestätigt durch das Antivirus-Protokoll:

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

ich habe ein ähnliches Problem erlebt. Bitdefender hat jede von MinGW g ++ erstellte exe-Datei automatisch unter Quarantäne gestellt. Anstelle der vollständigen exe-Datei fand ich eine Datei mit der seltsamen Erweiterung 'qzquar' testAutoPtr1.exe.48352.gzquar

Als ich in Bitdefender unter Quarantäne gestellte Objekte geöffnet habe, wurde meine exe-Datei dort unter Quarantäne gestellt.

0

Ich habe diese Fehlermeldung erhalten, wenn ich den Atom Editor und mingw (über ein Paket namens gpp-compiler) für C++. Das Schließen des offenen Konsolenfensters hat mein Problem behoben.

0
Pro Q