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());
    }
}

请参见Microsoft Docs

以上是关于C ++ 17返回访问权限,而与能力无关的主要内容,如果未能解决你的问题,请参考以下文章

带有片段的 Android Up 按钮未显示完整片段

如何将图像绘制为整个矩形而与背景无关

一脚踩进java之基础篇21——面向对象 (访问修饰符代码块)

一脚踩进java之基础篇21——面向对象 (访问修饰符代码块)

权限修饰符

IBM Mobilefirst:有没有一种方法可以向 deviceid 发送推送通知,而与用户无关