Les fichiers actuellement ouverts ou en cours d'utilisation dans Windows ne peuvent pas être déplacés ou supprimés tant qu'ils ne sont pas fermés. La plupart du temps, la fermeture du programme associé ferait le travail, mais parfois il ne fonctionnera toujours pas car il est mappé à la mémoire ou protégé par un autre processus. Pour résoudre ce problème, la plupart d'entre nous s'appuieraient simplement sur un logiciel tiers tel que FileASSASSIN, LockHunter, IObit Unlocker, BlitzBlank, etc., capable de détecter les fichiers verrouillés et de tenter de les déverrouiller pour d'autres actions. Le déverrouillage des fichiers verrouillés présente ses propres risques, ce qui peut éventuellement provoquer des plantages sur le système d'exploitation.
La solution la plus sûre consiste à marquer le fichier pour suppression au prochain redémarrage et le système d'exploitation Microsoft Windows a facilité la tâche des développeurs car il est livré avec une API MoveFileEx pour supprimer ou renommer / déplacer des fichiers au prochain démarrage du système. Cette tâche est effectuée en lisant une entrée de Registre appelée PendingFileRenameOperations située dans HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager. Notez que la clé de Registre PendingFileRenameOperations n'existera que s'il existe une opération en attente.
Si vous n'aimez pas jouer avec le registre Windows, nous avons ici quelques outils gratuits qui peuvent vous aider à lire les clés PendingFileRenameOperations et afficher la liste des opérations de fichiers en attente. Certains d'entre eux ont la capacité de vous permettre de planifier des commandes de déplacement et de suppression pour le prochain redémarrage. 1. PendMoves et MoveFile
PendMoves est une application de ligne de commande simple de Windows Sysinternals où il peut lire les clés PendingFileRenameOperations et afficher la liste des fichiers qui seront soit supprimés, soit déplacés vers le nouvel emplacement cible. La cible vide sera affichée comme SUPPRIMER ou bien ce sera le nouvel emplacement où le fichier source sera déplacé.
Étant donné que PendMoves est une application en ligne de commande, elle doit être exécutée à partir de l'invite de commande pour voir les résultats, sinon vous n'aurez qu'une fenêtre noire clignotante s'ouvrant et se fermant d'elle-même. Appuyez sur WIN + R, tapez cmd dans la zone Exécuter et cliquez sur OK. Accédez au répertoire où se trouve pendmoves.exe et tapez le nom de fichier pour exécuter l'application.
Une application distincte appelée MoveFile qui est regroupée avec PendMoves dans l'archive sert à ajouter une entrée dans PendingFileRenameOperations pour planifier la suppression ou le déplacement d'un fichier au prochain démarrage de Windows. Spécifiez simplement la source et la destination pour déplacer le fichier ou laisser la destination vide avec deux guillemets doubles supprimera la source.
L'exemple de commande ci-dessous déplace le fichier test.zip de C: \ vers le bureau du compte d'utilisateur Raymond.
C: \ movefile.exe c: \ test.zip c: \ raymond \ user \ desktop \ test.zip
La commande ci-dessous prévoit de supprimer le fichier test.zip au prochain démarrage de Windows.
C: \ movefile.exe c: \ test.zip «»
Télécharger PendMoves et MoveFile
2. Pourquoi redémarrer
Si vous préférez un outil plus convivial doté d'une interface utilisateur graphique, WhyReboot sera votre choix. WhyReboot est un petit outil portable qui affiche une liste des opérations de fichiers en attente et en plus la clé de registre RunOnce. La clé de registre RunOnce est une instruction pour Windows d'exécuter automatiquement un programme spécifié une seule fois au démarrage et la clé sera supprimée une fois la demande traitée.
Bien que WhyReboot soit créé pour déterminer si vous devez redémarrer votre ordinateur lorsque vous y êtes invité après l'installation d'un programme ou d'une mise à jour, il est encore loin de pouvoir le faire. WhyReboot n'est pas capable de vous dire si un pilote principal important ou un fichier DLL a été remplacé et nécessite un redémarrage pour se charger, ce qui est assez courant dans les logiciels de sécurité tels qu'un programme antivirus.
Télécharger WhyReboot
3. WMI VBScript
Pour les administrateurs ou les programmeurs qui préfèrent les scripts pour plus de flexibilité dans l'implémentation de l'automatisation, nous avons trouvé un WMI VBScript pratique écrit par Tom Mills, architecte de solutions avec Microsoft Services. Fondamentalement, le fichier VBS lit et analyse les PendingFileRenameOperations montrant le résultat dans une fenêtre contextuelle.
Le code VBS peut être obtenu sur le site de blog officiel Tom Mills MSDN ou vous pouvez télécharger le script ci-dessous.
Télécharger CheckPendingFileRenameOperations.vbs
4. MoveEx
Il existe deux versions de MoveEx, l'une est créée par Alexander Frink qui peut être trouvée dans Softpedia, l'autre par Frank Westlake de ss64.net et nous proposons ce dernier. La raison pour laquelle nous préférons MoveEx de Frank à Alexander est la possibilité de supprimer une entrée individuelle dans PendingFileRenameOperations autre que l'analyse et l'affichage de l'opération.
Pour afficher les entrées PendingFileRenameOperations, exécutez simplement l'application sur la ligne de commande. Pour supprimer une entrée individuelle PendingFileRenameOperations, vous devez ajouter / d avec le numéro d'entrée qui s'affiche lors de l'exécution de MoveEx sans argument de ligne de commande. Comme vous pouvez le voir sur la capture d'écran ci-dessus, la première commande répertorie toutes les entrées dans PendingFileRenameOperations et la deuxième commande qui a un «/ d 003» supprime la troisième entrée.
L'ajout d'une entrée PendingFileRenameOperations à l'aide de MoveEx est identique à MoveFile de Sysinternals qui spécifie la source suivie de la cible. Si vous laissez la cible vide, Windows supprimera le fichier source.
Télécharger MoveEx
5. Ajouter ou supprimer manuellement l'entrée PendingFileRenameOperations
Il n'y a aucun problème à supprimer manuellement la clé PendingFileRenameOperations du registre système, mais l'ajout d'une entrée est délicat car il s'agit d'une valeur REG_MULTI_SZ et non de la chaîne normale ou de DWORD. Pour supprimer, accédez simplement à HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager dans le registre et supprimez la clé PendingFileRenameOperations.
Pour ajouter une entrée de suppression, accédez à HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ cliquez avec le bouton droit dans le volet droit, accédez à Nouveau, sélectionnez Valeur de chaînes multiples et nommez-le PendingFileRenameOperations . Double-cliquez sur la valeur de registre nouvellement créée et entrez l'emplacement complet du fichier commençant par \ ?? \ (par exemple, \ ?? \ C: \ raymondcc.exe ) que vous souhaitez planifier pour la suppression. Cliquez sur OK lorsque vous avez terminé. Maintenant, faites un clic droit sur PendingFileRenameOperations et sélectionnez Modifier les données binaires . Vous devriez voir un tas de nombres dans les données de valeur. Entrez quatre zéros «00 00» sans les guillemets à la fin de la chaîne hexadécimale et cliquez sur OK. Redémarrez votre ordinateur et le fichier sera supprimé.
Bizarrement, la planification d'une opération de déplacement sur un fichier lors du démarrage de Windows à l'aide de PendingFileRenameOperations est tellement plus facile par rapport à la suppression car elle n'implique pas de modifier les données binaires dans le registre. Suivez les étapes ci-dessus jusqu'à ce que vous ayez atteint la pièce pour ajouter des données de valeur dans la zone Modifier les chaînes multiples. Vous devez spécifier deux chemins qui sont la source et la cible. Un exemple ci-dessous déplacera le fichier raymondcc.exe de C: \ source vers c: \ target.
\ ?? \ C: \ source \ raymondcc.exe
\ ?? \ C: \ target \ raymondcc.exe