Я не могу найти постоянную CSIDL для папки «C: \ Documents and Settings \ username» для Windows XP?
РЕДАКТИРОВАТЬ: я извлекаю этот путь, используя следующий код:
HANDLE hUserToken = NULL;
if(WTSQueryUserToken(dwUserSessionID, &hUserToken))
{
PIDLIST_ABSOLUTE pIdl = NULL;
if(SHGetFolderLocation(NULL, nCSIDL, hUserToken, NULL, &pIdl) == S_OK)
{
SHGetPathFromIDList(pIdl, path_buf);
ILFree(pIdl);
}
CloseHandle(hUserToken);
}
Проблема в том, что код возвращается C:\WINDOWS\system32\config\systemprofile
для административного аккаунта, когда я ожидаю C:\Documents and Settings\Administrator
,
Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx
Константа, которую вы ищете CSIDL_PROFILE
,
Фрагмент кода для получения местоположения: ConstantSpecialItems.cpp + двоичный ConstantSpecialItems.exe если вы хотите распечатать их самостоятельно
Расположение образцов:
Тот, который вы просите:
Windows version 5.1, Build 2600
CSIDL paths:
[...]
CSIDL_PROFILE: C:\Documents and Settings\John Doe