Когда подключен зашифрованный USB-накопитель, как я могу использовать WMI для поиска логического диска «запуска»?

Я использую WMI, чтобы определить, когда подключены / вставлены различные типы носителей (USB-накопители, компакт-диски и т. Д.). Тем не менее, зашифрованные диски, такие как «SanDisk Enterprise FIPS USB», делают что-то забавное: похоже, они представляют собой CD-дисковод, с которого можно запустить приложение для разблокировки. Когда утилита разблокировки завершится, новый логический диск USB станет доступным для чтения / записи. Так что порядок событий, как я их вижу из WMI:

  1. USB вставлен
  2. Win32_DiskDrive объект создан (см. \. \ PHYSICALDRIVE2 ниже)
  3. Создаются отдельные Win32_LogicalDisks, один из которых я скопировал ниже (G :), и содержит модуль запуска, а другой (M: в моем случае) — это диск, который в конечном итоге станет доступным.

НО, нет записей Win32_DiskDriveToDiskPartition до тех пор, пока утилита не запустится, что является обычным способом определения томов по идентификатору оборудования. После долгих поисков и некоторые проб и ошибок, Я не смог найти архитектурно обоснованный метод связывания PHYSICALDRIVE2 с G :. Общепринятое мнение о том, что такие отображения не должны существовать, потому что физическим носителям не нужно иметь разделы или тома и т. Д., Но в моем случае я в основном знаю это делает существует, и будет иметь ошибку в некотором значительном смысле, если ожидаемое отображение отсутствует.

На данный момент моей единственной стратегией является перечисление всех томов и просто поиск соответствующего файла на всех дисководах CD, возможно, отслеживание любых таких устройств, которые были распознаны после подключения моего зашифрованного USB-накопителя. Очевидно, это безобразный хак. Предложения?

TargetInstance =
instance of Win32_LogicalDisk
{
Caption = "G:";
CreationClassName = "Win32_LogicalDisk";
Description = "CD-ROM Disc";
DeviceID = "G:";
DriveType = 5;
MediaType = 11;
Name = "G:";
SystemCreationClassName = "Win32_ComputerSystem";
};

instance of Win32_DiskDrive
{
Caption = "SanDisk Enterprise FIPS USB Device";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_DiskDrive";
Description = "Disk drive";
DeviceID = "\\\\.\\PHYSICALDRIVE2";
FirmwareRevision = "6.61";
Index = 2;
InterfaceType = "USB";
Manufacturer = "(Standard disk drives)";
MediaLoaded = TRUE;
Model = "SanDisk Enterprise FIPS USB Device";
Name = "\\\\.\\PHYSICALDRIVE2";
Partitions = 0;
SerialNumber = "u";
Signature = 0;
Status = "OK";
SystemCreationClassName = "Win32_ComputerSystem";
};

2

Решение

У меня был USB 3G ключ, который работал аналогичным образом.

Он представлял себя компьютеру как два совершенно разных устройства: привод CD-ROM и ключ 3G. В вашем случае это привод CD-ROM и жесткий диск.

Windows думает G: на самом деле физический привод CD-ROM. G: не раздел PHYSICALDISK2,

Вот почему вы не можете найти прямую связь между G: а также PHYSICALDISK2: нет ни одного.

Если вы копаете достаточно глубоко, вы можете показать, что CD-ROM и диск находятся на одной шине USB. Я не знаю, если бы вы могли убедительно продемонстрировать с помощью программного обеспечения, что они на самом деле одно и то же устройство.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector