Wynne Johnson Ответов: 3

Идентификация USB-накопителя


Как я могу однозначно идентифицировать физический USB-накопитель в коде .Net C#, чтобы отличить его от любого другого USB-накопителя, даже с той же файловой структурой на нем? Я имею в виду не порт, а само устройство, называемое флэш-накопителем.

Что я уже пробовал:

Пространство имен System.Management раньше содержало полезный объект, но теперь он недоступен.

3 Ответов

Рейтинг:
2

Dave Kreskowiak

Пространство имен System.Management все еще существует. На самом деле там уже давно не было никаких изменений в коде, так что я не знаю, что вы подразумеваете под словом "привыкли".

Но это пространство имен в .NET Framework не оказывает никакого влияния на классы, доступные в WMI, которые обычно начинаются с имени "Win32_".

Если у вас есть код, который использует System.Management, который раньше работал, а теперь нет, вы не объяснили ему никаких проблем и не показали код, который больше не работает, так что мы действительно ничего не можем с этим поделать.


Теперь, если вы пытаетесь использовать USB-накопитель в качестве "ключа безопасности", вы не можете этого сделать. В этих дисках нет ничего абсолютно уникального от одного диска к другому. Вы даже не можете предположить, что есть серийный номер, выставленный устройствами.


Рейтинг:
1

OriginalGriff

Вы пробовали это сделать? DriveInfo.Собственность Метку Тома (Системы.IO) | Microsoft Docs[^]?


Рейтинг:
1

Member 13566383

Попробовать это:

var drives = DriveInfo.GetDrives().Where(
                    drive => drive.IsReady && drive.DriveType == DriveType.Removable);

                if (drives.Count() > 0)                
                {
                    List<DriveNameInfo> driveNameInfo = new List<DriveNameInfo>();
                    foreach (DriveInfo driveInfo in drives)
                        driveNameInfo.Add(new DriveNameInfo(driveInfo.Name,               driveInfo.VolumeLabel));
}