public static unsafe void SetCreationTimeUtc(String path, DateTime creationTimeUtc) { if (Common.IsRunningOnMono() && Common.IsPlatformUnix()) { SysFile.SetCreationTimeUtc(path, creationTimeUtc); return; } string normalizedPath = Path.NormalizeLongPath(path); using (SafeFileHandle handle = GetFileHandle(normalizedPath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite, FileOptions.None)) { var fileTime = new NativeMethods.FILE_TIME(creationTimeUtc.ToFileTimeUtc()); bool r = NativeMethods.SetFileTime(handle, &fileTime, null, null); if (!r) { int errorCode = Marshal.GetLastWin32Error(); Common.ThrowIOError(errorCode, path); } } }