0

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

预期路径:

Win7 - “C:\用户”

Windows XP - “C:\文档和设置”

4

2 回答 2

1

除了向用户显示路径之外的大多数目的,它应该可以附加"\\.."(或者"..\\"如果它以反斜杠结尾)到有问题的路径。

于 2012-07-12T19:28:10.937 回答
0

使用 shell 库 6.0 版,您可以获得CSIDL_PROFILES(不要与 混淆CSIDL_PROFILE),它可以满足您的需求。此值已被删除(请参见此处),您必须使用自己的解决方法。

在任何先前的版本中,您都必须实现自己的解决方法,例如寻找可能的路径分隔符,即在 Windows 上,\/在最后一个处终止字符串。一个简单的版本可以使用strrchr(or 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或者您在对此答案的评论中指出的当然(这让我无法理解)。

于 2012-07-12T18:32:28.463 回答