using CopyUSB; using System.Management; static string GetVolumeLabel(string driveName) { try { DriveInfo driveInfo = new DriveInfo(driveName); return driveInfo.VolumeLabel; } catch (Exception) { return null; } } string query = "SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2"; ManagementEventWatcher managementEventWatcher = new(query); Console.WriteLine("Waiting for USB..."); managementEventWatcher.EventArrived += (s, e) => { string driveName = e.NewEvent.Properties["DriveName"].Value.ToString(); string dPath = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "USBCopy", GetVolumeLabel(driveName)); Console.WriteLine($"Detected: {driveName} || Save To -> : {dPath}"); if (!Directory.Exists(dPath)) { Directory.CreateDirectory(dPath); } FileCopy.Copy(driveName, dPath); Console.WriteLine("\n--------------Scaned and waiting--------------\n"); }; managementEventWatcher.Start(); // 让程序保持运行状态 while (true) { Thread.Sleep(1000); /*Console.WriteLine("一次休眠周期");*/ }