当文件在路径中不存在/不可用时,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();
}
我已经研究过这个线程:( APPCONTAINER),报告类似的问题。这个解决方案表明,这对我没有用。
如果指定的文件或设备不存在,则函数将失败,并将最后一个错误代码设置为ERROR_FILE_NOT_FOUND (2).But (i获取ERROR_NOT_SUPPORTED_IN_APPCONTAINER错误)。
发布于 2016-04-14 23:02:59
@汉斯·帕桑特的评论帮助我找出了答案。由于我不能对这一评论提出异议,我在此补充如下:
CreateFile2不是绕过沙箱限制的方法。您只能访问appx清单请求权限的目录.
在查看了他的评论后,我对我的应用程序进行了更深入的调试&能够看到在某些情况下,应用程序试图对可访问目录之外的文件进行读/写。
https://stackoverflow.com/questions/36610931
复制相似问题