Ejemplo n.º 1
0
        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);
                }
            }
        }