Dela via


Ändra aktuell katalog

Katalogen i slutet av den aktiva sökvägen kallas för den aktuella katalogen. det är den katalog där det aktiva programmet startade, såvida det inte uttryckligen har ändrats. Ett program kan avgöra vilken katalog som är aktuell genom att anropa funktionen GetCurrentDirectory. Ibland är det nödvändigt att använda funktionen GetFullPathName för att säkerställa att enhetsbeteckningen inkluderas om programmet kräver det.

Notera

Även om varje process bara kan ha en aktuell katalog, kommer systemet ihåg den senaste aktuella sökvägen för varje volym (enhetsbeteckning) om programmet växlar volymer med hjälp av funktionen SetCurrentDirectory. Det här beteendet visas bara när du anger en enhetsbeteckning utan en fullständigt kvalificerad sökväg när du ändrar den aktuella katalogreferenspunkten till en annan volym. Detta gäller för antingen Get- eller Set-åtgärder.

 

Ett program kan ändra den aktuella katalogen genom att anropa funktionen SetCurrentDirectory.

I följande exempel visas användningen av GetCurrentDirectory och 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);
}