У меня возникли проблемы с зависанием explorer.exe при создании новой папки.
Если я использую Analyze Wait Chain в Resource Monitor, он говорит: «Один или несколько потоков explorer.exe ожидают завершения сетевого ввода-вывода».
Когда я смотрю на проблемную ветку в Process Explorer, она не обнаруживает ничего интересного:
ntdll.dll!ZwWaitForMultipleObjects+0xa
KERNELBASE.dll!GetCurrentThread+0x36
kernel32.dll!WaitForMultipleObjectsEx+0xb3
USER32.dll!PeekMessageW+0x1cd
USER32.dll!MsgWaitForMultipleObjectsEx+0x2a
USER32.dll!MsgWaitForMultipleObjects+0x20
SHELL32.dll!SHAppBarMessage+0x41e
SHELL32.dll!DragAcceptFiles+0x2a3c
SHELL32.dll!DragAcceptFiles+0x2a4f
SHELL32.dll!Ordinal211+0x124
SHELL32.dll!SHChangeNotification_Unlock+0x12f4
USER32.dll!GetSystemMetrics+0x2b1
USER32.dll!IsDialogMessageW+0x19b
USER32.dll!IsDialogMessageW+0x1e1
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!PeekMessageW+0xba
USER32.dll!PeekMessageW+0x89
SHELL32.dll!SHChangeNotification_Unlock+0xd9f
SHELL32.dll!Ordinal885+0x1407
SHLWAPI.dll!SHRegGetUSValueW+0x306
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
Пока я смотрел на потоки explorer.exe, я заметил довольно много, в которых говорится об ETW (трассировке событий для Windows), поэтому очевидно, что explorer.exe использует трассировку.
Поэтому я решил попробовать и пользователя TraceView.exe попытаться прослушать следы explorer.exe.
Проблема в том, что TraceView требует некоторых труднодоступных вещей ... либо pdbs, либо файлов CTL, либо файлов .TMF. Я попытался использовать explorer.pdb, поставляемый с Windows SDK, но это не сработало. Я не вижу explorer.exe в «названных провайдерах». И я понятия не имею, где найти файлы ctl или .TMF для explorer.exe.
Возникает вопрос: есть ли способ просмотреть сообщения трассировки ETW из проводника?
Или я просто не буду беспокоиться и вернусь к вековой технике отключения каждого расширения проводника одно за другим в надежде, что это одно из них. (Предпочитаю первое, поскольку мне нравится разбираться в вещах !!)
Я не знаю, видели ли вы их, но Марк Руссинович из Microsoft (бывший сотрудник SysInternals, который изначально написал Process Explorer) регулярно пишет в своем блоге статьи о диагностике проблем Windows с помощью инструментов Sysinternals.
Этот демонстрирует свой процесс, когда он пытается отследить периодическое зависание проводника (которое почти наверняка не то же самое, что ваше, но показывает процесс, который он использует) http://blogs.technet.com/markrussinovich/archive/2005/08/28/the-case-of-the-intermittent-and-annoying-explorer-hangs.aspx
Он использует другие методы (в том числе захват символов с серверов MS) для диагностики низкой производительности Windows здесь: http://blogs.technet.com/markrussinovich/archive/2008/09/24/3126858.aspx
Первое, что я бы сделал, это запустил chkdsk на рассматриваемом диске. Сначала исключите самые простые причины.
Решение, представленное Скоттом, работает идеально.
Я использую Windows 7 (64-разрядную версию) на Dell Inspiron 1564.
Кажется, это ошибка, присущая 7.
Это происходит со мной постоянно в Windows 7 после выхода из спящего режима. И «Новая папка», и «Переименовать папку» приводят к долгому зависанию explorer.exe. В конце концов возвращается, но убивает ту инерцию, которая у вас была. Немного неприятно видеть это на новом ноутбуке W7.
Мое решение: запустить диспетчер задач. Убить explorer.exe. Панель задач исчезнет. Файл -> Новая задача -> explorer.exe. Панель задач должна появиться снова. Закройте диспетчер задач
Проблема была немедленно устранена. Но он вернется сегодня вечером ...