Разрешение на запись в файл теряется после восстановления файла в C ++ - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть приложение MFC, которое имеет 2 exes.Они совместно используют общий файл ресурсов для чтения и записи. Как только текстовый файл превышает свой размер, он воссоздается.После этого только один из exes может записать в файл.т.е. разрешение на запись теряется после воссоздания.

Ниже приведен фрагмент кода, использованный для создания нового файла.

CreateFile(FileName, GENERIC_ALL, FILE_ALL_ACCESS, NULL,
           OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

Можете ли вы предложить какое-либо решение.Заранее спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

Передача неверных аргументов CreateFile , как для dwDesiredAccess , так и для dwShareMode .Первый запрашивает больше прав доступа, чем необходимо.Последнее, однако, фатально, если запрашивать режим общего доступа, который конфликтует с режимом доступа (он использует символическую константу, которая не предназначена для использования здесь).

Чтобы открыть файл для чтения / записидоступ при одновременном предоставлении другим абонентам доступа к файлу с такими же правами, вместо этого используйте следующий код:

CreateFile(FileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
           OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

В записи MSDN в Создание и открытие файлов перечислены совместимые режимы доступа и общего доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...