在我的 C++/WinAPI 应用程序中,我使用以下代码获取我的文档文件夹路径:
wchar_t path[MAX_PATH];
SHGetFolderPathW(NULL,CSIDL_PERSONAL,NULL,SHGFP_TYPE_CURRENT,path);
其中一个用户在连接到他的公司网络的电脑上运行我的程序。他在网络上有我的文档文件夹。所以我的代码返回类似 \\paq\user.name$\我的文档 尽管他说他有一份“我的文档”的本地副本。 问题是,当他“交换 VPN”时,在线我的文档变得不可用,我的程序崩溃并出现系统错误代码 64“指定的网络名称不再可用”(它尝试写入在在线我的文件中打开的文件文档文件夹)。
如何使用 C++/WinAPI 始终获取本地“我的文档”文件夹路径?
最佳答案
CSIDL_PERSONAL
是唯一的官方“我的文档”文件夹。如果他将其重定向到网络文件夹,那么即使 Windows 在关闭 VPN 时也无法访问“我的文档”。与各种 AppData 文件夹(CSIDL_APPDATA
、CSIDL_COMMON_APPDATA
和 CSIDL_LOCAL_APPDATA
)不同,Windows 没有单独的本地和远程“我的文档”文件夹的概念,所以无论他有什么本地文件夹都必须手动创建为普通文件夹,因此 Shell API 不会知道它。您的应用找到它的唯一方法是询问它在哪里。
关于windows - 获取本地我的文档文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213959/