Windows 11 оставляет USB-накопители как скрытые отсутствующие устройства после отключения
Windows 11 оставляет USB-накопители как скрытые отсутствующие устройства после отключения

Накануне издание писало о том, как Windows может хранить эскизы удалённых фотографий, и знакомый, который отдаёт свой старый ноутбук с Windows (при нынешних ценах на RAM это щедрый подарок), из осторожности спросил, достаточно ли сбросить ПК и не хранит ли Windows втайне часть его данных.

Посты, нагнетающие страх вокруг Windows, в соцсетях не новость. Несколько вирусных публикаций утверждают, что Windows хранит постоянную запись о каждом USB-устройстве, которое вы когда-либо подключали, даже после его извлечения. За этим утверждением стоит реальное поведение Windows, но посты, собирающие вовлечённость, выставляют его куда более зловещим, чем оно есть.

Скриншот из вирусного поста, показывающий, что Windows хранит имена USB-накопителей даже после их извлечения
Скриншот из вирусного поста, показывающий, что Windows хранит имена USB-накопителей даже после их извлечения

Linux и macOS тоже ведут информацию об устройствах и системные журналы для оборудования. Microsoft документирует это поведение больше десяти лет.

Ниже о том, что Windows помнит о подключённых USB-накопителях, зачем она это делает, как проверить это самостоятельно и что происходит с записями при сбросе ПК.

Microsoft объяснила, почему Windows продолжает помнить USB-накопители

Ещё в 2012 году ведущий инженер Microsoft Джейсон Уокер писал в блоге Microsoft по скриптам: “когда USB-накопитель вставляют в машину, в реестре создаётся ключ USBSTOR, и всё, что операционной системе нужно знать об этом устройстве хранения, содержится в этом ключе”.

Полный путь к ключу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR.

В справочном документе Microsoft об удалении информации о старых устройствах из реестра объясняется, почему Windows продолжает хранить эту запись. Когда накопитель подключают, “пусть даже на короткое время, Windows создаёт информацию об устройстве в реестре”, а очистку оставляют другому ПО, потому что “Windows не знает, извлекли устройство временно или навсегда”.

Когда вы вынимаете USB-флешку, Windows, очевидно, не может знать, подключите ли вы её снова завтра, поэтому Plug and Play сохраняет экземпляр устройства, чтобы распознать и настроить накопитель при следующем подключении.

У Microsoft есть название для таких остатков. Устройства, которые физически извлекли, но записи о которых в реестре не удалили, называют отсутствующими устройствами, или фантомными устройствами. Увидеть их можно в Диспетчере устройств, выбрав Вид > Показать скрытые устройства.

Настройка отображения скрытых устройств в Диспетчере устройств.
Настройка отображения скрытых устройств в Диспетчере устройств.

Однако USBSTOR не список всех USB-устройств, которые вы подключали к ПК с Windows. Он охватывает накопители, которыми управляет драйвер Usbstor.sys. Кроме того, у Windows есть отдельный драйвер хранилища UASP, Uaspstor.sys, для устройств с более новым протоколом USB Attached SCSI, созданным для повышения производительности накопителей. Клавиатура, веб-камера, USB-мышь или USB-микрофон в USBSTOR не появятся. На практике они там не отображаются.

Фантомные устройства в разделе дисковых устройств.
Фантомные устройства в разделе дисковых устройств.

Легко счесть это проблемой только Windows, но Linux udev ведёт базу обработанных устройств, а macOS хранит информацию об оборудовании через IOKit и записывает системные события в унифицированный журнал. Операционным системам нужно определять оборудование, загружать подходящий драйвер и помогать в диагностике, когда что-то идёт не так.

Так что да, Windows помнит USB-накопитель. Но полезнее спросить, что именно она помнит.

Что Windows знает о вашем USB-накопителе, а что нет

Windows может хранить читаемое имя устройства, например “SanDisk Ultra USB Device”, а также идентификаторы оборудования и экземпляра, производные от информации, которую сообщает устройство. В зависимости от устройства идентификатор экземпляра может содержать сведения о серийном номере или расположении, время первой настройки накопителя, время последнего подключения или извлечения, а также присвоенную букву диска.

Однако записи USBSTOR, о которых здесь говорится, не содержат списка файлов, которые были на накопителе, и сами по себе не показывают, копировали ли файлы. Другие функции Windows могут оставлять отдельные следы, например недавние элементы или аудит съёмных носителей.

Чтобы посмотреть записи, откройте Windows PowerShell и выполните следующую команду.

reg query “HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR” /s

Ключ /s опрашивает все подразделы USBSTOR. Каждый ключ модели содержит подразделы экземпляров устройств. В зависимости от устройства идентификатор экземпляра может содержать сведения о серийном номере или расположении. Но одно лишь имя SanDisk не доказывает, что подключали именно эту флешку, потому что разные накопители могут иметь одинаковые аппаратные ID, а USB-устройства не обязаны сообщать серийный номер.

Для более чистого списка используйте командлет Plug and Play в PowerShell.

Get-PnpDevice -Class DiskDrive |

  • Where-Object { $_.InstanceId -like ‘USBSTOR*’ } |*
  • Format-List Status, FriendlyName, InstanceId*

Get-PnpDevice показывает устройства, известные Plug and Play, присутствуют они или нет, если не добавить -PresentOnly. Это удобно для простой проверки. Подключите USB-накопитель, выполните команду и запишите его InstanceId. Затем безопасно извлеките накопитель, отключите его и выполните предыдущую команду вместе с этой.

Get-PnpDevice -PresentOnly -Class DiskDrive |

  • Format-List FriendlyName, InstanceId*

Если Windows сохранила запись, накопитель исчезнет из списка с -PresentOnly, но останется в первом списке.

Чтобы проверить временные метки, подставьте этот InstanceId в $deviceId и выполните следующее:

$deviceId = ‘PASTE_THE_FULL_INSTANCE_ID_HERE’ Get-PnpDeviceProperty -InstanceId $deviceId |

  • Where-Object { $.KeyName -match ’(FirstInstallDate|InstallDate|LastArrivalDate|LastRemovalDate)$’ } |*
  • Format-List KeyName, Data*

FirstInstallDate указывает, когда Windows впервые установила этот экземпляр устройства. InstallDate показывает, когда его установили в последний раз, и, по словам Microsoft, эта метка времени меняется при каждом обновлении драйвера. LastArrivalDate и LastRemovalDate хранят по одному значению, поэтому ни одно из этих полей не даёт полной истории всех подключений накопителя.

Windows также записывает установку устройств в текстовый журнал SetupAPI по пути %SystemRoot%\INF\setupapi.dev.log. Его можно поискать по вашему накопителю.

Select-String -Path “$env:SystemRoot\INF\setupapi.dev.log” -SimpleMatch -Pattern $deviceId -Context 3,12

Совпадение показывает, что SetupAPI зафиксировал событие установки для этого устройства. Это не полная запись о каждом последующем подключении.

Наконец, reg query “HKLM\SYSTEM\MountedDevices” показывает постоянную базу имён диспетчера подключений, которая сопоставляет тома с буквами дисков и может хранить имена для томов, которых больше нет в системе. Запись вида \DosDevices\F: не идентифицирует накопитель SanDisk, пока её двоичные данные не сопоставят с томом этого устройства.

Как удалить записи о USB-устройствах и достаточно ли сброса

Чтобы удалить запись о накопителе, щёлкните правой кнопкой по серому накопителю в представлении скрытых устройств Диспетчера устройств и выберите “Удалить устройство”.

Как удалить фантомный USB-накопитель.
Как удалить фантомный USB-накопитель.

Microsoft отмечает, что ключи реестра устройства удаляются автоматически при его удалении. IT-администраторы могут массово очищать фантомные записи накопителей с помощью утилиты Microsoft DevNodeClean. Не удаляйте ключи USBSTOR вручную, это может вывести ПК из строя.

Что касается ноутбука знакомого, при сбросе Windows Microsoft советует выбирать Удалить всё: эта функция “переустанавливает Windows и удаляет все личные файлы, приложения и настройки” и подходит “когда вы отдаёте или продаёте ПК”. В документации по сбросу кнопкой сказано, что этот вариант готовит ПК “к переработке или передаче владения”. Поскольку ОС переустанавливается, старые записи USBSTOR не должны сохраниться.

Есть нюанс. По данным Microsoft, сброс не форматирует том Windows и удаляет пользовательские файлы по отдельности, поэтому перед передачей ноутбука включите “Очистить данные” в разделе “Изменить параметры”. Microsoft утверждает, что эта функция “усложняет восстановление удалённых файлов другими людьми”, хотя “не соответствует государственным и отраслевым стандартам стирания данных”. Если в ноутбуке есть второй раздел, выберите также удаление файлов со всех дисков.

Windows хранит много метаданных по законным причинам. Например, туннелирование файловой системы присваивает новому файлу дату создания удалённого файла. Полноценный сброс с удалением всего убирает старую установку Windows и её данные, но его нельзя называть универсальным средством криминалистического стирания.

Доказывает ли запись о USB-устройстве, что кто-то скопировал файлы?

Что до утверждения, будто записи USB доказывают кражу данных, это не так. Запись USBSTOR может показать, что Windows обнаружила конкретное устройство. Сама по себе она не скажет, какие файлы копировали, передавались ли данные на устройство или с него и кто физически его подключил.

Windows может регистрировать доступ к файлам на съёмных накопителях через политику аудита съёмных носителей, которая создаёт события вроде 4663, но только если её включили до активности. Включение позже не создаст записи о том, что уже произошло.

Пост в соцсети, утверждающий, что Windows хранит постоянную запись о каждом USB-устройстве, которое вы когда-либо подключали.
Пост в соцсети, утверждающий, что Windows хранит постоянную запись о каждом USB-устройстве, которое вы когда-либо подключали.

Вирусные посты верно передают основную мысль: Windows помнит USB-накопитель после отключения, как и другие массовые настольные ОС. Но запись USBSTOR не содержит содержимого накопителя и сама по себе не доказывает, что кто-то копировал файлы. Отдельный аудит или другие криминалистические данные могут подтвердить доступ к файлам, но это не то же самое, что запись USBSTOR. И она не постоянна.