Geçerli Dizini Değiştirme

Etkin yolun sonundaki dizin geçerli dizin olarak adlandırılır; açıkça değiştirilmediği sürece etkin uygulamanın başlatıldığı dizindir. Bir uygulama, GetCurrentDirectory işlevini çağırarak hangi dizinin geçerli olduğunu belirleyebilir. Bazen, uygulama gerektiriyorsa sürücü harfinin dahil olduğundan emin olmak için GetFullPathNameişlevininkullanılması gerekir.

Not

Her işlem yalnızca bir geçerli dizine sahip olsa da, uygulama SetCurrentDirectory işlevini kullanarak birimleri değiştirirse, sistem her birim için son geçerli yolu (sürücü harfi) hatırlar. Bu davranış, yalnızca geçerli dizin referans noktasını farklı bir birime değiştirirken tam nitelikli yol içermeyen bir sürücü harfi belirtildiğinde kendini gösterir. Bu, Get veya Set işlemleri için geçerlidir.

 

Bir uygulama, SetCurrentDirectory işlevini çağırarak geçerli dizini değiştirebilir.

Aşağıdaki örnekte, GetCurrentDirectory ve SetCurrentDirectorykullanımı gösterilmektedir.

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