我正嘗試在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中可用,但我仍然收到錯誤。