(На самом деле это ответ на другой ответ, в котором источник проблемы был идентифицирован при смене текущего каталога)
Чтобы сохранить текущий каталог:
#define ARRSIZE(arr) (sizeof(arr)/sizeof(*(arr)))
//...
TCHAR curDir[MAX_PATH];
DWORD ret;
ret=GetCurrentDirectory(ARRSIZE(curDir),curDir);
if(ret==0)
{
// The function falied for some reason (see GetLastError), handle the error
}
else if(ret>ARRSIZE(curDir))
{
// The function failed because the buffer is too small, implementation of a function that uses dynamic allocation left to the reader
}
else
{
// Now the current path is in curDir
}
Чтобы восстановить путь, просто сделайте
if(!SetCurrentDirectory(curDir))
{
// The function failed, handle the error
}
.
СОВЕТ: используйте функции TCHARS и родовые сопоставления текста вместо char s с самого начала приложения: это позволит избежать многих проблем в будущем, когда ваше приложение должно совместим с путями Unicode.