Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中重新创建文件后丢失文件的写入权限+;_C++_File_Winapi - Fatal编程技术网

C++ 在c+中重新创建文件后丢失文件的写入权限+;

C++ 在c+中重新创建文件后丢失文件的写入权限+;,c++,file,winapi,C++,File,Winapi,我有一个MFC应用程序,它有两个EXE。它们共享一个用于读写的公共资源文件。一旦文本文件超过其大小限制,就会重新创建。在此之后,只有一位前任能够写入文件。娱乐后,写许可证丢失了 下面是用于创建新文件的代码段 CreateFile(FileName, GENERIC_ALL, FILE_ALL_ACCESS, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 你能提出解决办法吗。提前感谢。这将错误的参数传递给dwDesired

我有一个MFC应用程序,它有两个EXE。它们共享一个用于读写的公共资源文件。一旦文本文件超过其大小限制,就会重新创建。在此之后,只有一位前任能够写入文件。娱乐后,写许可证丢失了

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

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

你能提出解决办法吗。提前感谢。

这将错误的参数传递给dwDesiredAccess和dwShareMode。前者要求比需要更多的访问权限。但是,后者是致命的,因为请求的共享模式与访问模式冲突(它使用的是一个符号常量,这里不打算使用)

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

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

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

Ok。我会这样做。
文件\u所有访问权限
位于错误的位置。你应该更详细地解释你的目标是什么。您可以尝试(只是一个建议)
CreateFile(filename,GENERIC\u WRITE,0,NULL,OPEN\u ALWAYS,FILE\u ATTRIBUTE\u NORMAL,NULL)
这将创建仅用于写入的文件,其他程序无法访问它。然后关闭手柄,用
GENERIC\u READ
access打开。这是一种简单的方法,不太可能出错。您也可以在MFC中使用
CFile