Содержание
WinSxS — что это за папка и можно ли ее удалить или уменьшить?
Эта директория обычно раздражает владельцев ПК с операционной системой Windows из-за своего объема и к тому же со временем только увеличивающегося. И главное, раньше не было достаточно безопасного метода снизить объем занимаемого ей на дисковом пространстве места. Удаление WinSxS приводила к сбоям в работе Windows либо к падению ОС.
Поэтому прежде, чем предпринимать какие либо действия, требуется внимательно разобраться с WinSxS: что это за папка и можно ли ее удалить.
Кратко об этой папке
Эта директория с резервными файлами ОС. Поэтому после каждой процедуры обновления ее размер увеличивается. Находится она на C:\Windows\winsxs и является системной.
Благодаря ей можно удалить обновления и выполнить откат системы при возникновении проблем с Windows.
В этой директории хранятся все данные об операционной системе и если ее удалить, то вероятнее всего система больше загружаться не будет.
С вопросом удаления разобрались, теперь перейдем к задаче, возможна ли безопасная очистка папки WinSxS с целью уменьшения ее размеров и количества памяти, занимаемой на дисковом пространстве компьютера.
Можно ли очищать содержимое WinSxS?
Удалить можно только определенные файлы, а не все находящееся в ней. Потребуется применение системных утилит Windows (в разных версиях ОС средства различаются). Сторонние приложения, предназначенные для чистки, не имеют возможности удалять какую-либо информацию из этого каталога, так как данная директория является системной.
Предупреждение! Если удалить вручную компоненты, содержащиеся в WinSxS, то последствия вмешательства непредсказуемы.
Правильный процесс освобождения памяти диска
Средство Windows, которым потребуется воспользоваться, чтобы правильно удалить некоторое содержимое папки, имеет наименование «DISM».
Для запуска этого приложения выполнить действия:
- через «Пуск» войти в строку поиска и набрать «CMD», далее кликнуть «Ввод»;
- в отобразившемся меню будет представлен перечень файлов, в котором надо найти «DISM»;
- в контекстном меню этого файла кликнуть на «Запуск от имени Администратора»;
- далее ввести «Dism.exe /online /cleanup-image /AnalyzeComponentStore»;
- в отобразившемся окне за пунктом «Component Store information» посмотреть на цифру в Гб – она показывает, сколько памяти занимает вся папка, а в самом конце указывается количество файлов, которые допускается безопасно удалить (они уже заменены на новые).
- вновь открыть командную строку и набрать «cleanmgr», далее кликнуть «Ввод»;
- после этого запустится приложение;
- далее следует убрать отметки со всех пунктов оставив только «Очистка обновлений Windows» и нажать на «Ок»;
- дождаться окончания процедуры и перезагрузить компьютер;
- после запуска компьютера можно проанализировать количество освобожденного дискового пространства.
Такое выполнение действий не приведет к полному удалению каталога WinSxS. Исчезнут лишь устаревшие данные, поэтому можно предположить, что очистится лишь небольшое количество памяти на жестком диске. Это зависит от того, насколько давно установлена ОС на компьютере.
Процесс для Windows 10
Процесс очистки каталога WinSxS в «Десятке» включает следующие действия:
- с админправами в командной строке ввести «Dism.exe /online /cleanup-image /AnalyzeComponentStore», далее кликнуть «Ввод»;
- дождаться окончания процесса анализа ОС каталога, после которого отобразится рекомендация о целесообразности выполнения очистки;
- в случае если Windows 10 порекомендовала почистить папку, то необходимо ввести «Dism.exe /online /cleanup-image /StartComponentCleanup» и кликнуть «Ввод». Далее все произойдет автоматически.
Важно! В десятой ОС предусмотрено такое условие, только если объем каталога WinSxS больше 10 Гб, то существует целесообразность ее почистить.
Процесс для Windows 8
Почистить директорию WinSxS в «Восьмерке» особенно легко. Это можно осуществить аналогичным методом, указанным для «Десятой» версии Виндовс, а также в данной ОС есть особое приложение для очистки.
Процесс очистки каталога WinSxS в «Восьмерке» включает следующие действия:
- через «Поиск» открыть приложение с наименованием «Очистка диска»;
- потом в этой утилите нажать на «Очистить системные файлы»;
- далее поставить галочки напротив данных, которые можно удалить в закладке «Очистка обновлений Windows» и кликнуть «Ок».
Этот способ является наиболее безопасным.
Процесс для Windows 7
В «Семерке» разработчики не позаботились о необходимости очистки директории WinSxS, но можно инсталлировать в ПК особое приложение, аналогичное утилите используемой в «Восьмерке».
Для инсталляции приложения необходимо сделать следующее:
- открыть «Панель управления»;
- далее войти в закладку «Центр обновления Windows»;
- потом кликнуть «Поиск обновлений» и дождаться окончания процесса;
- нажать на раздел, показывающий перечень необязательных обновлений;
- найти обновление KB2852386 от 11.2013 г. и установить его;
- теперь компьютер обладает новой программой «Очистка диска».
По аналогии с алгоритмом действий в Виндовс 8 можно почистить папку WinSxS.
Источник: https://WindowsTune.ru/tuning/winsxs-chto-eto-za-papka.html
Как очистить папку Installer в Windows
Процесс очистки системного диска стандартно должен включать ручное удаление неиспользуемых файлов в папках «Загрузки», «», «Музыка» и прочих папках пользовательского профиля. Нужные же файлы должны быть перемещены на несистемные разделы диска.
Следующий этап стандартной процедуры уборки внутри операционной системы – это очистка диска С в автоматическом порядке с помощью штатной утилиты Windows «Очистка диска», хотя большинство пользователей предпочитают делать это посредством сторонних программ-чистильщиков типа CCleaner.
Однако может случиться так, что по завершении их работы особый эффект в плане освобожденного места на диске С не будет достигнут.
Так, например, системная папка Installer, которая находится в каталоге Windows, может разрастись до огромных размеров – до 10 Гб и даже более.
Именно эта папка Installer не подлежит очистке в рамках работы штатной утилиты Windows «Очистка диска» или сторонних программ-чистильщиков.
Что это за папка и как с ней правильно поступить, если она достигла внушительных размеров? Обо всем этом ниже.
1. Папка Installer и ее содержимое
Папка Installer – это системная папка, где хранятся необходимые для удаления или обновления программ их инсталляторы, инсталляторы различных программных компонентов, патчи, файлы не установившихся системных обновлений и прочие данные, которые необходимы системе и установленному софту для определенных процессов. Эта папка размещается по пути C:\Windows\Installer, но попасть в нее с помощью системного проводника просто так нельзя. Папка Installer скрыта и защищена. И чтобы проверить, сколько места занимает содержимое этой папки, прибегнем к некоторым настройкам проводника Windows.
В любой из актуальных версий Windows (7, 8.1, 10) перемещаемся на вкладку системного проводника «Вид», затем кликаем «Параметры».
В окне параметров также переключаемся на вкладку «Вид». Опускаем вниз перечень дополнительных параметров. Именно внизу находятся необходимые настройки. Устанавливаем галочку на пункте «Показывать скрытые файлы, папки и диски», а с пункта «Скрывать защищенные системные файлы» – наоборот – галочку нужно снять. Сохраняем настройки кнопкой «Применить».
Перед нажатием кнопки «Применить» необходимо дополнительно подтвердить отображение скрытых защищенных системных файлов.
Теперь можем открыть путь C:\Windows и увидеть в нем папку Installer. Вызвав на ней контекстное меню, получим доступ к свойствам папки, где будет указан ее размер.
Как видим, в нашем случае занимаемый папкой Installer на диске С объем незначителен.
Однако, как уже упоминалось выше, так может быть далеко не в каждом случае. Как правило, чем давнее была установлена Windows, тем больше будет весить папка Installer. Увеличению ее объема способствуют постоянные процессы установки и удаления программ и игр. Не всегда при стандартной деинсталляции убираются следы программ, и они за месяцы (а то и годы) могут накапливаться и утяжелять папку Installer.
Так что же делать, если нужно освободить место на диске С, где папка Installer разрослась до огромных размеров?
2. Возможные последствия удаления файлов из папки Installer
Компания Microsoft является ярым противником, чтобы пользователи проводили какие-либо действия, а тем более удаляли папки или файлы из системного каталога C:\Windows. Потому так надежно и спрятана папка Installer от глаз обывателей.
Содержимое этой папки используется для удаления, восстановления и изменения отдельных программ, установленных в системе.
Так, к примеру, после удаления из папки Installer инсталлятора пакета офисных приложений Microsoft Office в дальнейшем нельзя будет удалять или добавлять отдельные его компоненты (Word, Excel, PowerPoint и т.д.).
Вам может быть интересно: Установка Windows на Mac OS
После удаления содержимого папки Installer могут перестать работать ярлыки некоторых программ, в частности, ярлыки приложений того же Microsoft Office.
Полностью удалять содержимое этой папки не стоит.
Если вопрос с нехваткой места на диске С стоит остро, и решить его увеличением размера системного раздела пока что нет возможности, как минимум прежде экспериментов с удалением файлов папки Installer необходимо создать точку восстановления, резервную копию или скопировать содержимое папки Installer на другой раздел диска, внешний носитель данных или облачное хранилище. Если в дальнейшем в работе Windows или каких-то программ возникнут проблемы, можно будет восстановить систему или поместить содержимое папки Installer обратно.
Для решения вопроса с внушительными размерами папки Installer существуют более лояльные альтернативы, чем полное уничтожение содержимого. Рассмотрим их.
3. Очистка папки Installer с помощью утилиты PatchCleaner
Минималистичная бесплатная утилита PatchCleaner являет собой нечто эдакого искусственного интеллекта, который умеет определять, что из содержимого папки Installer нужное, а что – нет. PatchCleaner сразу же при запуске показывает, какие из файлов могут в будущем пригодиться, а какие уже можно удалить. Утилита и определяет нужные и ненужные файлы, и тут же может ненужные удалить.
Скачать утилиту PatchCleaner можно с ее официального сайта. Ее установка стандартна.
После запуска утилиты жмем кнопку «Browse».
В окне проводника указываем путь C:\Windows\Installer и жмем кнопку «Выбор папки».
После чего в левом верхнем углу увидим данные по этой папке: сколько файлов еще нужны (столько-то files still used), а сколько можно удалить (столько-то files are orphaned). Также будет показано, сколько при этом освободится места на диске С. Чтобы удалить ненужные файлы папки Installer, жмем «Delete».
Подтверждаем.
На этом все.
4. Перенос папки Installer на другой диск с помощью символьной ссылки
Чтобы не удалять содержимое папки Installer – ни полностью, ни частично, можно прибегнуть к способу перемещения этой папки на другой раздел диска, но оставив при этом системе иллюзию ее нахождения на прежнем месте.
Такая иллюзия создается с помощью символьной ссылки. Физически папка Installer будет находиться на диске D, E, F и т.д. и занимать там фактический объем, тогда как символьная ссылка будет иметь путь C:\Windows\Installer.
Таким образом система и программы будут полагать, что обращаются к настоящей папке Installer.
Чтобы проделать эту процедуру, копируем папку Installer на диске С в каталоге Windows.
Далее заходим на другой раздел диска, возможно, выбираем какую-то папку, чтобы в корень диска не кидать всякий хлам, и вставляем папку Installer.
После этого возвращаемся на диск С и удаляем исходную папку Installer.
Затем запускаем командную строку от имени администратора. В Windows 7 можем ее отыскать с помощью поиска в меню «Пуск» и в контекстном меню на ярлыке выбрать запуск с правами администратора.
В системах Windows 8.1 и 10 жмем клавиши +X для вызова меню, где будет размещаться прямая ссылка на запуск командной строки от имени администратора.
В окне командной строки в нашем случае вводим:
mklink /j «c:\windows\installer» «e:\Installer»
Последний путь команды — «e:\Installer» – это путь, куда была скопирована папка Installer. В каждом отдельном случае будет, соответственно, отдельный путь, потому команду необходимо отредактировать по типу:
mklink /j «c:\windows\installer» «буква_диска:\папка\подпапка\Installer»
Проверим результат проделанных операций. Возвращаемся на диск С в каталог Windows и видим, что папка Installer теперь имеет вид со стрелочкой, подобно виду ярлыков. В свойствах папки увидим ее расположение – якобы она размещается на диске С в каталоге Windows.
Источник: https://WindowsTips.ru/kak-ochistit-papku-installer-v-windows
Что за папки Windows BT WS и можно ли их удалить
На данный момент новейшая операционная система от компании Microsoft Windows 10 установлена на семидесяти пяти миллионах устройств. У тех пользователей, кто зарезервировал обновление до десятки, стала появляться папка с именем «$Windows.~BT».
Узнать для чего эта папка довольно просто. Стоит лишь зайти и посмотреть ее содержимое. В ней содержатся установочные файлы десятки. Поэтому все пользователи, которые зарезервировали обновления до десятки, получают скрытую закачку этой папки на ПК.
Интересным моментом является то, что те, кто обновился до Виндовс 10, все равно могут найти эту папку на компьютере. Многие пытаются удалить эту папку, но штатным методом это сделать не получится.
Поэтому в этом материале мы опишем все способы удаления этой директории. Стерев данные с этой директории, мы освободим 5.6 Гб свободного места на винчестере.
Содержимое этой папки можно посмотреть на рисунке ниже.
Удаление директории с помощью утилиты Unlocker
Загрузить утилиту Unlocker можно с ее официального сайта www.emptyloop.com/unlocker. После загрузки установите утилиту. Установка довольно проста и не вызовет трудностей даже у начинающих пользователей ПК.
После установки меню запуска Unlocker появится в контекстном меню Проводника.
То есть, если вы нажмете правой кнопкой на любой папке или файле, то увидите пункт с названием «Unlocker».
Для удаления директории «$Windows.~BT» найдите ее на локальном диске «C:\» и нажмите на нее правой кнопкой мыши и выберите пункт «Unlocker». Должно появиться окно программы. В нем необходимо выбрать действие в выпадающем списке. В нашем случае действие будет Удалить.
После выбора действия можно смело нажимать на кнопку OK, после чего директория окончательно сотрется. Успешно удалив директорию, Unlocker выведет нам такое сообщение.
Удаление директории штатными средствами Виндовс
Для удаления папки «$Windows.~BT» нам придётся пойти на небольшую хитрость, которая заключается в переименовании директории в «Windows.old». Такая папка содержит настройки программ, а также личную информацию пользователя предыдущей ОС. После переименования выберем локальный диск «C:\» и перейдем к его свойствам.
Кликнем на кнопку Очистка диска.
После клика по кнопке мы увидим такое же окно.
Нажимаем на клавишу Очистить системные файлы и переходим к следующему окну.
Выбираем галочку «Предыдущие установки Windows» и нажимаем кнопку OK.
Как видите, переименовав директорию, нам удалось избавиться от папки «$Windows.~BT» штатными средствами Виндовс 10.
Удаление директории с помощью программы CCleaner
CCleaner является довольно популярной программой для очистки системы, что подтверждается миллионами установок на ПК во всем мире. Программа стала популярной благодаря своему функционалу и наличием бесплатной версии, которую можно загрузить на официальном сайте www.piriform.com.
Для того чтобы CCleaner увидел удаляемую директорию, проделайте операцию с переименованием как в предыдущем примере. Установив утилиту, запустите ее и выберите пункт «Старая установка Windows» как показано на рисунке ниже.
Теперь необходимо нажать кнопку Анализ, чтобы утилита проанализировала список удаляемых файлов. После анализа CCleaner выведет список данных, которые можно удалить.
Завершающим действием для удаления директории «$Windows.~BT» будет нажатие кнопки Очистка.
Удаление директории с помощью CMD
Для удаления «$Windows.~BT» с помощью командной строки необходимо запустить и прописать необходимые команды. Запустить командную строку можно при помощи окна «Выполнить», прописав в нем команду «CMD».
Запустив командную строку, нам необходимо прописать три команды. В командной строке не работает комбинация клавиш вставки текста Ctrl + V, но вы можете вставить текст через пункт «Вставить» контекстного меню, вызвав его правой кнопкой мыши в окне «Командная строка».
Первая команда: takeown /F C:\$Windows.~BT\* /R /A
Вторая: icacls C:\$Windows.~BT\*.* /T /grant administrators:F
Третья: rmdir /S /Q C:\$Windows.~BT\
После ввода каждой из команд необходимо нажимать клавишу Enter, чтобы прописанная нами операция выполнилась. После ввода и выполнения всех команд папка «$Windows.~BT» сотрется.
Еще одна скрытая папка
Помимо директории «$Windows.~BT» после обновления может появиться еще одна директория с именем «$Windows.~WS». Эта директория также содержит установочные файлы Виндовс 10. Процесс удаления этой папки такой же, как и с «$Windows.~BT». Поэтому смело используйте все четыре способа удаления.
Как избежать появления скрытых папок «$Windows.~BT» и «$Windows.~WS»
Единственным способом, чтобы избежать появления скрытых папок «$Windows.~BT» и «$Windows.~WS», является чистая установка Виндовс 10 на компьютер пользователя.
Чтобы установить десятку с нуля, необходимо воспользоваться лицензионным диском или загрузочной флешкой с десяткой. Выполнив чистую установку, вы избавите себя от волокиты с удалением этих ненужных папок.
Кроме того, при чистой установке десятка правильно создаст разделы UEFI, при условии, что ваш компьютер поддерживает UEFI БИОС.
Заключение
Из материала видно, что удалить скрытые папки «$Windows.~BT» и «$Windows.~WS» совсем несложно. Удалив эти папки, вы сможете освободить до 10 гигабайт свободного места на жестком диске. Это особенно актуально для планшетных и портативных компьютеров, у которых установлены SDD объемом в 32 и 64 гигабайта.
Также хочется отметить, что если у вас есть возможность сделать чистую установку Виндовс 10, то вы лишите себя проблем с удалением этих директорий. Кроме удаления этих папок не забывайте, что «Windows.old» может также содержать десятки гигабайт информации. Поэтому позаботьтесь об удалении файлов из этой папки, предварительно сделав бекап важной информации.
Чтобы еще более максимально увеличить объём вашего HDD или SDD попробуйте воспользоваться программами для очистки системы.
Тот же CCleaner поможет удалить сотни файлов мусора, освободив тем самым гигабайты свободного места. Мы надеемся, что изложенный материал поможет вам разобраться с папками «$Windows.
~BT» и «$Windows.~WS».
Если после изучения материала этой статьи у вас остались вопросы, посмотрите похожую статью с дополнительной информацией на тему Куда скачиваются файлы обновления до Windows 10.
по теме
Источник: https://UstanovkaOS.ru/rabota-v-sisteme/chto-za-papka-windows-bt.html
Очистка папки WinSxS
Один из часто задаваемых вопросов — можно ли удалить папку WinSxS, чтобы освободить место на диске? Если отвечать одним словом — нельзя. Однако можно уменьшить размер папки WinSxS. Подробнее о папке WinSxS: Управлению хранилищем компонентов. В этом разделе описываются различные способы уменьшения размера папки WinSxS в работающей версии Windows 10.
Windows 10 и Windows Server 2016 Technical Preview автоматически уменьшают размер папки WinSxS с помощью методов, аналогичных описанным в этом разделе, но при этом также используются внутренние процессы, в том числе удаление пакетов с компонентами, которые были заменены другими компонентами в новых версиях. Предыдущие версии некоторых компонентов хранятся в системе в течение некоторого времени, позволяя в случае необходимости выполнить откат. Через некоторое время эти компоненты удаляются из установки.
Вы также можете уменьшить размер образа Windows, как описано в разделе Уменьшение размера хранилища компонентов в автономном образе Windows.
Предупреждение
Удаление файлов из папки WinSxS или удаление всей папки WinSxS может нанести серьезный ущерб системе. В результате компьютер может не загружаться и его будет невозможно обновить.
В Windows 10 и Windows Server 2016 Technical Preview существует несколько способов для запуска очистки хранилища компонентов, в которых для очистки папки WinSxS удаляются пакеты и сжимаются компоненты.
Планировщик заданий
Задача StartComponentCleanup была создана в Windows 8 для автоматической регулярной очистки компонентов, когда система не используется. Эта задача настраивается для автоматического выполнения и запускается операционной системой. При автоматическом выполнении задача ожидает не менее 30 дней после установки обновленного компонента, а затем удаляет его предыдущие версии.
Если вы запускаете эту задачу, то действует время ожидания в 1 час, и задача может не полностью очистить все файлы.
Запуск задачи StartComponentCleanup в планировщике заданий для очистки и сжатия компонентов
-
Если окно Планировщик заданий не открыто, запустите планировщик заданий. Дополнительные сведения см. в разделе Запуск планировщика заданий.
-
Разверните дерево консоли и перейдите к узлу Task Scheduler Library\Microsoft\Windows\Servicing\StartComponentCleanup.
-
В разделе Выбранный элемент щелкните Выполнить.
Примечание
Задачу StartComponentCleanup также можно запустить из командной строки:
schtasks.exe /Run /TN «\Microsoft\Windows\Servicing\StartComponentCleanup»
Система обслуживания образов развертывания и управления ими (DISM) — это программа командной строки, которая позволяет устанавливать, удалять, настраивать и обновлять компоненты Windows, пакеты, драйверы и региональные параметры.
Параметр /Cleanup-ImageDism.exe предоставляет опытным пользователям дополнительные способы уменьшения размера папки WinSxS. Дополнительные сведения см.
в разделе Параметры командной строки DISM для обслуживания пакетов операционной системы.
Использование параметра /StartComponentCleanup
- Использование параметра /StartComponentCleanup средства Dism.exe в работающей версии Windows 10 дает аналогичные результаты выполнения задачи StartComponentCleanup в планировщике заданий, но предыдущие версии обновленных компонентов будут удалены немедленно (без отсрочки в 30 дней) и без часового ограничения.В командной строке с повышенными привилегиями введите: Dism.exe /online /Cleanup-Image /StartComponentCleanup
Использование ключа /ResetBase с параметром /StartComponentCleanup
- При использовании параметра /ResetBase с параметром /StartComponentCleanup средства DISM.exe в работающей версии Windows 10 удаляются все замененные версии каждого компонента в хранилище компонентов.В командной строке с повышенными привилегиями введите: Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase Предупреждение После выполнения этой команды будет невозможно удалить никакие из существующих обновлений и пакетов обновления. Следующие обновления и пакеты обновления можно будет удалять.
Использование параметра /SPSuperseded
- Чтобы уменьшить место, занимаемое пакетом обновления, используйте параметр /SPSuperseded средства Dism.exe в работающей версии Windows 10, чтобы удалить все резервные компоненты, необходимые для удаления пакета обновления. Пакет обновления представляет собой коллекцию накопительных обновлений для определенного выпуска Windows.В командной строке с повышенными привилегиями введите: Dism.exe /online /Cleanup-Image /SPSuperseded Предупреждение После выполнения этой команды будет невозможно удалить пакет обновления.
Очистка диска
Очистка диска позволяет уменьшить число ненужных файлов на дисках, что может ускорить работу компьютера. При этом удаляются временные файлы и системные файлы, очищается корзина и удаляются различные элементы, которые больше не нужны. Возможность очистки обновлений помогает уменьшить размер хранилища компонентов.
Запуск очистки диска для удаления системных файлов
Связанные разделы
Управление хранилищем компонентов Определение фактического размера папки WinSxS Уменьшение размера хранилища компонентов в автономном образе Windows Uninstall-WindowsFeature Уменьшение размера каталога Winsxs и освобождение места на диске в Windows Server 2012 в режиме с компонентами по запросу Решение проблем с местом на диске, вызванных большим размером каталога хранилища компонентов Windows (WinSxS)
Источник: https://msdn.microsoft.com/ru-ru/library/windows/hardware/dn898501(v=vs.85).aspx
Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7
В один прекрасный (или печальный, кому как) день мне надоело, что у меня периодически заканчивается место на ноутбуке.
Да, я в курсе, что жёсткие диски сейчас дешевы, но это для меня не выход, потому что:
- У меня SSD, а он всё-таки подороже будет, чем обычные HDD (объём моего текущего SSD — 120 гигов)
- Ноутбук рабочий, соответственно данные на нём тоже, должны быть шифрованы, всё такое, поэтому самопальный и не утверждённое работодателем носитель втыкать не стоит
- Я жадный
Этот топик, пожалуй, предназначен и может быть полезен тем людям, кого волнует свободное место на системном диске, обычные средства очистки уже испробованы, а хочется выжать ещё чуть-чуть (как в старом анекдоте — первая попавшаяся в гугле ссылка на анекдот, если сайт плохой — пардон).
В общем, я иногда чищу место на диске. Стандартные процедуры — очистка %TEMP%, очистка диска (стирает всякие там отчёты об ошибках, прикопанные системой на всякий пожарный, всякие memory dump'ы упавших процессов и прочее), снос ненужных более программ.
Однако, как я выяснил, есть папки, которые не чистит никто (от слова совсем). Ну в смысле из стандартных средств. И сейчас я хочу поговорить о папке %WINDIR%\System32\DriverStore.
Если у Вас эта папка занимает много-много места, а читать весь пост неохота — пожалуйте в самый его конец, там есть ссылки на github, откуда можно взять готовый результат моих изысканий и попробовать выжать (или отжать) немного места у винды.
Введение в проблему — что это за папка, зачем она нужна, кто виноват, что делать
Если порыться в интернетах, можно найти, что это то место, куда система про запас складывает вообще все драйвера, которые ей когда-либо попались по дороге. Да-да, и те, что были установлены для Вашей видеокарты три года назад, тоже лежат там, несмотря на то, что Вы их себе обновляли много-много раз.
Приведу немного теории с того самого MSDN:Starting with Windows Vista, the driver store is a trusted collection of inbox and third-party driver packages. The operating system maintains this collection in a secure location on the local hard disk. Only the driver packages in the driver store can be installed for a device.
When a driver package is copied to the driver store, all of its files are copied. This includes the INF file and all files that are referenced by the INF file. All files that are in the driver package are considered critical to the device installation.
The INF file must reference all of the required files for device installation so that they are present in the driver store. If the INF file references a file that is not included in the driver package, the driver package is not copied to the store. The process of copying a driver package to the driver store is called staging.
A driver package must be staged to the driver store before the package can be used to install any devices. As a result, driver staging and device installation are separate operations.
A driver package is staged to the driver store by being verified and validated
В моём вольном переводе получится что-то вроде:В Windows Vista и позднее, хранилище драйверов используется как сборник доверенных предустановленных и сторонних драйверов. Операционная система поддерживает этот сборник в безопасном месте на локальном диске. Только те драйвера, которые лежат в хранилище, могут быть установлены. Когда драйвер копируется в хранилище, туда попадают все его файлы, включая .INF файл и все файлы, на которые этот .INF ссылается. Все файлы, составляющие драйвер, считаются необходимыми для работы устройства. INF файл должен ссылаться на все файлы, необходимые для работы устройства, для того, чтобы они все попали в хранилище. Если .INF файл ссылается на файл, не входящий в драйвер, этот драйвер не копируется в хранилище.
Процесс копирования драйвера в хранилище называется staging (не стал пытаться выдумать термин, оставил английское слово — прим.пер.). Для того, чтобы драйвер мог быть использован для какого-либо устройства, он должен пройти процесс staging, таким образом, установка устройства и staging драйвера — отдельные операции.
Перед попаданием в хранилище драйвер проверяется на действительность подписи и целостность файлов.
Неужели всё так плохо, и никто не поможет?
Выглядит страшновато для влезания своими грязными руками, не правда ли? Однако тут есть небольшая (и не слишком удобная) соломинка от Microsoft, называется она pnputil.exe и умеет:
- Перечислять драйвера, находящиеся в staging (но не входящие в стандартную поставку Вашей Windows, т.е.
не интегрированные в установочный дистрибутив)
- Добавлять драйвер в хранилище
- Удалять драйвер из хранилища
Причём при удалении она проверяет, не используется ли удаляемый драйвер на данный момент для какого-нибудь подключенного устройства, и без опции /f (т.е.
/force — заставить насильно) удалять такие драйвера отказывается. Этой утилитой я и воспользовался.
Тут надо упомянуть, что я не первый такой умный, кто думал над этой проблемой, на codeplex есть проект по GUI приложению DriverStore Explorer, но он фактически является только графической обёрткой вокруг pnputil и никак не анализирует драйвера, предоставляя полную свободу своему пользователю.
Мне же, во-первых, искать вручную устаревшие версии драйверов было не очень охота, а во-вторых хотелось понять, что я выиграю от удаления того или иного драйвера (в смысле места на диске). Так что тут был синдром NIH в полный рост.
Поэтому я взял в руки Python и понеслось.
Ура, строим свой велосипед!
Методом пристального всматривания я обнаружил, что для того, чтобы найти наиболее свежую версию, достаточно данных от pnputil, а вот для определения размера — нет, потому что pnputil про драйвер говорит примерно следующее — кто сделал, когда, версия и имя INF файла.
Какая из кучи папок в DriverStore относится к этому драйверу — он не говорит. Вглядевшись ещё внимательнее в папочку %WINDIR%\Inf, я обнаружил там те самые .INF файлы (по именам), которые перечисляет pnputil, а заглянув в папки в DriverStore, обнаружил там… те же самые .INF файлы, но с другими именами — каждый в папке от своего драйвера.
Наверняка есть способ и попроще, но я пошёл в лоб — построил отображение от имени .INF файла в выдаче pnputil на папку в DriverStore, в которой лежит такой же по содержимому .INF файл (с другим именем). И взял размер этой папки за размер драйвера. Теперь дело оставалось за малым — обернуть всё это в скрипты для удобного исполнения.
По дороге, правда, лежала подстава в виде UAC — pnputil работал только с администраторскими правами, а значит, надо было повышать привилегии из Питона.
Беглое гугление дало несколько рецептов, которые говорили что-то вроде «можно сделать так, но вывода (и уж тем более ввода) не будет, как будете отлаживаться — без понятия», и меня это не устроило, так что я чуть-чуть доработал примеры.
Правда, моя реализация на данный момент неидеальна — она упадёт при попытке перенаправить stdout или stderr, потому что внутри я использую виндовое понятие консоли, а для перенаправленных потоков это не работает… Но я пока закрыл на это глаза, потому что для починки надо городить чуть более сложный механизм, чем вызов FreeConsole/AttachConsole, т.е. заниматься перенаправлением всех потоков вручную.