我不明白为什么我一直收到"拒绝访问"。
我使用wxWidgets在Windows上的以下目录中创建一个文件:C:UsersusernameDocumentsMyApp
。最初,该文件不存在,创建后一切正常。这样做一秒钟或更长时间会导致错误:error 5: Access Denied
。甚至在以管理员身份运行应用程序时也会发生这种情况。。。
有问题的文件是sqlite3数据库文件的备份,备份可以在一天内运行多次,因此可能会覆盖以前的文件。文件名会附加今天的日期。
文件的创建如下:
bool DatabaseBackup::CreateBackupFile(const wxString& fileName)
{
wxFile file;
bool success = file.Create(fileName, true, wxFile::read_write);
if (!success) {
pLogger->error("Failed to create file {0}", fileName.ToStdString());
}
file.Close();
return success;
}
还有另一个函数,它附加日期并将完整路径附加到文件名,因此结果如下:C:UsersusernameDocumentsMyAppmyapp.2020-03-29.db
。
我也尝试过预先检查文件是否存在并使用wxRemoveFile(fileName)
,但这也会导致访问被拒绝错误。。。在Notepad和Notepad++中创建文件效果良好。
我是不是错过了什么?我想不通,尤其是因为它是第一次创建文件。
删除wxFile::Create(..., wxFile::read_write)
的第三个参数,这样它就可以取默认的wxS_DEFAULT
值。
第三个参数需要wxPosixPermissions
枚举类型的值或组合,wxFile::OpenMode
枚举类型的而不是。