Windows-10 CreateFile2错误(ERROR_NOT_SUPPORTED_IN_APPCONTAINER)

当文件在path中不存在/可用时,CreateFile2 api返回ERROR_NOT_SUPPORTED_IN_APPCONTAINER。 我的代码如下

CREATEFILE2_EXTENDED_PARAMETERS ms_param = {0}; ms_param.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS); ms_param.dwFileAttributes = FILE_ATTRIBUTE_READONLY; ms_param.dwFileFlags = FILE_FLAG_NO_BUFFERING; ms_param.dwSecurityQosFlags = SECURITY_DELEGATION; ms_param.lpSecurityAttributes = NULL; ms_param.hTemplateFile = NULL; g_hfile = CreateFile2(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, OPEN_EXISTING, &ms_param); if (g_hfile == INVALID_HANDLE_VALUE) { return GetLastError(); } 

我已经看到这个线程: WinRT项目(ERROR_NOT_SUPPORTED_IN_APPCONTAINER)中的CreateFile2错误 ,报告类似的问题。 解决schemebuild议那里没有为我工作。

从这个MSDN页面: CreateFile2 如果指定的文件或设备不存在,该函数将失败,并将最后一个错误代码设置为ERROR_FILE_NOT_FOUND (2) 。但是我得到ERROR_NOT_SUPPORTED_IN_APPCONTAINER错误

@Hans Passant的评论帮助我找出答案。 由于我不能upvote评论,我在这里添加它作为一个答案:

CreateFile2不是绕过沙箱限制的一种方法。 您只能访问appxmanifest要求的权限。

检查他的评论后,我调试了我的应用程序,并且能够看到,在某些情况下,应用程序试图读/写可访问目录之外的文件。