Почему я не могу найти #define для CSIDL_PROFILES? - PullRequest
1 голос
/ 25 июня 2009

Я пытаюсь использовать ShGetFolderPath , чтобы определить путь к папке с профилями пользователей. В документации говорится, что CSIDL_PROFILES определяет эту папку:

CSIDL_PROFILES (0x003e)

Версия 6.0. Каталог файловой системы, содержащий папки профиля пользователя. Типичный путь - C: \ Documents and Settings.

Я использую Visual Studio 2005 с пакетом обновления 1 (SP1) и не могу найти определение константы CSIDL_PROFILES во включаемых файлах Platform SDK? Нужна ли мне новая версия Platform SDK?

Итак, я провел еще несколько экспериментов, используя идентификатор 0x3e вместо символа. Однако, похоже, что 0x3e не является допустимым аргументом для функций оболочки, которые принимают аргументы CSIDL_ * (возвращается недопустимая ошибка аргумента).

Так что я полагаю, что CSIDL_PROFILES не является допустимым аргументом, и по крайней мере некоторые страницы MSDN по этой теме неверны, когда упоминают этот символ. Я должен сказать, что за все годы работы с документацией Win32 / MSDN я не могу вспомнить подобную ситуацию.

Ответы [ 3 ]

0 голосов
/ 29 июня 2009

Я бы сказал, что это было удалено, когда кто-то заметил, что это ничего не стоит. Что вы можете сделать с этим в любом случае? Вы все еще должны определить для каждого пользователя, существует ли его профиль в этом каталоге. Но так как вы обычно проверяете это для каждого пользователя, единственное, что вам нужно по умолчанию - это создание нового профиля пользователя. В любом случае, это внутренний код Windows.

0 голосов
/ 28 июля 2012

Вы должны использовать GetProfilesDirectory () , но если вам действительно нужен CSIDL другого пользователя, вам следует вызвать SHGetFolderPath с его токеном. (Если у вас нет их токена, вам нужно использовать хакерский обходной путь )

0 голосов
/ 26 июня 2009

Это , а не , перечисленное в документации MSDN для CSIDL , поэтому более новая версия PSDK вряд ли вам поможет.

Вы, очевидно, можете сделать это сами:

#define CSIDL_PROFILES 0x003E

... но с учетом того факта, что MS выглядит полностью недокументированным, я бы не рекомендовал это делать.

...