Изменение текущего каталога
Каталог в конце активного пути называется текущим каталогом; это каталог, в котором запущено активное приложение, если оно не было явно изменено. Приложение может определить, какой каталог является текущим, вызвав функцию GetCurrentDirectory. Иногда необходимо использовать функцию GetFullPathName, чтобы приложение включало букву диска, если это требуется.
Заметка
Хотя каждый процесс может иметь только один текущий каталог, если приложение переключает тома с помощью функции SetCurrentDirectory, система запоминает последний текущий путь для каждого тома (буква диска). Это поведение проявляется только при указании буквы диска без полного пути, когда ссылка текущего каталога меняется на другой том. Это относится к операциям Get или Set.
Приложение может изменить текущий каталог, вызвав функцию SetCurrentDirectory.
В следующем примере показано использование GetCurrentDirectory и 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);
}