Как заменить файл в папке windows winsxs

Мануал по замене вручную отдельных повреждённых или удалённых системных файлов Windows файлами из дистрибутива операционной системы. Способ позиционируется как радикальная альтернатива автоматическому восстановлению целостности системных файлов, если эта операция не дала результатов.

Для восстановления работоспособности Windows существует масса способов – точки отката, бэкап, бэкап и откат её реестра, восстановление целостности её файлов, переустановка Microsoft Visual C++ и прочих системных компонентов. Но только предварительно сделанный бэкап системы можно считать панацеей, универсальным «лекарством» от всех возможных проблем. Как быть, если нужно восстановить системные файлы, а у нас ни бэкапа нет, ни инструмент восстановления системных файлов не работает?

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

Замена системных файлов Windows вручную – операция, требующая определённых знаний и навыков в работе операционной системы от Microsoft. Нам нужно точно знать, какой файл системы повреждён или удалён, чтобы мы могли его заменить дубликатом. К примеру, если мы при открытии системного управления дисками видим уведомление типа этого,

Уведомление

это значит, что повреждён или удалён файл diskmgmt.msc – файл запуска непосредственно утилиты управления дисками. В этом случае мы можем попытаться решить проблему путём восстановления целостности системных файлов, т.е. запустить в командной строке известную команду sfc/scannow. Но этот механизм системы не всегда даёт положительные результаты и часто завершается уведомлением о невозможности восстановления.

Sfc - scannow

В таком случае далее нужно предпринимать действия по восстановлению хранилища системных ресурсов и потом снова запускать sfc/scannow. Ручная замена проблемных системных файлов – более топорная операция, плюс к этому, требующая, как упоминалось, чёткого понимания, какие именно файлы по какому пути нужно заменять. Но если эти файлы и пути известны, то это более быстрое и надёжное решение проблемы.

Что для этого необходимо? Нам понадобится установочный ISO нужной версии Windows. Открываем его архиватором 7-Zip.

Установочный ISO

Открываем папку «sources», далее – «install».

7-Zip

Внутри файла «install» выбираем папку с тем или иным порядковым номером. Порядковые номера – это индексы редакций Windows. Если, например, в нашем случае нужно восстановить файл diskmgmt.msc, нам без разницы редакция, эта системная утилита есть в любой редакции Windows. Поэтому мы просто выберем редакцию Pro, она идёт под номером 4.

Редакция Windows

Но если файл нужного системного компонента есть только в определённой редакции, например, только в Pro, то необходимо указывать индекс конкретно этой редакции. А узнать индексы редакций в составе дистрибутива можно с помощью командной строки. Нужно подключить установочный ISO для отображения в системе и прописать в команде Dism путь к файлу install на борту этого ISO, вот так:

Dism /Get-WimInfo /WimFile:J:sourcesinstall.wim

Здесь вместо буквы J каждый должен подставить свою букву диска подключённого ISO. И если файл install имеет формат не «.wim», а «.esd», то, соответственно, в конце команды необходимо указать этот формат. В ответ на эту команду получим справку о соответствии индексам редакций Windows.

CMD - Dism

Определившись с редакцией, распаковываем нужный системный каталог. В нашем случае необходимо заменить файл утилиты diskmgmt.msc, следовательно, мы распаковываем каталог «Windows». Кликаем его и жмём «Extract».

Extract

Указываем путь распаковки.

Путь распаковки

И после распаковки ищем файл утилиты diskmgmt.msc.

Файл утилиты

При поиске обнаружилось несколько дубликатов diskmgmt.msc – в оригинальном месте хранения файла, в хранилище системных ресурсов (т.е. в папке WinSxS), в других системных подкаталогах. Мы берём файл, находящийся по исходному его пути хранения, в папке «System32». Копируем его.

Копируем его

И помещаем этот файл в папку «System32» внутри каталога «Windows» на диске С текущей системы.

Проводник

Подтверждаем вставку или замену файла.

Подтверждаем вставку

Вот и всё.

***

Мы рассмотрели простейший пример замены системных файлов вручную, чтобы осветить сугубо механизм этой процедуры. Необходимо понимать, что не со всеми системными файлами процесс замены произойдёт так вот просто, могут возникнуть трудности. Некоторые файлы Windows в активном состоянии не захочет заменять, и потребуется либо получение прав TrustInstaller, либо работа с LiveDisk. Также нужно учитывать, что после замены некоторых файлов, например, файлов активных системных процессов, прежде лицезрения результата проделанной работы, необходимо перезагрузить Windows.

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

Загрузка…

Внимание: Если у вас вышла из строя ОС, или тем более серверная ОС, прежде чем приступить к любым процедурам по восстановлению, сделайте резервную копию текущего состояния

Да, сделать бэкап неработоспособной системы.
Но, гипотетически, системы имеющей на текущий момент только одну проблему.
А сколько, в процессе восстановления, вы можете привнести неисправностей, в итак нерабочую систему, неизвестно никому. Так же как и не удастся проследить цепочку примененных вами действий в стрессовой ситуации.
Так что в первую очередь делаем бэкап, используя например Acronis True Image.

Занимаемся вредительством

Если у вас нет проблем с операционкой, но вы хотели бы поупражняться в восстановлении системных файлов, попробуйте выполнить следующее:

  1. Переходим в папку System32
    cd C:WindowsSystem32

    По умолчанию владельцем файлов в папке System32 является служебный пользователь TrustedInstaller.

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

  1. Владельца можно изменить как из GUI, так и через CMD:
    # Назначаем себя владельцем
    takeown /f C:windowssystem32WF.msc
    # Даем себе полные права на файл
    icacls C:windowssystem32WF.msc /GRANT ADMINISTRATORS:F
  2. Удаляем файл
    del C:windowssystem32WF.msc

Файл удалили. Теперь можно приступать собственно к восстановлению.

Восстановление в автоматическом режиме
SFC (System File Checker)

Пробуем выполнить команду

sfc scannow

Дождитесь сообщения:
Программа защиты ресурсов windows обнаружила поврежденные файлы и успешно их восстановила

Так же можно запустить проверку только для одного конкретного файла:

sfc /scanfile=C:windowssystem32WF.msc

Если команда не выполняется, и выдает ошибку на подобии:

Защита ресурсов Windows не может выполнить запрошенную операцию

то мы хотя бы может просмотреть какие файлы повреждены, вручную открыв лог последнего сканирования:
С:WindowsLogsCBSCBS.log

Так же, для упрощения поиска ошибок в этом файле лога, можно воспользоваться следующей командой:

find "error" WindowsLogsCBSCBS.log
Восстановление в ручном режиме

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

При выполнении команды sfc /scannow из CMD в рабочей системе некоторые файлы будут задействованы и поэтому не смогут быть обработаны. По этой причине лучше перейти в среду восстановления и предпринимать дальнейшие действия по восстановлению уже оттуда.

Для перехода к среде восстановления нужно:
1) Вставить дискфлешку с Windows той же версии, что и восстанавливаемая система
2) Выполнить перезагрузку
3) Запуститься с диска и открыть командную строку

BootDiskRestore

Загрузка с диска

Дополнительные параметры

Запуск CMD

После открытия командной строки первым делом определим буквы разделов:

wmic logicaldisk list brief

Конечно для этого можно использовать diskpart, но с wmi мы уложимся в меньшее количество команд.
Да и для общего развития с wmi полезно поработать.

Оффлайн восстановление системы

Если вы проводите восстановление из среды восстановления или LiveCD(USB)

sfc /scannow /offwindir=d:windows /offbootdir=d:

/offwindir — переключатель для восстановления файлов внешней системы. Нужен что бы указать расположение папки Windows

/offbootdir — переключатель должен указывать на загрузочный раздел

DISM

Утилита DISM поможет в некоторых случаях,  когда SFC не может восстановить системные файлы.

Ведь SFC должна откуда то брать восстанавливаемые файлы.
Таким местом является папка C:WindowsWinSxS
Но если отсутствует или повреждено и это хранилище, то необходимо будет сначала восстановить его.

# Проверка целостности хранилища
dism /Online /Cleanup-Image /ScanHealth

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

DISM_ScanHealth

DISM_ScanHealth
# Заменить файлы на целостные, без проверки
dism /Online /Cleanup-Image /RestoreHealth

Если выполнить эту команду в среде окружения Windows, то недостающие файлы будут загружены из интернета или сервера WSUS.
В случае, если команда восстановления хранилища компонентов не работает, по той или иной причине,
нужно указать файл install.wim или install.esd со смонтированного ISO образа Windows

# Получить разрядность и версию системы, в которой мы работаем
wmic os get OSArchitecture,caption,Version /format:list
# Узнать индекс доступных ревизий в файле install.wim
dism /get-wiminfo /wimfile:P:x64sourcesinstall.esd

DISM_Get-WIMinfo

DISM Get-WIMinfo

DISM_Get-WIMinfo

Get-WIMinfo Подробно

На основе полученной информации указываем для утилиты DISM нужный индекс.

dism /Online /Cleanup-Image /RestoreHealth /Source:wim:P:SourceInstall.wim:4 /limitaccess

Через двоеточие здесь нужно указать индекс ревизии Windows, под которым в используемом образе располагается аналогичная вашей система.

Ошибка 0x800f081f

При восстановлении вы можете столкнулся с ошибкой 0x800f081f

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

# Создаем каталог куда будут распакованы файлы из образа
mkdir C:WIM
# Монтируем образ в папку
Dism /Mount-Wim /wimfile:P:x64sourcesinstall.esd /index:4 /MountDir:G:WIM /ReadOnly
# Восстанавливаем хранилище, используя распакованный образ
Dism /Online /Cleanup-Image /RestoreHealth /Source:C:WIMWindows /LimitAccess
# Демонтируем образ
Dism /Unmount-Wim /MountDir:C:WIM /Discard
# Удаляем папку с файлами
rmdir C:WIM
Восстановление хранилища на внешнем устройстве

Проверяем ревизию установленой системы

DISM /Image:D: /get-currentedition

Выполняем восстановление хранилища

dism /Image:D: /cleanup-image /restorehealth

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

dism /Image:D: /wimfile:P:x64sourcesinstall.esd /cleanup-image /restorehealth

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

sfc /scannow

Если в конце концов все это не помогло, то с большой вероятностью следующим вариантом будет переустановка ОС

Описание основных ключей, которые нам понадобятся

/Online — будут восстановлены файлы в папке WinSxS для системы из под которой запущена консоль CMD

/Cleanup-Image — Согласно Help: «Выполняет в образе операции очистки и восстановления». Но если по простому, то данный параметр нам необходим для того, что бы мы могли использовать зависимые от него параметры:
{/CheckHealth | /ScanHealth | /RestoreHealth}.
Т.о. если вызвать /RestoreHealth без /Cleanup-Image, мы просто увидим ошибку «Неизвестный параметр restorehealth»

/Image — параметр, указываемый при необходимости восстановить хранилище внешней системы. То есть расположенной на любом носителе.

/Source — если задан этот параметр, DISM сначала выполняет поиск в указанных расположениях.
Можно использовать несколько аргументов /Source

/LimitAccess — сообщает DISM, что не нужно выполнять поиск исходных файлов в Центре обновления Windows или в службах обновления Windows Server

Альтернативный вариант

Можно достать файлы из образа, без монтирования средствами DISM, с помощью 7Zip.
Используя полученные файлы, мы можем заменить ими содержимое папки WinSxS

7Zip Open Image

Открываем файл Install

7Zip Open Image

Выбираем ревизию

7Zip Open Image

Можно копировать файлы

-143 / 39 / 6

Регистрация: 07.08.2013

Сообщений: 1,053

Записей в блоге: 1

1

.NET 4.x

14.02.2015, 14:36. Показов 2030. Ответов 3


В последних версиях Windows есть папка WinSxS.
Нужно изменить содержание файла в этой папке и сохранить файл.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Ушел с форума

Эксперт С++

16454 / 7418 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

14.02.2015, 14:40

2

Цитата
Сообщение от Anderis49
Посмотреть сообщение

В последних версиях Windows есть папка WinSxS.

Ну если последними считать Windows XP и выше — то да

Цитата
Сообщение от Anderis49
Посмотреть сообщение

Нужно изменить содержание файла в этой папке и сохранить файл.

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



0



-143 / 39 / 6

Регистрация: 07.08.2013

Сообщений: 1,053

Записей в блоге: 1

14.02.2015, 15:37

 [ТС]

3

Цитата
Сообщение от Убежденный
Посмотреть сообщение

Так в чем проблема-то ?

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

Добавлено через 7 минут

Цитата
Сообщение от Убежденный
Посмотреть сообщение

Только не удивляйтесь, если система после этого не будет нормально работать
или вообще перестанет загружаться.

Стирал из этой папки бэкап и еще кое-что без всяких последствий.



0



OwenGlendower

Администратор

Эксперт .NET

15245 / 12282 / 4905

Регистрация: 17.03.2014

Сообщений: 24,880

Записей в блоге: 1

14.02.2015, 20:18

4

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Anderis49, чтобы иметь возможность записи в winsxs приложению требуются полные права администратора. Очевидно можно запускать приложение с помощью команды «run as administrator» или путем добавление манифеста с

XML
1
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

Однако постоянная работа с привилегиями администратора это плохая практика. Правильнее запускать отдельное приложение которое получит права, выполнит необходимое действие и завершит работу. Чтобы не плодить exe-шники можно запускать свою копию передавая данные через командную строку. Для запуска с elevated привилегиями используется глагол runas:

VB.NET
1
2
3
4
5
6
7
8
Dim startInfo As New ProcessStartInfo
startInfo.UseShellExecute = True
startInfo.FileName = Application.ExecutablePath
startInfo.WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath)
' Окружаем путь кавычками чтобы при наличии пробелов путь воспринимался как один аргумент
startInfo.Arguments = """c:windowswinsxs....some.dll"""
startInfo.Verb = "runas"
Process.Start(startInfo)

Аргументы командной строки обрабатываем в событии Startup:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
' ApplicationEvents.vb
Private Sub MyApplication_Startup(sender As Object, e As ApplicationServices.StartupEventArgs) Handles Me.Startup
    If e.CommandLine.Count > 0 Then
                Dim fileToProcess As String = e.CommandLine(0)
        ' Обрабатываем указанный файл
        ' ....
 
        ' Отменяем запуск приложения
        e.Cancel = True
    End If
End Sub

MS рекомендует добавлять на кнопку выполняющую подобное действие иконку с UAC щитом. Как это сделать смотри в примере из How to self-elevate an application to a high privilege level under UAC.



3



В данной статье описан метод ручного восстановления хранилища компонентов Windows. Подобные описанному в данном посте методу восстановления работоспособности компонентной модели рождаются вовсе не от хорошей жизни, появляются они под воздействием многочисленных проблем с компонентной моделью операционной системы. Во многих случаях официальные подходы к восстановлению хранилища компонентов не помогают, помимо этого отсутствует какая бы то ни было внятная официальная документация, из чего складывается недопонимание структуры и принципов работы компонентной модели. При подобном отношении со стороны разработчиков абсолютно любые средства вернуть компонентную модель в работоспособное состояние приемлемы!! Как показывает практика, при всех стараниях разработчиков из Microsoft предоставить возможность конечному пользователю системы устранять возникающие проблемы в автоматическом режиме (при помощи специальных утилит), никогда полностью не будут исключены ситуации, в которых эти самые автоматизированные средства будут давать сбои. Причина тут кроется в симбиозе старых механизмов операционной системы и необходимостью постоянного внедрения новых (не оттестированных) технологий, должным образом не заботясь о приведении в надлежащее состояние всех связанных (участвующих) компонентов, что, в свою очередь, порождает огромное количество проблем.
В данной публикации речь пойдет о восстановлении компонента прямой заменой файлов. Фактически методом предусматривается прямая ручная замена поврежденных [кривых, неправильно функционирующих] файлов, являющихся причиной возникновения ошибок, а так же частей реестра. По этой методике, исправные файлы и соответствующие ключи реестра копируются с работоспособной станции-донора. Слабое место метода в том, что для реализации требуется наличие находящейся на том же уровне обновлений нормально функционирующей операционной системы той же версии/ревизии.
В процессе повествования постараемся описать общую методику, тем не менее, в статье будут присутствовать частные случаи из практики.

Определение виновника проблемы

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

Ошибки в лог-файлах

Основной и пожалуй самый информативный источник о проблемах, связанных с компонентной моделью Windows — лог-файлы системных утилит обслуживания. Чаще всего ошибки выявляются при выполнении обновления системы, то есть установки обновлений/исправлений. Проявляются они в виде разнообразных ошибочных статусов в интерфейсе Центра обновления и окон обновлений. Тем не менее, сам по себе статус не малоинформативен, а вот более детальная информация попадает в специализированные файлы журналов. В данном разделе мы опишем методики поиска источников проблем в лог-файлах результатов работы системных утилит SURT/DISM/SFC/SFCFix, которые работают с хранилищем компонентов и системными каталогами а предмет восстановления целостности компонентной модели системы.

CheckSUR.log / DISM.log

Правила поиска ошибок в файлах %Windir%LogsCBSCheckSUR.log или %Windir%LogsDISMDISM.log:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

=================================

Checking System Update Readiness.

Binary Version 6.1.7601.24499

20190716 14:04

Checking Windows Servicing Packages

Checking Package Manifests and Catalogs

Checking Package Watchlist

Checking Component Watchlist

Checking Packages

Checking Component Store

(f) CSI Manifest Zero Length 0x00000000 winsxsManifestsx86_microsoftwindowsdirectxdirect3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest x86_microsoftwindowsdirectxdirect3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e

(f) CSI Manifest Zero Length 0x00000000 winsxsManifestsamd64_microsoftwindowsiehtmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest amd64_microsoftwindowsiehtmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36

Summary:

Seconds executed: 2948

Found 2 errors

  CSI Manifest Zero Length Total count: 2

Unavailable repair files:

winsxsmanifestsx86_microsoftwindowsdirectxdirect3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest

winsxsmanifestsamd64_microsoftwindowsiehtmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest

Статусы (первый символ):

  • (f) — фатальная ошибка;
  • (w) — предупреждение;
  • (fix) — указывает на ошибку, которая была исправлена; выводятся в виде отдельной строки сразу за строкой со статусом (f);

Оставшаяся часть строки содержит имя поврежденного файла и код ошибки.
В конце файла можно видеть секцию Unavailable repair files:, которая группирует все файлы, которые нужно будет заменять.

CBS.log

Несколько вариантов поиска ошибок в лог-файле %WinDir%LogsCBSCBS.log:

  • Производим поиск строк, содержащих ключевое слово Error (с пробелом ДО или ПОСЛЕ). В их окружении можно найти указание на конкретные ошибки;
  • Выполняем команду

    findstr /c:»[SR]» %windir%logscbscbs.log > c:sfcdetails.txt

    в результате чего в корне диска C: будет создан файл sfcdetails.txt, включающий лишь строки исходного файла, содержащие префикс [SR] (содержащие информацию об ошибках).

1: отсутствующие компоненты

. . .

20160105 14:20:31, Info                  CSI    00001a68 [SR] Verifying 100 (0x0000000000000064) components

20160105 14:20:31, Info                  CSI    00001a69 [SR] Beginning Verify and Repair transaction

20160105 14:20:31, Info                  CSI    00001a6a [SR] Cannot repair member file [l:32{16}]«BRCI06UI.DLL.mui» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing

20160105 14:20:31, Info                  CSI    00001a6b [SR] Cannot repair member file [l:32{16}]«prnbr002.inf_loc» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing

20160105 14:20:31, Error                 CSI    00001a6c (F) STATUS_OBJECT_NAME_NOT_FOUND #28089837# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile(flags = (AllowSharingViolation), handle = {provider=NULL, handle=0}, da = (SYNCHRONIZE|FILE_READ_ATTRIBUTES), oa = @0x195c7d0>OBJECT_ATTRIBUTES {s:48; rd:NULL; on:[100]»??C:WindowsWinSxSamd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9eAmd64″; a:(OBJ_CASE_INSENSITIVE)}, iosb = @0x195c7b0, as = (null), fa = 0, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE), cd = FILE_OPEN, co = (FILE_SYNCHRONOUS_IO_NONALERT|0x00004000), eab = NULL, eal = 0, disp = Invalid)

20160105 14:20:31, Error                 CSI    00001a6d@2016/1/5:10:20:31.885 (F) d:win7sp1_gdrbasewcpsilmergedntuntsystem.cpp(2057): Error STATUS_OBJECT_NAME_NOT_FOUND originated in function Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile expression: (null)

20160105 14:20:31, Error                 CSI    00001a6e (F) STATUS_OBJECT_NAME_NOT_FOUND #28089836# from Windows::Rtl::SystemImplementation::CDirectory::OpenExistingDirectory(...)[gle=0xd0000034]

20160105 14:20:31, Error                 CSI    00001a6f (F) STATUS_OBJECT_NAME_NOT_FOUND #28089835# from Windows::Rtl::SystemImplementation::CDirectory_IRtlDirectoryTearoff::OpenExistingDirectory(flags = 0, da = (SYNCHRONIZE), oa = @0x195d0e0>SIL_OBJECT_ATTRIBUTES {s:40; on:»Amd64″; a:(OBJ_CASE_INSENSITIVE)}, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE), oo = (FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|FILE_OPEN_FOR_BACKUP_INTENT), dir = NULL, disp = (null))

. . .

В обрамлении видно строки, содержащие ключевые слова Cannot repair member file.. указывающие на то, что:

  • содержимое файла не соответствует содержимому хранилища для файла и WRP пытается его восстановить, тем не менее..
  • ..WRP не может восстановить файл описанного в строке компонента, потому что записи в реестре о нем присутствуют, а вот сам файл отсутствует в хранилище, о чем недвусмысленно намекает фрагмент строки ..file is missing.

Ниже по тексту можно найти статус STATUS_OBJECT_NAME_NOT_FOUND, указывающий на отсутствие подкаталога. В нашем случае, как видно из отчета, повреждению подверглась целая иерархия компонента, состоящая из подкаталогов и файлов, размещавшаяся в каталоге C:WindowsWinSxSamd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9e. Заглянув в целевой каталог, я убедился, что он действительно пуст, а вот что за событие/действие удалило его содержимое, остается только гадать, хотя подобные инциденты в Windows-системах сплошь и рядом.
2: отсутствие манифеста

. . .

20190527 14:32:54, Info                  CSI    000004f9 Looking for manifest in Backup Dir...

20190527 14:32:54, Error                 CSI    000004fa (F) Unable to load manifest for component [ml:280{140},l:186{93}]«wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9»[gle=0x80004005]

20190527 14:32:54, Error                 CSI    000004fb@2019/5/27:11:32:54.653 (F) d:w7rtmbasewcpcomponentstorestorelayout.cpp(2712): Store corruption detected in function ComponentStore::CRawStoreLayout::FetchManifestContent expression: 0

  FileHashMismatch on resource [120]«winsxsmanifestswow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest»[gle=0x80004005]

20190527 14:32:56, Error                 CSI    000004fc (F) STATUS_SXS_COMPONENT_STORE_CORRUPT #1525870# from CCSDirectTransaction::OperateEnding at index 6 of 185 (0x00000000000000b9) operations, disposition 0[gle=0xd015001a]

20190527 14:32:56, Error                 CSI    000004fd (F) HRESULT_FROM_WIN32(14098) #1496294# from Windows::ServicingAPI::CCSITransaction::ICSITransaction2_AddComponents(Flags = 4, a = @0x1b50440, mp = @0x1b50c40, disp = 0)[gle=0x80073712]

20190527 14:32:56, Info                  CBS    Failed to add one or more component [HRESULT = 0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT]

20190527 14:32:56, Error                 CBS    Failed to complete component closure [HRESULT = 0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT]

20190527 14:32:56, Info                  CSI    000004fe@2019/5/27:11:32:56.806 CSI Transaction @0x8abb930 destroyed

20190527 14:32:56, Info                  CBS    Perf: Resolve chain complete.

20190527 14:32:56, Info                  CBS    Failed to resolve execution chain. [HRESULT = 0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT]

20190527 14:32:56, Error                 CBS    Failed to process single phase execution. [HRESULT = 0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT]

20190527 14:32:56, Info                  CBS    WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80073712, failure source: Resolve, start state: Absent, target state: Installed, client id: WindowsUpdateAgent

20190527 14:32:56, Info                  CBS    Failed to query DisableWerReporting flag.  Assuming not set... [HRESULT = 0x80070002 ERROR_FILE_NOT_FOUND]

. . .

Ключевые слова, на которые в данном случае стоит обращать внимание:

  • Manifest hash for component .. does not match expected value.
  • Unable to load manifest for component ..

Из чего следует, что в данном случае возникла проблема с файлом wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest, который является манифестом и располагается в поддиректории %SystemRoot%WinSxSManifests. При более близком изучении было выяснено, что указанный файл почему-то нулевой.
3: попытка удаления отсутствующего компонента
При попытках установки обновления безопасности мы можем столкнуться со следующей проблемой:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

. . .

20190528 12:20:09, Info                  CBS    Exec: Unprojecting Package: Package_820_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 40192652871_neutral_LDR, UninstallDeployment: amd64_006f1bee347aa0a86984388c82ccb379_31bf3856ad364e35_6.1.7601.23529_none_4683d079b6ce11b3

20190528 12:20:09, Info                  CBS    Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3

20190528 12:20:09, Info                  CBS    Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 40192652966_neutral_LDR

20190528 12:20:09, Info                  CBS    Exec: Unprojecting Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 40192652966_neutral_LDR, UninstallDeployment: amd64_0f4370f0564ad69cbf1c9624ac455552_31bf3856ad364e35_7.6.7601.23775_none_3e0e14d4d5b6573f

20190528 12:20:09, Error                 CBS    Failed. Attempted to uninstall a version of a nondriver component that is not installed, version: 0X700061db15cdf, component: amd64_microsoftwindowsw..lientaux.resources_31bf3856ad364e35_7.6.7601.23775_ruru_306f57c17eac5f89, owner: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.40192652966_neutral_LDR [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    Failed to mergecomponent [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    ComponentAnalyzerUninstallDeployment: Failed on update: 40192652966_neutral_LDR [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    Failed to execute item[0] in Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 40192652966_neutral_LDR [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    Failed to execute execution update. [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    Failed to execute execution package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3 [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    Failed to prepare execution [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CSI    00000016@2019/5/28:09:20:09.916 CSI Transaction @0x1b71940 destroyed

20190528 12:20:09, Info                  CBS    Perf: InstallUninstallChain complete.

20190528 12:20:09, Info                  CBS    Failed to execute execution chain. [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Error                 CBS    Failed to process single phase execution. [HRESULT = 0x80004005 E_FAIL]

20190528 12:20:09, Info                  CBS    WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80004005, failure source: Execute, start state: Staged, target state: Installed, client id: WindowsUpdateAgent

20190528 12:20:09, Info                  CBS    Failed to query DisableWerReporting flag.  Assuming not set... [HRESULT = 0x80070002 ERROR_FILE_NOT_FOUND]

20190528 12:20:10, Info                  CBS    Failed to add %windir%winsxspending.xml to WER report because it is missing.  Continuing without it...

20190528 12:20:10, Info                  CBS    Failed to add %windir%winsxspending.xml.bad to WER report because it is missing.  Continuing without it...

20190528 12:20:10, Info                  CBS    Reboot mark refs: 0

. . .

Судя по всему установщик ругается на попытку удаления отсутствующего компонента amd64_microsoft-windows-w..lient-aux.resources_31bf3856ad364e35_7.6.7601.23775_ru-ru_306f57c17eac5f89 из пакета Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.4019265-2966_neutral_LDR. Сам компонент оказался на месте вместе со собственным манифестом, поэтому не понятно что же не нравится стеку обслуживания. Тем не менее что-то с этим пакетом явно не так.

Окна ошибок в интерфейсе

Часто ошибки наблюдаются пользователем визуально, в виде статусов ошибок в окне Центра обновления Windows, но иногда их можно увидеть в автономных информационных окнах. Например, отказ запуска множества исполняемых системных образов может выражаться в постоянно всплывающих окнах, в заголовке которых можно видеть «<имя_образа> (в контексте которого произошел сбой) — ошибочный образ», а в информационной части текст ошибки: X:XXXXXXxxxxxxxx.dll либо не предназначен для выполнения под управлением Windows или содержит ошибку. Попробуйте переустановить программу с помощью исходного установочного носителя или обратитесь к системному администратору или поставщику программного обеспечения за поддержкой:

bad image

В английских версиях в заголовке можно увидеть «<filename> — bad image», а описание звучит как: «<filename> is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support.» Часто сообщение в окне дополняется специфической деталью сбоя, например кодом ошибки: «Error status 0xc000012f».

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

В данном случае, как вы можете видеть на снимке экрана выше, у нас повреждена библиотека с именем ncrypt.dll, относительно неё мы и поведем дальнейшее повествование.

Тем не менее, в ваших случаях для выявления виновника сбоя потребуется исследовать лог-файл %WinDir%LogsCBSCBS.log и составить список проблемных файлов. И при не столь очевидных намеках на источник проблемы всегда начинайте исследование сбоя с анализа данного лог-файла.

Восстановление файлов

На предыдущем шаге мы определились в виновником ошибки, то есть определили имена поврежденных/удаленных файлов:

  • Если мы наблюдаем ошибку в виде информационного окна в графическом интерфейсе, то виновником обычно является модуль, имя которого фигурирует в тексте (в примере выше: ncrypt.dll). В этом случае мы будем менять все без исключения ревизии проблемного файла;
  • Если мы производим разбор лог-файлов отчетов сервисных утилит (CBS/DISM/CheckSur/SFCFix), то виновник(и) проблемы обычно предстают перед нами в виде списка конкретных файлов компонентов или обновлений;

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

Поиск рабочих экземпляров файлов

На этом этапе нам необходимо найти рабочие копии поврежденных или отсутствующих файлов. Существует несколько основных подходов по нахождению рабочих копий:

  1. Скопировать файлы с аналогичной, полностью работоспособной системы той же версии/редакции:
    • при помощи поиска (в проводнике, или любым специализированным средством типа Far/Total Commander) по системному разделу (обычно C:) находим все каталоги, содержащие в своем названии искомую маску/имя (для случая выше: *ncrypt*). Сокращенный вывод:

      . . .

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24417_none_6072150268f96612

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18741_none_bbe0d7630856b4a1

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24408_none_607de53868f06378

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18812_none_bc024957083d774c

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24387_none_602663a869322c82

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18869_none_bbd33bc1085fb462

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24384_none_602362ca6934e07d

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18923_none_bbf87b9b0844a9bb

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24357_none_6046d36c6919d8af

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18933_none_bbedabaf084cc5ac

      C:Windowswinsxsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24335_none_605a72b0690b6e1f

      C:Windowswinsxsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18939_none_bbf3ad6b08475db6

      . . .

      Соответственно, в найденных директориях располагаются и подпадающие под маску файлы (ncrypt.dll). Как можно увидеть по именам каталогов, они предназначаются для хранения различных ревизий компонента, включающего в себя файл ncrypt.dll. Но определить точно какая именно ревизия используется тем или иным приложением сложно, поскольку используются обычно сразу несколько ревизий.

      Можно произвести замену файлов и в системных каталогах, таких как C:Windowssystem32. Хотя делать это не обязательно, поскольку файлы там представляет собой жесткие ссылки на оригиналы в хранилище WinSxS, а они восстанавливаются автоматически при проверке через sfc).

    • в ходе того же самого поиска, кроме директорий, выявляются и файлы, которые располагаются по следующим путям (вывод сокращен):

      . . .

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24408_none_bc9c80bc214dd4ae.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18741_none_5fc23bdf4ff9436b.manifest

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24387_none_bc44ff2c218f9db8.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18812_none_5fe3add34fe00616.manifest

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24384_none_bc41fe4e219251b3.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18869_none_5fb4a03d5002432c.manifest

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24357_none_bc656ef0217749e5.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18923_none_5fd9e0174fe73885.manifest

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24335_none_bc790e342168df55.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18933_none_5fcf102b4fef5476.manifest

      C:WindowswinsxsManifestsamd64_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.24308_none_bc9c7ed6214dd787.manifest

      C:WindowswinsxsManifestsx86_microsoftwindowsncryptdll_31bf3856ad364e35_6.1.7601.18939_none_5fd511e74fe9ec80.manifest

      . . .

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

      expand -F:* windows6.1-kb4019265-x64_c21fb9314da54cf6bd7972581da3159535f55aec.msu c:temp4019265

    • после чего в целевой директории мы увидим следующее содержимое:
      • .xml-файл — метаданные-описатели пакета обновления (.msu). Утилиты установки используют .xml-файл при выполнении установки в автоматическом режиме;
      • .cab-файл — архив с данными (полезная нагрузка) обновления;
      • *-pkgProperties.txt — файл с описанием свойств пакета (дата релиза, архитектура, тип, ссылка на KB и прочее);
      • WSUSSCAN.cab — файл оффлайн-сценария проверки;
    • затем выполняем еще одну команду, теперь уже над только что распакованным .cab-файлом:

      expand -F:* windows6.1-kb4019265-x64.cab c:temp4019265extracted

    • после этого необходимые нам для замены файлы будут располагаться в директории c:temp4019265extracted

Установка безопасности для каталогов/файлов

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

Выполнять приведенные здесь действия следует из-под учетной записи с правами локального Администратора (с эскалацией привилегий).

Сделать это можно двумя способами:

  1. Через проводник. Нажимаем правую клавишу мыши на директории WinSxS — пункт Свойства — вкладка Безопасность — кнопка Дополнительно — вкладка Владелец — кнопка Изменить — ставим курсор на нужного нам пользователя, активируем чекбокс Заменить владельца подконтейнеров и объектов — жмем кнопку Применить. После окончания процесс закрываем все открытые окна через кнопку OK, повторно жмем правую клавишу мыши на директории WinSxS — вкладка Безопасность — во фрейме Группы и пользователи кнопка Изменить — выделяем курсором группу Администраторы — ставим разрешения Изменение и Запись;
  2. Через командную строку. Из командной строки (cmd) выполняем следующие команды:

    takeown /f c:windowswinsxs*

    сменить владельца takeown

    даем группе Администраторы (в которую, я надеюсь, включена ваша учетная запись) полный доступ к целевому файлу, для этого выполняем следующую команду:

    icacls c:windowswinsxs* /GRANT АДМИНИСТРАТОРЫ:F

    назначение прав icacls

Копирование каталогов/файлов

И последним шагом выполняется непосредственно копирование (с заменой) с донорской (исправной) системы на целевую (проблемную) содержимого всех обнаруженных на предыдущих шагах каталогов и файлов, не забывайте так же и .manifest-файлы.
Что именно мы копируем:

  1. Если присутствуют пара .cat или .mum файлов компонента, то скопировать их в каталог %WinDir%servicingPackages (с донора на цель). Копировать именно всю пару, даже если поврежден всего-лишь один из них (и один из них отображается в лог-файле);
  2. Если к паре .cat/.mum файлов присутствует еще и .ses-файл, то копируем и его;
  3. Если присутствуют одноименные манифесты (.manifest-файл(ы)) компонента, то скопировать их в каталог %WinDir%WinSxSManifests (с донора на цель);
  4. Если присутствуют остальные подкаталоги/файлы компонента, то скопировать их в каталог компонента %WinDir%WinSxSимя_компонента (c донора на цель);
  5. Если присутствуют файлы в директории C:WindowsSystem32, то можно скопировать и их (с донора на цель). Хотя делать это и не обязательно, поскольку жесткие ссылки восстанавливаются при проверках через sfc;

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

Восстановление реестра

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

  • Запустить командную строку (cmd);
  • Подключить динамический куст реестра HKLMCOMPONENTS командой:

    reg load HKLMCOMPONENTS C:WINDOWSSYSTEM32CONFIGCOMPONENTS

    если выскакивает ошибка:

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

    то куст уже подключен.

  • Запустить редактор реестра regedit;
  • В открывшемся окне нажать Ctrl+F и ввести имя компонента, который вы восстанавливали на предыдущем шаге;
  • В случае отсутствия каких либо записей реестра, выполнить импортирование соответствующих записей реестра о компоненте с рабочей машины;
  • Выполнить команду:

    reg unload HKLMCOMPONENTS

  • выполнить перезагрузку операционной системы;

Nonsense! I move the winsxs folder on any install I’m fortunate enough to have another disk to send it to.

Now, the method of moving it is probably different than what you are thinking.

1) Close any running applications (This is important).

2) Copy your winsxs folder to another location (preferably off of your SSD :)

3) Now comes the magic: You are going to create a junction point to literally trick Windows into thinking the winsxs folder is in the same place.

3a) Start > Run > Type «mklink /J «c:Windowswinsxs» «d:winsxs»

The mklink command functions as such: mklink LINK TARGET, so in the above example the c:Windowswinsxs acts as the LINK location where you want to trick Windows into thinking it still exists and the TARGET location is of course the d:winsxs on another drive.

The only real drawback of this is if you manage to boot your computer without the other location and then you try to launch an application. However, if you are running an internal drive configuration then I guess I wouldn’t worry about it.

I use this method ALL THE TIME for moving certain games in and out of the Steam folder on my gaming computers at home and even successfully moved the Adobe Creative Suite’s MASSIVE install to one single location on another drive off of my wife’s SSD.

********Note********

I would NEVER do this in an Enterprise environment but at home it’s just golden.

Nonsense! I move the winsxs folder on any install I’m fortunate enough to have another disk to send it to.

Now, the method of moving it is probably different than what you are thinking.

1) Close any running applications (This is important).

2) Copy your winsxs folder to another location (preferably off of your SSD :)

3) Now comes the magic: You are going to create a junction point to literally trick Windows into thinking the winsxs folder is in the same place.

3a) Start > Run > Type «mklink /J «c:Windowswinsxs» «d:winsxs»

The mklink command functions as such: mklink LINK TARGET, so in the above example the c:Windowswinsxs acts as the LINK location where you want to trick Windows into thinking it still exists and the TARGET location is of course the d:winsxs on another drive.

The only real drawback of this is if you manage to boot your computer without the other location and then you try to launch an application. However, if you are running an internal drive configuration then I guess I wouldn’t worry about it.

I use this method ALL THE TIME for moving certain games in and out of the Steam folder on my gaming computers at home and even successfully moved the Adobe Creative Suite’s MASSIVE install to one single location on another drive off of my wife’s SSD.

********Note********

I would NEVER do this in an Enterprise environment but at home it’s just golden.

Ерунда! Я перемещаю папку winsxs при любой установке, и мне повезло, что у меня есть другой диск для его отправки.

Теперь метод его перемещения, вероятно, отличается от того, что вы думаете.

1) Закройте все запущенные приложения (это важно).

2) Скопируйте папку winsxs в другое место (желательно с вашего SSD :)

3) Теперь приходит волшебство: вы собираетесь создать точку соединения, которая буквально обманывает Windows, заставляя думать, что папка winsxs находится там же.

3a) Пуск> Выполнить> Введите «mklink /J» c:Windowswinsxs »« d:winsxs »

Команда mklink работает следующим образом: mklink LINK TARGET, поэтому в приведенном выше примере c:Windowswinsxs действует как местоположение LINK, где вы хотите обмануть Windows, думая, что она все еще существует, и расположение TARGET, конечно же, d:winsxs на другом диске.

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

Я использую этот метод ВСЕ ВРЕМЯ для перемещения определенных игр в папку Steam на своих игровых компьютерах дома и даже успешно перенес установку MASSIVE из Adobe Creative Suite в одно место на другом диске SSD моей жены.

********Заметка********

Я бы НИКОГДА не делал это в корпоративной среде, но дома это просто золотой.

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

В папке WinSxS хранятся резервные копии системных файлов операционной системы до обновлений (и не только, о чем — далее). То есть, всякий раз, как вы получаете и устанавливаете обновления Windows, в эту папку сохраняется информация об изменяемых файлах, сами эти файлы с тем, чтобы у вас была возможность удалить обновление и откатить сделанные изменения.

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

Размер папки WinSxS

Также в Windows 10 папка WinSxS используется, например, для сброса Windows 10 в исходное состояние — т.е. необходимые для автоматической переустановки файлы берутся именно из нее. Дополнительно, раз уж у вас возникла проблема со свободным пространством на жестком диске, рекомендую к ознакомлению статьи: Как очистить диск от ненужных файлов, Как узнать, чем занято место на диске.

Очистка папки WinSxS в Windows 10

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

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

  1. Запустите командную строку от имени администратора (например, через правый клик по кнопке Пуск)
  2. Введите команду Dism.exe /online /cleanup-image /AnalyzeComponentStore и нажмите Enter. Папка хранилища компонентов будет проанализирована и вы увидите сообщение о необходимости ее очистки. Проверка необходимости очистки WinSxS
  3. Введите команду Dism.exe /online /cleanup-image /StartComponentCleanup и нажмите Enter для запуска автоматической очистки папки WinSxS. Очистка папки WinSxS в Windows 10

Один важный момент: не следует злоупотреблять этой командой. В некоторых случаях, когда резервных копий обновления Windows 10 в папке WinSxS нет, после выполнения очистки, папка может даже слегка увеличиться. Т.е. производить очистку есть смысл, когда указанная папка слишком, на ваш взгляд, разрослась (5-7 Гб — это не слишком).

Также очистку WinSxS можно произвести автоматически в бесплатной программе Dism++

Как очистить папку WinSxS в Windows 7

Для очистки WinSxS в Windows 7 SP1 требуется предварительно установить необязательное обновление KB2852386, которое добавляет соответствующий пункт в утилиту очистки диска.

Вот как это сделать:

  1. Зайдите в центр Обновления Windows 7 — это можно сделать через панель управления или воспользоваться поиском в меню пуск. Запуск центра обновлений Windows 7
  2. Нажмите «Поиск обновлений» в меню слева и подождите. После этого, кликните по необязательным обновлениям. Необязательные обновления
  3. Найдите и отметьте необязательное обновление KB2852386 и установите его. Установка обновления KB2852386
  4. Перезагрузите компьютер.

Запуск очистки диска в Windows 7

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

Очистка папки WinSxS в Windows 7

Удаление содержимого WinSxS в Windows 8 и 8.1

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

  1. Запустить утилиту «Очистка диска». Для этого на начальном экране можете воспользоваться поиском. Очистка диска в Windows 8
  2. Нажать кнопку «Очистка системных файлов»
  3. Выбрать пункт «Очистка обновлений Windows»

Удаление содержимого WinSxS в Windows 8

Помимо этого, в Windows 8.1 есть и еще один способ очистить эту папку:

  1. Запустите командную строку от имени администратора (для этого нажмите клавиши Win+X на клавиатуре и выберите нужный пункт меню).
  2. Введите команду dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Также, с помощью dism.exe вы можете точно узнать, сколько занимает папка WinSxS в Windows 8, для этого воспользуйтесь следующей командой:

dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Точная информация о том, сколько занимает WinSxS с помощью Dism.exe

Автоматическая очистка резервных копий обновлений в WinSxS

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

Задача для автоматической очистки обновлений

Для этого необходимо создать простую задачу StartComponentCleanup в MicrosoftWindowsServicing с нужной периодичностью выполнения.

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

Понравилась статья? Поделить с друзьями:
  • Как заменить картинку на рабочем столе на windows 10
  • Как заменить файл kernel32 dll windows xp
  • Как запаролить txt файл в windows 10
  • Как заменить картинку загрузки windows 10
  • Как заменить заставку на рабочем столе windows 10