Как исправить: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом

С ошибкой «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом» пользователи часто сталкиваются при попытке выполнить команду netsh или в процессе настройки сайта IIS. Узнаем, как ее исправить.

Причины ошибки

Если в ходе настройки сайта IIS или выполнения другого действия система неожиданно выбрасывает сообщение об ошибке, в котором указано, что процессу не удается получить доступ к файлу, то это может произойти по следующим причинам:

  1. Отсутствуют права администратора для запуска команды из консоли командной строки или PowerShell.
  2. Порт 80 или 443 используется другим процессом, что типично для компьютеров под управлением IIS (Internet Information Services).
  3. Неправильно настроен раздел реестра ListenOnlyList в оснастке IIS.

Запуск команды с доступом администратора

Если не удается выполнить команду netsh, скорее всего, ошибка возникает из-за отсутствия прав администратора. В большинстве случаев это происходит, когда пользователь пытается запустить команду, которая добавляет исключения в динамический диапазон портов для собственных приложений Windows или сторонних программ. Имейте в виду, что эта операция требует доступа администратора. Чтобы предоставить его, выполните следующие шаги.

С помощью системного поиска найдите командную строку и запустите ее с правами администратора. Если отобразится запрос контроля учетных записей (UAC), подтвердите его нажатием на кнопку «Да».

В командной строке выполните еще раз команду и проверьте, не прерывается ли ее запуск ошибкой «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом»

Установка другого диапазона IP-адресов

Если не удалось решить конфликт DNS с помощью утилиты netsh, попробуйте использовать другой подход. По отзывам пользователей, проблема была разрешена после того, когда они установили совершенно другой диапазон IP-адресов вместо создания диапазона исключений. Этот способ подтвержден при разрешении конфликта между DNS и бухгалтерской программой Quickbooks.

В консоли командной строки с администраторскими правами запустите следующие команды:

  • netsh int ipv4 set dynamicport tcp start=10000 num=1000
  • netsh int ipv4 set dynamicport udp start=10000 num=1000

Если этот метод не применим к вашей ситуации, перейдите к следующему способу.

Разрешения конфликта портов IIS

Если столкнулись с ошибкой при правом щелчке мыши на элемент сайта внутри оснастки IIS MMC, попробуйте использовать утилиту Netstat.exe, чтобы узнать, занят ли порт 80 или 443 другим процессом. Эта проблема распространена на компьютерах под управлением Microsoft IIS 6.0 и 7.0. Основываясь на официальной документации Майкрософта, сообщение об ошибке появится в случае, если одно из следующих условий применимо к текущей ситуации:

  1. Параметр ListenOnlyList неправильно настроен на компьютере IIS.
  2. Другой процесс использует TCP-порт (80) или SSL-порт (443), требуемый IIS.

Для исправления ошибки сначала запустим утилиту Netstat.exe, чтобы определить, использует ли другой процесс указанные порты. Если они не заняты другим процессом, проверим раздел ListenOnlyList, правильно ли он настроен.

Откройте командную строку, предоставив ей доступ администратора, с помощью поисковой системы Windows. Для запуска утилиты Netstat.exe выполните команду:

netstat -ano

При отображении результатов, прокрутите список активных подключений и проверьте, занятии ли порты 80и 443 другим процессом.

При их использовании отображаемая информация позволит определить причину ошибки. Для этого поищите в интернете конкретные шаги по разрешению конфликта в соответствии с PID-порта.

Если порты не используются, закройте командную строку и запустите Редактор реестра командой regedit из окна Win + R.

На левой панели навигации перейдите в следующее расположение:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList

Если по указанному пути ListenOnlyList отсутствует, не нужно его создавать, поскольку по умолчанию используется IP-адрес 0.0.0.0.

Перед редактированием раздела нужно становить службу HTTP, на которой работает IIS. Поэтому временно сверните редактор реестра, поскольку сейчас вернемся к нему.

Снова откройте командную строку с правами администратора.

В консоли выполните указанную команду, чтобы остановить службу HTTP, ответственную за запуск IIS:

net stop http

Чтобы продолжить операцию, введите «Y» и нажмите на Enter. После успешного завершения закройте консоль и вернитесь в редактора реестра.

Перейдите на правую панель раздела ListenOnlyList и убедитесь, что он содержит допустимые IP-адреса. При обнаружении недопустимых адресов, удалите их.

Если присутствует адрес 0.0.0.0, нужно удалить все остальные IP-адреса. После закройте редактор и перезагрузите ПК.

После перезагрузки служба HTTP должна быть запущена автоматически. Если этого не произошло, в командной строке с доступом администратора выполните:

net start http

Если отобразится сообщение, что запрошенная служба уже запущена, следуйте далее.

Попробуйте запустить службу из оснастки IIS MMC. После этого больше не должны сталкиваться с ошибкой, когда процессу не удается получить доступ к файлу, поскольку файл занят другим процессом.

Ссылка на основную публикацию