ld.exe: impossible d’ouvrir le fichier de sortie …: autorisation refusée

J’ai récemment installé CodeBlocks avec mingw32 sur Windows 7 Ultimate 32bit afin de dépoussiérer mes compétences, mais ce problème m’a quelque peu déconcerté.

J’ai décidé de lancer un générateur de Fibonacci court pour m’assurer que ma configuration fonctionnait, mais j’ai rencontré des difficultés.

Le programme comstack, lie et autres choses comme un charme et j’obtiens un exécutable correspondant qui fonctionne comme prévu.

Les problèmes surviennent si j’essaie de comstackr à nouveau, puis j’obtiens les éléments suivants:

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

Je ne peux même pas modifier les permissions de l’exécutable généré.

J’ai vérifié les suspects habituels:

  • L’exécutable n’est pas en cours d’exécution.
  • Le chemin d’access à l’exécutable est en lecture / écriture pour mingw32 (sinon, il ne serait pas possible de le créer)
  • Je ne lance pas cygwin sous quelque forme que ce soit.

Et maintenant, pour le bit amusant: généralement après quelques minutes, tous les exécutables générés par mingw32 qui affichent ce comportement d’access refusé disparaîtront automatiquement sans aucune intervention de ma part.

J’ai un peu consulté Google, mais la plupart des autres résultats étaient vagues ou inapplicables.

Je me demande si certains parameters de sécurité de Windows 7 ont un effet dévastateur sur mes fichiers .exe, mais je ne connais pas bien Win 7 pour savoir où commencer la recherche.

Quelqu’un a des idées?

J’ai eu exactement le même problème juste après avoir éteint certains services Windows (à mon avis inutiles). Il s’est avéré que lorsque je rallumais le “Application Experience”, tout fonctionnait bien.

Peut-être vous devez simplement activer ce service? Pour activer l’expérience d’application:

  1. Cliquez sur le bouton Démarrer de Windows, en bas à gauche.

  2. Dans la case intitulée “Rechercher les programmes et fichiers”, tapez services.msc et cliquez sur le bouton de recherche. Une nouvelle fenêtre intitulée “Services” s’ouvre.

  3. Faites un clic droit sur la ligne “Application Experience” et sélectionnez “Propriétés” dans le menu contextuel

  4. Remplacez le type Starup par “Automatique (démarrage différé)”

  5. Redémarrer l’ordinateur

Les expériences d’application devraient prévenir le problème à l’avenir.

Si vous pensez que l’exécutable est verrouillé par un processus, essayez Process Explorer à partir de SysInternals. Dans le fichier / handle, entrez Fibonacci.exe et vous devriez voir qui détient le fichier.

Si cela ne suffit pas, vous pouvez utiliser Process Monitor (à partir de SysInternals) pour suivre l’activité de tous les processus de votre système sur Fibonacci.exe. Avec un peu d’parsing (stacks d’appels), vous découvrirez peut-être pourquoi l’access au fichier est refusé et ce qui le fait disparaître.

Votre programme est toujours en cours d’exécution. Vous devez le tuer en fermant la fenêtre de ligne de commande. Si vous appuyez sur Ctrl Alt Suppr, sur le gestionnaire de tâches, sur process`s (tuez ceux qui correspondent à votre nom de fichier).

La meilleure solution est d’aller sur console dans l’IDE Eclipse et cliquez sur le bouton rouge pour terminer le programme. Vous verrez que votre programme est en cours d’exécution et que les résultats y sont visibles. 🙂 !!

  1. Ouvrez le gestionnaire de tâches -> Processus -> Cliquez sur .exe (Fibonacci.exe) -> Terminer le processus

    si ça ne marche pas

  2. Fermez l’IDE de l’éclipse (ou tout autre IDE que vous utilisez) et répétez l’étape 1.

J’avais le même comportement et je l’ai corrigé en exécutant Code :: Blocks en tant qu’administrateur.

J’avais un problème similaire. En utilisant un utilitaire gratuit appelé Unlocker (version 1.9.2), j’ai constaté que mon logiciel antivirus (sans Panda) avait laissé un verrou bloqué sur le fichier exécutable même s’il ne détectait aucune menace. Unlocker était capable de le déverrouiller.

J’ai le même problème. Lisez ceci . Désactivé le logiciel antivirus (mcaffee). Et voilà

Confirmé par le journal antivirus:

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

Il peut s’agir de votre logiciel antivirus.

Dans mon cas, Malwarebytes tenait une poignée sur l’exécutable de mon programme:

entrer la description de l'image ici

Utiliser Process Explorer pour fermer le descripteur ou simplement désactiver l’antivirus pour un peu de travail est très bien.

J’ai eu cette erreur en utilisant l’éditeur Atom et mingw (via un paquet appelé gpp-comstackr ) pour C ++. La fermeture de la fenêtre de la console ouverte a résolu mon problème.

Problème Cause: Le processus du programme en cours est toujours en cours sans interruption. (C’est la raison pour laquelle vous n’avez pas ce problème après un redémarrage)

Le correctif est simple: allez dans cmd et tapez la commande taskkill -im nom-processus.exe -f

Par exemple:

  taskkill -im demo.exe -f 

ici,

démo – est le nom de mon programme