読み取り専用ファイルのようですね。そうではありません。
したがって、私の目標は、作成したアプリケーションからすべてのファイルを .zip ファイルに圧縮するだけでバックアップを作成することです。まず、すべてのファイルを収集して別のフォルダーに配置します (たとえば、.exe ファイルをバックアップする必要はありません)。次に、それらを使用して圧縮しますIO.compression.ZipFile
ZipFile.CreateFromDirectory(backupDirectory, ZipDirectory);
後で、ユーザーがバックアップを復元したい場合は、まず既存のファイルとディレクトリを削除してから抽出します。
ZipFile.ExtractToDirectory(openFileDialog1.FileName, installDirectory);
問題: ファイルが読み取り専用になり、1 つのファイルが .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」です。このグループを手動で再度設定した後、いくつかの改善が見られますが、ログインできない、ユーザー [現在のユーザー] のログインに失敗したなどの他のエラーが引き続き発生します
編集:上記のセキュリティタブの問題は、そのRecurse
方法を使用したためです。事態を悪化させた。したがって、file.IsReadOnly = false
すべてのファイルに を使用するのは適切な解決策ではありません。
質問:ファイルの属性 / 設定 / パーミッションを変更せずに、ファイルを正しく圧縮および解凍するにはどうすればよいですか。**または: ** 解凍後に、ファイルの正しい属性を再度設定するにはどうすればよいですか。