如何使用C ++获取Windows用户的配置文件路径的父文件夹

时间:2012-07-12 18:23:19

标签: winapi visual-c++

我正在尝试获取Windows用户的配置文件路径的父文件夹。但我找不到使用SHGetSpecialFolderPath获取此功能的“参数”,到目前为止我使用的是CSIDL_PROFILE

预期路径:

Win7 - “C:\ Users”

Windows XP - “C:\ Documents and Settings”

2 个答案:

答案 0 :(得分:1)

除了显示用户路径以外的大多数用途,它应该可以将"\\.."(或"..\\"如果以反斜杠结尾)附加到相关路径。

答案 1 :(得分:0)

使用shell libary 6.0版,你有CSIDL_PROFILES(不要与CSIDL_PROFILE混淆),它可以提供你想要的东西。这个值被删除了(参见{ {3}}),您必须使用自己的解决方法。

在任何以前的版本中,您必须实现自己的解决方法,例如在Windows上查找可能的路径分隔符,即\/,并在最后一个。一个简单的版本可以使用strrchr(或wcsrchr)来定位反斜杠,然后假设字符串是可写的,在该位置终止字符串。

示例:

char* path;
// Retrieve the path at this point, e.g. "C:\\Users\\username"
char* lastSlash = strrchr(path, '\\');
if(!lastSlash)
  lastSlash = strrchr(path, '/');
if(lastSlash)
  *lastSlash = 0;

当然,在你对这个答案的评论中指出了GetProfilesDirectory(我没说过)。