使用C ++重新创建文件后对丢失的文件具有写入权限

时间:2018-11-26 05:50:39

标签: c++ file winapi

我有一个具有2个exe的MFC应用程序。它们共享一个用于读写的公共资源文件。一旦文本文件超出其大小限制,它将重新创建。之后,只有一个exes能够写入文件。也就是说,重新创建后,写权限将丢失。

下面是用于创建新文件的代码。

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

您能提出任何解决方案吗?预先感谢。

1 个答案:

答案 0 :(得分:1)

对于 dwDesiredAccess dwShareMode ,这都将错误的参数传递给CreateFile。前者请求的访问权限超出了所需。但是,后者是致命的,因为它请求与访问模式冲突的共享模式(它使用的符号常量在此不打算使用)。

要在允许其他调用者以相同权限访问文件的同时打开文件以进行读/写访问,请改用以下代码:

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

Creating and Opening Files上的MSDN条目列出了兼容的访问和共享模式。

相关问题