Windows-10 CreateFile2 错误 (ERROR_NOT_SUPPORTED_IN_APPCONTAINER)
Windows-10 CreateFile2 error (ERROR_NOT_SUPPORTED_IN_APPCONTAINER)
当文件不在路径中 present/available 时,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();
}
我已经调查过这个帖子:CreateFile2 error in WinRT project (ERROR_NOT_SUPPORTED_IN_APPCONTAINER),报告了类似的问题。建议的解决方案对我不起作用。
来自这个 msdn 页面:CreateFile2 如果指定的文件或设备不存在,函数将失败并且最后一个错误代码设置为 ERROR_FILE_NOT_FOUND (2).但我收到 ERROR_NOT_SUPPORTED_IN_APPCONTAINER 错误
@Hans Passant 的评论帮助我找到了答案。由于我无法对评论进行投票,因此我将其添加为此处的答案:
CreateFile2 不是绕过沙盒限制的方法。您只能访问 appxmanifest 请求权限的目录。
查看他的评论后,我更深入地调试了我的应用程序,并且能够看到在某些情况下,应用程序试图 read/write 到可访问目录之外的文件。
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();
}
我已经调查过这个帖子:CreateFile2 error in WinRT project (ERROR_NOT_SUPPORTED_IN_APPCONTAINER),报告了类似的问题。建议的解决方案对我不起作用。
来自这个 msdn 页面:CreateFile2 如果指定的文件或设备不存在,函数将失败并且最后一个错误代码设置为 ERROR_FILE_NOT_FOUND (2).但我收到 ERROR_NOT_SUPPORTED_IN_APPCONTAINER 错误
@Hans Passant 的评论帮助我找到了答案。由于我无法对评论进行投票,因此我将其添加为此处的答案:
CreateFile2 不是绕过沙盒限制的方法。您只能访问 appxmanifest 请求权限的目录。
查看他的评论后,我更深入地调试了我的应用程序,并且能够看到在某些情况下,应用程序试图 read/write 到可访问目录之外的文件。