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

Несколько пользователей Windows сталкиваются с ошибкой « Процесс не может получить доступ к файлу, поскольку он используется другим процессом» . В большинстве случаев проблема возникает, когда пользователь пытается выполнить команду netsh. Некоторые пользователи сообщают, что для них появляется сообщение об ошибке, когда они пытаются щелкнуть правой кнопкой мыши веб-сайт в оснастке IIS (Internet Information Services) MMC (Microsoft Management Console).

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

Сообщается, что проблема возникает в Windows Vista, Windows 7, Windows 8.1, Windows 10 и в различных версиях Windows Server.

Что заставляет процесс использоваться другим процессом?

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

  • Команде требуются права администратора. Если вы столкнулись с ошибкой внутри терминала, скорее всего, у вас нет прав администратора для внесения изменений. Несколько пользователей в подобной ситуации смогли решить проблему, предоставив права администратора.
  • Другой процесс использует порт 80 или порт 443. Это типично для компьютеров, работающих под управлением IIS (Internet Information Services). Если другой процесс использует эти два порта, вы увидите это сообщение об ошибке.
  • Раздел реестра ListenOnlyList настроен неправильно. Другой распространенный сценарий IIS (службы IIS), который будет вызывать эту конкретную ошибку, - неправильно настроенный раздел реестра ListenOnlyList.

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

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

Давай начнем!

Метод 1: Запуск команды с правами администратора

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

Имейте в виду, что операция такого рода потребует прав администратора. Чтобы убедиться, что окно CMD, в котором вы пытаетесь выполнить действие, имеет права администратора, выполните следующие действия:

  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите « cmd » и нажмите Ctrl + Shift + Enter, чтобы открыть командную строку с повышенными привилегиями.

    Открытие окна командной строки с повышенными правами
  2. В ответ на запрос UAC (Контроль учетных записей пользователей) нажмите Да, чтобы предоставить права администратора.
  3. В командной строке с повышенными привилегиями еще раз введите команду и посмотрите, не появляется ли по-прежнему такое же сообщение об ошибке.

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

Способ 2: установка другого диапазона 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 

Примечание. Убедитесь, что терминал, на котором вы запускаете команду, имеет права администратора.

Если этот метод не разрешил конфликт или не был применим к ситуации, с которой вы столкнулись, перейдите к последнему методу.

Способ 3: разрешение конфликта портов IIS

Если вы столкнулись с проблемой при попытке щелкнуть правой кнопкой мыши элемент веб-сайта в оснастке IIS MMC (нажав Пуск, ничего не происходит), вам необходимо использовать утилиту Netstat.exe, чтобы определить, является ли другой процесс используя порт 80 и порт 443.

Эта проблема довольно распространена на компьютерах под управлением Microsoft IIS 6.0 и 7.0. На основании официальной документации Microsoft появится сообщение об ошибке, если к вашей текущей ситуации применимо одно из следующих условий:

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

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

Вот пошаговое руководство по всему этому:

  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите « cmd » и нажмите Ctrl + Shift + Enter, чтобы открыть командную строку с повышенными привилегиями. В ответ на запрос UAC (Контроль учетных записей) нажмите Да, чтобы предоставить административные привилегии.

    Открытие окна командной строки с повышенными правами
  2. В командной строке с повышенными привилегиями выполните следующую команду, чтобы запустить утилиту Netstat.exe :
     netstat -ano 
  3. После получения возврата прокрутите список активных подключений и убедитесь, что порты 50 и 443 активно используются другим процессом.

    Проверка, используются ли порты другим процессом

    Примечание. Если порты активно используются другим процессом, вам просто удалось определить источник вашей проблемы. В этом случае найдите в Интернете конкретные шаги по разрешению конфликта портов в соответствии с PID порта.

  4. Закройте командную строку с повышенными привилегиями, поскольку нам не понадобятся права администратора для следующих шагов.
  5. Если порты не используются активно, нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите « regedit » и нажмите Enter, чтобы открыть редактор реестра . В ответ на запрос UAC (Контроль учетных записей пользователей) нажмите Да, чтобы предоставить административные привилегии.

    Открытие утилиты редактора реестра
  6. Внутри редактора реестра используйте левую панель, чтобы перейти к следующему местоположению:
     HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters \ ListenOnlyList 

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

  7. Прежде чем продолжить и изменить подраздел ListenOnlyList, необходимо остановить службу HTTP, на которой запущен IIS. Поэтому поместите редактор реестра в фоновый режим, и мы вскоре к нему вернемся.
  8. Затем нажмите клавиши Windows + R, чтобы открыть диалоговое окно «Выполнить», введите « cmd » и нажмите Enter, чтобы открыть другое окно командной строки.

    Диалог запуска: cmd
  9. В командной строке Cmd выполните следующую команду и нажмите Enter, чтобы остановить службу HTTP, отвечающую за запуск IIS:
     чистый стоп http 
  10. Когда вас спросят, хотите ли вы продолжить эту операцию, введите «Y» и нажмите Enter, чтобы подтвердить операцию.

    Отключение службы HTTP
  11. Как только служба HTTP отключена, закройте окно командной строки и вернитесь в редактор реестра.
  12. С выбранным подразделом ListenOnlyList перейдите на правую панель и убедитесь, что он содержит действительные IP-адреса. Если вы обнаружили недопустимый IP-адрес, удалите его или измените его, чтобы отобразить запись с действительным IP-адресом.

    Удаление двоичных значений с недействительными IP-адресами

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

  13. Закройте редактор реестра и перезагрузите компьютер.
  14. При следующем запуске служба HTTP должна быть автоматически запущена. Но просто чтобы убедиться, нажмите клавишу Windows + R, чтобы открыть другое диалоговое окно «Выполнить». Затем введите « cmd » и нажмите Enter, чтобы открыть окно командной строки.

    Открытие обычного окна командной строки
  15. В новой открытой командной строке введите следующую команду, чтобы убедиться, что служба HTTP запущена:
     чистый старт http 

    Примечание. Если вам вернули сообщение о том, что «запрошенная служба уже запущена», можно начинать.

  16. Попробуйте запустить службу из оснастки консоли управления (MMC) Microsoft Internet Information Services (IIS). Вы больше не должны сталкиваться с ошибкой «процесс не может получить доступ к файлу, потому что он используется другим процессом» .

Интересные статьи