Чому SYSTEM продовжить блокувати ручки виконуваних файлів після закінчення програми?


24

Я бачу дивну поведінку на своїй машині Windows 7; виявляється, що коли виконується виконуваний файл, система SYSTEM зберігає ручку до нього відкритою протягом наступної хвилини або близько того. Ось моя остання зустріч:

Я встановив Steam, який запускає after.exe після встановлення, щоб оновити себе. Здається, це робиться, написавши тимчасову копію себе, запустивши її для завантаження, а потім перезаписавши оригінальну копію виконуваного файлу. У моєму випадку це не вдалося, стверджуючи, що steam.exe не вдалося видалити.

Я відкрив папку і спробував видалити steam.exe вручну, але Windows стверджував, що я не маю дозволу. Мій обліковий запис - адміністратор, і це єдиний обліковий запис користувача на цій машині. Але про всяк випадок я запустив Провідник як адміністратор, але все-таки не міг видалити файл. Я вивів "Властивості" файлу на вкладку "Безпека", але він показав лише повідомлення про те, що я не маю дозволу на перегляд дозволів.

Далі я підняв Провідник процесів, щоб побачити, чи щось заблокувало файл. СИСТЕМА (PID 4) так і зробила, але коли я намагався закрити ручку файлу, вона призвела до помилки, вказуючи, що ручка була недійсною. Я спробував переглянути властивості файлової обробки, але я також не мав дозволу на це.

Я припинив усе, крім нескінченних системних процесів, і припинив усі сервіси, на які я вмів, включаючи все, що стосується AV та брандмауера, але проблема продовжує з'являтися. Я спробував використовувати "takeown", щоб дати власність на файл, але він стверджує, що я не маю дозволу на це. Інші люди заявляли про успіх, використовуючи інструмент під назвою "Unlocker", але у нього була та сама проблема, що і у процесорі Explorer у закритті файлової ручки.

Я давно відключив Windows Indexing & Search і виключив C: \ з індексації, тому відповідь на це питання не стосується мене.

Щоразу, приблизно через хвилину, ручка зникає і файл негайно видаляється; Мабуть, спроба оновлення видалити його встала в чергу і, нарешті, закінчилася, коли файл більше не був заблокований. На жаль, оновлення вже припинено і не може відновитись. І коли я перевстановлюю, звичайно, намагається запустити steam.exe знову, і я повернуся до квадратного.

Моє запитання: чому ці ручки звисають навколо, і як я можу запобігти цьому?

Редагувати: Ось додаткова інформація, яку вимагають коментарі:

C:\>fltmc instances
Filter                Volume Name                              Altitude        Instance Name      Frame  VlStatus
--------------------  -------------------------------------  ------------  ---------------------  -----  --------
KLIF                  \Device\Mup                             320400       KLIF                     0
KLIF                  C:                                      320400       KLIF                     0
KLIF                                                          320400       KLIF                     0
luafv                 C:                                      135000       luafv                    0
FileInfo              \Device\Mup                              45000       FileInfo                 0
FileInfo              C:                                       45000       FileInfo                 0
FileInfo                                                       45000       FileInfo                 0

Редагувати: GMER вказує на те, що мій антивірус (Касперський) деяким чином все ще активний, незважаючи на те, що він відключив його від власного графічного інтерфейсу, і його сервіс припинено.

AttachedDevice  \Driver\tdx \Device\Ip     kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\Tcp    kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\Udp    kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\RawIp  kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)

Але все це здається для мережевих служб; Я не бачу нічого, що стосується файлової системи. Чи може будь-яке з них стати причиною проблеми?

Редагувати: Я відключив фільтр Kaspersky KLIF, але проблема з блокуванням залишається.

Редагувати: Я вирішив конкретну проблему з Steam, встановивши, примусово припинивши інсталятор, перш ніж він міг запустити steam.exe, потім перезапустив у безпечному режимі і запустив його там. Тож, очевидно, що блокування виконуваного файлу немає в безпечному режимі.

Хоча я вирішив саме цей випадок, проблема виникає і в іншому місці, тому я все одно хотів би зрозуміти, що відбувається.


3
"Система" - це псевдопроцес, який представляє (грубо кажучи) ядро ​​Windows. Більше інформації про вашу конфігурацію (наприклад, які драйвери фільтрів у користувача) знадобляться, щоб дати чітку відповідь.
0xC0000022L

Який найкращий спосіб отримати цю додаткову інформацію?
DNS

якщо це міні-фільтри, спробуйте перевірити, fltmcчи це застарілі фільтри, вам знадобиться такий інструмент, як GMER, щоб перелічити відфільтровані об’єкти. Я знаю, що це не головна мета GMER, але це може бути використане таким чином. Тут також був якийсь інструмент від OSR, але я не пам’ятаю його назви. Відповім ще раз, якщо я пам’ятаю.
0xC0000022L

Це оптимізація для програм, які неодноразово закривають та повторно відкривають файли. Послуга "Досвід застосування" перемагає оптимізацію для особливих випадків, таких як спроба видалити з Провідника Windows, поки ручка все ще кешується.
user165568

Відповіді:


20

Зробіть наступне:

  1. Вимкнути індексування проблемного місця.

  2. Увімкніть послугу "Досвід застосування" та встановіть її на "Автоматично".

Це все.

Якщо ваша проблема все ще зберігається, це може бути Superfetch, хоча відключення не принесло мені удачі.


5
№2 (Увімкнення послуги "Досвід застосування") працював для мене, дякую! Це було справді болем при налагодженні мого програмного забезпечення LIVEditor (редактор живого html), оскільки мені доводиться неодноразово перекомпілювати EXE.
Едвін Іп

1
Індексування не те, що я хотів відключити, але, на щастя, просто встановив Досвід застосування на Автоматичний. Не можу повірити, що я жив із цією проблемою останні 5 років, коли виправити це було так просто.
Мардред

повз тебе, я тебе люблю !!
ентузіазм1,

Почав AeLookupSvcпрацювати, але чому? Що це за таємнича служба?
cdlvcdlv

6

KLIF - драйвер Kaspersky AV. Швидше за все, це стосується цього.

Моя дія в такому випадку полягала б у тому, щоб зв’язатися з Касперським і попросити поради.

Однак, є ще одна річ , яку ви можете спробувати перший: відключити драйвер (в HKLM\SYSTEM\CurrentControlSet\Services), шукаючи KLIFабо що - щось подібне , як ім'я ключа і встановивши REG_DWORDзначення імені Startв 4(що означає відключений), то перезавантаження. Це повинно запобігти завантаженню драйвера фільтра KAV. Потім ви можете використовувати fltmcдля підтвердження результату.

Вихід від GMER, який ви надали, не має значення для даного випадку, оскільки це вплине лише на мережеві з'єднання, а не на файлові операції. Здається, у вас було встановлено щось на кшталт Kaspersky Internet Security (або все-таки спокійно працює на вашій машині).

Редагувати: просто FYI luafvвідповідає за віртуалізацію FS спільно з UAC. Тобто, якщо у вас немає доступу до файлу, він знаходиться в окремій папці всередині вашого профілю. FileInfoналежить до SuperFetch - що насправді може бути частиною вашої проблеми, але у мене не було подібної проблеми в Windows 7. Зазвичай не рекомендується вимикати SuperFetch, хоча можна.


Це не дозволило б мені змінити значення цього ключа, тому я перезапустив у безпечному режимі і вніс зміни. При перезапуску записи KLIF відходять від виходу fltmc, але проблема блокування залишається.
DNS

Я додав трохи більше інформації; дивіться мою останню редакцію цього питання.
DNS

@DNS: Ви намагалися отримати вихід fltmcу безпечному режимі? Цілком можливо, що SuperFetch не активний. Коли ви читаєте на SuperFetch, це здається, що ваш опис про те, що трохи більше тримати ручку, може бути правдоподібним.
0xC0000022L

Це дуже гарна думка, але на жаль, і FileInfo, і luafv були активними в безпечному режимі.
DNS

Ці сучасні пакети "Інтернет-безпеки" - це занадто роздуті речі, які рідко приносять користь. MSE + здоровий глузд повинен бути достатнім.
kinokijuf

1

У мене виникла ця проблема, коли Java Executable було відкрито, і у мене був відключений досвід роботи програми (пошук Windows також відключений), встановивши досвід програми для автоматичного запуску, виправили це для мене. Спасибі!!! (У мене також були проблеми з тим, що файли не зберігаються цілу хвилину і не вдається видалити файли до однієї хвилини після того, як я закрив їх ...


Як вимкнути роботу програми?
Саймон Шихан

Будь-яка точка управління службами Windows зробить - я використовую Пуск >> Запуск >> "services.msc" (введіть) >> клацніть правою кнопкою миші "досвід роботи програми" >> клацніть лівою кнопкою миші "властивості" >> виберіть вкладку "загальне" (за замовчуванням)> > випадаюче поле списку "тип запуску" >> виберіть автоматичний (клацання лівою кнопкою миші) >> натисніть "застосувати"
David K

1

Це трапилося зі мною одного разу, і виявилося, що це віддалений комп'ютер, у якому була відкрита папка спільного доступу.

  1. Використовуйте Handle, щоб дізнатися, який процес містить файл
  2. (У моєму випадку це була Система)
  3. Спробуйте закрити ручки: handle.exe -c E14 -p 4. Ваша ручка файлу буде знайдена у результатах пошуку вашої ручки файлу, і Processid, ймовірно, буде однаковою для системи.
  4. Це вихід Error closing handle: T
  5. Погугливши це, я виявив, що це пов'язано з мережею
  6. Я знайшов на іншій машині, я фактично відкрив папку. Закрили його. Все добре.

0

У мене виникла ця проблема при спробі перейменувати папку. Мені довелося зупинити серверну службу під час виконання перейменування. Просто перезапуск не допоміг, оскільки системний процес повторно заблокував папку, як тільки серверна служба перезапустилася. Це, ймовірно, стосуватиметься і згаданого тут питання .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.