1

我正在尝试使用ShGetFolderPath来确定用户配置文件文件夹的路径。文档指出 CSIDL_PROFILES 定义了这个文件夹:

CSIDL_PROFILES (0x003e)

6.0 版。包含用户配置文件文件夹的文件系统目录。一个典型的路径是 C:\Documents and Settings。

CSIDL_PROFILES我使用的是 Visual Studio 2005 SP1,在 Platform SDK 包含文件中找不到常量的定义?我需要新版本的 Platform SDK 吗?

所以我通过使用 ID 0x3e 代替符号进行了更多实验。但是,看起来 0x3e 不是接受 CSIDL_* 参数的 shell 函数的有效参数(返回无效参数错误)。

所以我猜 CSIDL_PROFILES 不是一个有效的论点,当他们提到这个符号时,至少有一些关于这个主题的 MSDN 页面是不正确的。我不得不说,在我使用 Win32/MSDN 文档的所有岁月中,我不记得有类似的情况。

4

3 回答 3

0

当有人注意到它毫无价值时,我会说它被删除了。无论如何,你能用它做什么?您仍然需要为每个用户确定他的个人资料是否实际存在于该目录下。但由于您通常是按用户检查此内容,因此您需要默认设置的唯一一点是创建新用户配置文件时。无论如何,这都是 Windows 内部代码。

于 2009-06-29T09:57:02.523 回答
0

没有在CSIDLs的MSDN 文档中列出,因此更新版本的 PSDK 不太可能对您有所帮助。

你显然可以自己做:

#define CSIDL_PROFILES 0x003E

...但鉴于它似乎完全没有被 MS 记录在案,我不建议这样做。

于 2009-06-25T21:36:10.287 回答
0

您应该使用GetProfilesDirectory()但如果您真正想要的是其他用户的 CSIDL,您应该使用他们的令牌调用 SHGetFolderPath。(如果您没有他们的令牌,则需要使用hacky 解决方法

于 2012-07-28T13:43:03.470 回答