如何修改文件的创建时间、修改时间和访问时间其他的已经用FSO搞定了,就是这个,居然是只读的,特在此请教。最好给出代码。

解决方案 »

  1.   

    API函数SetFileTime:'This project needs a Common Dialog box, named CDBox.
    ' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
    ' and select Microsoft Common Dialog control)
    Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type
        Private Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
    End Type
    Private Const GENERIC_WRITE = &H40000000
    Private Const OPEN_EXISTING = 3
    Private Const FILE_SHARE_READ = &H1
    Private Const FILE_SHARE_WRITE = &H2
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
    Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        '[email protected]
        Dim m_Date As Date, lngHandle As Long
        Dim udtFileTime As FILETIME
        Dim udtLocalTime As FILETIME
        Dim udtSystemTime As SYSTEMTIME
        m_Date = Format(Now, "DD-MM-YY")    'Set the dialog's title
        CDBox.DialogTitle = "Choose a file ..."
        'Set the dialog's filter
        CDBox.Filter = "All Files (*.*)|*.*"
        'Show the 'Open File'-dialog
        CDBox.ShowOpen    udtSystemTime.wYear = Year(m_Date)
        udtSystemTime.wMonth = Month(m_Date)
        udtSystemTime.wDay = Day(m_Date)
        udtSystemTime.wDayOfWeek = WeekDay(m_Date) - 1
        udtSystemTime.wHour = Hour(m_Date)
        udtSystemTime.wMinute = Minute(m_Date)
        udtSystemTime.wSecond = Second(m_Date)
        udtSystemTime.wMilliseconds = 0    ' convert system time to local time
        SystemTimeToFileTime udtSystemTime, udtLocalTime
        ' convert local time to GMT
        LocalFileTimeToFileTime udtLocalTime, udtFileTime
        ' open the file to get the filehandle
        lngHandle = CreateFile(CDBox.Filename, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
        ' change date/time property of the file
        SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
        ' close the handle
        CloseHandle lngHandle
        MsgBox "The date of the file '" + CDBox.Filename + "' has been changed to" + Str$(m_Date), vbInformation + vbOKOnly, App.Title
    End Sub 
      

  2.   

    知道了。是我当时没仔细看API的声明。