我公司应用程序中的Windows函数SetFileTime()在两个方面表现异常:
a。)在一种情况下,我正在尝试将文件的日期时间(访问,创建,修改)更新为“01/01/1980 00:00:00”,文件最终会更新删除了日期时间。
b。)在另一种情况下,该文件的创建和修改日期将更新为一些看似随机的日期时间,如“1817年3月17日,上午6:26:56”。这个不容易复制 - 如果我后续尝试,同一个文件可以更新。
请告知/协助。
在这两种情况下,更新都是远程完成的 - 因此文件驻留在不同的服务器上。语言是MFC C ++
以下代码:
CString csTime;
COleDateTime tCreate, tAccess, tModify;
SYSTEMTIME stCreate, stAccess, stModify;
FILETIME ftCreate, ftAccess, ftModify;
csTime = pMeta->Get( _T("CreateTime") );
if ( !csTime.IsEmpty() )
tCreate.ParseDateTime( csTime, 0UL, 1033 );
else
tCreate = COleDateTime::GetCurrentTime();
tCreate.GetAsSystemTime( stCreate );
BOOL stBool = SystemTimeToFileTime( &stCreate, &ftCreate );
csTime = pMeta->Get( _T("ModifyTime") );
if ( !csTime.IsEmpty() )
tModify.ParseDateTime( csTime, 0UL, 1033 );
else
tModify = COleDateTime::GetCurrentTime();
tModify.GetAsSystemTime( stModify );
BOOL stBool2 = SystemTimeToFileTime( &stModify, &ftModify );
csTime = pMeta->Get( _T("AccessTime") );
if ( !csTime.IsEmpty() )
tAccess.ParseDateTime( csTime, 0UL, 1033 );
else
tAccess = COleDateTime::GetCurrentTime();
tAccess.GetAsSystemTime( stAccess );
BOOL stBool3 = SystemTimeToFileTime( &stAccess, &ftAccess );
// write MAC times
HANDLE hTarget = CreateFile( csTest, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
BOOL winAPI = SetFileTime( hTarget, &ftCreate, &ftAccess, &ftModify );
CloseHandle( hTarget );