我正尝试在C#中构建UWP应用程序。我的应用程序有一个用C++编写的本地库。每当应用程序尝试读取ApplicationData.LocalFolder中的文件时,CreateFile2 API将返回ERROR_NOT_SUPPORTED_IN_APPCONTAINER。该文件存在于为此api指定的路径中。
这是我的应用程序中的操作顺序。Windows UWP CreateFIle2无法读取ApplicationData.LocalFolder中的文件
- 启动应用程序。应用程序创建的文件&写一些数据
- 基于用户输入的应用程序稍后会尝试在这个文件中读取数据
第1步工作正常。应用程序能够创建文件&在其中写入数据。只有当应用程序稍后尝试访问它时,它是否会收到此错误。
我得到的路径ApplicationData.LocalFolder使用
Windows.Storage.ApplicationData.Current.LocalFolder.Path
这是实际的路径我在应用中看到:
C:\用户\ XXXXX \应用程序数据\本地\包\ ac7a11e4-c1d6-4d37-b9eb-a4b0dc8f67b8_yyjvd81p022em \ LocalState \ TEMP.TXT
我的代码如下:
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既OPEN_EXISTING & OPEN_ALWAYS选项CREATE_NEW标志参数,但我看到了同样的错误在任何情况下。
我之前有类似的问题CreateFile2。但是,这是我的应用程序的问题&我已经解决了这个问题。这次虽然文件在LocalFolder中可用,但我仍然收到错误。