Sdílet prostřednictvím


Změna aktuálního adresáře

Adresář na konci aktivní cesty se nazývá aktuální adresář; je adresář, ve kterém byla aktivní aplikace spuštěna, pokud nebyla explicitně změněna. Aplikace může určit, který adresář je aktuální voláním funkce GetCurrentDirectory. Někdy je nutné použít funkci GetFullPathName k zajištění zahrnutí písmena disku, pokud to aplikace vyžaduje.

Poznámka

I když každý proces může mít pouze jeden aktuální adresář, pokud aplikace přepne svazky pomocí funkce SetCurrentDirectory, systém si pamatuje poslední aktuální cestu pro každý svazek (písmeno jednotky). Toto chování se projeví pouze při zadávání písmene jednotky bez plně kvalifikované cesty, když se mění výchozí bod aktuálního adresáře na jiný svazek. To platí pro operace Get nebo Set.

 

Aplikace může změnit aktuální adresář voláním funkce SetCurrentDirectory.

Následující příklad ukazuje použití GetCurrentDirectory a 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);
}