Question

Ce problème se pose de temps en temps au travail. Notre machine de construction peut avoir accès à ses fichiers via un partage de fichiers Windows normal. Si quelqu'un parcourt un dossier à distance sur la machine et laisse la fenêtre ouverte pendant la nuit, la construction échoue (comme elle le fait maintenant). La fenêtre de l'explorateur a laissé des points ouverts sur l'un des sous-dossiers de l'arborescence source. La construction supprime la source et effectue une nouvelle extraction avant la construction. La suppression échoue.

Pour l'instant, j'aimerais que la construction fonctionne. Je suis connecté depuis chez moi et je préfère ne pas redémarrer la machine de compilation. Je ne parviens pas à contacter la personne dont l'ordinateur recherche et les fichiers, et je ne peux pas redémarrer à distance leur ordinateur.

Lorsqu'un partage Windows a un verrou, le processus de verrouillage est défini sur Système. Je ne pense donc pas pouvoir le tuer, contrairement aux verrous normaux.

Est-ce que quelqu'un connaît un moyen de libérer le verrou sur un dossier partagé sans redémarrer l'ordinateur?

Était-ce utile?

La solution 2

Vous avez trouvé une solution.

  1. Recherchez le processus à l'aide de Processus Explorateur :

    1. Téléchargez et extrayez procexp.exe
    2. Dans Process Explorer, utilisez la recherche "Find Handle or DLL ...". commande à partir du " Trouver " menu
    3. Entrez le nom du répertoire qui a du mal à supprimer
    4. Une liste des fichiers ouverts correspondant à ce nom doit être affichée. Prenez quelques hypothèses et trouvez lequel ne parvient pas à être supprimé. Si le fichier est verrouillé par un partage Windows, le processus contenant le fichier sera Système
    5. Notez le répertoire qui est resté ouvert
  2. Téléchargez et installez Unlocker ( Avertissement : lien supprimé, car il contient des logiciels malveillants)

    .
    1. Installez Unlocker, désactivez l’option pour les extensions de l’explorateur et d’autres fichiers indésirables
  3. Déverrouiller le répertoire

    1. Ouvrez une fenêtre de commande et accédez à C: \ Program Files \ Unlocker
    2. Dans la fenêtre de commande, exécutez Unlocker.exe "le-chemin d'accès au dossier verrouillé"
    3. .
    4. Une boîte de dialogue apparaît confirmant le déverrouillage. Utilisez le bouton de déverrouillage pour déverrouiller le fichier

Le répertoire doit maintenant être déverrouillé et peut maintenant être supprimé.

Autres conseils

Si vous êtes administrateur sur le serveur partageant le fichier sur le réseau, vous pouvez utiliser la fonctionnalité intégrée de Windows:

  1. Démarrer & # 8594; Mon ordinateur & # 8594; Cliquez avec le bouton droit de la souris & # 8594; Gérer vous amène à l'ordinateur Console de gestion
  2. Dans le menu de gauche, accédez à Outils système & # 8594; Dossiers partagés
  3. Vous pouvez afficher les partages, les sessions & amp; Ouvrir les fichiers ici. Cela vous permet de savoir qui a ouvert quels fichiers depuis quels postes de travail.
  4. Cliquez avec le bouton droit de la souris sur un élément de la liste pour pouvoir supprimer le verrou de fichier.

J'espère que cela vous aidera.

Essayez Process Hacker: https://wj32.org/processhacker/

Process Hcker est comme Process Explorer sur steroids.

Pour rechercher le processus incriminé, appuyez sur CTRL + F ou cliquez sur le lien "Rechercher les descripteurs de DLL". bouton et recherchez le nom du fichier.

Une fois que vous avez trouvé le fichier dans la boîte de dialogue des poignées de recherche, vous pouvez simplement cliquer dessus avec le bouton droit de la souris et choisir "Fermer". (au moins pour la v2.39.124)

Les anciennes versions comportaient un " terminateur " option dans le menu contextuel du processus.  Faites un clic droit sur le processus incriminé - > Divers - > Terminator - > Sélectionnez les techniques de terminaison . Notez que certains sont potentiellement dangereux et peuvent avoir des conséquences inattendues.

J'ai eu des problèmes similaires, et aucune des suggestions que j'ai vues ci-dessus ne semble convenir aux versions automatisées du jour au lendemain (comme l'a suggéré l'affiche originale), car elles nécessitent toutes un effort manuel pour rechercher et tuer les verrous.

La seule méthode que j’ai essayée et qui semble fonctionner de manière fiable consiste à supprimer le partage lui-même, à créer le build, puis à rajouter le partage. Voici un moyen de supprimer le partage automatiquement:

D: \ Projets> Projets à partage net / SUPPRIMER / Y

Les utilisateurs ont des fichiers ouverts sur les projets. La poursuite de l’opération forcera la fermeture des fichiers.

Les projets ont été supprimés avec succès.

(REMARQUE: il peut être difficile de créer à nouveau le partage automatiquement si les groupes de privilèges que vous devez lui attribuer sont en désordre.)

Je le fais en utilisant à la fois OpenFiles.exe et Handle.exe Vous pouvez les exécuter dans n’importe quel ordre et votre ressource sera entièrement déverrouillée.

OpenFiles: pour déconnecter les sessions de partage de fichiers

Handle.exe: pour libérer les poignées ouvertes (n'essayez pas de fermer les poignées appartenant à pid4, car c'est le processus système)

Vous pouvez automatiser cela en utilisant powershell, batch ou n'importe quelle langue de votre choix.

Une autre option consiste, à partir de Windows Vista, à utiliser l'outil Windows intégré au système:

Ressources de surveillance: perfmon.exe / res

Extrait de: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top