Вместо вступления
В этой статье ты «прокачаешь» Диспетчер очистки дисков, создашь задание на автоматическую скрытую очистку всех дисков каждую пятницу, и перестанешь использовать сторонние программы по очистке.
Из рубрики «Умной большой оптимизации»:
- Режим одобрения администратором. Как запускать всё приложения в режиме «от имени Администратора».
- Запуск приложений от имени Системы.
- Виртуальная память Windows. Простыми словами.
- Наблюдаем за загрузкой Windows. Отслеживаем процессы.
Во избежания недоразумений лучше прочитать все предшествующие статьи, дабы избежать вопросов:
- Почему у меня не запускается приложение?
- Почему у меня нет этого приложения?
- Где то место про которое идет речь?
- Что такое «…» (что бы то ни было, освещенное ранее)?
- И подобные…
Отвечать на подобные вопросы не буду.
Ставь лайки и комментируй, если статья оказалась полезной. Для меня и тебя это важно.
Дополняющее видео: Продвинутая очистка дисков с помощью Windows
В видео могут быть фрагменты, отсутствующие в статье из-за большого набора действий, которые мне лень переносить в формат статьи.
Диспетчер очистки дисков
Все знают программу Диспетчер очистки дисков:
Win+R → cleanmgr → Enter
Почему Диспетчер очистки дисков лучше чем сторонние программы:
- Он является частью Windows.
- Он может безопасно для ОС и нервов пользователя удалять такие важные вещи как дистрибутивы обновлений Windows.
- Он обладает скрытым потенциалом расширения, о котором мало кто знает. Его можно «научить» удалять то, что сам захочешь.
- Он простой как тазик с ананасами.
Чем плох Диспетчер очистки дисков:
- Ничем.
Интересный ключ, с которого всё началось
Мало кто знает, есть скрытый и недокументированный ключ к этой программе «autoclean». Данный ключ позволяет запустить Диспетчер очистки диска скрыто для определенного диска:
cleanmgr /autoclean /d %systemdrive%
В данном конкретном случае, под переменную окружения «%systemdrive%» подставиться системный диск (раздел). У меня это «c:», как и у большинства.
Этот ключ я нашел в Планировщике заданий по пути:
\Microsoft\Windows\DiskCleanup -> SilentCleanup
Меня это заинтересовало и я решил разобраться с данной программой, полазив по дебрям Microsoft.
Моей задачей стало понять как данная программа работает и как её можно использовать более эффективно, для очистки дисков в полностью скрытом и автономном режиме.
Я смог «прокачать» Диспетчер очистки дисков и теперь поделюсь опытом. Этот опыт пригодится разработчикам ПО, администраторам серверов, так и обычным пользователям.
Классы очистки
Всего их около 30 штук. Находятся они по пути:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches
Именно они отвечают за очистку тех или иных данных в Диспетчере очистки дисков. К примеру:
- Temporary Files — временные файлы.
- Upgrade Discarded Files — за очистку «хвостов» от обновлений.
- Windows Defender — за очистку файлов на карантине.
- И т.д.
Давай разберем один класс, на примере «Temporary Files».
Ключи и их значения:
- По умолчанию — CLSID (Class Identifier) или с буржуйского — Идентификатор класса. В данном случае указывается CLSID обработчика класса очистки. Он может быть стандартным, имея значения «{0B2C35D2-C8BC-4470-BFC0-D6BB1235E5CE}» или иным, реализующим интерфейс IEmptyVolumeCache (IEmptyVolumeCache2). Как раз обработчик, при запуске Диспетчер очистки дисков ищет файлы и помечает их для удаления. По факту обработчик — библиотека DATACLEN.DLL либо иная библиотека, реализующая указанные выше интерфейсы. В данном случае обработчиком файлов является стандартная библиотека DATACLEN.DLL.
- FileList — шаблон файлов для удаления. В данном случае маска «*.*» говорит об удалении всех файлов.
- Flags — параметры работы обработчика класса.
- Folder — директории в которых проводится поиск файлов. В данном случае «%TEMP%|%WINDIR%\Temp|%WINDIR%\Logs|
%WINDIR%\System32\LogFiles» производится очистка в 4х папках: %TEMP% — временная папка пользователя. %WINDIR%\Temp — временная папка системы. %WINDIR%\Logs и %WINDIR%\System32\LogFiles — логи системы. Директории разделены символом «|». - LastAccess — количество дней, которое должно пройти с момента последнего доступа к файлу до его удаления. В данном случае «7» дней.
- PropertyBag — CLSID локализации названия, описания и кнопки класса очистки в Диспетчере очистки дисков.
- StateFlags — состояние «выбран\не выбран» данный класс в Диспетчере очистки дисков.
Давай разберем на примере класса очистки «Temporary Files» как это всё работает. При запуске Диспетчер очистки дисков начинает опрашивать все классы:
Добирается до «Temporary Files» и происходит следующее:
- Запускается экземпляр обработчика DATACLEN.DLL.
- Обработчик ищет файлы (FileList) в указанных директориях (Folder).
- Если файл попадает под шаблон «*.*» (FileList), а последний доступ к файлу был 7 дней назад (LastAccess), файл помечается для удаления.
- Обработчик суммирует размеры всех файлов, попавших под условия и выдает этот размер Диспетчеру очистки дисков. Например «100 Мб».
- При нажатии кнопки «ОК» пользователем в Диспетчере очистки диска, обработчик начинает удалять отмеченные файлы. Конечно, если данный класс очистки выбран (StateFlags).
Вот официальная документация по созданию классов очистки, где всё более подробно описано.
Что нам это всё даёт? Потенциал расширения возможностей Диспетчера очистки дисков! Представь на минуту, если бы компании разработчики ПО, к примеру Adobe или NVIDIA не ленились, а писали подобные обработчики для своего ПО. К примеру схрон устаревших драйверов и софта NVIDIA может достигать десятки гигабайт места или кэш браузеров (таких как Chrome) мог бы чиститься из Диспетчера очистки дисков!
Давай это дело исправлять!
BooReactor — самый странный твикер
Я хотел начать его писать не с этой темы, а с памяти, но как получилось… Он будет увеличивать свой функционал по мере выхода статей и видео по теме «Умной большой оптимизации».
Чем мой твикер будет отличаться от остальных? В первую очередь, ты будешь знать что он делает и как. Все возможности его будет описаны подробно соответствующими статьями и видео по теме УБО. Всё тоже самое что сможет делать он — сможешь и ты, руками, не прибегая к нему. Т.е. всю «оптимизацию» ты будешь знать изнутри. Он будет полностью бесплатен и если тебе захочется залезть внутрь исходного кода — к твоим услугам ILSpy.
Для начала скачай его с Github. Запусти программу с привилегиями Администратора (или от имени Администратора).
В главном окне перечислены все классы очистки. Документацию от Microsoft я «обернул в интерфейс». Теперь с любым классом очистки можно ознакомится щелкнув по нему 2 разал ЛКМ.
Изменять системные классы я не рекомендую, за редким исключением, к примеру всё тот же «Temporary Files»:
- Можно добавить следующую директорию «?:\Temp». Что даст возможность данному классу очищать на всех дисках (разделах) директории вида «c:\Temp», «d:\Temp» и т.д. В данном случае вместо «?» будут подставляться диски (разделы) к которым применяется Диспетчер очистки дисков.
- Или к примеру, уменьшить значение LastAccess до «0», в таком случае данный класс очистки будет удалять все файлы вне зависимости от даты последнего доступа к файлу.
Что такое дата последнего доступа? Файловая система NTFS записывает для каждого файла дату последнего доступа. Под доступом нужно понимать любые действия произведенные над файлом, не только изменение, но и открытие файла, чтение файла и т.д. Т.е. если какая-то программа открыла и прочитала файл (например файл с настройками программы) то атрибут LastAccess будет обновлен и выставлена текущая дата и время. Этот параметр очень удобен, в контексте использования в классах очистки. Таким образом можно ограничить удаление используемых файлов. Например Adobe Photoshop хранит временные данные в папке %Temp% и эти данные могут использоваться неоднократно, на протяжении нескольких сессий работы с Adobe Photoshop. Таким образом старые, вряд ли, используемые данные Adobe Photoshop можно удалить, а те что используется или использовались на протяжении указанного периода — останутся, хотя и те и те файлы находятся в одной директории и попадают под фильтр «*.*».
Создание нового класса
Давай на примере создания нового класса очистки, ознакомимся подробнее с возможностями.
Любой кто создает ролики при помощи Adobe Premier Pro держит свои наработки по видео в одном месте, как и я. У меня всё это хранится по пути:
E:\Проекты\aCheTMq\Видео
Adobe Premier Pro хранит много временных файлов в своих проектах, но кроме того также хранятся множество видео после рендера. Зачем мне всё это хранить для старых видео, которые уже выпущены? Для того создам класс очистки этой директории, с условиями очистки, если файлы не использовались 7 дней — удалять их.
Далее его надо найти и открыть, а заодно заполнить параметры очистки.
Теперь давай разбираться с параметрами.
Отобразить ссылки — переключатель позволяющий получить как ссылки, так и вразумительное значение для следующих полей:
- Название;
- Описание;
- Надпись кнопки.
Системный и Стандартный — первый переключатель сигнализирует что данный класс является встроенным в Windows, а второй о том, что обработчик является стандартным или иным.
Класс — название класса.
Обработчик — CLSID обработчика. Про обработчик и стандартное значение обработчика я писал выше.
Изображение — изображение которое будет отображаться в Диспетчере очистки диска.
Название и описание — пояснять, думаю, не надо. Данные значения могут быть как определенного характера, так и ссылочного (на строку в файле ресурсов программы или библиотеки).
Класс выбран в Диспетчере очистки дисков — переключатель «Выбран\Не выбран» в Диспетчере очистки диска.
Класс отображается в Диспетчере очистки диска только при критическом значении свободного места на диске — некоторая квота, установленная системой, при которой применяется класс для очистки. Т.е. к примеру, если на диске осталось 500 Мб, то класс сработает, если 501 Мб — класс не сработает. Что это за значение мне неизвестно, пока что.
Не отображать класс в Диспетчере очистки диска, если условия не исполняются — если классу очистки нечего очищать в данный момент, то он не будет светиться в Диспетчере очистки дисков, либо если он не применим к данному конкретному диску (разделу).
Удаление класса при первом использовании в Диспетчере очистки диска — пояснять не надо. Бывают такие случае, к примеру с директориями NVIDIA и AMD в корне системного раздела. Можно создать класс, который удалит эти папки, а затем удалиться сам.
Надпись кнопки — определенное или ссылочное значение. То что будет отображаться на дополнительной кнопке в Диспетчере очистки дисков.
Локализация кнопки — CLSID на локализацию Названия, Описания и Надпись кнопки.
Команда до — команда Командной строки, выполняемая до начала процесса очистки определенным классом. Самый простой пример, если сюда написать calc для класса «Temporary Files», то после того как пользователь нажмет кнопку «ОК» в окне Диспетчера очистки дисков и до начала работы класса «Temporary Files» по очистке — запуститься калькулятор.
Команда после — всё тоже самое что описано выше, но выполняемое после очистки классом.
Как на практике можно применить поля Команда до и Команда после? К примеру, есть некоторая служба Windows, которая в процессе работы плодит временные файлы и доступ к этим файлам ограничен пока служба работает. Можно До начала работы класса очистки остановить эту службу, произвести очистку, а После — запустить службу. Тут как бэ и волки целы и временные файлы — раком.
Работа с ключом "auto" — вот тот засранец из-за которого всё началось. Данный параметр отвечает за запуск класса очистки в скрытом автоматическом режиме. Если значение «0» — то класс не работает когда Диспетчер очистки дисков запущен с параметром «autoclean» и работает если значение «1».
Приоритет — числовое значение, чем больше число, тем выше в списке стоит класс в Диспетчере очистки дисков.
Фильтры — список имен файлов и директорий. Могут применятся спец-символы «*» и «?». Первый обозначает вхождение любого количества любых символов, второй — вхождение одного любого символа.
Примеры:
- * — любой файл или директория;
- *.* — любой файл, с любым расширением;
- *.project — любые файлы с расширением «project»;
- ex*.txt — файлы excel.txt, expert.txt, extra.txt и т.д.
- ex?.txt — файлы ex7.txt, exp.txt и т.д.
Фильтры могут применятся к директориям — если отмечен, то Фильтры применяются как к файлам, так и к директориям.
Удалять объекты с атрибутом «Только для чтения», Удалять объекты с атрибутом «Системный» и Удалять объекты с атрибутом «Скрытый» — удалять объекты (файлы и папки) с указанными атрибутами.
Удалять родительскую директорию объекта при очистке — удаляет родительскую папку, где расположены найденные файлы.
Удалять объекты, если они не использовались (количество дней) — атрибут файла LastAccess, о котором писал выше.
Директории — папки (места), где происходит поиск файлов по Фильтрам. Могут содержать переменные окружения, например %WinDir%, %Temp% и т.д.
Специальная директория и Использовать Специальную директорию — если отмечена, и выбранная какая либо специальная директория, то поиск производится в ней.
Если список Директорий содержит какие-либо данные, то эти данные прибавляются к пути Специальной директории. В данном случае поиск будет производится в:
- E:\Документы\Всякая рабочая фигня\
- E:\Документы\Всякая фигня кроме рабочей\
Если список Директорий пуст, то поиск производится в «E:\Документы».
Рекурсивный поиск — поиск производится в дочерних папках, иначе только в корне тех, что указаны в списке Директорий.
Всё, параметры расписаны, теперь к практике!
Я запустил Диспетчер очистки дисков для диска «E» с новым классом «Adobe Premiere Pro Cleaner». Вот что получилось до и после создания класса очистки:
16 Гб в мусорку!
Дополнительные классы очистки
Я подготовил ряд классов, которые могут пригодиться каждому пользователю. Ряд классов ещё не реализованы, например очистка WinSxS папки, но в дальнейшем появятся.
Описание в программе вроде как исчерпывающее, потому подробнее останавливаться не буду.
После включения они появятся в списке классов и ты можешь посмотреть параметры классов.
Опять результаты до и после!
У тебя эти цифры будут больше, т.к. я при разработке тестировал и не раз проводил очистку. Но и даже в данном случае 84 Мб и 1,27 Гб!
Также эти классы будут подчинятся работе функциям контроля памяти! Они входят в группу «Временные файлы».
Автоматизация очистки дисков
Для начала нужно провести подготовку всех классов очистки.
Выбрать последовательно указанные пункты и нажать кнопку «Выполнить»:
- Всегда применяются, вне зависимости сколько осталось свободного места — игнорируется квота WIndows.
- Всегда скрываются, если условия очистки не выполняются — если очищать нечего, то зачем мозолить глаза?
- Могут использоваться для автоматической скрытой очистки — без комментариев.
- Выбраны в окне Менеджера очистки диска — такая же фигня.
Теперь все классы могут использоваться для автоматической скрытой отчистки. Осталось включить задание:
После включения задания в Планировщике заданий WIndows автоматически создается задание «SilentDisksCleanup»:
Win+R → taskschd.msc → Enter
Теперь каждую пятницу будет запускаться программа BooSilentCleanupRunner, которая в свою очередь последовательно будет запускать Диспетчер очистки диска для каждого диска в скрытом режиме. После проведения очистки — завершаться.
Осталось последнее — отключить контроль памяти. Потому как практически будет происходить дублирование операций для системного раздела. У нас же получиться применить очистку для всех разделов.
Win+I → Система → Память
Заключение
BooReactor находится в разработке, ещё очень-очень маленький и глупый. Если внезапно решит «отвалиться», то сорян, я не виноват, это всё ОНИ…
Теперь серьезно: напиши в комментариях сколько ты смог очистить места на системном диске, включив дополнительные классы очистки! И ещё — предлагай идеи для классов очистки. Я посмотрю-подумаю, и вполне возможно — добавлю!
Почему важно ставить лайки и оставлять комментарии? Так я вижу, что мои труды продуктивны. Так я понимаю, что данная тема тебе нравиться и я буду её развивать. Я приветствую конструктивную критику, приветствую новые идеи, — потому пиши.
Я пишу статьи\снимаю видео, — ты оцениваешь их!
А на этом всё! Мне спасибо, я пошёл… 😊
#aCheTMq #АЧёТакМожно #Чё? #Windows #Советы #технологии #саморазвитие #компьютер #it #оптимизация #оптимизацияwindows