太简单了。先用函数CreateFile打开文件,再用SetFileTime就可以改时间了。

解决方案 »

  1.   

    char* pFileName = "test.dat";
    CFileStatus status;
    CFile::GetStatus( pFileName, status );
    status.m_ctime=CTime::GetCurrentTime();
    CFile::SetStatus( pFileName, status );
      

  2.   

    我的问题是写入一个指定的日期和时间(04/26/2002  10:22a
    ),不是写入当前的日期和时间。char* pFileName = "test.dat";
    CFileStatus status;
    CFile::GetStatus( pFileName, status );
    status.m_ctime= 04/26/2002  10:22a   ???????
    CFile::SetStatus( pFileName, status );怎么办???
      

  3.   

    char pathstr[MAX_PATH];//你要改的文件
    FILETIME sFt1,sFt2,sFt3;
    HANDLE handle = CreateFile(pathstr,GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
    sFt1.dwHighDateTime = sFt1.dwLowDateTime = 129076048;
    sFt2.dwHighDateTime = ???;
    sFt2.dwLowDateTime = ???;
    sFt3.dwHighDateTime = ???;
    sFt3.dwLowDateTime = ???;
    SetFileTime(handle,&sFt1,&sFt2,&sFt3);
    CloseHandle(handle);
      

  4.   

    将m_ctime的各个成员改变成你需要的情形
      

  5.   

    怎么将m_ctime的各个成员改变一下?
      

  6.   

    m_ctime.year = 2002;
    m_ctime.month = 2;
    m_ctime.day = 2;
    ... ...
      

  7.   

    (04/26/2002  10:22a)。CTime m_ctime( 2002, 04, 26, 10, 22, 0, 0 );
    就可以了
      

  8.   

    多看看msdn,对于这些类的成员有详细说明
      

  9.   

    CTime m_ctime( 2002, 04, 26, 10, 22, 0, 0 );
      

  10.   


    CFile file;
    char* filename="c:\\temp\\test.txt"; 
    //file.Open(filename, CFile::modeReadWrite); 
    CFileStatus status;
    CFile::GetStatus(filename, status );
    CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
    status.m_ctime;
    CFile::SetStatus(filename, status );
    file.Close();
    不行!怎么改?
      

  11.   


    CFile file;
    char* filename="c:\\temp\\test.txt"; 
    //file.Open(filename, CFile::modeReadWrite); 
    CFileStatus status;
    CFile::GetStatus(filename, status );
    CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
    status.m_ctime;
    CFile::SetStatus(filename, status );
    file.Close();
    不行!怎么改?
      

  12.   

    CFile file;
    char* filename="c:\\temp\\test.txt"; 
    CFileStatus status;
    CFile::GetStatus(filename, status );
    CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
    status.m_ctime = m_ctime;
    CFile::SetStatus(filename, status );
    file.Close();
      

  13.   

    刚刚的代码只能解决修改文件创建时间,要想把修改和访问时间也修改用下列代码:
    FILETIME sFt1,sFt2,sFt3;
    HANDLE handle = CreateFile("c:\\temp\\test.txt",GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
    sFt1.dwHighDateTime = 0x1c09bad;
    sFt1.dwLowDateTime = 0x11ffd400;
    sFt2.dwHighDateTime = 0x1c09bad;
    sFt2.dwLowDateTime = 0x11ffd400;
    sFt3.dwHighDateTime = 0x1c09bad;
    sFt3.dwLowDateTime = 0x11ffd400;
    SetFileTime(handle,&sFt1,&sFt2,&sFt3);
    CloseHandle(handle);
    呵呵,可以了吧,全部时间都改成 04/26/2002  10:22a
      

  14.   

    用CFile file的成员函数,具体,上面的兄弟都做了具体的回答,你自己看看他的成员函数就行了,很容易的.:)
      

  15.   

    蛋壳,0x1c09bad,0x11ffd400 等与04/26/2002  10:22a是什么关系?这16进制数字是怎么得来的?
      

  16.   


    蛋壳,运行发现第一方案不行,第二方案成功,但不知0x1c09bad,0x11ffd400 等等与04/26/2002  10:22a是什么关系?这16进制数字是怎么得来的?完成后给分。
      

  17.   

    FILETIME Structure
    The FILETIME structure has the following form:typedef struct _FILETIME {
        DWORD dwLowDateTime;   /* low 32 bits  */
        DWORD dwHighDateTime;  /* high 32 bits */
    } FILETIME, *PFILETIME, *LPFILETIME;The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. MembersdwLowDateTimeSpecifies the low 32 bits of the file time.dwHighDateTimeSpecifies the high 32 bits of the file time.
    这32进制数字是怎么得来的?
      

  18.   

    我是不想计算,我先把系统时间改成04/26/2002  10:22a,然后建立一个文件,用以下代码读出:
    FILETIME sFt1,sFt2,sFt3;
    HANDLE handle = CreateFile("c:\\temp\\test.txt",GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
    GetFileTime(handle,&sFt1,&sFt2,&sFt3);
    CloseHandle(handle);
             CString Str;
             Str.Format("%X  %X",sFt1.dwHighDateTime ,sFt1.dwLowDateTime);
             AfxMessageBox(Str);