Pourquoi SYSTEM continuerait-il à verrouiller les descripteurs de fichiers exécutables après la fermeture de l'application?


24

Je constate un comportement étrange sur ma machine Windows 7; il semble que lorsqu'un exécutable s'exécute, SYSTEM garde une poignée ouverte pendant environ une minute. Voici ma dernière rencontre:

J'ai installé Steam, qui démarre Steam.exe après l'installation pour se mettre à jour. Il semble le faire en écrivant une copie temporaire de lui-même, en le lançant pour effectuer le téléchargement, puis en écrasant la copie originale de l'exécutable. Dans mon cas, cela a échoué, affirmant que steam.exe n'a pas pu être supprimé.

J'ai ouvert le dossier et essayé de supprimer manuellement steam.exe, mais Windows a affirmé que je n'avais pas l'autorisation. Mon compte est administrateur et est le seul compte utilisateur sur cette machine. Mais juste au cas où, j'ai démarré Explorer en tant qu'administrateur, mais je n'ai toujours pas pu supprimer le fichier. J'ai fait apparaître les propriétés du fichier dans l'onglet Sécurité, mais il n'a montré qu'un message disant que je n'avais pas l'autorisation d'afficher les autorisations.

Ensuite, j'ai fait apparaître Process Explorer pour voir si quelque chose avait un verrou sur le fichier. SYSTEM (PID 4) l'a fait, mais lorsque j'ai tenté de fermer le descripteur de fichier, il a produit une erreur indiquant que le descripteur n'était pas valide. J'ai essayé d'afficher les propriétés du descripteur de fichier, mais je n'avais pas non plus l'autorisation de le faire.

J'ai tout arrêté, sauf les processus système non terminables, et arrêté tous les services que je suis en mesure, y compris tout ce qui est lié à l'AV et au pare-feu, mais le problème persiste. J'ai essayé d'utiliser 'takeown' pour me donner la propriété du fichier, mais il prétend que je n'ai pas la permission de le faire. D'autres personnes ont affirmé avoir réussi à utiliser un outil appelé «Unlocker», mais il a rencontré le même problème que Process Explorer lors de la fermeture du descripteur de fichier.

J'ai depuis longtemps désactivé l'indexation et la recherche Windows et exclu C: \ de l'indexation, de sorte que la réponse à cette question ne s'applique pas à moi.

À chaque fois, après environ une minute, la poignée disparaît et le fichier est immédiatement supprimé; apparemment, la tentative du programme de mise à jour pour le supprimer a été mise en file d'attente et s'est finalement terminée une fois que le fichier n'a plus été verrouillé. Malheureusement, la mise à jour est déjà terminée et ne peut pas reprendre. Et lorsque je réinstalle, il essaie bien sûr d'exécuter à nouveau steam.exe, et je suis de retour à la case départ.

Ma question est: pourquoi ces poignées traînent-elles et comment puis-je les empêcher de le faire?

Modifier: Voici des informations supplémentaires demandées dans les commentaires:

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

Edit: GMER indique que mon antivirus (Kaspersky) est toujours actif d'une manière ou d'une autre, malgré sa désactivation à partir de sa propre interface graphique et que son service est arrêté.

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)

Mais tout cela semble être pour les services réseau; Je ne vois rien concernant le système de fichiers. Certains d'entre eux pourraient-ils être la cause du problème?

Edit: j'ai désactivé le filtre Kaspersky KLIF, mais le problème de verrouillage persiste.

Edit: J'ai résolu le problème spécifique de Steam en installant, en mettant fin au programme d'installation avant qu'il ne puisse lancer steam.exe, puis en redémarrant en mode sans échec et en l'exécutant. Donc, apparemment, tout ce qui verrouille l'exécutable n'est pas présent en mode sans échec.

Bien que j'aie résolu ce cas particulier, le problème se pose également ailleurs, donc j'aimerais toujours comprendre ce qui se passe.


3
"System" est un pseudo-processus qui représente (grosso modo) le noyau Windows. Plus d'informations sur votre configuration (par exemple quels pilotes de filtre sont dans l'utilisateur) seraient nécessaires pour donner une réponse définitive.
0xC0000022L

Quelle est la meilleure façon d'obtenir ces informations supplémentaires?
DNS

s'il s'agit de mini-filtres, essayez de vérifier fltmcs'il s'agit de filtres hérités, vous auriez besoin d'un outil tel que GMER pour répertorier les objets filtrés. Je sais que ce n'est pas l'objectif principal de GMER, mais il peut être utilisé de cette façon. Il y avait également un outil d'OSR, mais je ne me souviens pas de son nom. Répondra encore si je me souviens.
0xC0000022L

C'est une optimisation pour les programmes qui ferment et rouvrent des fichiers à plusieurs reprises. Le service "Application Experience" annule l'optimisation pour des cas particuliers comme essayer de supprimer de l'Explorateur Windows alors que le handle est toujours mis en cache.
user165568

Réponses:


20

Procédez comme suit:

  1. Désactivez l'indexation sur l'emplacement problématique.

  2. Activez le service "Application Experience" et réglez-le sur "Automatic".

C'est ça.

Si votre problème persiste, il peut s'agir de Superfetch, bien que la désactivation ne m'ait pas porté chance.


5
# 2 (Activer le service "Application Experience") a fonctionné pour moi, merci! C'était vraiment une douleur lors du débogage de mon logiciel LIVEditor (éditeur html en direct), car je dois recompiler à plusieurs reprises l'EXE.
Edwin Yip

1
L'indexation n'était pas quelque chose que je voulais désactiver, mais heureusement, le simple fait de définir Application Experience sur Automatic a fonctionné. Je ne peux pas croire que j'ai vécu ce problème au cours des 5 dernières années, alors que la solution était aussi simple.
Mordred

devant toi, je t'aime !!
enthousiaste le

Commencer à AeLookupSvctravailler, mais pourquoi? Quel est ce mystérieux service?
cdlvcdlv

6

KLIF est le pilote Kaspersky AV. Il est plutôt probable que cela ait à voir avec cela.

Mon plan d'action dans un tel cas serait de contacter Kaspersky et de lui demander conseil.

Cependant, il y a une autre chose que vous pouvez essayer d' abord: désactiver le pilote (sous HKLM\SYSTEM\CurrentControlSet\Services) en recherchant KLIFou quelque chose de similaire comme nom de clé et le réglage de la REG_DWORDvaleur nommée Startà 4( ce qui signifie désactivé), puis redémarrez. Cela devrait empêcher le chargement du pilote de filtre KAV. Vous pouvez ensuite utiliser fltmcpour vérifier le résultat.

La sortie de GMER que vous avez donnée n'est pas pertinente dans le cas présent car elle n'affecterait que les connexions réseau, pas les opérations sur les fichiers. Il semble que vous ayez installé quelque chose comme Kaspersky Internet Security (ou que vous l'ayez toujours dormant sur votre ordinateur).

Edit: juste FYI luafvest responsable de la virtualisation FS en collaboration avec UAC. Autrement dit, si vous n'avez pas accès à un fichier, il est placé dans un dossier séparé à l'intérieur de votre profil. FileInfoappartient à SuperFetch - qui pourrait en fait faire partie de votre problème, mais je n'ai pas eu de problème similaire sur Windows 7 moi-même. Il n'est généralement pas recommandé de désactiver SuperFetch, bien que ce soit possible.


Cela ne me permettrait pas de modifier la valeur de cette clé, j'ai donc redémarré en mode sans échec et y ai apporté la modification. Au redémarrage, les entrées KLIF ont disparu de la sortie fltmc, mais le problème de verrouillage persiste.
DNS

J'ai ajouté un peu plus d'informations; voir ma récente modification de la question.
DNS

@DNS: avez-vous essayé d'obtenir la sortie fltmcen mode sans échec? Il est fort possible que SuperFetch ne soit pas actif. Lorsque vous lisez sur SuperFetch, il semble que votre description de tenir un manche un peu plus longtemps puisse être plausible.
0xC0000022L

C'est une très bonne idée, mais hélas FileInfo et luafv étaient actifs en mode sans échec.
DNS

Ces suites modernes de «sécurité Internet» sont exagérées et font rarement du bien. MSE + le bon sens devrait suffire.
kinokijuf

1

J'avais ce problème avec un exécutable Java maintenu ouvert et j'avais une expérience d'application désactivée ... (la recherche Windows était également désactivée). Merci!!! (J'avais également eu des problèmes avec les fichiers qui n'étaient pas enregistrés pendant une minute entière et qui ne pouvaient pas supprimer des fichiers jusqu'à une minute après les avoir fermés ...


Comment désactivez-vous l'expérience d'application?
Simon Sheehan

Tout point de contrôle des services Windows fera l'affaire - J'utilise Démarrer >> Exécuter >> "services.msc" (entrée) >> clic droit "expérience d'application" >> clic gauche "propriétés" >> sélectionnez l'onglet "général" (par défaut)> > liste déroulante "type de démarrage" >> sélectionnez automatique (clic gauche) >> cliquez sur "appliquer"
David K

1

Cela m'est arrivé une fois, et il s'est avéré qu'il s'agissait d'un ordinateur distant sur lequel le dossier de partage était ouvert.

  1. Utilisez Handle pour savoir quel processus contient le fichier
  2. (C'était System dans mon cas)
  3. Essayez de fermer la poignée: handle.exe -c E14 -p 4. Votre descripteur de fichier se trouvera dans la sortie de votre recherche pour le descripteur de fichier, et l'ID de processus sera probablement le même pour le système.
  4. Il a produit Error closing handle: T
  5. Googler ceci, j'ai trouvé cela lié au réseau
  6. J'ai trouvé sur une autre machine, j'avais en fait le dossier ouvert. Fermé. Tout bon.

0

J'ai eu ce problème en essayant de renommer un dossier. J'ai dû arrêter le service serveur lors de l'exécution du changement de nom. Le redémarrage n'a pas aidé, car le processus système a reverrouillé le dossier dès que le service serveur a redémarré. Cela résoudrait probablement le problème mentionné ici également.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.