Partager via


Modification du répertoire actif

Le répertoire à la fin du chemin d’accès actif est appelé répertoire actif ; il s’agit du répertoire dans lequel l’application active a démarré, sauf si elle a été explicitement modifiée. Une application peut déterminer le répertoire actuel en appelant la fonction GetCurrentDirectory . Il est parfois nécessaire d’utiliser la fonction GetFullPathName pour s’assurer que la lettre de lecteur est incluse si l’application en a besoin.

Notes

Bien que chaque processus ne puisse avoir qu’un seul répertoire actif, si l’application bascule des volumes à l’aide de la fonction SetCurrentDirectory , le système mémorise le dernier chemin d’accès actuel pour chaque volume (lettre de lecteur). Ce comportement se manifeste uniquement lors de la spécification d’une lettre de lecteur sans chemin d’accès complet lors de la modification du point de référence du répertoire actuel en un autre volume. Cela s’applique aux opérations Get ou Set.

 

Une application peut modifier le répertoire actif en appelant la fonction SetCurrentDirectory .

L’exemple suivant illustre l’utilisation de GetCurrentDirectory et SetCurrentDirectory.

#include <windows.h> 
#include <stdio.h>
#include <tchar.h>

#define BUFSIZE MAX_PATH
 
void _tmain(int argc, TCHAR **argv) 
{ 
   TCHAR Buffer[BUFSIZE];
   DWORD dwRet;

   if(argc != 2)
   {
      _tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
      return;
   }

   dwRet = GetCurrentDirectory(BUFSIZE, Buffer);

   if( dwRet == 0 )
   {
      printf("GetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   if(dwRet > BUFSIZE)
   {
      printf("Buffer too small; need %d characters\n", dwRet);
      return;
   }

   if( !SetCurrentDirectory(argv[1]))
   {
      printf("SetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   _tprintf(TEXT("Set current directory to %s\n"), argv[1]);

   if( !SetCurrentDirectory(Buffer) )
   {
      printf("SetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   _tprintf(TEXT("Restored previous directory (%s)\n"), Buffer);
}