在访 c:\\...txt 时发生共享违例
程序新建了一个文本文件, 然后时刻向其写入数据。 每当双击打开该文本文件时,提示在访 c:\\...txt 时发生共享违例
文件操作源代码:
CString strTime;
char szPathTemp[MAX_PATH];
char * temp = ".txt";
HANDLE hFile;
strTime = time.Format("\\%Y%m%d");
strcpy(szPathTemp, szPath);
strncat(szPathTemp, strTime, 9);
strncat(szPathTemp, temp, 4);
//文件不存在
if(!PathFileExists(szPathTemp))
{
//新建文件
hFile = CreateFile(szPathTemp, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, \
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
MessageBox("创建文件失败!");
return;
}
else
{
lLogID = 0;
CFile logFile(hFile);
CString logTemp;
logTemp.Format("记录数目: 00000\r\n\r\n # 时间 进程 PID 操 作 路径\r\n");
logFile.Write(logTemp, strlen(logTemp));
logFile.Flush();
logFile.Close();
//关闭文件句柄
CloseHandle(hFile);
}
}
else //文件存在
{
CFile logFile;
BOOL ret;
CFileException ex;
ret = logFile.Open(szPathTemp, CFile::modeWrite | CFile::shareDenyNone, &ex);
if(!ret)
{
MessageBox("打开文件失败!");
CString str;
char szError[1024];
ex.GetErrorMessage(szError, 1024);
str.Format("%s", szError);
MessageBox(str);
return;
}
else
{
CString logTemp;
strTime = time.Format("%H:%M:%S");
lLogID++;
logTemp.Format("%d %s %s %s %s\r\n", \
lLogID, strTime, vData.pProName, vData.chOperation, vData.chPath);
logFile.SeekToEnd();
logFile.Write(logTemp, strlen(logTemp));
logFile.Flush();
logFile.SeekToBegin();
logTemp.Format("记录数目: %d \r\n\r\n", lLogID);
logFile.Write(logTemp, strlen(logTemp));
logFile.Flush();
logFile.Close();
}
}