using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace Archives_Center { public partial class backups : Form { string Password = "fbHQb7L9ODdO9pyPB4cDaMtiW7AgYKJLmQb7FewTiJZhyQwzCJucVf4scvQt7R6b"; public backups() { InitializeComponent(); listView1.View = View.Details; listView1.Columns.Add("备份时间", 215); listView1.Columns.Add("大小(MB)", 65); listView1.Columns.Add("占比(%)", 60); listView1.Items.Clear(); DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); DirectoryInfo[] subDirs = dirInfo.GetDirectories(); long totalSize = subDirs.Sum(d => GetDirectorySize(d)); foreach (DirectoryInfo dir in subDirs) { long dirSize = GetDirectorySize(dir); double dirSizeMB = dirSize / (1024.0 * 1024.0); double percentage = totalSize > 0 ? (dirSize * 100.0 / totalSize) : 0; ListViewItem item = new ListViewItem(new string[] { dir.Name, dirSizeMB.ToString("F2"), percentage.ToString("F2") }); listView1.Items.Add(item); } if (listView1.Items.Count > 0) button3.Enabled = true; else button3.Enabled = false; label2.Text = "全部备份文件大小:" + GDL(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\").ToString() + "MB"; } private long GetDirectorySize(DirectoryInfo directoryInfo) { long size = 0; FileInfo[] files = directoryInfo.GetFiles(); size += files.Sum(file => file.Length); DirectoryInfo[] subDirs = directoryInfo.GetDirectories(); size += subDirs.Sum(dir => GetDirectorySize(dir)); return size; } private static long GDL(string dirPath) { long len = 0; DirectoryInfo dir = new DirectoryInfo(dirPath); foreach (FileInfo file in dir.GetFiles()) { len += file.Length; } DirectoryInfo[] directoryInfos = dir.GetDirectories(); if(directoryInfos.Length > 0) { for(int i = 0;i < directoryInfos.Length; i++) { len += GDL(directoryInfos[i].FullName); } } long TTsize = len / (1024 * 1024); string TT = TTsize.ToString(); return len; } private void button1_Click(object sender, EventArgs e) { string T = DateTime.Now.ToString("yyyy'.'MM'.'dd'T'HH'.'mm'.'ss'.'fffffffzz"); SevenZipHelper.CreateEncryptedZip(Path.GetTempPath() + @"ArchivesCenter\Data\", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted", Password); string folderToDelete = Path.GetTempPath() + @"ArchivesCenter"; DeleteFolderWithAdminRights.DeleteFolder(folderToDelete); Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T); if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted")) File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T + @"\Users.encrypted"); if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted")) File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T + @"\Data.encrypted"); File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted"); File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted"); File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + listView1.SelectedItems[0].Text + @"\Users.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted"); File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + listView1.SelectedItems[0].Text + @"\Data.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted"); listView1.Items.Clear(); DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); DirectoryInfo[] subDirs = dirInfo.GetDirectories(); long totalSize = subDirs.Sum(d => GetDirectorySize(d)); foreach (DirectoryInfo dir in subDirs) { long dirSize = GetDirectorySize(dir); double dirSizeMB = dirSize / (1024.0 * 1024.0); double percentage = totalSize > 0 ? (dirSize * 100.0 / totalSize) : 0; ListViewItem item = new ListViewItem(new string[] { dir.Name, dirSizeMB.ToString("F2"), percentage.ToString("F2") }); listView1.Items.Add(item); } if (listView1.Items.Count > 0) button3.Enabled = true; else button3.Enabled = false; label2.Text = "全部备份文件大小:" + GDL(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\").ToString() + "MB"; MessageBox.Show("还原操作已成功执行,立即重启", "Archives Center", MessageBoxButtons.OK, MessageBoxIcon.Information); DeleteFolderWithAdminRights.DeleteFolder(Path.GetTempPath() + @"ArchivesCenter"); Environment.Exit(0); } private void button2_Click(object sender, EventArgs e) { if (MessageBox.Show("此操作不可逆,确认删除此备份?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { if (MessageBox.Show("此操作不可逆,确认删除此备份?\n这是最后一次确认", "二次删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK) { Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + listView1.SelectedItems[0].Text, true); listView1.Items.Clear(); DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); DirectoryInfo[] subDirs = dirInfo.GetDirectories(); long totalSize = subDirs.Sum(d => GetDirectorySize(d)); foreach (DirectoryInfo dir in subDirs) { long dirSize = GetDirectorySize(dir); double dirSizeMB = dirSize / (1024.0 * 1024.0); double percentage = totalSize > 0 ? (dirSize * 100.0 / totalSize) : 0; ListViewItem item = new ListViewItem(new string[] { dir.Name, dirSizeMB.ToString("F2"), percentage.ToString("F2") }); listView1.Items.Add(item); } if (listView1.Items.Count > 0) button3.Enabled = true; else button3.Enabled = false; button1.Enabled = false; button2.Enabled = false; } } label2.Text = "全部备份文件大小:" + GDL(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\").ToString() + "MB"; } private void button3_Click(object sender, EventArgs e) { if (MessageBox.Show("此操作不可逆,确认删除全部备份?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { if (MessageBox.Show("此操作不可逆,确认删除全部备份?\n这是最后一次确认", "二次删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK) { Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\", true); Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); listView1.Items.Clear(); DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); DirectoryInfo[] subDirs = dirInfo.GetDirectories(); long totalSize = subDirs.Sum(d => GetDirectorySize(d)); foreach (DirectoryInfo dir in subDirs) { long dirSize = GetDirectorySize(dir); double dirSizeMB = dirSize / (1024.0 * 1024.0); double percentage = totalSize > 0 ? (dirSize * 100.0 / totalSize) : 0; ListViewItem item = new ListViewItem(new string[] { dir.Name, dirSizeMB.ToString("F2"), percentage.ToString("F2") }); listView1.Items.Add(item); } button1.Enabled = false; button2.Enabled = false; button3.Enabled = false; } } label2.Text = "全部备份文件大小:" + GDL(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\").ToString() + "MB"; } private void button4_Click(object sender, EventArgs e) { string T = DateTime.Now.ToString("yyyy'.'MM'.'dd'T'HH'.'mm'.'ss'.'fffffffzz"); Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T); if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted")) File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Users.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T + @"\Users.encrypted"); if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted")) File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Data.encrypted", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\" + T + @"\Data.encrypted"); listView1.Items.Clear(); DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\"); DirectoryInfo[] subDirs = dirInfo.GetDirectories(); long totalSize = subDirs.Sum(d => GetDirectorySize(d)); foreach (DirectoryInfo dir in subDirs) { long dirSize = GetDirectorySize(dir); double dirSizeMB = dirSize / (1024.0 * 1024.0); double percentage = totalSize > 0 ? (dirSize * 100.0 / totalSize) : 0; ListViewItem item = new ListViewItem(new string[] { dir.Name, dirSizeMB.ToString("F2"), percentage.ToString("F2") }); listView1.Items.Add(item); } button1.Enabled = false; button2.Enabled = false; button3.Enabled = true; label2.Text = "全部备份文件大小:" + GDL(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\ArchivesCenter\Backups\" + Properties.Settings.Default.current_user + @"\").ToString() + "MB"; } private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (listView1.SelectedItems.Count > 0) { button1.Enabled = true; button2.Enabled = true; } else { button1.Enabled = false; button2.Enabled = false; } } } }