public static List <USBStorageIDModel> GetStorageID() { List <USBStorageIDModel> result = null; try { RegistryKey usbsKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\USBSTOR\Enum", false); if (usbsKey != null) { string[] usbs = usbsKey.GetValueNames(); if (Ls.Ok(usbs)) { result = new List <USBStorageIDModel>(); foreach (var usb in usbs) { object valueObj = usbsKey.GetValue(usb); string value = valueObj.ToString(); if (int.TryParse(usb, out int index) && value.Contains("USB")) { result.Add(USBStorageIDModel.String2Model(value)); } } } } } catch { } return(result); }
public static List <USBStorageModel> GetStorage(USBStorageIDModel idModel, USBStorageVolumeModel volumeModel) { List <USBStorageModel> result = null; try { RegistryKey mountKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\MountedDevices", false); if (mountKey != null) { string[] mounts = mountKey.GetValueNames(); if (Ls.Ok(mounts)) { result = new List <USBStorageModel>(); foreach (var mnt in mounts) { if (mnt.Contains("DosDevices")) { object valueObj = mountKey.GetValue(mnt); string value = Encoding.Default.GetString((byte[])valueObj).Replace("\0", ""); if (value.Contains(volumeModel.VolumeID)) { result.Add(new USBStorageModel() { VID = idModel.VID, PID = idModel.PID, VolumeID = volumeModel.VolumeID, StorageID = idModel.StorageID, Symbol = mnt.Replace("\\DosDevices\\", ""), }); } } } } } } catch { } return(result); }
public static List <USBStorageVolumeModel> GetVolumeID(USBStorageIDModel model) { List <USBStorageVolumeModel> result = null; try { RegistryKey idsKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\STORAGE\Volume", false); if (idsKey != null) { string[] volumes = idsKey.GetSubKeyNames(); if (Ls.Ok(volumes)) { result = new List <USBStorageVolumeModel>(); string containerId = "", classGUID = ""; //查找 USBSTOR 标记的卷 中ID吻合的项 foreach (var v in volumes) { if (v.Contains("_USBSTOR#") && v.Contains(model.StorageID)) { RegistryKey usbKey = idsKey.OpenSubKey(v); string[] infos = usbKey.GetValueNames(); if (Ls.Ok(infos) && v.Length > 38) { classGUID = usbKey.GetValue("ClassGUID").ToString(); containerId = usbKey.GetValue("ContainerID").ToString(); result.Add(new USBStorageVolumeModel() { VolumeID = v, ClassGUID = classGUID, ContainerID = containerId }); } } } //带着 ContainerID 查看所有卷 if (Str.Ok(containerId, classGUID)) { foreach (var v in volumes) { if (!v.Contains("_USBSTOR#") && !v.Contains(model.StorageID)) { RegistryKey usbKey = idsKey.OpenSubKey(v); string[] infos = usbKey.GetValueNames(); if (Ls.Ok(infos) && v.Length > 38) { string _class_guid = usbKey.GetValue("ClassGUID").ToString(); string _container_id = usbKey.GetValue("ContainerID").ToString(); if (containerId == _container_id && classGUID == _class_guid && !result.Any(x => x.VolumeID == v)) { result.Add(new USBStorageVolumeModel() { VolumeID = v, ClassGUID = _class_guid, ContainerID = _container_id }); } } } } } } } } catch { } return(result); }