C# 在 cd 中复制文件的创建时间

C# copying creation time of file in cd

我正在尝试从 cd 复制文件,复制后还要复制文件的创建日期。 复制命令如下所示:

Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(sourcePath, destPath);

它工作正常并将文件从 cd(源)复制到桌面(目标)。

下一步我要做的是从源文件中获取创建时间:

DateTime creationTime = File.GetCreationTime(sourcePath);

这一步也正常,创建时间在creationTime变量中。

最后一步是将创建时间放入目标文件:

File.SetCreationTime(destPath, creationTime);

这就是问题所在,最后一步抛出 "Access is denied: "C:...." (destination path)".

奇怪的是,我可以访问 cd(源)中的文件,但为什么我不能更改目标中文件的创建时间? 其次,当我尝试将完全相同的副本从密钥磁盘复制到桌面或从计算机中的一个文件夹复制到另一个文件夹时,它工作得很好。 这让我觉得问题是当我试图从 CD 复制时,我在另一张 CD 上检查过,结果相同,它无法复制创建日期。 我该如何解决它并复制创建时间?

我不知道为什么 "Access Denied" 和 File.SetCreationTime。如果您右键单击并以管理员身份 运行 Visual Studio 会发生什么情况?这也会提升您的程序,并可能证明它的访问权限。

无论如何,另一种更改 created/modified 日期的方法是使用 FileInfo:

private void ChangeCreationTime(string filePath, DateTime creationDate)
{
    var result = new FileInfo(filePath) {CreationTime = creationDate};
}

您还可以使用 {LastWriteTime = dateTime} 更改修改日期。见下文:

不幸的是,我这里没有 CD 可以直接测试它,如果您再次回到第一个方块,我们深表歉意。

已解决: 对于下一个有同样问题的人,问题是光盘上的文件是只读文件,复制文件后它仍然是只读文件。 为了设置它的创建日期,您必须从您复制的新文件中删除只读属性,然后才能设置创建日期。