-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutoUSBBackup.cs
93 lines (78 loc) · 5.49 KB
/
AutoUSBBackup.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
## ## ## ## ## ## ########## ## ## ########## ################ ## ## ################ ########### ########## ## ## ################ ## ## ##########
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## #### ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ############ ######## ## ############ ## ## ########### ######## ## ## ## ## ## ## ## ## ########
## ## ## ## ## ############ ######## ## ############ ## ## ########### ######## ## ## ## ## ## ## ## ## ########
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## #### ##
########## ## ########## ## ## ## ## ########## ################ ## ## ################ ########### ########## ## ## ################ ## ## ##########
Script by lylythechosenone
*/
using System;
using System.IO;
using System.Management;
using Newtonsoft.Json;
class USBDrive{
private static void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
{
Config config = JsonConvert.DeserializeObject<Config>(File.ReadAllText("config.json"));
if (Directory.Exists(config.driveLetter + ":\\") && Directory.Exists(config.pathToCopy)) {
if (config.clear) {
Clear(config.driveLetter + ":\\");
}
Copy(config.pathToCopy, config.driveLetter + ":\\");
Console.WriteLine("Done");
}
}
static void Main()
{
WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBHub'");
ManagementEventWatcher insertWatcher = new ManagementEventWatcher(insertQuery);
insertWatcher.EventArrived += new EventArrivedEventHandler(DeviceInsertedEvent);
insertWatcher.Start();
Console.ReadKey();
}
public static void Copy(string sourceDirectory, string targetDirectory)
{
var diSource = new DirectoryInfo(sourceDirectory);
var diTarget = new DirectoryInfo(targetDirectory);
CopyAll(diSource, diTarget);
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
Directory.CreateDirectory(target.FullName);
// Copy each file into the new directory.
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.FullName, fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
public static void Clear(string path) {
System.IO.DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo file in di.GetFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
dir.Delete(true);
}
}
}
public class Config
{
public string driveLetter { get; set; }
public string pathToCopy { get; set; }
public bool clear { get; set; }
}