ld.exe: не удается открыть выходной файл ...: в доступе отказано - PullRequest
45 голосов
/ 05 октября 2011

Я недавно установил CodeBlocks с mingw32 на Windows 7 Ultimate 32bit, чтобы отряхнуть свои навыки 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, чтобы знать, с чего начать поиск.

У кого-нибудь есть идеи?

Ответы [ 12 ]

35 голосов
/ 26 октября 2011

У меня была точно такая же проблема сразу после отключения некоторых (на мой взгляд ненужных) служб Windows.Оказалось, что когда я снова включил "Application Experience", все снова заработало нормально.

Может быть, вам просто нужно включить эту услугу?Чтобы включить Application Experience:

  1. Нажмите кнопку «Пуск» Windows.

  2. В поле с надписью «Поиск программ и файлов» введите services.mscи нажмите кнопку поиска.Откроется новое окно с заголовком «Услуги».

  3. Щелкните правой кнопкой мыши строку «Application Experience» и выберите «Свойства» во всплывающем меню.

  4. Измените тип запуска на «Автоматический (отложенный запуск)».

  5. Перезагрузите компьютер.

Опыт приложений должен предотвратить проблему в будущем.

20 голосов
/ 11 октября 2011

Если вы считаете, что исполняемый файл заблокирован процессом, попробуйте Process Explorer из SysInternals. В файле / дескрипторе введите Fibonacci.exe, и вы должны увидеть, кто хранит файл.

Если этого недостаточно, вы можете использовать Process Monitor (снова из SysInternals), чтобы следить за активностью всех процессов в вашей системе на Fibonacci.exe. Немного проанализировав (стеки вызовов), вы можете узнать, почему доступ к файлу запрещен и что делает его исчезающим.

12 голосов
/ 12 октября 2011

Ваша программа все еще работает.Вы должны убить его, закрыв окно командной строки.Если вы нажмете кнопку управления alt delete, диспетчер задач, процессы (убейте те, которые соответствуют вашему имени файла).

7 голосов
/ 14 января 2013

Лучшее решение - перейти на консоль в Eclipse IDE и нажать красную кнопку , чтобы завершить программу. Вы увидите, что ваша программа работает, и там можно увидеть вывод. :) !!

3 голосов
/ 25 апреля 2014
  1. Открыть диспетчер задач -> Процессы -> Нажмите .exe (Fibonacci.exe) -> Завершить процесс

    , если он не работает

  2. Закройте IDE затмения (или любую другую IDE, которую вы используете) и повторите шаг 1.

3 голосов
/ 27 февраля 2012

У меня было такое же поведение, и я исправил его, запустив Code :: Blocks от имени администратора.

2 голосов
/ 12 сентября 2014

У меня была похожая проблема.Используя бесплатную утилиту Unlocker (версия 1.9.2), я обнаружил, что мое антивирусное программное обеспечение (без Panda) оставило зависание блокировки на исполняемом файле, даже если оно не обнаружило никакой угрозы.Unlocker смог его разблокировать.

1 голос
/ 23 июня 2018

Неисправность Причина: Процесс текущей программы все еще выполняется без прерывания.(Это причина того, почему у вас не возникло этой проблемы после перезапуска)

Исправление простое: Перейдите на cmd и введите команду taskkill -im process-name.exe -f

Например:

 taskkill -im demo.exe -f

здесь,

demo - это название моей программы

1 голос
/ 07 июля 2017

Это может быть ваше антивирусное программное обеспечение.

В моем случае Malwarebytes держал дескриптор исполняемого файла моей программы:

enter image description here

Использование Process Explorer, чтобы закрыть дескриптор, или просто отключение антивируса для работы немного хорошо.

1 голос
/ 15 октября 2015

Получил ту же проблему. Прочитайте это . Отключил антивирусную программу (mcaffee). Et voila

Подтверждено журналом антивируса:

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

...