Как очистить winsxs Windows 7 вручную

Методы чистки «WinSxS»

«WinSxS» — это системный каталог, содержимое которого в Виндовс 7 размещено по следующему пути:

C:\Windows\WinSxS

В названном каталоге хранятся версии всех обновлений различных компонентов Виндовс, причем эти апдейты постоянно накапливаются, что и ведет к регулярному увеличению его размера. При различных сбоях в работе системы с помощью содержимого «WinSxS» производятся откаты до стабильного состояния ОС. Поэтому удалять или полностью очищать эту директорию категорически нельзя, так как при малейшем сбое вы рискуете в итоге получить мертвую систему. Но можно почистить в указанном каталоге некоторые компоненты, хотя и это Microsoft рекомендует делать только в крайнем случае, если вам критически не хватает места на диске. Поэтому советуем перед выполнением любых процедур, которые будут описаны ниже, сделать резервную копию ОС и сохранить её на отдельном носителе.

Установка обновления KB2852386

Нужно отметить, что в отличие от операционной системы Windows 8 и более поздних ОС, у «семерки» изначально не было встроенного инструмента для очистки папки «WinSxS», а применять ручное удаление, как говорилось уже выше, недопустимо. Но, к счастью, позже было выпущено обновление KB2852386, которое содержит в себе патч для утилиты Cleanmgr и помогает решить указанную проблему. Поэтому прежде всего нужно удостовериться, что это обновление установлено на вашем ПК либо инсталлировать его в случае отсутствия.

  1. Щелкайте «Пуск». Заходите в «Панель управления».
  2. Жмите «Система и безопасность».
  3. Переходите в «Центр обновлений Windows».
  4. В нижней левой части появившегося окошка жмите по надписи «Установленные обновления».
  5. Открывается окно с перечнем установленных на компьютере обновлений. Нам нужно отыскать обновление KB2852386 в разделе «Microsoft Windows» данного списка.
  6. Но проблема состоит в том, что элементов перечня может быть очень много, а поэтому вы рискуете потратить значительное время на поиск. Чтобы облегчить задачу, установите курсор в поле поиска, расположенное справа от адресной строки текущего окна. Вбейте туда следующее выражение:

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

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

  7. Вернитесь в «Центр обновления». Быстро это можно сделать, если вы действовали точно по описанному выше алгоритму, нажав стрелочку, направленную влево в верхней части текущего окна слева от адресной строки.
  8. Для того чтобы удостовериться, что необходимый апдейт ваш компьютер увидит, щелкните по надписи «Поиск обновлений» в левой части окна. Особенно это важно, если у вас не включены автообновления.
  9. Система выполнит поиск не установленных на ваш ПК апдейтов.
  10. После завершения процедуры щелкните по надписи «Важных обновлений доступно».
  11. Откроется список важных апдейтов, которые не установлены на вашем ПК. Вы можете выбрать, какие из них устанавливать, поставив слева от наименований пометки в чекбоксы. Поставьте флажок напротив наименования «Обновление для Windows 7 (KB2852386)». Далее жмите «OK».
  12. Вернувшись в окно «Центра обновлений», жмите «Установить обновления».
  13. Запустится процесс инсталляции выбранных апдейтов.
  14. После его окончания совершите перезагрузку ПК. Теперь у вас будет в наличии необходимый инструмент для очистки каталога «WinSxS».

Далее мы рассмотрим различные способы очистки каталога «WinSxS» с помощью утилиты Cleanmgr.

Урок: Установка обновлений Виндовс 7 вручную

Способ 1: «Командная строка»

Нужную нам процедуру можно выполнить с помощью «Командной строки», через которую производится запуск утилиты Cleanmgr.

  1. Щелкайте «Пуск». Жмите «Все программы».
  2. Заходите в папку «Стандартные».
  3. В перечне найдите «Командная строка». Жмите по наименованию правой кнопкой мышки (ПКМ). Выбирайте вариант «Запуск от имени администратора».
  4. Производится активирование «Командной строки». Вбейте следующую команду:

    Жмите Enter.

  5. Открывается окошко, где предлагается выбрать диск, в котором будет выполняться чистка. По умолчанию должен стоять раздел C. Его и оставляйте, если ваша операционная система имеет стандартное расположение. Если же она, по какой-либо причине, установлена на другом диске, то выберите его. Жмите «OK».
  6. После этого утилита производит оценку объема места, которое она сможет очистить при проведении соответствующей операции. Это может занять определенное время, так что наберитесь терпения.
  7. Откроется перечень объектов системы, которые подлежат очистке. Среди них обязательно найдите позицию «Очистка обновлений Windows» (либо «Файлы резервной копии пакета обновлений») и поставьте около него пометку. Именно данная позиция отвечает за очистку папки «WinSxS». Напротив остальных пунктов расставляйте флажки на свое усмотрение. Можете все другие пометки снять, если не желаете больше ничего чистить, или отметить те компоненты, где также хотите произвести удаление «мусора». После этого жмите «OK».

    Внимание! В окне «Очистка диска» пункт «Очистка обновлений Windows» может отсутствовать. Это значит то, что в каталоге «WinSxS» нет элементов, которые можно было бы удалить без негативных последствий для системы.

  8. Откроется диалоговое окно, где будет задан вопрос, действительно ли хотите вы очистить выбранные компоненты. Соглашайтесь, нажав «Удалить файлы».
  9. Далее утилита Cleanmgr выполнит очистку папки «WinSxS» от ненужных файлов и после этого автоматически закроется.

Урок: Активация «Командной строки» в Виндовс 7

Способ 2: Графический интерфейс Windows

Не каждому пользователю удобно запускать утилиты через «Командную строку». Большинство юзеров предпочитает это делать с помощью графического интерфейса ОС. Это вполне выполнимо и в отношении инструмента Cleanmgr. Данный способ, конечно, более понятен для простого пользователя, но, как вы увидите, займет большее по продолжительности время.

  1. Щелкайте «Пуск» и переходите по надписи «Компьютер».
  2. В открывшемся окошке «Проводника» в перечне жестких накопителей отыщите наименование того раздела, где установлена текущая ОС Виндовс. В подавляющем большинстве случаев это диск C. Кликните по нему ПКМ. Выбирайте «Свойства».
  3. В появившемся окошке жмите «Очистка диска».
  4. Будет запущена точно такая же процедура оценки очищаемого пространства, которую мы видели при использовании предыдущего способа.
  5. В открывшемся окошке не обращайте внимания на перечень подлежащих очистке элементов, а жмите «Очистить системные файлы».
  6. Будет выполнена повторная оценка освобождаемого места на накопителе, но уже с учетом системных элементов.
  7. После этого будет открыто точно такое же окно «Очистка диска», которое мы наблюдали в Способе 1. Далее нужно произвести все те действия, которые были описаны в нем, начиная с пункта 7.

Способ 3: Автоматическая чистка «WinSxS»

В Виндовс 8 существует возможность настройки расписания очистки папки «WinSxS» через «Планировщик заданий». В Windows 7 такая возможность, к сожалению, отсутствует. Тем не менее можно все-таки запланировать периодическую очистку через все ту же «Командную строку», хотя и без гибкой настройки расписания.

  1. Активируйте «Командную строку» с административными правами тем же методом, который был описан в Способе 1 данного руководства. Введите следующее выражение:

    :: параметры очистки каталога winsxs
    REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup» /v StateFlags0088 /t REG_DWORD /d 2 /f
    :: параметры очистки временных объектов
    REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files» /v StateFlags0088 /t REG_DWORD /d 2 /f
    :: генерация запланированной задачи «CleanupWinSxS»
    schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR «cleanmgr /sagerun:88»

    Щелкайте Enter.

  2. Теперь вы запланировали процедуру ежемесячной очистки папки «WinSxS» с помощью утилиты Cleanmgr. Задача будет выполняться автоматически 1 раз в месяц 1-го числа без непосредственного участия пользователя.

Как видим, в Виндовс 7 можно очистить папку «WinSxS» как через «Командную строку», так и через графический интерфейс ОС. Также можно путем ввода команд произвести планирование периодического запуска данной процедуры. Но во всех перечисленных выше случаях операция будет выполняться с помощью утилиты Cleanmgr, специальный апдейт к которой в случае его отсутствия на ПК, нужно установить через стандартный алгоритм обновления Windows. Очень важно запомнить любому пользователю: производить чистку папки «WinSxS» вручную путем удаления файлов или с помощью сторонних программ категорически запрещается.

Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Как безопасно уменьшить размер папки WinSxS в Windows

Судя по количеству поисковых запросов, многие пользователи Windows ищут способ уменьшить размер системной папки WinSxS. Об эту папку, которая через некоторое время после начала эксплуатации операционной системы Windows начинает занимать на диске достаточно много места, было сломано немало копий. Народ по-разному пытался бороться с ее размерами, однако, не всегда успешно.

На самом деле, истинный размер папки WinSXS не совсем тот, который показывают файловые менеджеры: Explorer, FAR и другие, или утилиты, наподобие Scanner. А точнее было бы сказать, – совсем не тот. Виноваты в этом жесткие ссылки (Hard Links). Но об этом чуть ниже.

Каталог WinSXS имеет очень большое значение для функционирования операционной системы Windows. Хранятся в этом каталоге, по большей части, динамические библиотеки DLL, но не только. Причем, одна и та же динамическая библиотека может быть сохранена несколько раз в разных версиях.

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

Способы уменьшения размера папки WinSxS

Удаление файлов

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

Оставлю этот вариант как теоретически возможный, но сам таким способом уменьшать размер папки WinSxS никогда не буду, и вам не советую.

Скрипт Winsxslite

Большое количество публикаций представляют командный файл от Christian Bering Boegh как чудесное средство уменьшения размера WinSxS. Однако, последнюю заявленную версию WinsxsLite — 1.88 скачать уже не получилось. Видимо, с проектом Winsxslite не все так хорошо.

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

Ну что же, тут по крайней мере есть идея. Однако, она не гарантирует 100-процентного положительного результата. Я поддался соблазну, потратил достаточно много времени и получил совершенно отрицательный результат. Скрипт отработал первую фазу и «сломался» на второй. После требуемой, по алгоритму работы этого командного файла, перезагрузки компьютера напрочь отказалась работать системная утилита subinacl. На этом все и закончилось. Коль уж сам скрипт не может отработать после внесенных им изменений, то о чем тут вообще можно говорить.

Если есть желание непременно воспользоваться пакетным файлом WinsxsLite, то в обязательном порядке сделайте предварительно бекап системы!

NTFS-сжатие файлов в папке WinSxS

Если сделать, в общем-то, необоснованное предположение о том, что файлы, размещенные в папке WinSxS, используются системой не так часто, как файлы из других системных папок, таких как: Program Files, ProgramData, system32 и др., то почему бы не попробовать сделать их ntfs-сжатие? Результат заранее не очевиден, но, по крайней мере, это совершенно безопасный вариант.

Microsoft постаралась максимально защитить папку WinSxS от всяческих посягательств на нее извне. Если открыть закладку «Безопасность» в свойствах папки, то можно увидеть, что только пользователь «TrustedInstaller» имеет полный доступ. Все остальные, включая «Система» и «Администраторы», приравнены к рядовым пользователям с правами на чтение и выполнение.

Таким образом, для того, чтобы иметь возможность сделать ntfs-сжатие файлов в этой папке, сначала нужно установить необходимые разрешения.

Запускаем командную строку с правами администратора и последовательно выполняем следующие команды:
takeown /A /R /F C:\Windows\winsxs\*В результате владельцем папок и файлов в WinSxS станет группа пользователей «Администраторы».
icacls C:\Windows\winsxs\* /T /grant Администраторы:(F)Результатом будет добавление прав полного доступа на все папки и файлы в WinSxS.

Не хочется подробно расписывать значение ключей команд. Кому интересно – посмотрите по /? в командах, все достаточно очевидно.

Теперь можно сделать сжатие файлов, но не торопитесь и дочитайте статью до конца.

Самое время вспомнить о том, что в WinSxS лежат не только уникальные файлы, но и большое количество жестких ссылок на файлы, разбросанные по различным системным папкам.

Мы уже несколько раз обращались к теме символьных ссылок, которые использовали для переноса каталогов пользователей на другой диск. (См. «Перенос Windows 7 на твердотельный диск …» Часть 2 и Часть 3).

Тогда мы использовали обычные символические ссылки (Symbolic link), которые представляют собой специальные файлы, содержащие указатели на объекты в файловой системе. При попытке обратиться к объекту, в качестве которого может выступать файл или папка, символьная ссылка передает действительный путь к нему.

В папке WinSxS для файлов используется разновидность символической ссылки, которая называется жесткой ссылкой (Hard Links).

Жесткая ссылка создается командой:
mklink /H “Link” “Target”
Link — путь к виртуальному объекту (первоначальное местоположение объекта);

Target — путь к реальному объекту (относительный или абсолютный).

Жесткая ссылка может быть создана только на файл и в пределах одного раздела.

Название этого типа ссылок, в какой-то степени, говорит само за себя – штука это жестокая. Hard Link создает абсолютно равноправный исходному указатель на файл. Новый указатель и первоначальный могут иметь разные имена и находиться в разных каталогах (в пределах одного раздела), но они указывают на один и тот же объект. Сам объект будет существовать в файловой системе до тех пор, пока на него существует хотя бы один указатель.

После создания жесткой ссылки невозможно определить, какая из ссылок на объект была исходной. Вот тут-то и кроется причина неправильного вычисления объема папки WinSxS файловыми менеджерами. Они включают в расчет суммарный размер всех файлов из других системных папок, на которые имеются жесткие ссылки (а с другой стороны, как иначе? Ссылки то равноправны).

Со ссылками всех типов, включая и жесткие, умеет работать файловый менеджер FAR (Alt/F6). С его помощью можно легко посмотреть количество ссылок, которые имеет файл:

Для этого нужно выбрать 9-й режим отображения любой из панелей. Крайний правый столбец покажет количество ссылок на файлы в текущем каталоге.

В нашем случае, если сделать ntfs-сжатие всех файлов в папке WinSxS, то сжатыми окажутся и файлы в других системных каталогах, на которые имеются жесткие ссылки.

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

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

Сначала я сделал сжатие всех файлов папки WinSxS. Нам понадобится это в дальнейшем для прикидки объемов уникальных файлов и файлов, созданных жесткими ссылками.
Compact /C /A /I /S:C:\Windows\winsxs\
Результат для Windows 7 x64 получился такой:

— исходный размер папки WinSxS составлял 10,1 ГБ,

— после сжатия – 6,85 ГБ.

Выигрыш места на диске составил 3,25 ГБ, или 32% от первоначального размера папки. Очень неплохо, учитывая, что все это делается для небольшого SSD-диска.

Теперь раскрутим файлы назад:
Compact /U /A /I /S:C:\Windows\winsxs
и попробуем сжать только уникальные файлы. Как же это сделать?

Идея такая – для каждого файла в папке WinSxS посчитать количество ссылок. Если ссылка всего одна – сжимаем, если больше – ничего не делаем. Для подсчета количества ссылок используем возможности команды fsutil hardlink list «Имя_файла». Естественно, ручками перебрать 60 тысяч файлов дело нереальное, поэтому создадим командный файл:
@echo off
REM Включаем раскрытие переменных окружения в момент обращения к ним
setlocal enabledelayedexpansion
REM Рекурсивно перебираем все файлы в каталоге C:\Windows\winsxs
for /R «C:\Windows\winsxs» %%i in (*) do (
REM Ищем однострочный вывод fsutil
fsutil hardlink list %%i | find /c /v «» | find /I «1» >nul
REM Если ссылка единичная, сжимаем файл
IF !ERRORLEVEL!==0 Compact /C /A /I %%i
)
@echo FINISH
pause>nul
Внимание! Пакетный файл необходимо запускать строго от имени администратора. В противном случае fsutil начнет выдавать однострочный текст ошибки, который будет благополучно обработан командами find. В результате окажутся сжатыми все файлы в каталоге WinSxS, а не только уникальные.

Скрипт, естественно, работает не так быстро, как «безразборное» сжатие всех файлов. В моем случае на i7 и SSD-диске перебор и сжатие файлов заняли около 20 минут.

Результат получился такой:

— исходный размер папки WinSxS составлял 10,1 ГБ,

— после сжатия только уникальных файлов – 8,25 ГБ.

Выигрыш места на диске составил 1,85 ГБ, или 18,3% от первоначального размера папки. Много меньше, чем после сжатия всех файлов, но тоже неплохо. Для моего 60-гигабайтного SSD-диска вполне различимо.

В заключение вернем разрешения на файлы:
icacls C:\Windows\winsxs\* /T /L /grant:r Администраторы:(RX)

Соотношение уникальных файлов и жестких ссылок в папке WinSxS Windows 7

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

Сделаем допущение, что средняя степень сжатия файлов одинакова для уникальных и неуникальных файлов.
Kc = Vc / Vгде V – исходный объем папки WinSxS, Vc – ее объем после полного сжатия.
F1 + FL = V
KC * F1 + FL = Vc1F1 – объем уникальных файлов, FL–объем ссылочных файлов, Vc1 – объем WinSxS после сжатия уникальных файлов.

Путем несложных преобразований получим:
F1 = ( V — Vc1 ) / ( 1 — Kc)
После подстановки конкретных значений:
F1 = ( 10,1 – 8,25) / ( 1 – 0,678) = 5,86 ГБ
Оказалось, что уникальные файлы занимают около 60% объема папки WinSxS. Неожиданный результат. А меня уверяли, что их там очень мало.

В заключение необходимо отметить:

  • Описанный способ уменьшения размера папки WinSxS является абсолютно безопасным, так как не делает в системе никаких деструктивных изменений и всегда позволяет вернуться к первоначальному состоянию;
  • В процессе эксплуатации системы запуск скрипта нужно будет повторять после новых инсталляций программ и системных обновлений.

Появились:

  1. Продолжение, в котором описываются другие методы борьбы с размером папки WinSxS;
  2. Готовый командный файл для очистки и сжатия каталога WinSxS. Ссылку на бесплатное скачивание скрипта “winsxscompact.cmd” можно найти в уведомлении о подписке на обновления блога по E-Mail.

Опубликовано — 2 апреля, 2013 в рубрике — Microsoft Windows Теги: Compact, FAR, Hard Link, Microsoft, Mklink, NTFS, Windows 7, Windows 8, Winsxs, Командный Файл, Место на диске, Системные папки

  1. asacrldu:

    Спасибо! Прикольная вещь!!!

    __________________________
    http://uminecraft.org/ | minecraft 1.5.1 wall jump

    • AKS:

      Спасибо, что оценили. На самом деле есть еще одна идейка как можно без лишних проблем уменьшить WinSxS. Я как раз сейчас пишу об этом статью.

  2. павел:

    автор, а вы не допускаете возможность,что данный алгоритм (или подобный) может присутствовать в каком-либо твикере-утилите (платной или бесплатной) ?

  3. Александр:

    Интересный вопрос. В принципе, допускаю, конечно. Думаю даже, что через некоторое время кто-нибудь воспользуется моей идеей в своих корыстных целях. Шучу, конечно, но почему бы и нет?

  4. Виктор:

    При запуске команды на поиск выдает ошибку:
    FIND: Неправильный формат паратметра

    При копировании в Блокнот или сразу в редактор FARа, все это дело копируется с какими-то сдвигами, а Блокнот предлагает сохранить в кодировке Юникод.

    В какой кодировке правильно сохранять данный командный файл?
    И чем лучше его создавать?

    • Александр:

      Файл сделан в кодировке OEM 866 (ДОС). В FAR-е после загрузки файла в редактор нужно сменить кодировку, нажав на F8.
      Можно редактировать в Notepad++, соответственно, выбрав кодировку OEM 866.
      Файл должен открываться в редакторах без каких-либо сдвигов, изначально их нет.
      А зачем что-то куда-то копировать?

    • Виктор:

      ОК, буду пробовать.

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

    • Александр:

      А зачем? Есть же уже готовый проверенный файл. Если Вы оформили подписку на обновления блога по E-Mail, то ссылка на его скачивание есть в уведомлении о подписке.

    • Виктор:

      Скачал готовый файл и нашел причину ошибки
      FIND: Неправильный формат паратметра

      А вот и причина:
      в Вашем посте вот так
      fsutil hardlink list %%i | find /c /v «» | find /I «1″ >nul
      а в рабочем варианте так
      fsutil hardlink list %%i | find /c /v «» | find /I «1»

      Если можно, отредактируйте ваше сообщение и все будет ОК.

      Также выражаю благодарность за быстрые ответы.

    • Александр:

      Виктор, боюсь, что >nul тут ни при чем. Скорее всего у Вас возникла проблемка с парными кавычками при переносе текста в редактор. Должно быть так:
      fsutil hardlink list %%i | find /c /v «» | find /I «1» >nul

  5. Евгений:

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

    • Александр:

      Евгений, в данном случае Вам не нужно самостоятельно создавать командный файл — просто скачайте готовый. Для этого нужно лишь подписаться на обновления блога по E-Mail.
      А вообще командные файлы — это обычные текстовые файлы с расширением, как правило, .bat или .com, в которых записаны соответствующие команды. Такой файл можно создать практически в любом текстовом редакторе: notepad (блокнот), notepad++, far и т.д.
      А вот уже применение команд для решения той, или иной задачи — это совершенно отдельная тема. Скорее даже, направление.

  6. павел:

    прочитал статью…ринулся было попробовать у себя…
    посмотрел размер папки winsxs (стоит windows 7 32 бит) -4,8 гб -наверное,
    особой целесообразности сжимать нет в таком случае ?

    • Александр:

      Полагаю, что точно не стоит. После того, как в Windows 7 добавили возможность очистки файлов обновлений ntfs-сжатие стоит рассматривать исключительно как дополнительную возможность уменьшения размера.

  7. Виталий:

    Может быть сможете мне помочь разобраться. Стоит Win7HB 64 бит. Делал все как сказано в статье (делал все от имени администратора): сменил владельца, добавляю права доступа. Однако в консоли пишется, что обработано всего 44 файла и это из 9Гб размера папки. В дальнейшем при выполнении скрипта на сжатие на все файлы выводится сообщение «Отказано в доступе». Результат выполнения Вашего скрипта winsxscompact.cmd дает тот же результат. Может быть сможете подсказать куда смотреть и что еще попробовать?

    • Александр:

      Виталий, а 9 Гб это уже после очистки штатными способами?

    • Виталий:

      Да, это после чистки. Было где-то под 10Гб, под 700 Мб удалила очистка системы. Прошу прощения, что не сходятся расчеты, зря я их не записал. Попробовал полное сжатие: 62 файла сжал, примерно 6 Мб освободилось 🙂 Большая часть файлов прошла с той же ошибкой: отказано в доступе.

    • Александр:

      По какой-то причине в вашей системе не удается изменить разрешения на файлы. Однако чудес на свете не бывает. В этой связи такой вопрос — у Вас Windows случайно не английский? У меня все используемые команды расписаны в расчете на русский. Командный файл, соответственно, тоже.
      А вообще, WinSxS 9 Гб для 64-разрядной Windows — это вовсе не запредельный размер. Боюсь, что после очистки штатным способом, поджать за счет ntfs-сжатия получится несильно. Если есть большие проблемы с местом на диске, то имеет смысл посмотреть другие варианты. Например, перенести некоторые файлы и папки на другой диск (если не ноутбук, конечно).

  8. Сергей:

    Александр, спасибо за файлик, скрип отличный. Тестировал на Win7 x64, полет нормальный. Но есть вопрос. Как этот скрипт поведет себя на серверных ОС? В частности интересует Windows Server 2008 R2 Enterprise SP1. И очень хотелось бы, чтобы появился скрипт для англоязычных ОС.

    • Александр:

      Сергей, спасибо за отзыв. Что касается Windows Server 2008 R2 SP1, то ситуация следующая. Скрипт в своем нынешнем виде работать на нем не будет, но так как Server 2008 это фактически Windows 7, то дело легко поправимое.
      Интереснее как раз ситуация с самим сервером. По-умолчанию в Windows Server 2008 не установлена утилита «Очистка диска» (Disk Cleanup). Для того, чтобы она появилась, нужно доустановить компоненту «Возможности рабочего стола» (Desktop Experience). Однако для того, чтобы не делать из рабочего сервера десктоп, можно просто скопировать cleanmgr.exe в %systemroot%\System32 и cleanmgr.exe.mui в %systemroot%\System32\ru-RU (или en-US) из WinSxS. Подробно расписать как это сделать я постараюсь в ближайшее время (добавлю в текст статьи).

    • Александр:

      Сергей! Как и обещал, я добавил в соответствующую статью описание возможности очистки обновлений в Windows Server 2008 R2 SP1.

    • Александр:

      В скрипт добавлена поддержка Windows Server 2008. Локализация опять же русская. Соответственно, сделать штатную очистку можно только в 2008 R2 SP1, для остальных — ntfs-сжатие. Во время тестирования свежеустановленного и полностью обновленного экземпляра сервера WS 2008 R2 SP1 в виртуальной машине за счет ntfs-сжатия получилось освободить на диске ~1,5 Гб. Предварительно была сделана штатная очистка обновлений.

  9. Павел:

    Автору спасибо!
    Но можно сделать проще

    Копируем маленькую утилиту (devxexec.exe) или любую другую, которая умеет запускать приложения от имени другого пользователя
    Создаем папку и кладем туда этот экзешник
    Создаем батник с содержимым (например):

    start devxexec.exe /user:TrustedInstaller «%windir%\system32\Compact.exe /C /A /I /S:%windir%\winsxs\»

    • Александр:

      Спасибо за ссылку на интересную утилиту. Правда сходу не могу для себя придумать где ее можно (или нужно) использовать.
      Как-то не очень уверен, что для большинства пользователей такой вариант окажется проще. Все же есть разница — запустить один командный файл, или скачивать дополнительно некую программу и дальше мудрить с командной строкой. Да и основная идея, если Вы помните, была в том, что сжимаются только уникальные (не имеющие жестких ссылок в других системных папках) файлы, а не вся папка Winsxs. Кстати, последний вариант скрипта изменяет разрешение не на всю папку, а последовательно в цикле только на те файлы, которые предполагается сжать. Так что по скорости, думаю, особого выигрыша тоже получить не удастся.

    • Павел:

      Забыл пояснить для чего эта утилита.
      Утилита запускает приложение/пакетный файл от имени любого пользователя, в данном случает от системной учетной записи TrustedInstaller. В нашем случае TrustedInstaller имеет полные права на папку WinSxS, таким образом убираются действия по подготовке каталога (овладение правами на каталог, добавление разрешений и восстановление в исходное состояние).
      Ничто не мешает запустить Ваш батник с помощью этой утилиты — просто без доп. подготовки папки

    • Александр:

      Что делает утилита я, слава богу, догадался. Можно было и не пояснять. Я имел в виду именно сферу ее конкретного применения в задачах системного администрирования.
      Как я уже сказал выше, права на всю папку Winsxs теперь не изменяются, только на отдельные файлы.

  10. Андрей:

    Спасибо за статью, сжал полностью, освободилось 3.2Гб, что просто отлично), назрел вопросик: комманда «Compact /C /A /I /S:C:\Windows\winsxs\» отличается от галочки «сжимать содержимое для экономии места на диске» в свойствах сабжевой папки?

    • Александр:

      /c : Compresses the specified directory or file, /a : Displays hidden or system files, /i : Ignores errors, /s : dir : Specifies that the requested action (compress or uncompress) be applied to all subdirectories of the specified directory, or of the current directory if none is specified.
      Андрей, могу предположить, что ничем не отличается.

  11. Ivanov_ilya:

    Ну а если устаовить не имя администратор или Administrator а SID зачение описание » https://msdn.microsoft.com/en-us/library/cc980032.aspx «

    Пимер применения :
    subinacl.exe /keyreg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DPS /grant=S-1-5-32-544=f >>%LogPacked%

    takeown.exe /F %SystemRoot%\system32\systeminfo.exe /A >>%LogPacked% 2>&1
    icacls %SystemRoot%\system32\systeminfo.exe /reset >>%LogPacked% 2>&1
    icacls %SystemRoot%\system32\systeminfo.exe /grant *S-1-5-32-544:F /inheritance:r /q /c >>%LogPacked%

  12. Алекс:

    Спасибо, скрипт отличный. На 7-ке делает работу отлично.
    А вот на 10-ке не запускается. Может автор сможет добавить в столь полезный скрипт и поддержку win10? Спасибо!

  13. Денис:

    SC ControlService: ошибка: 1062
    Служба не запущена.

    Такие записи возникают после запуска файла.
    Не подскажите о какой службе речь, и как это поправить?

  14. Andrey:

    fsutil hardlink list %%i | find /c /v «» | find /I «1» >nul
    Оно же так ищет цифру 1 — а количество ссылок может быть >10

  15. Ярослав:

    Спасибо за статью. При помощи вашей методики размер моей папки WinSxS уменьшился приблизительно на 1 Гб.

FAQ: Очистка и сжатие папки WinSxS в Windows 10 и 8.1

В этой статье мы поговорим о каталоге WinSxS в Windows 10 и Windows 8.1, причинах его постоянного роста и способах очистки. Каталог C:\windows\WinSxS является хранилищем компонентов Windows. В этом каталоге хранятся dll библиотеки, бинарные и xml файлы, необходимые для установки и работы той или иной роли ОС Windows. При установке обновлений Windows (это происходит ежемесячно), новая версия обновляемого компонента устанавливается в систему, а старая сохраняется в хранилище WinSxS (это необходимо для обеспечения совместимости и возможности «отката» на старые версии компонентов при удалении проблемного обновления).

Как не трудно догадаться, каталог WinSxS со временем будет постоянно увеличиваться, причем размер его не ограничен ничем (хотя на практике размер папки WinSxS в Windows 10/8.1 редко превышает 15-20 Гб.)

Самым естественный способ уменьшить размер папки WinSxS в Windows 10 и Windows 8 — удалить из системы старые версий компонентов, оставшиеся после обновления системы. Для этого используется стандартный мастер очистки диска cleanmgr или специальные опции команды DISM (см. ниже).

Совет. В Windows 7 SP 1 возможность удаления старых файлов обновлений для очистки диска доступна только после установке отдельного обновления — KB 2852386.

Как узнать реальный размер папки WinSxX в Windows 10 / 8.1

Еще одной особенностью папки WinSxS является наличие в ней большого количества так называемых hard links (жестких символьных ссылок). Жесткая ссылка представляет собой полностью равноправный оригинальному указатель на файл. Т.е. указатель и исходный файл могут иметь разные имена и находиться в пределах одного раздела в разных каталогах, но реально указывать они будут на один и тот же объект. Именно из-за наличия жестких ссылок, которые включаются в расчет общего размера каталога, файловые менеджеры (и в том числе Windows Explorer) показывают несколько преувеличенный размер папки WinSxS. Узнать реальный (без учета жестких ссылок) размер папки WinSxS можно с помощью утилиты SysInternal du:

du -v c:\windows\winSXS

Так же вы можете проанализировать размер хранилища компонентов (папку WinSxS) с помощью команды DISM:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Разберемся, что возвращает данная команда:

Размер хранилища компонентов по данным проводника : 5.70 GB (это размер хранилища без учета жестких ссылок)
Фактический размер хранилища компонентов : 5.49 GB (реальный размер хранилища компонентов с учетом жестких ссылок)
Совместно с Windows : 3.12 GB (обязательные файлы системы, не могут быть удалены)
Резервные копии и отключенные компоненты : 2.12 GB (устаревшие файлы компонентов, которые нужны на случай проблем установленными обновлениями)
Кэш и временные данные : 245.87 MB (файлы используются для ускорения работы системы обслуживания)
Дата последней очистки : 2018-07-31 12:45:23
Число освобождаемых пакетов : 10 (файлы, которые обновились после установки обновлений Windows, они будут удалены при очистке хранилища)
Рекомендуется очистка хранилища компонентов : Да

Как вы видите, в данном случае можно уменьшить размер каталога WinSxS на 2.1 Гб + 250 Мб.

У многих пользователей возникает естественный вопрос можно ли вручную удалить файлы из папки WinSxS. Ответ на этот вопрос – категоричное НЕТ! Такими действиями с большой долей вероятности получиться нарушить работоспособность Windows. И хотя некоторые попытки удаления файлов из папки WinSxS могут быть удачными, рекомендовать этот способ с точки зрения потенциальной опасности для системы нельзя.

Остановимся на наиболее безвредных с точки зрения системы способах очистки папки WinSxS в Windows 10 и Windows 8.1. Это:

  • Удаление старых версий компонентов, оставшихся после установки обновлений;
  • Технология Features on Demand (функции по требованию), позволяющая удалить неиспользуемые компоненты Windows с диска;
  • Сжатие файлов в папке WinSxS – способ уменьшить размер каталога WinSxS за счет NTFS компрессии ее содержимого.

Для достижения максимального результата все три способа можно использовать совместно.

Очистка хранилища компонентов (папки WinSxS ) в Windows 10 / 8.1

На мой взгляд самый быстрый и простой способ очистить место в хранилище компонентов (т.е. очистить папку WinSxS), удалив старые версии компонентов – выполнить команду:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup


У параметра /StartComponentCleanup есть дополнительная опция /ResetBase, позволяющая удалить все предыдущие версии компонентов (после этого вы не сможете удалить установленные обновления или Service Pack, а в панели обновлений appwiz.cpl у обновления пропадет кнопка «Удалить»). Полностью команда выглядит так:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Также вы можете удалить устаревшими обновления из мастера «очистки диска». Выполните команду cleanmgr c правами администратора.

В окне утилиты выберите диск и в следующем окне нажмите кнопку «Очистить системны файлы».

Далее выберите опцию “Файлы журнала обновления Windows» и нажмите Ок для начала очистки. Утилита очистки диска покажет сколько места вы можете освободить, удалив файлы журнала старых обновлений Windows. В моем примере это 427 Мб.

После окончания очистки хранилища с помощью DISM проверьте сколько освободилось места на диске.

Кроме того, в планировщике Windows 10 есть специальное задание автоматического обслуживания, которое выполняет ту же самую операцию, что и dism с ключом StartComponentCleanup, удаляя все устаревшие обновления старше 30 дней. Это задание с именем StartComponentCleanup находится в разделе \Microsoft\Windows\Servicing.

Функции по требованию в Windows 10 и 8.1

В статье «Безопасная очистка папки WinSxS в Windows Server 2012» мы рассмотрели функцию Features on Demand (функции по требованию), предоставляющую возможность удаления бинарных файлов неиспользуемых ролей из каталога WinSxS. Для удаления с диска неиспользуемых ролей существует специальный командлет Powershell — Uninstall-WindowsFeature. Однако в случае с Windows 10 и 8.1 не все так просто. Дело в том, что командлет Uninstall-WindowsFeature в этих версиях Windows отсутствует. А технология Features on Demand реализуется только с помощью DISM или командлета DISM PowerShell. Кроме того, важно знать, что команда DISM, в отличии от командлета Uninstall-WindowsFeature, не анализирует зависимости пакетов друг от друга. Так что при удалении пакета Windows с помощью DISM будет удален только указанный в команде компонент, а все зависимые от него пакеты останутся в системе. Именно по этой причине для удаления ролей с диска в Windows Server 2012 не стоит использовать DISM, т.к. есть гораздо более удобное и функциональное средство.

Полный список доступных функций в образе Windows 10 /8.1 можно получить с помощью команды:
DISM.exe /Online /English /Get-Features /Format:Table

Предположим, например, что компонент TelnetClient в дальнейшем нам не понадобится. Удалим этот компонент с диска (по сути из каталога WinSxS) командой:
DISM.exe /Online /Disable-Feature /Featurename:TelnetClient /Remove

Если еще раз вывести список всех доступных функций по требованию в Windows, вы увидите, что статус компонента изменится на Disabled with Payload Removed.

Таким образом в Windows можно существенно уменьшить размер папки WinSxS, удалив с диска неиспользуемые компоненты. Единственный нюанс, это вариант очистки каталога WinSxS подойдет для достаточной продвинутых пользователей, которые разбираются в компонентах Windows 10 и их назначении.

Включаем NTFS сжатие на папке WinSxS в Windows 10 и 8.1

Еще один способ уменьшения размера каталога WinSxS в Windows 10 / 8.1 – сжать содержимое каталога на уровне файловой системы NTFS.

Примечание. Как и при любом другом нестандартном вмешательстве в конфигурацию системы, крайне рекомендуется выполнить полный бэкап системы.

  1. Откройте командную строку с правами администратора;
  2. Остановите и отключите службы Windows Installer и Windows Module Installer:sc stop msiserver sc stop TrustedInstaller sc config msiserver start= disabled sc config TrustedInstaller start= disabled
  3. Создайте резервную копию списков доступа (ACL) назначенных на файлы и папки в каталоге WinSxS с помощью утилиты icacls. Резервная копия ACL представляет собой обычной текстовый файл, в котором указаны все файлы и каталоги и назначенные на них NTFS разрешения (в дальнейшем этот бэкап понадобиться для восстановления оригинальных ACL):icacls «%WINDIR%\WinSxS» /save «%WINDIR%\WinSxS_NTFS.acl» /t

  4. Назначим себя владельцем папки WinSxS и всех вложенных каталогов:takeown /f «%WINDIR%\WinSxS» /r
  5. Предоставим своей учетной записи полные права на каталог WinSxS:icacls «%WINDIR%\WinSxS» /grant «%USERDOMAIN%\%USERNAME%»:(F) /t
  6. Выполним сжатие каталог WinSxS и всего его содержимого с помощью команды compact. Часть файлов может использоваться системой, поэтому если запустить команду без параметра /i, сжатие будет остановлено на первом же файле, используемом в настоящий момент системой. С помощью Process Explorer можно найти имя процесса, открывшего данный файл (CTRL+F) и завершить его. Такой подход к сжатию очень трудоемкий. Мы лишь ограничимся сжатием неиспользуемых файлов (в Windows 10 можно использовать более прогрессивное LZX сжатие):compact /s:»%WINDIR%\WinSxS» /c /a /i *

  7. Восстановим владельца каталога WinSxS, вернув TrustedInstaller:icacls «%WINDIR%\WinSxS» /setowner «NT SERVICE\TrustedInstaller» /t
  8. Восстановим оригинальные NTFS разрешения на каталог WinSxS из резервной копии ACL: icacls «%WINDIR%» /restore «%WINDIR%\WinSxS_NTFS.acl»
  9. Восстановим тип запуска служб Windows Installer и Windows Module Installer:sc config msiserver start= demand sc config TrustedInstaller start= demand

Проверим текущий размер каталога WinSxS:

Как вы видите, в нашем пример размер папки WinSxS за счет сжатия уменьшился с 5,8 Гб до 4 Гб (примерно на треть). Неплохо, особо для небольшого по размеру SSD-диска, место на котором стоит достаточно дорого.

На что может повлиять сжатие каталога WinSxS.

Windows работает со сжатыми файлами в прозрачном режиме, однако при обработке таких файлов, ей может понадобиться дополнительное время на их декомпрессию/компрессию, это означает некоторое замедление процессов установки компонентов Windows или обновлений. Однако для современных процессоров (CPU) компрессия / декомпрессия файлов выполняется практически мгновенно, так что реального уменьшения скорости пользователь может даже не заметить. Мало того, если жесткий диск медленный, а процессор достаточно быстрый – при сжатии можно заметить даже увеличение скорости работы с диском! Отметим, что при включении ntfs-сжатия всего содержимого папки WinSxS, за счет использования жестких ссылок окажутся сжатыми ряд файлов в других системных каталогах.

Указанные команды можно выполнять по отдельности (так проще контролировать успешность выполнения каждой из них), либо можно объединить все операции в один файл сценария, при запуске которого начнет выполняться процедура сжатия данных в папке WinSxS. Скачать готовый командный файл можно тут: compress_winsxs.bat

Данный скрипт можно использовать постоянно в процессе эксплуатации системы, т.к. после установки новых обновлений и программ в каталоге WinSxS будут появляться новые «несжатые» файлы.

Примечание. В сети гуляет еще один скрипт, позволяющий уменьшить размер папки WinSxS — WinSxSLite (от Christian Bering Boegh ). Данный скрипт согласно информации разработчика ищет на диске самые последние файлы библиотек и создает ссылки на них со всех предыдущих версий и удаляет неактуальные версии. Считаем необходимым отговорить наших читателей от использования скрипта WinSxSLite, т.к. несмотря на довольно толковую идею, результат его выполнения является непредсказуемым, и, несмотря, на уменьшение размера каталога WinSxS, часть функционала Windows перестает работать.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *