听起来像只读文件,对吧?不是真的。
所以我的目标是通过简单地将它们压缩为 .zip 文件来备份我构建的应用程序中的所有文件。首先,我收集所有文件并将它们放在另一个文件夹中(例如,我不需要备份 .exe 文件)。然后我使用压缩它们IO.compression.ZipFile
ZipFile.CreateFromDirectory(backupDirectory, ZipDirectory);
后来,当用户想恢复备份时,我先删除现有文件和目录,然后将其解压缩:
ZipFile.ExtractToDirectory(openFileDialog1.FileName, installDirectory);
问题: 文件现在是只读的,一个文件是 .mdf 文件,我不能再对表进行更改,这使得应用程序无用。我试过这样做:
public void Recurse(DirectoryInfo directory)
{
foreach (FileInfo fi in directory.GetFiles())
{
//fi.Attributes |= FileAttributes.ReadOnly; //this didn't work eather
fi.IsReadOnly = false;
}
foreach (DirectoryInfo subdir in directory.GetDirectories())
{
Recurse(subdir);
}
}
从这个问题。 没用。而且我不希望它起作用,因为没有在 .mdf 属性上检查“只读”标志。同样在查看“安全”选项卡时:
SYSTEM、Admin 和 User 是相同的,我缺少的是组名“Everyone”,所有检查都设置为 Allowed。再次手动设置此组后,我看到了一些改进,但仍然出现其他错误,例如无法登录,用户 [当前用户] 登录失败
编辑:上述安全选项卡的问题是因为我使用了该Recurse
方法。让事情变得更糟。因此,使用file.IsReadOnly = false
for all files 并不是一个好的解决方案。
问题:如何正确压缩和解压缩文件而不更改其属性/设置/权限。**或:** 解压缩后如何再次为文件设置正确的属性。