SetFileTime (kernel32)
Last changed: -192.25.142.225

.
Summary

C# Signature:

    [DllImport("kernel32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetFileTime(IntPtr hFile, ref long lpCreationTime,
        ref long lpLastAccessTime, ref long lpLastWriteTime);

VB.Net Signature:

    Private Declare Function SetFileTime Lib "kernel32" ( _
                ByVal hFile As System.IntPtr, _
                ByRef lpCreationTime As Long, _
                ByRef lpLastAccessedTime As Long, _
                ByRef lpLastWriteTime As Long) As Boolean

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

C# Sample Code:

  public static void SetFileTimes(intPtr hFile, DateTime creationTime, DateTime accessTime, DateTime writeTime)
  {
    long lCreationTime    = creationTime.ToFileTime();
    long lAccessTime    = accessTime.ToFileTime();
    long lWriteDTime    = writeTime.ToFileTime();

    if(!SetFileTime(hFile, ref lCreationTime, ref lAccessTime, ref lWriteTime))
    {
        throw new Win32Exception();
    }
  }

VB.Net Sample Code:

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Will transfer the Time Stamps from the Source file to the Target file.
    ''' </summary>
    ''' <param name="oSource_File_Info">The file that the time stamps will be transfered from.</param>
    ''' <param name="oTarget_File_Info">The file that the time stamps will be transfered to.</param>
    ''' <remarks>
    ''' Will transfer the Time Stamps from the Source file to the Target file.
    ''' </remarks>
    ''' <history>
    '''     [CHope]    3/2/2006    Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Public Shared Sub Synchronize_Time_Stamps(ByVal oSource_File_Info As System.IO.FileInfo, ByVal oTarget_File_Info As System.IO.FileInfo)

    Dim oFile_Stream As System.IO.FileStream

    ' Open The File So The Time Stamps Can Be Updated
    oFile_Stream = System.IO.File.Open(oTarget_File_Info.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Write)

    ' Call The API That Should Set The Time Stamps For The File
    If Not SetFileTime(oFile_Stream.Handle, oSource_File_Info.CreationTime.ToFileTime, oSource_File_Info.LastAccessTime.ToFileTime,     oSource_File_Info.LastWriteTime.ToFileTime) Then

        System.Windows.Forms.MessageBox.Show("Unable to set " & oTarget_File_Info.Name & " time stamps.", "Synchronization Error")

    End If

    ' Close The Stream
    oFile_Stream.Close()

    End Sub

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
SetFileTime on MSDN