// +build windows package system import ( "syscall" "time" ) //setCTime will set the create time on a file. On Windows, this requires //calling SetFileTime and explicitly including the create time. func setCTime(path string, ctime time.Time) error { ctimespec := syscall.NsecToTimespec(ctime.UnixNano()) pathp, e := syscall.UTF16PtrFromString(path) if e != nil { return e } h, e := syscall.CreateFile(pathp, syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0) if e != nil { return e } defer syscall.Close(h) c := syscall.NsecToFiletime(syscall.TimespecToNsec(ctimespec)) return syscall.SetFileTime(h, &c, nil, nil) }