在处理文件属性上遇到问题,等待高人点拨:
CFileStatus rstatus;
CFile::GetStatus(str,rstatus);//获得文件属性,str文件路径含名字
rstatus.m_attribute=rstatus.m_attribute & 0X3E;//如果时只读,则改为普通
CFile::SetStatus(str,rstatus);//重新设置文件属性。
正常情况下(自己建一些文件),处理是没问题的。但是在处理一些文件(这些文件是运行qq后产生的,)时,到CFile::GetStatus(str,rstatus);就出错了,程序跳出,也没有捕获到CFileException。
那些诡异的文件是C:\...\Local Settings\Temp\qq号码\..下的文件。
CFileStatus rstatus;
CFile::GetStatus(str,rstatus);//获得文件属性,str文件路径含名字
rstatus.m_attribute=rstatus.m_attribute & 0X3E;//如果时只读,则改为普通
CFile::SetStatus(str,rstatus);//重新设置文件属性。
正常情况下(自己建一些文件),处理是没问题的。但是在处理一些文件(这些文件是运行qq后产生的,)时,到CFile::GetStatus(str,rstatus);就出错了,程序跳出,也没有捕获到CFileException。
那些诡异的文件是C:\...\Local Settings\Temp\qq号码\..下的文件。
if (PathFileExists(str))
{
TRY
{
CFileStatus rstatus;
CFile::GetStatus(str,rstatus);
rstatus.m_attribute=rstatus.m_attribute & 0X3E;
CFile::SetStatus(str,rstatus);
}
CATCH (CFileException, e)
{
CString str2;
str2.Format("%d",e->m_cause);
MessageBox(str2);
}
END_CATCH
}
{
CString str2;
str2.Format("%d",e->m_cause);
MessageBox(str2);
}
TRY{}CATCH(CFileException,e){}END_CATCH
HANDLE handle;
WIN32_FIND_DATA find_data;
handle = :: FindFirstFile("F:\\bg.png",&find_data);
FindClose(handle);
find_data.dwFileAttributes = find_data.dwFileAttributes&~FILE_ATTRIBUTE_READONLY;
::SetFileAttributes("F:\\bg.png",find_data.dwFileAttributes);
不懂为什么没会这个样子,难道CFile::GetStatus在使用上还有很多限制,在msdn中好像没查到有什么特殊的地方么。不懂有没有人能解释一下,探讨探讨