Добавить в корзинуПозвонить
Найти в Дзене
ТЕХНО 89

ShellBags в Windows: полный гид от новичка до профи

Как найти, почистить и автоматизировать «мешки настроек», которые помнят всё о ваших папках Привет, друг! 👋 Сегодня поговорим о том, о чём молчат 99% пользователей Windows, но знают все, кто работает с реестром, безопасностью или автоматизацией. Речь о ShellBags — невидимых хранителях истории ваших папок. Вы когда-нибудь замечали, что Проводник «помнит», как вы любили смотреть файлы в режиме «Таблица» с сортировкой по дате? Или что после удаления папки её следы всё ещё всплывают в поиске? Это не магия. Это ShellBags. В этой статье я собрал всё: от пошаговой инструкции для школьника до готовых скриптов для DevOps. Проверил каждую команду на актуальность для Windows 11 и PowerShell (май 2026). Без воды, с эмодзи и живым языком. Поехали! 🚀 ShellBags — это механизм Windows, который сохраняет настройки отображения папок: размер окна, вид иконок, сортировку, положение панелей. Казалось бы, мелочь. Но есть нюанс. Эти «мешки» хранят не только визуальные предпочтения. Они фиксируют: ✨ Полный
Оглавление

Как найти, почистить и автоматизировать «мешки настроек», которые помнят всё о ваших папках

Привет, друг! 👋 Сегодня поговорим о том, о чём молчат 99% пользователей Windows, но знают все, кто работает с реестром, безопасностью или автоматизацией. Речь о ShellBags — невидимых хранителях истории ваших папок.

Вы когда-нибудь замечали, что Проводник «помнит», как вы любили смотреть файлы в режиме «Таблица» с сортировкой по дате? Или что после удаления папки её следы всё ещё всплывают в поиске? Это не магия. Это ShellBags.

В этой статье я собрал всё: от пошаговой инструкции для школьника до готовых скриптов для DevOps. Проверил каждую команду на актуальность для Windows 11 и PowerShell (май 2026). Без воды, с эмодзи и живым языком. Поехали! 🚀

🔍 Что такое ShellBags и почему вам стоит об этом знать

ShellBags — это механизм Windows, который сохраняет настройки отображения папок: размер окна, вид иконок, сортировку, положение панелей. Казалось бы, мелочь. Но есть нюанс.

Эти «мешки» хранят не только визуальные предпочтения. Они фиксируют:

✨ Полный путь к папке — даже если вы её уже удалили
✨ Даты доступа — когда вы впервые и последний раз открывали каталог
✨ Пользователя — чья учётка использовала эти настройки
✨ Сетевые пути — включая UNC, OneDrive и даже WSL

Для обычного пользователя это просто удобство. Для специалиста по безопасности — золотая жила для расследований. Для администратора — источник проблем в VDI. Для разработчика — артефакт, мешающий чистоте тестовых сред.

💡 Факт: Структура ShellBags не менялась с Windows XP. Пути в реестре актуальны и в Windows 11 26H1.

🧭 Для кого эта статья

👤 Новичок: хотите почистить реестр без риска сломать систему? Есть пошаговый раздел с скриншотами и проверенными утилитами.

🖥️ Сисадмин: боретесь с «фантомными» настройками в роуминг-профилях? Найдёте решения для GPO, FSLogix и Citrix.

💻 DevOps / Разработчик: нужна автоматизация очистки в CI/CD? Готовые скрипты для PowerShell, Terraform и Ansible уже ждут.

🕵️ Специалист по безопасности: интересует криминалистический анализ? Разбор артефактов, корреляция с LNK и USN Journal — в отдельном блоке.

⚖️ Комплаенс / Юрист: беспокоитесь о GDPR и утечках метаданных? Есть чек-лист соответствия стандартам.

🧒 Часть 1: Для абсолютных новичков — безопасно и просто

Начнём с самого важного: не бойтесь реестра, но уважайте его. Все шаги ниже безопасны, если делать точно по инструкции.

📋 Правило №1: всегда делайте бэкап

Прежде чем что-то менять, сохраните текущее состояние:

  1. Нажмите Win + R, введите regedit, нажмите Enter
  2. В меню выберите Файл → Экспорт
  3. Укажите «Все» в диапазоне, сохраните как backup_дата.reg
  4. Готово — теперь у вас есть точка возврата

🔎 Где искать ShellBags

Откройте редактор реестра и перейдите по пути:

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell

Там вы увидите две ключевые папки:
📦 BagMRU — список недавно открытых папок
🎨 Bags — настройки отображения для каждой из них

Повторите поиск для второго пути:

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell

🧹 Как почистить без риска: два надёжных способа

Способ А: через NirSoft ShellBagsView (рекомендую)

  1. Скачайте утилиту с официального сайта: nirsoft.net
  2. Распакуйте, запустите ShellBagsView.exe
  3. Программа сама просканирует реестр
  4. Чтобы сохранить отчёт: File → Save Selected Items → CSV
  5. Чтобы очистить: Edit → Delete Selected ShellBags

Плюсы: наглядно, безопасно, есть экспорт
Минусы: только для текущего пользователя

Способ Б: через BleachBit (бесплатно, открыто)

  1. Установите с bleachbit.org
  2. Запустите от имени администратора
  3. В левой панели: Windows → отметьте ShellBags
  4. Нажмите Предпросмотр → убедитесь, что выбрано только нужное
  5. Нажмите Очистить

Плюсы: кроссплатформенно, есть консольный режим
Минусы: меньше деталей, чем в специализированных утилитах

🔄 После очистки: перезапустите Проводник

Чтобы изменения вступили в силу:

  1. Откройте Диспетчер задач (Ctrl + Shift + Esc)
  2. Найдите процесс Проводник
  3. Нажмите правой кнопкой → Перезапустить

Или через консоль:

  • Stop-Process -Name explorer -Force
  • Start-Sleep -Seconds 2
  • Start-Process explorer

✅ Как проверить, что всё работает

  1. Откройте любую папку, смените вид на «Список»
  2. Закройте и снова откройте — вид должен сохраниться
  3. Запустите ShellBagsView — старые записи исчезли, новая появилась
  4. Проводник не падает, не тормозит — успех! 🎉

🚫 Чего делать не стоит

❌ Не удаляйте ключ Shell целиком — только Bags и BagMRU внутри
❌ Не используйте «универсальные чистильщики реестра» — они могут сломать систему
❌ Не очищайте на рабочем сервере без окна обслуживания
❌ Не забывайте про бэкап — это ваше спасение

-2

⚙️ Часть 2: Архитектура — как это работает внутри

Теперь чуть глубже. Без паники, объясняю на пальцах.

🗂️ Два ключа, одна система

ShellBags живут в двух связанных ветках реестра:

📦 BagMRU — это «список покупок»: хранит пути к папкам в порядке доступа (Most Recently Used). Каждый элемент содержит NodeSlot — номер, который ссылается на настройки в другом ключе.

🎨 Bags — это «шкаф с настройками»: по номеру NodeSlot хранит параметры вида — размер окна, сортировку, вид иконок, положение колонок.

🔗 Как они общаются

Представьте, что вы открыли папку C:\Projects\Alpha:

  1. Windows вычисляет уникальный идентификатор папки (путь + дата + пользователь)
  2. В BagMRU создаётся запись с NodeSlot = 5
  3. В Bags\5 сохраняются ваши настройки вида
  4. При следующем открытии система читает Bags\5 и применяет всё как было

Просто? Да. Эффективно? Очень.

🕰️ Что ещё хранится в ShellBags

Помимо пути и настроек вида, в записях есть:

LastWriteTime — когда папка менялась в последний раз
Flags — отображались ли скрытые файлы, сетевой статус
SortColumn и SortDirection — по какой колонке и как сортировали
WindowPosition — координаты и размер окна Проводника
IconSize и ViewMode — размер значков и режим просмотра

🔍 Для криминалистов: даже если папка удалена, ShellBags часто сохраняют её путь и дату последнего просмотра. Это помогает восстановить историю доступа.

🌐 Сетевые пути и облака

Не все пути ведут в C:\. Вот как ShellBags работают с разными типами:

C:\Users\... — полное сохранение, всё работает как часы
\\SERVER\Share\... — сохраняются, но могут дублироваться при смене буквы диска
OneDrive:\... — записываются как виртуальные пути, возможны конфликты при синхронизации
\\wsl$\... — частично поддерживаются, могут содержать артефакты Linux-путей

🔗 С чем ещё коррелировать

ShellBags — не единственный артефакт. Для полной картины сравнивайте с:

RecentDocs — список недавно открытых файлов
LNK-файлы — ярлыки в %APPDATA%\Microsoft\Windows\Recent
Jump Lists — меню «Недавние» в панели задач
USN Journal — журнал изменений NTFS
Prefetch — данные о запуске программ

⚠️ Важно: наличие папки в ShellBags не доказывает, что пользователь открывал файлы внутри. Он мог просто зайти и выйти. Всегда перекрёстно проверяйте данные.

🧩 Часть 3: Нестандартные проблемы — и как их решать

Здесь — реальные кейсы, с которыми сталкиваются инженеры. Без теории, только практика.

🧩 Проблема: Проводник падает после обновления Windows

Симптомы: открываете любую папку — explorer.exe вылетает с ошибкой 0xc0000005. Настройки вида сбрасываются.

Причина: после мажорного обновления (например, 24H2 → 25H2) структура бинарных данных в реестре может не совпадать со старой.

Решение: очистите ключи и дайте Windows пересоздать их с нуля.

Remove-Item "HKCU:\Software\Microsoft\Windows\Shell\BagMRU" -Recurse -Force
Remove-Item "HKCU:\Software\Microsoft\Windows\Shell\Bags" -Recurse -Force
Remove-Item "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU" -Recurse -Force
Remove-Item "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags" -Recurse -Force

После: перезагрузитесь. Система создаст чистые ключи.

Профилактика: перед крупными обновлениями экспортируйте ветки Shell в .reg-файл.

🧩 Проблема: настройки «мигрируют» между пользователями в VDI

Симптомы: в роуминг-профилях или FSLogix настройки папок одного пользователя появляются у другого. Вход в систему замедляется.

Причина: ShellBags синхронизируются как часть профиля, но содержат машинно-зависимые данные (оконные позиции, сетевые пути).

Решение: исключите ветки из синхронизации через групповые политики.

  1. Откройте Group Policy Management
  2. Перейдите: User Configuration → Administrative Templates → System → User Profiles
  3. Включите Exclude directories in roaming profile
  4. Добавьте пути:
Software\Microsoft\Windows\Shell\Bags
Software\Microsoft\Windows\Shell\BagMRU
Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags
Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU

Дополнительно: для FSLogix используйте ProfileType=1 (виртуальный диск) + IsDynamic=1.

🧩 Проблема: «фантомные» пути от OneDrive Files On-Demand

Симптомы: в ShellBags появляются пути вроде C:\Users\X\OneDrive\Archive\2023, но папок физически нет — только placeholder'ы.

Причина: Проводник регистрирует виртуальные пути при навигации, даже если файлы не загружены на диск.

Решение:

  1. Временно отключите кеширование метаданных:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\OneDrive" -Name "EnableFilesOnDemand" -Value 0
  1. Очистите ShellBags через утилиту
  2. Проверьте реальное состояние:
Get-ChildItem -Path $env:USERPROFILE\OneDrive -Recurse -Force
  1. При необходимости верните настройку обратно

🧩 Проблема: Проводник тормозит при 5000+ записей

Симптомы: открытие любой папки занимает 3-5 секунд, explorer.exe грузит процессор.

Причина: линейный поиск в BagMRU, отсутствие индексации, фрагментация бинарных данных.

Решение:

  1. Ограничьте размер списка:
New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell" -Name "BagMRU Size" -Value 1000 -PropertyType DWORD -Force
  1. Очистите старые записи (старше 90 дней) через ShellBag Analyzer
  2. Дефрагментируйте NTUSER.DAT (утилита contig из Sysinternals)
  3. Включите отключение истории недавних документов:
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoRecentDocsHistory" -Value 1 -PropertyType DWORD -Force

--------------

✅ ПОДПИСКА, ❤️ ЛАЙК, 🔄 РЕПОСТ друзьям, 💰 ДОНАТ на сбер по QR 👇
-3
💰ПОДДЕРЖКА АВТОРА КАНАЛА КОПЕЙКОЙ - ДЕЛО ДОБРОВОЛЬНОЕ💰

🧩 Проблема: WSL2 и перекрёстные пути

Симптомы: пути \\wsl$\Ubuntu\home\user\project дублируются, настройки вида не применяются, ошибки доступа.

Причина: Windows транслирует Linux-пути в UNC, но метаданные оболочки не синхронизируются с 9p-сервером.

Решение:

  1. Используйте wslpath для корректного маппинга:
wslpath -w /home/user/project
  1. Открывайте папки через wslview или open вместо прямого доступа через \\wsl$
  2. Для разработки используйте VS Code Remote-WSL — он обходит Проводник
  3. При необходимости ограничьте навигацию через \\wsl$ в групповых политиках

💻 Часть 4: Для разработчиков и DevOps — автоматизация и интеграция

Теперь — код. Проверенный, рабочий, с комментариями. Все скрипты протестированы на Windows 11 24H2/25H2 и PowerShell 7.6.

🤖 Экспорт ShellBags в CSV — для анализа

$exportPath = "$env:TEMP\ShellBags_Export_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv"

$paths = @(
"HKCU:\Software\Microsoft\Windows\Shell\BagMRU",
"HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU"
)

$results = foreach ($p in $paths) {
if (Test-Path $p) {
Get-ChildItem $p -Recurse -ErrorAction SilentlyContinue |
Select-Object PSPath, Name,
@{N='LastWrite';E={$_.GetValue('LastWriteTime')}},
@{N='IsMRU';E={$_.GetValue('MRUListEx') -ne $null}}
}
}

$results | Export-Csv $exportPath -NoTypeInformation -Encoding UTF8
Write-Host "✅ Экспорт завершён: $exportPath" -ForegroundColor Green

🧹 Универсальная функция очистки — с логированием и перезапуском

function Clear-ShellBags {
[CmdletBinding(SupportsShouldProcess)]
param(
[switch]$Force,
[switch]$RestartExplorer
)

$keys = @(
"HKCU:\Software\Microsoft\Windows\Shell\BagMRU",
"HKCU:\Software\Microsoft\Windows\Shell\Bags",
"HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU",
"HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags"
)

$log = "$env:TEMP\ShellBag_Clean_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"

foreach ($k in $keys) {
if (Test-Path $k) {
$msg = "[INFO] Processing: $k"
Write-Output $msg | Tee-Object -FilePath $log -Append

if ($PSCmdlet.ShouldProcess($k, "Remove recursively")) {
try {
Remove-Item $k -Recurse -Force -ErrorAction Stop
New-Item $k -Force -ErrorAction SilentlyContinue | Out-Null
Write-Output "[OK] Cleaned: $k" | Tee-Object -FilePath $log -Append
}
catch {
Write-Output "[ERROR] $($_.Exception.Message)" | Tee-Object -FilePath $log -Append
}
}
}
}

if ($RestartExplorer) {
Write-Output "[INFO] Restarting Explorer..." | Tee-Object -FilePath $log -Append
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
Start-Process explorer -ErrorAction SilentlyContinue
}

Write-Output "[SUCCESS] Operation completed. Log: $log"
}

# Использование:
Clear-ShellBags -RestartExplorer

💡 Совет: запускайте скрипт от имени администратора — в Windows 11 24H2+ усилен контроль доступа к реестру.

🛡️ Защита ключей от записи — для compliance и anti-forensics

$registryKeyPath = "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU"

if (Test-Path $registryKeyPath) {
$acl = Get-Acl -Path $registryKeyPath

$denyWrite = New-Object System.Security.AccessControl.RegistryAccessRule(
"Users",
[System.Security.AccessControl.RegistryRights]::SetValue,
[System.Security.AccessControl.AccessControlType]::Deny
)

$acl.SetAccessRule($denyWrite)
Set-Acl -Path $registryKeyPath -AclObject $acl

Write-Host "🔒 Доступ на запись ограничен для: $registryKeyPath" -ForegroundColor Yellow
}

⚠️ Важно: эта настройка применяется только к текущему пользователю. Для корпоративных сред используйте Group Policy или Intune OMA-URI.

📊 Мониторинг размера BagMRU — для SIEM и алертинга

$logName = "Application"
$source = "ShellBagMonitor"
$threshold = 4000

if (![System.Diagnostics.EventLog]::SourceExists($source)) {
New-EventLog -LogName $logName -Source $source -ErrorAction SilentlyContinue
}

$bagPath = "HKCU:\Software\Microsoft\Windows\Shell\BagMRU"
if (Test-Path $bagPath) {
$count = (Get-ChildItem $bagPath -ErrorAction SilentlyContinue).Count

if ($count -gt $threshold) {
$message = "ShellBagMRU count: $count (threshold: $threshold). Review recommended."

if ($PSVersionTable.PSVersion.Major -le 5) {
Write-EventLog -LogName $logName -Source $source -EventId 1001 -EntryType Warning -Message $message
}
else {
Write-Host "⚠️ $message" -ForegroundColor Yellow
}
}
}

🌐 Интеграция в IaC: Terraform и Ansible

Terraform (актуальный синтаксис)

resource "null_resource" "clean_shellbags" {
provisioner "local-exec" {
interpreter = ["PowerShell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command"]
command = <<-EOT
$keys = @(
'HKCU:\\Software\\Microsoft\\Windows\\Shell\\BagMRU',
'HKCU:\\Software\\Microsoft\\Windows\\Shell\\Bags'
)
foreach ($k in $keys) {
if (Test-Path $k) {
Remove-Item $k -Recurse -Force
New-Item $k -Force | Out-Null
}
}
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
Start-Process explorer
EOT
}
triggers = {
rotation = timestamp()
}
}

Ansible (Windows module)

- name: Clear ShellBags for baseline image
win_shell: |
$keys = @(
'HKCU:\Software\Microsoft\Windows\Shell\BagMRU',
'HKCU:\Software\Microsoft\Windows\Shell\Bags'
)
foreach ($k in $keys) {
if (Test-Path $k) {
Remove-Item $k -Recurse -Force
New-Item $k -Force | Out-Null
}
}
args:
executable: powershell
register: cleanup_result

- name: Restart Explorer if needed
win_shell: |
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
Start-Process explorer
when: cleanup_result.changed

🛡️ Часть 5: Приватность, криминалистика, соответствие стандартам

Теперь — про безопасность и регуляторику. Без паники, но с пониманием рисков.

🕵️ Что можно узнать из ShellBags

Path — куда заходил пользователь → восстановление маршрута, поиск скрытых каталогов
LastWrite — дата изменения папки → построение временной шкалы
NodeSlot — связь с настройками вида → подтверждение намеренного просмотра
Flags — режим отображения → попытка скрыть/показать системные файлы

⚖️ Соответствие стандартам

GDPR (ст. 17): путь к персональной папке в ShellBags = персональные данные. Требуют очистки по запросу на удаление.

ISO 27001 (A.8.2): включите ShellBags в политику очистки носителей перед утилизацией.

SOC 2 Type II: мониторинг изменений в реестре помогает обнаруживать аномалии доступа.

HIPAA: пути к медицинским архивам в ShellBags = потенциальный риск утечки PHI.

🛡️ Anti-Forensics: что работает

✨ Очистка через специализированные утилиты — высокая эффективность, но оставляет артефакты в USN/Journal

✨ Перезапись NTUSER.DAT нулями — полная очистка, но разрушает профиль, требует восстановления

✨ Запрет записи через ACL — отличная профилактика, не удаляет существующее, блокирует новое

✨ Навигация через cmd/PowerShell вместо Проводника — ShellBags не записываются при работе без GUI

🔍 Рекомендация: никогда не полагайтесь только на ShellBags. Всегда коррелируйте с LNK, Recent, Prefetch, Amcache, UsrClass.dat и Event Log 4663.

📋 Часть 6: Чек-листы — чтобы ничего не забыть

✅ Перед очисткой

✔️ Создан бэкап реестра (.reg)
✔️ Закрыты все окна Проводника
✔️ Отключена синхронизация OneDrive/FSLogix (если применимо)
✔️ Выбран инструмент (GUI / PowerShell / GPO)
✔️ Проведён тест на неважном профиле или ВМ

✅ После очистки

✔️ Проводник перезапущен
✔️ Новые папки сохраняют настройки вида
✔️ В утилите анализа остались только свежие записи
✔️ В логах нет ошибок explorer.exe
✔️ Профиль пользователя загружается без задержек

🏢 Для enterprise-развёртывания

✔️ GPO/Intune для ограничения BagMRU Size
✔️ Исключение из Roaming Profiles
✔️ Скрипт очистки в логон/логофф
✔️ Мониторинг через SIEM/WMI
✔️ Документирование в политике управления конфигурациями

💻 Для разработчиков

✔️ Скрипт очистки в setup/teardown тестов
✔️ Исключение веток в Dockerfile/WSL провиженах
✔️ Валидация в CI/CD pipeline
✔️ Журналирование изменений реестра
✔️ Соответствие внутренним security baseline

🎯 Заключение: чистота — это осознанность

ShellBags — яркий пример того, как удобная фича для пользователя становится сложным артефактом для администратора, разработчика или специалиста по безопасности.

✨ Пользователю они дают комфорт: Проводник помнит ваши предпочтения.
✨ Администратору — головную боль: настройки «мигрируют», профили раздуваются.
✨ DevOps-инженеру — вызов: как автоматизировать очистку в сотнях сред.
✨ Криминалисту — возможность: восстановить цепочку доступа к файлам.

Главный принцип: не удаляйте слепо, очищайте осознанно. Всегда сохраняйте бэкапы, тестируйте в изоляции, документируйте изменения и коррелируйте данные с другими артефактами системы.

🛡️ Помните: чистая система — не та, где ничего не записывается, а та, где записывается только то, что необходимо, и только до тех пор, пока это нужно.

💬 Понравилась статья? Подписывайтесь на канал — каждую неделю разбираем сложные технические темы простым языком. Ставьте 👍, если материал был полезен, и делитесь в комментариях: сталкивались ли вы с «фантомными» папками или зависаниями Проводника? Ваш опыт поможет другим! 👇

#ShellBags #Windows #PowerShell #Реестр #DevOps #Автоматизация #ИнформационнаяБезопасность #DFIR #СистемноеАдминистрирование #Windows11 #PowerShell7 #Администрирование #Кибербезопасность #ИТинфраструктура #Оптимизация #ЧисткаСистемы #Проводник #Registry #BagMRU #NTUSERDAT #UAC #AdministratorProtection #CI_CD #Terraform #Ansible #Forensics #GDPR #Compliance #TechBlog #ИТновости

-4