Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Votre navigateur n’est pas pris en charge

Vous devez mettre à jour votre navigateur pour utiliser le site.

Mettre à jour vers la dernière version d’Internet Explorer

Comment faire pour déplacer des fichiers qui sont actuellement en cours d'utilisation

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 140570
Résumé
Parfois les applications Win32 doivent supprimer, renommer ou déplacer des fichiers qui sont actuellement utilisés par le système. Un exemple courant est que les programmes d'installation doivent supprimer eux-mêmes à partir du disque dur de l'utilisateur lorsqu'ils ont fini de configurer un package de logiciels. Parfois, ils doivent également déplacer des pilotes de périphérique actuellement utilisés par le système. Applications besoin d'aide à partir du système d'exploitation pour supprimer ou déplacer ces fichiers.

Windows 95 et Windows NT chacun fournissent une méthode unique pour aider les applications à supprimer, remplacer ou renommer des fichiers et répertoires qui sont en cours d'utilisation. Bien que les deux plates-formes diffèrent dans la façon dont elles implémentent ces méthodes, les deux partagent une stratégie globale où l'application spécifie les fichiers à traiter et le système traite les lorsqu'il redémarre. Cet article explique comment les applications peuvent utiliser la méthode fournie par chaque plate-forme Windows.
Plus d'informations

Déplacement de fichiers dans Windows NT

Applications Win32 qui s'exécutent sur Windows NT doivent utiliser MoveFileEx() avec l'indicateur MOVEFILE_DELAY_UNTIL_REBOOT pour déplacer, remplacer ou supprimer des fichiers et répertoires en cours d'utilisation. La prochaine fois que le système est redémarré, le programme de démarrage de Windows NT va déplacer, remplacer ou supprimer les fichiers et répertoires spécifiés.

Pour déplacer ou remplacer un fichier ou un répertoire est en cours d'utilisation, une application doit spécifier le chemin d'accès à la fois une source et destination sur le même volume (par exemple, le lecteur C:). Si le chemin d'accès de destination est un fichier existant, il sera remplacé. Si le chemin d'accès de destination est un répertoire existant, il ne sera pas remplacé et chemins d'accès source et de destination reste inchangées. Voici un appel d'exemple pour déplacer ou de remplacer un fichier ou de déplacer un répertoire :
   // Move szSrcFile to szDstFile next time system is rebooted   MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);				
pour supprimer un fichier ou un répertoire, l'application doit définir le chemin d'accès de destination à la valeur NULL. Si le chemin d'accès à la source est un répertoire, elle sera supprimée uniquement s'il est vide. Notez que si vous devez utiliser MoveFileEx() pour supprimer des fichiers à partir d'un répertoire, vous devez redémarrer l'ordinateur avant d'appeler MoveFileEx() pour supprimer le répertoire. Voici un exemple de comment faire pour supprimer un fichier ou un répertoire de vider :
   // Delete szSrcFile next time system is rebooted   MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);				

Déplacement de fichiers dans Windows 95

Windows 95 n'implémente pas MoveFileEx(), mais fournit une autre façon pour tous basés sur Win32, 16 bits Windows- et MS-DOS les applications à déplacer, remplacer, ou les fichiers de suppression (mais pas les répertoires) qui sont en cours d'utilisation. Cette fonctionnalité est implémentée par le biais de la section [rename] d'un fichier nommé Wininit.ini. Si Wininit.ini est présent dans le répertoire Windows, Wininit.exe traite lors du démarrage du système. Une fois Wininit.ini a été traité, Wininit.exe le renomme à Wininit.bak.

La syntaxe de la section [rename] est :
   DestinationFileName=SourceFileName				
DestinationFileName et SourceFileName doivent résider sur le même volume et noms de fichier (8.3) court car Wininit.ini est traité avant que le système de disque en mode protégé est chargé et noms de fichiers longs ne sont disponibles que lorsque le système de disque en mode protégé est en cours d'exécution. Les fichiers source et destination spécifiées dans Wininit.ini avec noms de fichiers longs sont ignorés.

La section [rename] peut avoir plusieurs lignes avec un seul fichier par ligne. Pour supprimer un fichier, spécifiez NUL comme le DestinationFileName. Voici quelques exemples d'entrée :
   [rename]   NUL=C:\TEMP.TXT   C:\NEW_DIR\EXISTING.TXT=C:\EXISTING.TXT   C:\NEW_DIR\NEWNAME.TXT=C:\OLDNAME.TXT   C:\EXISTING.TXT=C:\TEMP\NEWFILE.TXT				
la première ligne entraîne Temp.txt à supprimer. La seconde provoque Existing.txt être déplacés vers un nouveau répertoire. Le troisième provoque oldname.txt être déplacés et renommés. Le quatrième provoque un fichier existant à être écrasée par NewFile.txt.

Les applications doivent utiliser pas WritePrivateProfileString() pour écrire des entrées dans la section [rename] car il peut y avoir plusieurs lignes avec la même DestinationFileName, surtout si DestinationFileName est «NUL». Au lieu de cela, ils doivent ajouter des entrées en analysant Wininit.ini et en ajoutant les entrées à la fin de la section [rename].

Remarque : Utilisez toujours une recherche qui ne respecte pas la casse pour analyser Wininit.ini parce que le titre de la section [rename] et les noms de fichiers à l'intérieur de celle-ci peut avoir n'importe quelle combinaison de lettres majuscules et minuscules.

Les applications qui utilisent Wininit.ini doivent vérifier son existence dans le répertoire Windows. Si Wininit.ini est présent, une autre application a écrit lui depuis le dernier redémarrage du système. L'application doit par conséquent, ouvrez-le et ajoutez des entrées à la section [rename]. Si Wininit.ini n'est pas présent, l'application doit créer et ajouter à la section [rename]. Cela garantit que les entrées à partir d'autres applications ne sont pas supprimées accidentellement par votre application.

Pour annuler une opération de changement de nom de fichier avant le redémarrage du système, vous devez supprimer la ligne correspondante de la section [rename] du fichier Wininit.ini.
programme d'installation installation de mise à jour

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 140570 - Dernière mise à jour : 11/21/2006 15:50:08 - Révision : 4.3

  • Microsoft Win32 Application Programming Interface
  • kbmt kbapi kbfileio kbhowto kbkernbase kbprogramming KB140570 KbMtfr
Commentaires