Condividi tramite


Modifica della directory corrente

La directory alla fine del percorso attivo viene chiamata directory corrente; è la directory in cui è stata avviata l'applicazione attiva, a meno che non sia stata modificata in modo esplicito. Un'applicazione può determinare quale directory è corrente chiamando la funzione GetCurrentDirectory . A volte è necessario usare la funzione GetFullPathName per assicurarsi che la lettera di unità sia inclusa se l'applicazione lo richiede.

Nota

Anche se ogni processo può avere una sola directory corrente, se l'applicazione passa volumi usando la funzione SetCurrentDirectory , il sistema ricorda l'ultimo percorso corrente per ogni volume (lettera di unità). Questo comportamento si manifesterà solo quando si specifica una lettera di unità senza un percorso completo quando si modifica il punto di riferimento della directory corrente in un volume diverso. Ciò si applica alle operazioni Get o Set.

 

Un'applicazione può modificare la directory corrente chiamando la funzione SetCurrentDirectory .

Nell'esempio seguente viene illustrato l'uso di GetCurrentDirectory e 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);
}