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