Я не могу создать файл, используя c ++ / winrt, uwp и std :: ofstream. Я получаю 0x0000005 (доступ запрещен) при вызове GetLastError (). Я могу успешно читать в файле, используя std :: ifstream из той же папки.
Я использую windows10 ver1903 x64, vs2017 ver15.9.13
Я добавил broadFileSystemAccess в манифест пакета и разрешил доступ к файловой системе для всей системы и для самого приложения. Я получаю предупреждение об использовании rescap: Capacity в манифесте, но приложение компилируется и не ограничивает другие (из того, что я прочитал) в успешном доступе к файловой системе.
Из манифеста пакета:
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp iot rescap" >
Это раздел Возможности:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="broadFileSystemAccess" />
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>
</Capabilities>
Это мой вызов ofstream с strOutputFileName, содержащим имя файла, который я хочу создать в каталоге Debug \ UWPAA \ AppX приложения (UWPAA) (я также пробовал другие каталоги):
std::ofstream ofBinary;
ofBinary.open(strOutputFileName, ios::out);
Я ожидал, что приложение сможет создавать файл, тем более что я могу открывать файлы в файловой системе с помощью std :: ifstream, но вместо этого я получаю сообщение «Отказано в доступе».
Есть идеи? Это сводит меня с ума ...