Я довольно новичок в разработке для Windows (опыт со стороны Mac) и пытаюсь использовать SHGetFolderPath (поскольку он совместим с Windows XP), чтобы получить путь к папке данных приложения для текущего пользователя. Тем не менее я получаю выходной путь «C» каждый раз, независимо от того, какой флаг я передаю. Я пробовал оба:
CSIDL_APPDATA
и
CSIDL_LOCAL_APPDATA
с и без флага CSIDL_FLAG_CREATE. Один и тот же результат каждый раз: «С». Что я тут не так делаю?
#include <windows.h>
#include <shlobj.h> // SHGetFolderPath
#include <stdio.h>
#include <stdlib.h>
//#pragma comment(lib, "shell32.lib")
int main()
{
CHAR path[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_CURRENT, path);
if (result != S_OK)
printf("Error: %d\n", result);
else
printf("Path: %s\n" , path);
printf( "String length: %d\n", strlen(path) );
return 0;
}
Документация для SHGetFolderPath:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181(v=vs.85).aspx