我正在尝试获取 Windows 用户配置文件路径的父文件夹。但是我找不到任何“参数”来使用它SHGetSpecialFolderPath
,到目前为止我正在使用CSIDL_PROFILE
.
预期路径:
Win7 - “C:\用户”
Windows XP - “C:\文档和设置”
我正在尝试获取 Windows 用户配置文件路径的父文件夹。但是我找不到任何“参数”来使用它SHGetSpecialFolderPath
,到目前为止我正在使用CSIDL_PROFILE
.
预期路径:
Win7 - “C:\用户”
Windows XP - “C:\文档和设置”
除了向用户显示路径之外的大多数目的,它应该可以附加"\\.."
(或者"..\\"
如果它以反斜杠结尾)到有问题的路径。
使用 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
或者您在对此答案的评论中指出的当然(这让我无法理解)。