web-dev-qa-db-ja.com

ld.exe:出力ファイルを開けません...:許可が拒否されました

私は最近、Windows 7 Ultimate 32bitにmingw32を使用してCodeBlocksをインストールして、Cスキルを磨きましたが、この問題には多少困惑しています。

私はセットアップが機能していることを確認するために短いフィボナッチジェネレーターを起動することにしましたが、ハードルに遭遇しました。

プログラムはコンパイル、リンク、チャームのようなものではなく、期待どおりに実行する対応する実行可能ファイルを取得します。

もう一度コンパイルしようとすると問題が発生し、次のようになります。

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の知識はあまりありません。

何かアイデアはありますか?

45
gzzzur

一部の(私の意見では不要な)Windowsサービスをオフにした直後に、まったく同じ問題が発生しました。再び電源を入れたときに、"Application Experience"すべてが正常に機能し始めたことがわかりました。

このサービスをオンにするだけでいいのでしょうか?アプリケーションエクスペリエンスをオンにするには:

  1. Windowsのスタートボタンをクリックします。

  2. [プログラムとファイルの検索]ボックスにservices.mscと入力し、検索ボタンをクリックします。 「サービス」というタイトルの新しいウィンドウが開きます。

  3. [アプリケーションエクスペリエンス]行を右クリックし、ポップアップメニューから[プロパティ]を選択します。

  4. スタートアップの種類を「自動(遅延開始)」に変更します。

  5. コンピューターを再起動。

アプリケーションエクスペリエンスは、将来の問題を防ぐはずです。

35
Ralf

実行可能ファイルがプロセスによってロックされていると思われる場合は、SysInternalsのProcess Explorerを試してください。ファイル/ハンドルで、Fibonacci.exeと入力すると、ファイルを保持しているユーザーが表示されます。

十分でない場合は、プロセスモニター(SysInternalsから)を使用して、Fibonacci.exeでシステム上のすべてのプロセスのアクティビティを追跡できます。少し分析すると(コールスタック)、ファイルへのアクセスが拒否された理由と、ファイルが消える原因を見つけることができます。

20

プログラムはまだ実行中です。コマンドラインウィンドウを閉じて、それを殺す必要があります。コントロールalt削除、タスクマネージャー、プロセスを押すと(ファイル名に一致するものを削除します)。

13
plodoc

最良の解決策は、Eclipse IDEのコンソールに移動し、赤いボタンをクリックしてプログラムを終了することです。プログラムが実行されており、そこに出力が表示されます。 :) !!

7
Black_Rider

私は同じ動作をし、管理者としてCode :: Blocksを実行して修正しました。

3
Luis
  1. タスクマネージャーを開きます->プロセス-> .exe(Fibonacci.exe)をクリックします->プロセスの終了

    うまくいかない場合

  2. Eclipse IDE(または使用するIDE)を閉じて、手順1を繰り返します。

3
Khokhar

同様の問題がありました。 Unlocker(バージョン1.9.2)と呼ばれるフリーウェアユーティリティを使用すると、脅威を検出しなかったにもかかわらず、ウイルス対策ソフトウェア(Panda free)が実行可能ファイルにハングロックをかけていることがわかりました。 Unlockerはロックを解除できました。

2
R. Strickland

アンチウイルスソフトウェアの可能性があります。

私の場合、Malwarebytesは私のプログラムの実行可能ファイルのハンドルを保持していました。

enter image description here

Process Explorerを使用してハンドルを閉じるか、ウイルス対策を無効にして少し動作します。

1

問題の原因:現在のプログラムのプロセスは、中断することなく実行されています。 (これが、再起動後にこの問題が発生しない理由です)

修正は簡単です:cmdに移動してコマンドを入力しますtaskkill -im process-name.exe -f

例:

 taskkill -im demo.exe -f

ここに、

demo-私のプログラム名

1
Arun Joshla

同じ問題が発生しました。 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

同様の問題が発生しました。 Bitdefenderは、MinGW g ++で作成された各exeファイルを自動的に隔離しました。完全なexeファイルの代わりに、奇妙な拡張子「qzquar」を持つファイルを見つけましたtestAutoPtr1.exe.48352.gzquar

Bitdefenderで隔離されたアイテムを開くと、exeファイルが隔離されていることがわかりました。

0

C++でAtomエディターとmingw(gpp-compilerというパッケージを使用)を使用すると、このエラーが発生しました。開いているコンソールウィンドウを閉じると、問題が修正されました。

0
Pro Q