C++ 在c+中重新创建文件后丢失文件的写入权限+;
我有一个MFC应用程序,它有两个EXE。它们共享一个用于读写的公共资源文件。一旦文本文件超过其大小限制,就会重新创建。在此之后,只有一位前任能够写入文件。娱乐后,写许可证丢失了 下面是用于创建新文件的代码段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
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