Я просматривал рабочий календарь, когда почтовая программа Outlook 2010 внезапно сообщила об ошибке и закрылась. После перезапуска она не смогла открыть OST-файл, и сегодня я расскажу, как решил эту проблему за три минуты.
При запуске программа выдавала такую ошибку:
На работе у меня ОС и программы с английским интерфейсом, поэтому я приведу эквивалентный текст ошибки из русской версии Office.
Выполнен выход из Microsoft Outlook без правильного закрытия файла данных Outlook. Необходимо перезапустить Microsoft Outlook. Если ошибка повторится, обратитесь в службу поддержки.
Сообщение не блистало информативностью, а запуск почтового клиента в безопасном режиме, удерживая нажатой клавишу Ctrl, ничего не менял.
Я открыл папку программы и запустил диагностическую утилиту scanpst.exe. Она не смогла исправить проблему, но задала конкретное направление для поиска.
Суть сообщения сводилась к тому, что OST-файл занят каким-то другим приложением, что и являлось препятствием для Outlook. Вы уже догадались, какую утилиту я запустил дальше?
В Process Explorer я нажал Ctrl + F и ввел в поиск .ost. В результатах немедленно отобразился «захватчик». Щелкнув по нему, я перешел в нижнюю панель Process Explorer и выбрал в контекстном меню команду Close Handle.
Это решило проблему! Почтовая программа запустилась нормально, и я вернулся к работе.
Что делать, если веб-камера используется другим приложением
В комментариях читатель Игорь задал вопрос, можно ли использовать Process Explorer, чтобы определить, какое приложение использует веб-камеру. Да, процесс аналогичный, но искать нужно:
#vid
Я в курсе, что существует Unlocker, но его надо было еще скачать, а утилита Process Explorer находилась под рукой. К тому же, мораль записи не только в этих двух программах. Ведь прежде чем применять их, нужно было выйти на причину проблемы.
Upd. 11-Мар-13. Хотелось бы дополнить заметку моментами, всплывшими в ее обсуждении:
- Если ничего нет под рукой, можно попытаться переименовать файл. Проводник может подсказать программу, использующую его.
- В Windows 7 и выше можно воспользоваться встроенной программой «Монитор ресурсов» (resmon), где на вкладке CPU есть поиск дескрипторов.
- Утилита NoVirus Thanks FileGovernor (описание)
- Утилита NirSoft OpenFilesView (работает с ограничениями на х64).
А вам приходилось использовать Unlocker или Process Explorer в подобных ситуациях? Напишите в комментариях, какую из утилит вы применяли и в чем была проблема!
Дмитрий
Тоже ничего.
Интересная программа. Показала, что процесс System (после бэкапа на внешний жёсткий диск) держит открытыми файлы метаданных из папки \$Extend и \System Volume Information. Однако как закрыть эти файлы и безопасно извлечь диск, непонятно.
»
Vadim Sterkin
Попробуйте аккуратно, двумя пальцами :)
Дмитрий
Спасибо за дельный совет! :-)
Upd: Process Explorer тоже показывает открытые файлы и токены при поиске по имени диска.
ЁжЫГ
К сожалению это поможет только в случаях если приложение использует только этот файл, а если например это тот же проводник или какая-нибудь системная служба… да пусть будет тот же svchost (один из запущенных), в этом случае убивать его, использующего в данный момент еще сотню файлов — слегка неправильно :)
Пользуюсь обеими программами, Unlocker когда надо удалить пачку файлов, реже папок, потому что доступен в контекстном меню, соответственно — хоткеи. Когда же надо не столько разблокировать, сколько именно разобраться, что и чем заняло нужный файл/папку, однозначно — Process Explorer.
ЁжЫГ
ЁжЫГ,
да, про заблокированные устройства
а так же… ну там, потоки и прочую метафизику я как-то забыл :-[
akurash
Для таких целей мне удобно использовать handle.exe от Sysinternals (
http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx). Правда, в чистом виде утилита не слишком удобна (требуется работать с командной строкой), но вместе с Far Manager, например, меня полностью устраивает.
Для достижения этого удобства в пользовательское меню Far Manager (которое вызывается по F2) нужно добавить новый пункт. Например, так:
Горячая клавиша: F2
Метка: Handle — кто посмел файл трогать?
Команды:
Теперь в Far Manager достаточно поставить курсор на нужный файл и дважды нажать F2. В результате в блокноте будет открыт текстовый файл, в котором можно увидеть искомый список процессов. Помимо самих процессов также можно видеть и имена пользователей, от имени которых эти процессы запущены (особенно полезно при работе на серверах терминалов).
Текстовый файл удаляется после небольшой задержки, поэтому никаких следов не остается.
Да, забыл упомянуть: сама утилита handle.exe при этом должна находиться в зоне досягаемости (например, можно скопировать ее в системный каталог Windows или прописать путь к ней в переменной среды %PATH%).
Vadim Sterkin
В принципе, это консольная вариация использования Process Explorer. Может, это и удобнее, если вы делаете такое каждый день, но для разовой диагностики многовато телодвижений :)
Яр
Последнее время использую для решения подобных задач утилиту KillSwitch.Производитель-Comodo.Не думаю что это панацея от всех болезней….Но в некоторых моментах,пожалуй,она превосходит,вышеупомянутый Process Explorer.
http://s020.radikal.ru/i713/1304/a6/50c334997f24.jpg
Абу Яхъя
Тоже проблема с камерой (встроенной) -> в скайпе написано «занята другим приложением». Process Explorer выдаёт 12 процессов System [type: SymbolicLink]. Закрыть их не удаётся. Не подскажете, в чём может быть проблема. (При установке системы камера работала помнится.)
Скриншот:
http://i47.fastpic.ru/big/2013/0502/e3/68f4efbd123521023e6843b0b0d228e3.jpg
Vadim Sterkin
Двойной щелчок по результату должен показать процесс в нижней панели Process Explorer.
Абу Яхъя
Да, я нажимал. Вот полный скриншот:
http://i47.fastpic.ru/big/2013/0502/a3/26f53eec6405ca1068d276db95d92fa3.jpg
При попытке закрыть появляется ошибка:
http://i48.fastpic.ru/big/2013/0502/d3/1629c16a046c35abc09786378dbc32d3.jpg
Vadim Sterkin
Tут нет сторонних процессов, поскольку все хэндлы в списке относятся к веб-камере, концентратору USB и кард-ридеру Realtek. Попробуйте отключить последний, проверьте работу камеры в Skype в безопасном режиме.
Абу Яхъя
Отключил кард-ридер в диспетчере устройств и
камера заработала сразу без перезагрузки!!!
Большое спасибо.
Даже в голову не пришло, что под #vid
может быть что-то, кроме камеры.
Vadim Sterkin
Рад за вас.
Открываете Google, вводите туда VID_xxxx&PID_xxxx, где хххх — цифры из списка. Сразу все станет ясно.
Кир Ермин
Здравствуйте.
Следующий вопрос: не могу переименовать папку, поиск в Process Explorer сначала напомнил мне, что содержимое стоит на раздаче торрентом, но после прекращения раздачи и проверки, что процессов, использующих папку, больше не обнаруживается, ситуация не поменялась.
Не могли бы объяснить, в чём может быть дело? Почему-то приложение не обнаруживает использующий папку процесс, или дело в чём-то другом?
Vadim Sterkin
Вы забыли указать ОС и рассказать, что происходит при попытке переименования. Но если РЕ не видит процессов, вопрос не связан с этой статьей. Обратитесь в форум OSZone, например, /режим телепата включен/ в тему Ошибка «Элемент не найден» при переименовании/перемещении папки /режим телепата выключен/
Кир Ермин
7ка 32х, происходит именно то, что «папка или файл используется другой программой».
Поскольку я уже перезапустил систему и переименовал, вряд ли удастся проверить, что это могло быть. Но контекст ситуаций был такой: в папке с названием на кириллице находился скачанный образ диска, этот образ был смонтирован в виртуальный привод и запускался оттуда. При этом ничего не происходило (в диспетчере задач тоже никакого процесса, связанного с запуском не заметил) , я связал это с наличием кириллицы в пути к образу. Тогда и попытался переименовать с указанным результатом.
После перезагрузки, переименования и установки PhysX дело пошло.
Aleksey Yorsh
Здравствуйте Вадим!
А вот как определить процесс, если этим процессом является драйвер?
Unlocer пишет, что процесс не блокирован, но удалить, переместить, переименовать файл можно только при перезагрузке.
Ни Process Explorer, ни другие утилиты не пишут каким процессом занят файл, если этим процессом является какой-нибудь драйвер.
Я уже знаю, допустим, если файл не удаляется, и никакие утилиты не показывают каким процессом занят файл, значит во всем виноват какой-то драйвер.
Я уже по этому поводу хотел писать на форум OSZone, но встретил Вашу статью, правда поздновато, уже 3 года прошло с 2013-го.
Так есть или нет какой-нибудь способ определить такой драйвер?
Vadim Sterkin
А зачем вам удалять файлы, которые использует драйвер? Kакая в этом практическая необходимость? Что вы пытаетесь удалить и зачем?
Aleksey Yorsh
Вадим, у меня нет мыслей удалять файлы, которые использует драйвер.
Но вопрос чисто теоретический, как определить, если файл используется драйвером, то какой именно драйвер его использует?
Как вычислить этот драйвер?
Ведь это может быть драйвер, установленный вредоносной программой.
Vadim Sterkin
Алексей, я предпочитаю практические вопросы, когда есть от чего отталкиваться. Ваш теоретический пример с вредоносными программами тоже не годится, так никто не лечит.
Aleksey Yorsh
Извини Вадим, может я не так выразился.
Просто методик определить, каким процессом занят файл, если этот процесс *.ехе полно.
Но я не встречал ни одной методики как определить, каким процессом занят файл, если этот процесс драйвер.
Неужели никак не определить такой драйвер, который блокирует какой-нибудь файл ???
Vadim Sterkin
Алексей, в последний раз предлагаю вам привести конкретный пример.
Aleksey Yorsh
Вадим, извиняюсь, что так долго не отвечал, не было примера, а ты просил конкретно.
То, о чем я писал, я писал на память, что такие файлы в папке «C:\Windows\Temp» создает один из драйверов Kaspersky Cristal. Но на тот момент у меня уже стоял Kaspersky Free, который таких файлов не создает. Обратные перестановки ради примера я тогда делать не стал.
Но вот появился еще один пример.
В папке «C:\Windows\Temp» появился фай «TmpFile1».
Удалить его ничем не возможно.
Определить, какая программа его создает, тоже не получается, потому что его создает не программа, а драйвер.
И этот драйвер был найден, но не программными средствами, а методом тыка, путем гугления проблемы, путем проб и ошибок.
Это драйвер aksdf.sys:
— Description: Aladdin Data Mini-Filter Driver
— ImagePath: C:\Windows\system32\drivers\aksdf.sys
— Start: 2 — это автозагрузка (0 — загрузочный, 1 — системный, 2 — автозагрузка, 3 — вручную, 4 — отключен)
Короче, с какой-то программой, даже не знаю какой, установился алладиновский драйвер защиты (Driver Sentinel HASP).
Если проделать операции «Диспетчер устройств >>> Вид >>> Показать скрытые устройства >>> Драйверы несамонастраиваемых устройств >>> aksdf >>> Свойства >>> Драйвер >>> Остановить», то файл «C:\Windows\Temp\TmpFile1» сразу же исчезает, но при включении драйвера он сразу же появляется опять.
Вот тогда я и спрашивал Вас Вадим, а как определить каким приложением занят файл, если этим приложением является драйвер?
Vadim Sterkin
Я бы начал с [видео] Process Monitor: как отследить приложение, записывающее непонятные файлы на диск
Aleksey Yorsh
Спасибо Вадим за совет.
Я уже и сам начал думать, что драйвер – это системный процесс, и сторонних утилит, способных копаться в системных процессах, практически нет. Помочь моли бы Microfoft (а оно ей надо) или Марк Руссинович, и тоже подумывал об утилите Process Monitor.
Ваше видео (об отслеживание файловой активности) и видео Василия Гусева (о настройке запуска загрузки программы одновременно с загрузкой ядра Windows), помогли грамотно настроить Process Monitor, который быстро выловил виновный драйвер.
В стеке оказалось 4 программы: Ntoskrnl.exe, aksdf.sys, fltMgr.sys, ntfs.sys.
Получается, что ядро системы Ntoskrnl.exe грузит драйвер защиты Sentinel HASP aksdf.sys, он дает команду на создание файла C:\Windows\Temp\TmpFile1 драйверу фильтра файловой системы fltMgr.sys, а то уже передает эту команду конкретно исполнителю, драйверу файловой системы NTFS ntfs.sys.
Еще раз спасибо Вадим, вроде бы с этим вопросом разобрался.
Vadim Sterkin
Алексей, рад, что у вас все получилось. И это было несложно :)