в Windows API есть метод MakeSureDirectoryPathExists, объявленный в dbghelp.h. Он рекурсивно создает каталоги, так что я думаю, это то, что вам нужно.
Тем не менее, НЕТ никакого способа убедиться, что это «никогда не завершится неудачей», как вы просите, так как это также зависит от привилегий и т. Д., Если у вас есть доступ на запись в определенный каталог.
edit: вот несколько примеров кода; он использует GetProcAddress, так как я не смог найти заголовок dbghelp, когда писал его.
typedef BOOL (WINAPI * CreateDirFun ) ( __in PCSTR DirPath );
HMODULE h = LoadLibrary( "dbghelp.dll" );
CreateDirFun pFun = (CreateDirFun) GetProcAddress( h, "MakeSureDirectoryPathExists" );
(*m_pFun)( psPath ) )
CreateDirectory( psPath );
FreeLibrary( h );