在Compact Framework中更改文件LastWriteDate

FileSystemInfo.LastWriteTime属性在CF中只读。 有没有其他方法来改变那个日期?

P / Invoke SetFileTime 。

编辑

沿着这些方向的东西(警告:未经测试)

 [DllImport("coredll.dll")] private static extern bool SetFileTime(string path, ref long creationTime, ref long lastAccessTime, ref long lastWriteTime); public void SetFileTimes(string path, DateTime time) { var ft = time.ToFileTime(); SetFileTime(path, ref ft, ref ft, ref ft); } 

这是一个更全面的实现,改编自上面提供的答案ctacke和这个StackOverflow问题 。 我希望这certificate对某人有用:

 // Some Windows constants // File access (using CreateFileW) public const uint GENERIC_READ = 0x80000000; public const uint GENERIC_WRITE = 0x40000000; public const uint GENERIC_READ_WRITE = (GENERIC_READ + GENERIC_WRITE); public const int INVALID_HANDLE_VALUE = -1; // File creation (using CreateFileW) public const int CREATE_NEW = 1; public const int OPEN_EXISTING = 3; // File attributes (using CreateFileW) public const uint FILE_ATTRIBUTE_NORMAL = 0x00000080; // P/Invokes [DllImport("coredll.dll", SetLastError = true)] public static extern IntPtr CreateFileW( string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr pSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplatefile); [DllImport("coredll.dll", SetLastError = true)] public static extern int CloseHandle(IntPtr hObject); // Note: Create related P/Invokes to change creation or last access time. // This one modifies the last write time only. [DllImport("coredll.dll", EntryPoint = "SetFileTime", SetLastError = true)] private static extern bool SetFileWriteTime( IntPtr hFile, IntPtr lpCreationTimeUnused, IntPtr lpLastAccessTimeUnused, ref long lpLastWriteTime); // Open a handle to the file you want changed IntPtr hFile = CreateFileW( path, GENERIC_READ_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero); // Modify the last write time and close the file long lTimeNow = DateTime.Now.ToFileTime(); SetFileWriteTime(hFile, IntPtr.Zero, IntPtr.Zero, ref lTimeNow); CloseHandle(hFile); 

请注意,您可以使用System.IO.File.GetLastWriteTime (在.NET Compact Framework中公开)来读取上次写入时间(如果需要)。