86

Будучи добропорядочным гражданином, я щелкаю левой кнопкой мыши на значке "Безопасное извлечение устройства" на панели задач и выбираю свой USB-накопитель, чтобы отключить его.

Тогда я получаю сообщение:

Windows не может остановить ваше устройство тома Generic, потому что оно используется. Закройте все программы или окна, которые могут использовать устройство, а затем повторите попытку позже.

Конечно, будучи операционной системой, она точно знает , какие приложения используют мое устройство. Так почему это не говорит мне?

Или есть способ, который я могу узнать?

8 ответов8

98

Более простой метод: Windows (по крайней мере, 10, AFAIK) создает запись в журнале событий, когда вы пытаетесь извлечь съемный диск, и вы не можете этого сделать, потому что процесс заблокирован. Два идентификатора события 225 будут отображать идентификатор процесса и имя процесса, ответственного за блокировку.

Шаг за шагом:

1) Запустить просмотрщик событий

2) Откройте "Журналы Windows", затем "Система".

3) Щелкните правой кнопкой мыши "Система" и выберите "Фильтровать текущий журнал"

4) В появившемся диалоговом окне введите "225" (без кавычек), где написано "Все идентификаторы событий".

5) Затем вы увидите все события, связанные с невозможностью извлечения, потому что процесс заблокировал диск.

6) Посмотрите на временные метки на всех этих записях и выясните, какие из них относятся к фактическому времени, когда вы пытались извлечь диск.

7) Примите соответствующие меры. Изящное завершение задачи (закрытие программы, которая имеет блокировку) в большинстве случаев нормально. Остановка службы поиска Windows также в порядке. Остановка антивирусного сканирования должна быть в порядке (если вы не подозреваете, что у вас есть какие-либо вирусы в то время). Зайдя в диспетчер задач и убив процесс, возможно, не будет в порядке. Как с этим бороться, выходит за рамки этого вопроса.

8) (Сохранить вид ...) на панели "Действия" (в правом фрейме) вы можете «Сохранить фильтр в пользовательском представлении ...», чтобы найти его в "Пользовательских представлениях" (в левом фрейме над « Журналы Windows ")

Идентификатор процесса: Запись вьюера событий

Имя процесса: Запись вьюера событий

8) Если у вас нет другой записи с именем процесса, системный процесс (идентификатор процесса 4) удерживает ваш диск. Чтобы обойти это, вам нужно перейти к управлению дисками и перевести диск, который вы хотите извлечь, в автономный режим. Если файл находится на вашем загрузочном диске, вы не можете перевести его в автономный режим. В этом случае см. Примечание ниже:

ОБНОВЛЕНИЕ 2018: я видел такие приложения, как WhatsApp Desktop, сохраняющие дескрипторы на Chrome Canary через системный процесс. Поскольку вы не можете извлечь загрузочный диск (поскольку он используется), решение было использовать другую изящную утилиту Sysinternals , названную Handle. После того как вы закроете программу с заблокированным файлом, запустите дескриптор и запустите (в качестве примера) handle64 "Chrome SxS\Application\chrome.exe" чтобы проверить, присутствуют ли все еще маркеры в файле, который имеет блокировку PID 4. Методом проб и ошибок закрывайте каждую запущенную программу, пока в заблокированном файле больше не останется дескрипторов.

Лучший метод (платный)

Скачайте и запустите SafelyRemove. Он помогает вам извлечь диск и, если он не может этого сделать, показывает, какие процессы заблокированы на нем:

52

Вы можете использовать Sysinternals Process Explorer, чтобы найти дескриптор для любых открытых файлов. Просто выберите меню Find и выберите Find Handle or DLL . В открывшемся диалоговом окне введите букву диска в поле поиска. Результаты поиска должны показывать все файлы, которые открыты с диска и в каком процессе они открыты.

5

Вы также можете использовать командную строку для запроса журнала Windows, используя wevtutil.exe (начиная с Windows 7), зная, что Windows Kernel-PnP использует событие 225 для регистрации в системе (всегда с идентификатором 4 процесса) отказа от удаления или удаления устройство USB\VID _ #### & PID _ ############ (где # обозначают шестнадцатеричные числа).

wevtutil qe System /q:"*[System[(EventID=225)]]" /c:5 /f:text /rd:true
  • qe System: запрос событий из системного журнала
  • /q: запрос с XPath
  • EventID=225 означает, что система отклонила запрос на удаление
  • /c: 5: количество записей для извлечения (5 здесь)
  • /f: текст: формат (по умолчанию xml)
  • /rd: true: обратный порядок (сначала самый новый)

Я использую это в пакетном скрипте.

5

Для меня (Windows 7).

  1. Нажмите клавишу Windows
  2. В разделе "Поиск программ и файлов" введите: diskmgmt.msc
  3. В списке поиска найдите запись и щелкните правой кнопкой мыши - выберите "Запуск от имени администратора".
  4. Введите учетные данные администратора для запуска "Управление дисками" (при необходимости)
  5. Найдите оскорбительный USB-накопитель, который не будет извлечен в списке дисков
  6. Левая панель, правой кнопкой мыши выберите « Извлечь »
  7. Дескрипторы "следует" закрыть - вы всегда можете дважды проверить в sys innerals process explorer

Примечание. Значок панели задач "Безопасное извлечение оборудования и извлечение носителя" больше не отображает USB-накопитель - всего три точки

  1. Физически удалить диск
5

Вот быстрая команда PowerShell, чтобы запросить журнал событий и показать, какое приложение блокирует извлечение диска (у меня работает с Windows 10, возможно, работает и с 7/8)

Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

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

PS C:\Users\Jonathan> Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | \Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   14692 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.
   14693 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.
1

Вы можете запустить resmon.exe (через WIN+R), перейти на диск> Активность диска> Сортировать по файлу. Теперь вы можете видеть все файлы, к которым обращается система, и какие процессы обращаются к ним, упорядоченные по пути к файлу (который запускается между прочим) с буквой диска). Может работать не во всех случаях, но это простой подход.

Перезагрузка компьютера кажется "освободить" использование устройства. Также для более быстрого удаления вы можете отключить кеширование окон в разделе "Оборудование" вашего устройства, иногда для загрузки кэша на внешний диск Windows может потребоваться больше времени, чем ожидалось, и будет отображаться это сообщение о том, что устройство используется (поскольку оно будет Сама винда)

0

Если бы USB, о котором сообщалось, что windows используется ... такой же, как и все остальные здесь.

В Windows 10 Ctrl+Alt+Del попадает в диспетчер задач.

Найти с помощью прокрутки - Windows Explorer. и выделить.

Внизу справа есть приятная дружественная кнопка под названием "Процесс перезапуска"

Двойная тройная проверка, что "Проводник Windows" - единственное, что выделено.

Щелкните левой кнопкой мыши дружественную кнопку "Перезапустить процесс".

У меня был только один Проводник, у других иногда есть два. Просто отметьте, какой из них возвращается. Попробуйте и закройте / извлеките USB. Мой работал нормально, закройте USB.

Если ваш не извлекает / закрывает, то, вероятно, это был другой проводник. Попробуйте еще раз и перезапустите его. Удачи.

0

Если вы открываете "Мой компьютер", а ваш диск не указан в заголовках "Съемное хранилище", то Windows почему-то рассматривает его как фиксированный системный ресурс. Вам придется размонтировать все разделы на диске.

В этом случае откройте "Управление компьютером", затем перейдите в "Управление дисками". Для каждого раздела на устройстве щелкните правой кнопкой мыши раздел, выберите "Изменить буквы диска и пути" и удалите все буквы диска, назначенные этому разделу. Как только вы это сделаете, вы обнаружите, что функция "безопасного извлечения" работает так, как вы надеялись.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .