C ++ 17返回访问权限,而与能力无关
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ 17返回访问权限,而与能力无关相关的知识,希望对你有一定的参考价值。
我不确定这是否有意,但在VS 2019中创建'Blank App(c ++ / WinRT)'并尝试如下所示的简单操作始终会导致访问被拒绝。是std ::仅支持app dir和local吗?还是我错过了什么?
std::filesystem::path file = LR"(C:Users
amePictures1.png)";
auto t = std::filesystem::is_regular_file(file);
我尝试了无运气和各种功能的broadFileSystemAcess。我认为最终的答案是,如果不使用RT文件访问API而不是c ++ std ::
,这是无法完成的事情答案
UWP应用程序不能直接访问任何文件系统,除了:
- 对软件包安装文件夹的只读非专有访问权限
- 对应用程序数据文件夹(漫游或本地)的读/写访问权限
- 读/写到私有临时文件夹。
所有其他访问都通过Windows RT'代理'进行调解。
一种解决方案是使用Windows RT将整个文件复制到一个临时文件夹,然后在该临时副本上使用std::filesystem
。
#include "winrt/Windows.Storage.h"
#include "winrt/Windows.Storage.Pickers.h"
using namespace winrt::Windows::Storage;
using namespace winrt::Windows::Storage::Pickers;
FileOpenPicker openPicker;
openPicker.ViewMode(PickerViewMode::Thumbnail);
openPicker.SuggestedStartLocation(PickerLocationId::PicturesLibrary);
openPicker.FileTypeFilter().Append(L".jpg");
openPicker.FileTypeFilter().Append(L".png");
auto file = co_await openPicker.PickSingleFileAsync();
if (file)
{
auto tempFolder = ApplicationData::Current().TemporaryFolder();
auto tempFile = co_await file.CopyAsync(tempFolder, file.Name(), NameCollisionOption::GenerateUniqueName);
if (tempFile)
{
std::filesystem::path file = LR"(tempFile.Path().c_str())";
...
DeleteFile(tempFile.Path().c_str());
}
}
以上是关于C ++ 17返回访问权限,而与能力无关的主要内容,如果未能解决你的问题,请参考以下文章
一脚踩进java之基础篇21——面向对象 (访问修饰符代码块)