Ändern des aktuellen Verzeichnisses

Das Verzeichnis am Ende des aktiven Pfads wird als aktuelles Verzeichnis bezeichnet. es ist das Verzeichnis, in dem die aktive Anwendung gestartet wurde, es sei denn, sie wurde explizit geändert. Eine Anwendung kann ermitteln, welches Verzeichnis aktuell ist, indem sie die GetCurrentDirectory-Funktion aufruft. Manchmal ist es erforderlich, die GetFullPathName-Funktion zu verwenden, um sicherzustellen, dass der Laufwerkbuchstaben enthalten ist, wenn die Anwendung ihn erfordert.

Hinweis

Obwohl jeder Prozess nur über ein aktuelles Verzeichnis verfügen kann, speichert das System den letzten aktuellen Pfad für jedes Volume (Laufwerkbuchstaben), wenn die Anwendung Volumes mithilfe der SetCurrentDirectory-Funktion wechselt. Dieses Verhalten manifestiert sich nur, wenn beim Ändern des aktuellen Verzeichnisbezugspunkts auf ein anderes Volume ein Laufwerkbuchstabe ohne vollqualifizierten Pfad angegeben wird. Dies gilt für Get- oder Set-Vorgänge.

 

Eine Anwendung kann das aktuelle Verzeichnis ändern, indem sie die Funktion SetCurrentDirectory aufruft .

Im folgenden Beispiel wird die Verwendung von GetCurrentDirectory und SetCurrentDirectory veranschaulicht.

#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);
}