我正在尝试以下代码,但它返回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);
答案 0 :(得分:3)
这适用于通用Windows应用。 Windows运行时应用程序在沙箱中运行,无法访问文件系统的任意部分。他们可以直接访问(例如通过fopen等)他们的appx包(只读)和app数据(读写)目录。所有其他位置仅通过StorageFile和StorageFolder代理对象获得用户权限。
要在桌面上访问您的MP3,您需要让用户使用文件选择器(或等效文件)选择它以获取具有适当权限的StorageFile,然后可以将其缓存以供以后与AccessCache类一起使用。或者,将MP3放入音乐库,应用程序可以声明音乐库功能,并通过KnownFolders.MusicLibrary文件夹获取StorageFile。
的博客文章中详细介绍了一下