[править] Я отредактировал код в вопросе для удобства чтения и удалил закомментированный код (чтобы увидеть дерево для деревьев).Теперь очевидно, что nothing инициализирует szAppPath перед вызовом strcat () и вызовом ExpandEnvironmentStrings
с NULL в качестве первого аргумента undefined (и, конечно, бесполезным).Вызов strcat()
для унитизированной строки вряд ли даст желаемый результат.Это может быть артефактом не публикации реального кода или даже правок других людей (включая мою).
CreateDirectory
устанавливает код ошибки системы при ошибке;если вы хотите узнать, что пошло не так, проверьте это!Любой ответ, который вы получите здесь, будет обоснованным предположением.
if(!CreateDirectory(szAppPath,NULL)) //Throw Error
{
DWORD errorcode = GetLastError();
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, errorcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK);
return ;
}
Если вы просто хотите получить код ошибки и посмотреть его вручную, тогда полный каталог кодов доступен на MSDN здесь., я бы предположил , что ERROR_ACCESS_DENIED
(5)
наиболее вероятно.Более подробный пример отображения кода ошибки приведен здесь .