获取本地“我的文档”文件夹路

时间:2012-11-03 22:06:54

标签: windows winapi

在我的C ++ / WinAPI应用程序中,我使用以下代码获取My Documents文件夹路径:

wchar_t path[MAX_PATH];
SHGetFolderPathW(NULL,CSIDL_PERSONAL,NULL,SHGFP_TYPE_CURRENT,path);

其中一位用户在连接到公司网络的电脑上运行我的程序。他在网络上有My Documents文件夹。所以我的代码返回类似的东西 \\ paq \ user.name $ \ My Documents 虽然他说他有我的文件的本地副本。 问题是,当他'交换VPN'时,在线我的文档变得不可用,我的程序崩溃,系统错误代码64“指定的网络名称不再可用”(它试图写入在线打开的文件中docs文件夹)。

如何使用C ++ / WinAPI始终获取本地“我的文档”文件夹路径?

1 个答案:

答案 0 :(得分:3)

CSIDL_PERSONAL是唯一的官员"我的文件"夹。如果他将其重定向到网络文件夹,那么即使Windows也无法访问"我的文档"什么时候关闭VPN。与各种AppData文件夹(CSIDL_APPDATACSIDL_COMMON_APPDATACSIDL_LOCAL_APPDATA)不同,Windows没有单独的本地和远程"我的文档"文件夹,所以他必须手动创建任何本地文件夹作为普通文件夹,因此Shell API不会知道它。你的应用程序找到它的唯一方法是问他在哪里。