2011-10-05 158 views
39

我最近在Windows 7 Ultimate 32bit上安裝了帶有mingw32的CodeBlocks以清除掉我的c技能,但是這個問題讓我有些難住。ld.exe:無法打開輸出文件...:權限被拒絕

我決定點燃一根短斐波那契發生器,以確保我的設置正常,但我遇到了一個障礙。

該程序編譯,鏈接和不像一個魅力,我得到一個相應的可執行文件運行如預期。如果我試圖重新編譯發生

的問題,然後我得到如下:

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知道從哪裏開始搜索。

任何人有任何想法?

+4

下面是一個總猜測......如果你正在構建bin \ Debug目錄,那麼code :: blocks可能會對它的集成調試器做一些事情,讓可執行文件上的文件句柄保持打開狀態。嘗試建立它的發佈,看看你是否有同樣的問題 –

+1

我認爲@布賴恩戈登的猜測是一個很好的。如果程序正在運行,請在嘗試重建之前將其終止。 –

+0

它在Debug和Release中表現相同,並且如果我從cmd運行gcc。 在附註中,似乎只有在我實際運行可執行文件後纔會發生。 我開始認爲這絕對是一個安全設置的事情。 – gzzzur

回答

31

我關掉一些(在我看來是不需要的)windows服務後,我有完全相同的問題。事實證明,當我再次打開「應用程序體驗」時,一切恢復正常。

可能您只需打開此服務?打開應用程序體驗:

  1. 單擊左下方的Windows開始按鈕。

  2. 在標有「搜索程序和文件」的框中鍵入services.msc並單擊搜索按鈕。將打開標題爲「服務」的新窗口。

  3. 右鍵單擊 「應用程序體驗」 行,並從彈出菜單中選擇 「屬性」

  4. 變化的Starup類型爲 「自動(延時啓動)」

  5. 重新啓動計算機

應用程序經驗應該可以防止將來出現問題。

+0

這似乎是這個真正令人討厭的問題的真正的好解決方案。我看到它在某些論壇主題等方面沒有解決。 – Cimbali

+0

也爲我工作,但我不明白髮生了什麼事。 – 5agado

+0

很好的答案在重新啓動後回來+1 +1 –

19

如果您認爲可執行文件被某個進程鎖定,請嘗試SysInternals中的Process Explorer。在文件/句柄中,輸入Fibonacci.exe,你應該看到誰擁有該文件。

如果不夠用,可以使用進程監視器(再次從SysInternals)來跟蹤系統上Fibonacci.exe上所有進程的活動。通過一點分析(調用堆棧),您可能會發現爲什麼文件的訪問被拒絕以及是什麼使其消失。

+0

我選擇了你的答案,因爲它看起來像給出我的問題陳述的最合理的解決方案。但是我沒有試過,因爲我使用的機器崩潰了。 因爲我現在已經決定去用linux,所以對我來說這是一個有爭議的問題。 – gzzzur

9

您的程序仍在運行。你必須通過關閉命令行窗口來殺死它。 如果您按控制ALT刪除,任務管理器,進程(殺死匹配您的文件名)。

2

我有相同的行爲,並通過以管理員身份運行Code :: Blocks來修復它。

6

最佳解決方案是在eclipse IDE中使用控制檯,然後單擊紅色按鈕來終止程序。 你會看到你的程序正在運行,並且可以在那裏看到輸出。 :) !!

+0

這是最好的解決方案,每個人都使用eclipse應該使用這個 –

3
  1. 打開任務管理器 - >進程 - >點擊.EXE(Fibonacci.exe) - >結束進程

    ,如果它不能正常工作

  2. 關閉的Eclipse IDE(或任何IDE您使用)並重復步驟1.

2

我有類似的問題。使用名爲Unlocker(版本1.9.2)的免費軟件實用程序,我發現我的防病毒軟件(Panda free)在可執行文件上留下了掛起的鎖,即使它沒有檢測到任何威脅。 Unlocker能夠解鎖它。

+0

謝謝,我能解決通過關閉Symantec Endpoint Protection中的文件系統自動防護功能可以解決同樣的問題。 –

1

得到了同樣的問題。閱讀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

這可能是你的殺毒軟件。

在我的情況的Malwarebytes拿着一個手柄上我的程序的可執行文件:

enter image description here

使用Process Explorer中關閉句柄,或者只是禁用殺毒軟件的一些工作就好了。

相關問題