Windows 8:如何以编程方式读取用户文档文件夹路径(使用 c)
Windows 8: How to read the user documents folder path programmatically (using c )?
要访问应用程序目录中的文件,我使用以下代码行:
std::wstring wpath = Windows::Storage::ApplicationData::Current->LocalFolder->Path->Data();
与上面的代码类似,如何获取文档文件夹路径?请提出一个适用于 Metro 应用程序的解决方案。
我在堆栈溢出上找到了这个答案
因为文档库是一个虚拟位置,表示 收集不同的位置和文件,它将没有路径:
库是 Windows 7 中引入的概念,允许用户查看 来自单个位置的相关用户内容。因为库是一个 虚拟位置,添加到库中或从中删除的文件夹 也继续存在于其原始位置。
此外,StorageFolder.Path 的 MSDN 文档指出:
不要依赖此属性来访问文件夹,因为某些文件夹 可能没有文件系统路径。例如,如果文件夹是一个文件 组,或由 URI 支持,或使用文件选取器选取, 文件夹不保证具有文件系统路径。
但我建议你看看这段代码,搜索(第 796 行):
case Win_Documents:
{
return GetLibrarySaveToPath(CSIDL_MYDOCUMENTS,
FOLDERID_DocumentsLibrary,
aFile);
}
您的问题似乎已通过这段代码解决:
/*
* Check to see if we're on Win7 and up, and if so, returns the default
* save-to location for the Windows Library passed in through aFolderId.
* Otherwise falls back on pre-win7 GetWindowsFolder.
*/
static nsresult
GetLibrarySaveToPath(int aFallbackFolderId, REFKNOWNFOLDERID aFolderId,
nsIFile** aFile)
{
// Skip off checking for library support if the os is Vista or lower.
DWORD dwVersion = GetVersion();
if ((DWORD)(LOBYTE(LOWORD(dwVersion))) < 6 ||
((DWORD)(LOBYTE(LOWORD(dwVersion))) == 6 &&
(DWORD)(HIBYTE(LOWORD(dwVersion))) == 0))
return GetWindowsFolder(aFallbackFolderId, aFile);
nsRefPtr<IShellLibrary> shellLib;
nsRefPtr<IShellItem> savePath;
HRESULT hr =
SHLoadLibraryFromKnownFolder(aFolderId, STGM_READ,
IID_IShellLibrary, getter_AddRefs(shellLib));
if (shellLib &&
SUCCEEDED(shellLib->GetDefaultSaveFolder(DSFT_DETECT, IID_IShellItem,
getter_AddRefs(savePath)))) {
PRUnichar* str = nullptr;
if (SUCCEEDED(savePath->GetDisplayName(SIGDN_FILESYSPATH, &str))) {
nsAutoString path;
path.Assign(str);
path.AppendLiteral("\");
nsresult rv =
NS_NewLocalFile(path, false, aFile);
CoTaskMemFree(str);
return rv;
}
}
return GetWindowsFolder(aFallbackFolderId, aFile);
}
相关文章:
- 如何将更多文件夹添加到c++include路径
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- 获取 exe 文件夹路径的最佳方法?
- cmake find_package CMakeLists.txt 子文件夹中的相对路径
- 从 FutureAccessList 同步获取文件夹路径
- 如何将用于创建文件的文件的路径提供给C++中的其他文件夹
- Boost Filesystem flowly_caronical不会在没有父文件夹的情况下解决相对路径
- C/C++ 从根位置搜索文件夹并返回绝对路径
- C++ 程序 [窗口] 的资产文件夹路径
- C 获取目录路径,解析文件夹名称和来自Parent Directory的打印文件内容
- 代码块,添加了环境变量路径,但在安装文件夹之外出现 g++ 错误
- 仅资源 DLL - 文件夹、路径
- 如何获取哪些快捷方式和文件在桌面等文件夹路径中突出显示
- 通过浏览按钮仅获取文件夹路径
- 如何删除回收站中路径过长的文件夹或文件
- KQUEUE 仅适用于文件夹路径
- 使用字符串在C++中指定文件路径(将文件存储在文件夹中)
- Windows 8:如何以编程方式读取用户文档文件夹路径(使用 c)
- 如何获取完整路径的文件夹和文件部分
- 在Windows运行时组件中使用WRL获取文件夹路径返回空字符串