Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Уменьшение размеров winsxs

414
11 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Хай.
Вот, снова заинтересовался этой темой. Нормального способа почистить каталог в интернете не нашёл, а он уже 16Гб.
Как думаете, если пройтись по всем активным процессам и выцепить список dll, которые они используют, потом пройтись по всем Program Files, выцепить из всех бинарников список dll, которые они используют, опционально пройтись вообще по всему диску и сделать то же самое для любых исполняемых файлов, а потом удалить из winsxs те dll, которые не окажутся в списке dll собранном ранее, система упадёт?
У кого-нибудь есть идеи, что может отломаться, если сделать так?
327
11 декабря 2012 года
UserNet2008
748 / / 03.04.2010
Цитата:
система упадёт?


Ясный перец. Потому-что есть DLL которые используются раз в день(например при запуске). А сканеры процессов могут дать не точную инфу о dll or exe файлах и что тогда. Это относиться и clear реестра "Профессиональная программа для переустановки ОС " откуда знать программе clear реестра нужны те или иные параметры. Есть программы которые делают снимок системы потом setup программу и если надо удалить применяется снимок. И то это не факт что удалится все т.к вовремя работы программы измениться реестр или добавиться файлы.
Я не могу понять , что Вы так волнуетесь о 16гб это во времена DOS диски были 40МБ. А наше время 100ГБ туда сюда.

Не мешайте системе работать!

414
11 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Каким же образом может ошибиться сканер бинарного файла? Кроме случая, когда функции нет в таблице импорта и библиотеку подгружают в рантайм. Но этот момент тоже можно анализировать.
Если dll была подгружена процессом хотя бы раз, то тут уже никак не ошибиться, если процесс, конечно, ещё в памяти. Всё остальное вытягивается, как из обычного бинарника на диске, хотя можно и таблицу загруженного процесса анализировать.
100Гб тоже не бесконечные. 25Гб Windows каталога становятся проблемой. Ни игр не поставить нормально, ни виртуальные машины. На SSD винтах итого меньше объём.
327
11 декабря 2012 года
UserNet2008
748 / / 03.04.2010
Так они хоть раз да загружаются и что дальше. Есть DLL в которых программа используют только функцию. Она может и месяцами не вызываться.
Насчет сканеров возмите два разных, и результат будет разный.
А просматривать километровые отчеты не благодарное дело. Да Вы сами понимаете, что это не прокатит. Думаю, что можно сделать это отключить Восстановление системы, уменьшить размер для корзины

Это мой вид
На счет SSD два диска накрылись сразу после гарантии решил пока не брать.
Использую RAID0 и RAID5
414
11 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Даже если программа не использует ни одной функции из dll, но саму библиотеку подгружает, это можно найти либо в таблице импорта, ли по функции LoadLibrary. Других способов использовать библиотеку мне неизвестно. Если они есть, тогда - да, действительно что-то можно прощёлкать. Есть ещё способы?
Сканер писать буду сам, поэтому и хочу узнать, что не учёл, чтобы случайно не удалить что-то нужное.
327
11 декабря 2012 года
UserNet2008
748 / / 03.04.2010
Ну так DLL есть динамические и подключаются по мере необходимости и выгружаются из памяти сами.
414
11 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Из памяти выгружается только образ же. Запись о том, что бинарнику нужна dll, никуда не девается.
412
12 декабря 2012 года
grgdvo
323 / / 04.07.2007
присоединяюсь к теме, актуально...

тоже шерстил гугль, тоже ничего путного не нашел
единственное, что сделал - это поставил наследуемый атрибут сжатия папки
выиграл слезы
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: CassandraDied
Каким же образом может ошибиться сканер бинарного файла? Кроме случая, когда функции нет в таблице импорта и библиотеку подгружают в рантайм… Если dll была подгружена процессом хотя бы раз, то тут уже никак не ошибиться, если процесс, конечно, ещё в памяти. Всё остальное вытягивается, как из обычного бинарника на диске, хотя можно и таблицу загруженного процесса анализировать.

На самом деле не всё так просто. Ведь название WinSxS дано не просто так, и расшифровывается оно как syde-by-side. Зависимости из бинарника так просто не вытянешь, ибо они не прописаны в импорте напрямую, а реализуются с учётом файла манифеста. Тогда тебе у каждого исполнимого (желательно не по расширению, а по содержимому смотреть) файлу читать ресурсы, вычленять оттуда манифест и нутыпонел
Кстати, затея меня немного заинтересовала, и я бы даже взялся за реализацию каким-нибудь образом. Обросчайса

P.S. Ты норкоман штоле? Мне прям интересно, что ты туда ставил, потому что у меня эта папка весит всего лишь 112 Мб

414
12 декабря 2012 года
CassandraDied
763 / / 24.05.2012
@pixo $oft, ты единственный человек на всём земно шаре с таким маленьким размером каталога, если только ты никогда не ставил апдейты. Это всё они да сервиспаки по большей части.
Цитата:
Зависимости из бинарника так просто не вытянешь, ибо они не прописаны в импорте напрямую


Имеешь в виду, что строки для LoadLibrary не прописаны в сегменте данных, а находятся в ресурсах?
Можно будет покодить эту шняжку вместе.

277
12 декабря 2012 года
arrjj
1.7K / / 26.01.2011
у меня - 6 Gb, но с семеркой я не рискую вооюще ничего удалять - сука капризная. было дело решил темпы почистить - пздц товарищи - часть иконок пропала т.е. прога есть, но иконка только у exe у ярлыка нет. плюс несколько обновлений глюкануло - мол не могу папку установочную найти - пришлось искать установочники с версией один-в-один, исправлять обновлять, короче гемора себе так накапал нормально. Кроме того размер папки такой не из-за неиспользуемых dll, а из-за дубликатов (один и тотже файл разных версий msil_mscorlib например аж 9 штук)
414
12 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Читал, что система определяет, какую версию подгрузить по хэшу, но что-то не представляю, где может быть этот хэш. Дубликаты, наверное, тоже ведь не используются все.
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: CassandraDied
@pixo $oft, ты единственный человек на всём земно шаре с таким маленьким размером каталога, если только ты никогда не ставил апдейты

Ну охренеть теперь, я что, уникален по этому параметру?
Обновления ставил и ставлю регулярно, да и всякие программки, которые используют S×S, тоже иногда проскакивают

Цитата: CassandraDied
Имеешь в виду, что строки для LoadLibrary не прописаны в сегменте данных, а находятся в ресурсах?

Не совсем так, но идею ты понял. Более конкретно — S×S-модули прописаны в секции импорта так же, как и обычные (т.е. только по имени), а загрузчик берёт конкретный путь к ним с учётом манифеста. Подробности не скажу где (понимаю, размер большой, но оно того стоит)

Цитата: CassandraDied
Читал, что система определяет, какую версию подгрузить по хэшу, но что-то не представляю, где может быть этот хэш

Вот в том самом манифесте он и есть

Цитата: CassandraDied
Дубликаты, наверное, тоже ведь не используются все

Используются все, но только установленными приложениями. После удаления приложения (если, конечно, установщик не кривой) сборки тоже должны удаляться

414
12 декабря 2012 года
CassandraDied
763 / / 24.05.2012
@pixo $oft, ну, кривые установщики, вернее, деинсталляторы, вряд ли так могут загадить диск. Если исключить их, думаешь, весь оставшийся хлам может неожиданно понадобиться какой-нибудь системной утилите, которая установилась с апдейтом?
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Ей — вряд ли. Но ящитаю, что лучше всё-таки выполнить поиск. Либо заморочиться и написать полный перебор, либо просто программку, которая будет висеть и периодически делать снапшоты загруженных модулей. В принципе, по времени написания и то, и то не особо различается (1-ю, быть может, чуть дольше писать придётся из-за ковыряния с ресурсами), но по результативности, как мне кажется, 1-я будет лучше: она хоть и долго будет работать, но зато 1 раз
414
12 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Да чего халтурить, давай первый вариант делать. А тебе снова покодить хочется, как в случае с инсталлятором, да? :)
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Я так и думал, что ты тот самый А. =) В таком случае, ты знаешь, как меня найти, если что
Собственно, почему бы и нет? Правда, я не предполагаю, как мы будем делать это совместно, но как минимум обсудить и подсказать что-то я могу
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Вот ещё что: если твоя система тридцатидвухразрядна, смело можно удалять папки с припиской amd64, например. А вот если система 64-битная, то папки x86 лучше не трогать по вполне понятным причинам, да и к 64-разрядным другой платформы относиться с осторожностью
414
12 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Может, соберёшь линки, которые стоит почитать, чтобы знать, что где лежит и дашь мне? Раз уж ты уже во всём разобрался, чего мне ещё раз гуглить. :)
7
12 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Честно пися́, больше, чем я написал, не разбирался. Читаешь сначала про S×S itself, понимаешь, что от чего зависит, затем смотришь, как с ресурсами работать (я ещё не работал, на самом деле), пишешь рекурсивный поиск файлов (для тебя проблемы не составит), ну а дальше всё просто — комбинируешь указанное выше удобным тебе способом
327
13 декабря 2012 года
UserNet2008
748 / / 03.04.2010
1. Папка WinSxS содержит всю конфигурацию системы! всех компонентов! - поэтому чем больше компонентов, обновлений установлено, тем больше размер папки. После осознания этого факта, проблема размера папки WinSxS вам не покажется примитивной (читайте по ссылкам выше).
2. Папка WinSxS содержит hard links(жесткие ссылки) на системые файлы расположенные в других местах. Поэтому Explorer покажет вам размер системы гораздо больший, чем это есть на самом деле (огромное число файлов посчитается не по одному разу).
3. Папка WinSxS содержит подпапку Backup, где храниться копия восстановления системы. Если раньше она расла и росла после установки компонент, сервис паков, обновлений системы и драйверов, то сейчас через некоторое время папка будет самоочищаться.

Проблема размера системы самым серьезным образом проанализирована разработчиками Windows 7 (не только папки WinSxS!) и в систему внесены существенные изменения, которые не только уменьшили начальный ее размер, но и предотвращают ее раздувание со временем.

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

источник
7
13 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Ну, хардлинки кое-что меняют, если это действительно так. А у меня FAT32, поэтому их там банально не существует. А ещё XP, да
414
13 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Гм. Ну, тогда всё нормально. Сейчас проверил и создал хардлинк. В размерах каталога изменения были, а вот в размерах диска - нет. Тогда можно всё оставить как есть.
7
13 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
Пользуясь случаем, хотелось бы узнать, как ты его создал. Ибо не припомню, чем из состава операционки это можно сделать
414
13 декабря 2012 года
CassandraDied
763 / / 24.05.2012
У тебя может и не получиться на XP.
mklink /h новая_ссылка источник
fsutil hardlink create новая_ссылка источник
327
13 декабря 2012 года
UserNet2008
748 / / 03.04.2010
FAR Manager - файловый менеджер позволяющий работать ссылками на NTFS-разделах (создавать, просматривать, удалять жёсткие и символьные ссылки с помощью команды Alt + F6 )
7
13 декабря 2012 года
@pixo $oft
3.4K / / 20.09.2006
FSUtil работает. Мда, плохо, что система не предоставляет иного интерфейса взаимодействия…

P.S. Как я понял, задача решения этой проблемы уже неактуальна? Я тут подумал, что было бы глупо делать хардлинки на имеющиеся файлы, потому как изоляция на то и изоляция, чтобы разделять РАЗЛИЧНЫЕ версии. Но тут вопрос спорный, да, не мешало бы проверить
414
14 декабря 2012 года
CassandraDied
763 / / 24.05.2012
А что тут ещё можно сделать? Думаю, оверхед от создания хардлинка совсем небольшой, потраченного времени стоить не будет, так что для меня уже неактуально.
В сети есть скрипт, который заменяет хардлинки на старые библиотеки хардлинками на новые, а старые вообще сносит, но вот это делать как-то боязно.
7
06 января 2013 года
@pixo $oft
3.4K / / 20.09.2006
Первая бета. Пока только сканирует указанное местоположение и выводит следующие списки:
• найденных модулей с зависимостями от WinS×S
• не-/используемых сборок
В процессе прогона выяснились как минимум 2 неприятные вещи: 1-я вполне логична — грузятся абсолютно все файлы (вернее, осуществляется попытка их загрузки), что не есть быстро; 2-я — в загрузке SFX-архивов размером в несколько сотен Мб хорошего тоже мало, особенно когда у тебя 1 Гб оперативки на всё про всё ☺

Так что вижу следующие направления изменений в порядке приоритетности: проверка размер файлов (задать какой-то максимальный порог, выше которого файл не загружается), проверка исполнимости файла (просто хотя бы по сигнатуре MZ, ибо DOS- и NE-приложений много вряд ли будет), создание списка, какое приложение какую сборку использует (ну это уже финальная фича, просто для информации)
Прикрепленные файлы:
4 Кб
Загрузок: 749
414
06 января 2013 года
CassandraDied
763 / / 24.05.2012

А с диска С запустился.
7
06 января 2013 года
@pixo $oft
3.4K / / 20.09.2006
Ха! А откуда это ты запускал? В консоли что-нибудь написалось?
Сдаётся мне, это умолчанский C++сный main() напортачил
414
06 января 2013 года
CassandraDied
763 / / 24.05.2012
Ну, на скриншоте видно, откуда запустил. Консоль даже не появилась.
Ну а когда запускал с С:, то в консоли появилось много чего. Даже чересчур много. Ты как-нибудь проверял, что выводятся именно неиспользуемые сборки?
И чего так медленно работает? Диск почти не дёргает, да и памяти всего ~3 мегабайта заняло. На чём ты там экономишь?
7
06 января 2013 года
@pixo $oft
3.4K / / 20.09.2006
На скриншоте виден путь, но мне неизвестно, что есть диск P: и с чем его едят. Судя по всему, действительно main() ругается, переопредели я его, и такой фигни б не было
В консоли пишутся имена модулей, в которых найдены зависимости, затем, как можно догадаться из текстов, найденные зависимости (когда processorArchitecture="*", туда ещё 64-разрядные подставляются) и затем неиспользуемые папки (среди всего прочего manifests и policies, но их уже вручную можно отфильтровать, раз голова есть)
Скорость работы ты можешь оценить, глянув код программы (я бы написал «ке-ке-ке, там вирус, но не могу, т.к. выложил исходник, а не егзе). Просто анализирутся вообще все файлы. Сейчас займусь оптимизацией

Экономлю ни на чём =) У меня памяти не более мегабайта отнимало (если не учитывать отмапаные модули), а вот диск дёргало нипадецки. Ещё бы, рекурсивный поиск, а затем загрузка каждого модуля

Upd.: вполне возможно, что ругается на символ «×» в названии папки. Сразу-то и не догадался ☺
414
06 января 2013 года
CassandraDied
763 / / 24.05.2012
Чего же тогда с С на 'x' не ругался? Прикрути какую-нибудь удалялку неиспользуемых модулей,что ли. Сделаю на виртуалке снэпшот и можно будет потестить.
7
06 января 2013 года
@pixo $oft
3.4K / / 20.09.2006
Ну ты же не в папке копировал, а сам .exe, как я понял? Взгляни внимательно, в названии папки «×», а в имени приложения — «x»
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог