Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用fopen在桌面上打开文件时权限被拒绝_C++_Win Universal App - Fatal编程技术网

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

C++ 使用fopen在桌面上打开文件时权限被拒绝,c++,win-universal-app,C++,Win Universal App,我正在尝试以下代码,但它返回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); fse

我正在尝试以下代码,但它返回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 broker对象获得用户权限

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


我在我的博客文章

中详细介绍了该文件的内容,您确定该文件没有在其他地方打开(或者是您自己的程序没有调用fclose(),或者是其他程序?@no是的,我是。我重新启动了计算机,初始化TCPI后立即调用此代码。我也尝试了不同的文件。同样的错误也会发生我不确定是否有通用应用,但是对于传统的Windows程序,
GetLastError()
应该返回导致C RTL
EACCESS
错误的底层Windows操作系统错误。它给了你更多的信息吗?@JoshKelley GetLastError输出5。。不知道如何检查它是什么。