使用fopen在桌面上打开文件时,权限被拒绝

Permission denied when opening a file on desktop with fopen

本文关键字:权限 拒绝 文件 fopen 桌面 使用      更新时间:2023-10-16

我正在尝试以下代码,但它返回EACCESS(权限被拒绝)。我真的不知道为什么。我甚至尝试在管理员模式下运行VS,但没有成功。它总是很好用…也许是因为它是Windows通用应用程序?

auto err = _wfopen_s(&f, L"C:/Users/Lukas/Desktop/Audio.mp3", L"rb");
if (err > 0)
    return;
fseek(f, SEEK_END, 0);
unsigned int size = ftell(f);
fseek(f, SEEK_SET, 0);
char *data = new char[size];
fread(data, 1, size, f);
fclose(f);

这是通用Windows应用程序所期望的。Windows运行时应用程序在沙箱中运行,不能访问文件系统的任意部分。他们只能直接访问(例如通过fopen等)他们的appx包(只读)和应用程序数据(读写)目录。所有其他位置只有通过StorageFile和StorageFolder代理对象获得用户许可才能使用。

要在桌面上访问MP3,您需要让用户使用文件选择器(或同等工具)选择它,以获得具有适当权限的StorageFile,然后可以将其缓存以供稍后使用AccessCache类。或者,将MP3放入音乐库中,应用程序可以声明音乐库功能,并通过KnownFolders获得StorageFile。MusicLibrary文件夹。

在我的博客文章http://blogs.msdn.com/b/wsdevsol/archive/2012/12/05/stray-from-the-path-stick-to-the-storagefile.aspx

中有更详细的介绍。