Compartilhar via


Alterando o diretório atual

O diretório no final do caminho ativo é chamado de diretório atual; é o diretório no qual o aplicativo ativo foi iniciado, a menos que tenha sido explicitamente alterado. Um aplicativo pode determinar qual diretório é atual chamando a função GetCurrentDirectory . Às vezes, é necessário usar a função GetFullPathName para garantir que a letra da unidade seja incluída se o aplicativo exigir.

Observação

Embora cada processo possa ter apenas um diretório atual, se o aplicativo alternar volumes usando a função SetCurrentDirectory , o sistema lembrará do último caminho atual para cada volume (letra da unidade). Esse comportamento se manifestará somente ao especificar uma letra da unidade sem um caminho totalmente qualificado ao alterar o ponto de referência do diretório atual para um volume diferente. Isso se aplica às operações Get ou Set.

 

Um aplicativo pode alterar o diretório atual chamando a função SetCurrentDirectory .

O exemplo a seguir demonstra o uso de 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);
}