Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Was ist der WinSxS Ordner und warum wird er immer größer?
#1
Was ist der WinSxS Ordner und warum wird er immer größer?



Der WinSxS-Ordner ist ein der größten Missverständnisse unter Windows Vista. Um ihn zu verstehen, erkäre ich euch heute wann der WinSXS Ordner zum ersten Mal eingeführt wurde und welche Funktionen er hatte und wie sich die Funktion in Vista etwas verändert hat.



ACHTUNG: DIESER ARTIKEL SOLL NUR EINEN GROBEN ÜBERBLICK ÜBER DEN WINSXS ORDNER GEBEN UND ERHEBT KEINEN ANSPRUCH AUF 100%IGE KORREKTHEIT UND 100%IGE DETAILBETRACHTUNGEN UND VEREINFACHT DIE KOMPLEXEN VORGÄNGE ETWAS UM SIE VERSTÄNDLICH ZU MACHEN:



Die Geschichte des WinSxS Ordners beginnt im Jahre 2001, als Microsoft diesen Ordner unter Windows XP einführte. Dies erfolgte um die DLL Hölle aus früheren Version zu bekämpfen. Was fragt ihr euch sicher, was ist mit der DLL Hölle gemeint. Bis Windows 2000 (alle Windows NT, Windows 95/98/ME) konnte eine DLL nur einmal und in einer Version auf dem System in dem Windows oder System/32 Ordner vorhanden sein. Nun kam es zu Problemen, wenn verschiedene Programme die gleichen DLLs nutzen, aber gegen verschiedene Versionen der DLL programmiert wurden. Diese Problematik erkläre ich kurz an einem Beispiel:



Programm A nutzt die DLL xyz.dll in der version 1.0.

Programm B nutzt die DLL xyz.dll in der version 1.1.

Programm C nutzt die DLL xyz.dll in der version 1.2.



Wenn ihr nun die Programme in der Reihenfolge A,B,C installiert, funktioniert das Programm C sicher, da es die DLL in der erwartenden Version im Windows-Ornder installiert. Die Programme A,B sollten auch laufen, aber müssen nicht zu 100% laufen, da sie gegen die neue DLL Version nicht getestet wurden. Problematischer ist, wenn man die Reihenfolge der Installationen verändert und erst Programm C, dann B und A installiert. Nun passierte es zu Windows 95/98 oft, dass die anderen Programme die aktuelle Version überschreiben haben und ihre bevorzugte Version installiert haben. So kam es dazu, dass das Programm C unter Umständen nicht mehr funktiniert, wenn es Funktionen aufruft, die in der alten DLL Version nicht vorhanden sind. Dies führte zu einem Chaos, bei dem viele Programme nicht mehr fehlerfrei ausgeführt werden konnte.



Somit führte Microsoft ab Windows XP die Side-by-Side (SxS) Technologie ein, so dass DLLs mehrmals auf einem System vorhanden sein konnten. Die verschiedenen DLLs liegen num im WinSxS Ordner in getrennten Ordnern und behindern sich nicht gegenseitig. Die Anwendungen steuern über ein integriertes Manifest welche Version der Datei sie benötigen.



Nun kommt die Frage, welche Dateien kommen in diesen Ordner. Unter Windows XP kamen in diesen Ordner nur die Dateien, die ab Windows XP neue Funktionen mitbrachten um das neue Luna-Interface zu unterstützen (GDIPLus, CommDlg etc).

Wenn die Anwendung über kein Manifest verfügte, konnte man die Luna-Funktionen nicht nutzen und es wurden die alten DLLs genutzt. Zudem kamen in den WinSxS Ordner die verschiedenen C++ Runtime Dateien, die benötigt werden um Programme zu betreiben, welche unter Benutzung von Visual C++ entwickelt wurden.



Nun frag ihr euch warum der Ordner in Windows Vista so groß ist und warum dort neben DLLs auch Exen und andere Dateien zu finden sind.

Um dies zu erklären muss ich kurz auf die Änderungen im Aufbau von Windows Vista/7 (NT6.x) gegenüber Windows XP (NT5.x) eingehen.



Alle Windows Versionen bis Windows Server 2003 (außer Windows XP Embedded) sind unmodulare Betriebssysteme, bei denen Programmfunktionalitäten nicht unabhängig aufgebaut sind. Alle Dateien werden beim Setup über Inf-Dateien in ihre Ziel-Ordner kopiert. Das Auftrennen in verschiedene Edition ist somit extrem schwierig, deshalb gab es nur die Home und Prof Versionen. Die MediaCanter und Tablett basierten dabei auf der Prof.



Deshalb hat Microsoft in Windows Vista alle Funktionen in Pakete aufgeteilt. Diese Pakete zeigen an, von welchen anderen Paketen sie abhängen und welche Dateien sie beinhalten. Über Manifestdateien wird der Ziel-ort der Dateien festgelegt und welche Registry-Einträge zu jedem Paket gehören, welche bei der Installation dann gesetzt und bei der Deinstallation gelöscht werden.



Um die Nutzer das Einlegen der DVD bei der späteren Installation von Updates und Änderung von Funktionen zu ersparen, und da Speicherplatz im Gegensatz zu den späten 90iger billig und ausreichend vorhanden ist, werden alle Dateien auf die Festplatte kopiert. Dazu musste ein geeigneter Ort gefunden werden. Da der WinSxS ordner für den Zweck der Speicherung von DLLs in verschiedenen Versionen entwickelt wurde bot es sich an alle Dateien dort abzulegen.



Nun fragt ihr euch sicher, warum die Dateien doppelt z.B. die Explorer.exe im Windows-ordner und im WinSxS ordner, vorhanden ist. Das hat nur den Anschein, also ob das so ist. Die Datei liegt nicht im Windows-Ordner, sondern nur im WinSxS-Ordner und wird per Hardlink (http://de.wikipedia.org/wiki/Hardlink) in den Zielordner, also dem Windows-Ordner verlinkt. Der WinSxS Ordner ist also nicht das Problem, sondern der Windows Explorer der in der Größenangabe nicht unterscheidet ob es sich um Hardlinks handelt. Der Explorer zählt die Größe der Dateien in den einzelnen Ordner + die Größe der Dateien im WinSxS Ordner. Mit dem Programm "http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html" könnt ihr im Windows Explorer sehen, ob eine Datei ein Hardlink ist oder nicht.



Neben den DLLs/Exe/Sys Dateien, die als Hardlinks in die Zielorder "gemappt" werden, gibt es noch andere Ordner.

Der Backup-Ordner ist der Nachfolger des DLLCache Ordners, den es unter XP gab. Dieser Backup-Ordner wird als

"http://msdn.microsoft.com/en-us/library/aa382503(VS.85).aspx" bezeichnet. In dem Ordner Catalog befinden sich die Zertifikat Dateien, die wichtig sind, damit Veränderungen erkannt und unterbunden werden. Der Ordner Manifests beinhaltet Steuerungsdateien, die die Registryeinträge zu den einzelnen Funktionen / Updates beinhalten.



Warum wächst der WinSxS Ordner immer?



Das liegt in dem Umgang mit Updates und wird von mir http://www.winvistaside.de/forum/index.php?showtopic=3038 erklärt.



D.h. bei jeder Installation von Updates wächst der WinSxS Ordner. Der WinSxS Ordner ersetzt damit die Erstellung der $NtUninstallKBXXXXXX$-Ordner die es unter Windows XP gab und erlaubt eine sichere (De)installation aller Funktionen, bzw. Updates.



Warum gibt es von einer Exe/DLL/Sys mehrere Versionen mit unterschiedlichen Version (6.1.7600.16xxx und 6.1.7600.20xxx unter Windows 7 bzw. 6.0.6002.18xxx und 6.0.6002.22xxx unter Vista Sp2)?



Es gibt verschiedene Updatetypen (Hotfix, Update, Sicherheitsupdate) und diese beinhalten verschiedene Dateien. Den genauen Details habe ich http://www.winvistaside.de/forum/index.php?showtopic=2997 etwas genauer erklärt.



Fazit:



Als Fazit lässt sich ziehen, dass der WinSxS Ordner eine wichtige Funktion hat und NIEMALS bearbeitet werden sollte, bzw

sollten niemals Dateien dort gelöscht werden. Die eigentliche Größe des WinSxS Ordners ist viel geringer als gedacht

und beinhaltet nur die der Ordner Backup, Catalog und Manifests + die Dateien von Updates die durch andere Updates ersetzt wurden. Der Explorer täuscht euch also gewaltig Wink
#2
Um die wahre Größe es Ordners unter Windows ermitteln und zu sehen dass der WinSxS Ordner kein Platz einnimmt schaut euch das Tool in diesem Topic an:



http://www.winvistaside.de/forum/index.php?showtopic=3267
#3
Wie ihr die Größe nach der Installation des Windows 7 Service Pack 1 verringern könnt, habe ich hier erklärt:



http://www.winvistaside.de/forum/index.php?showtopic=3423
#4
Wenn ihr den Fehler "Side-by-Side-Konfiguration ungültig" bekommt dann lest euch folgendes Thema durch:



http://www.winvistaside.de/forum/index.php?showtopic=3575



Dort habe ich 3 Ursachen erläutert und wie man diese beheben kann.
#5
Wie man Funktionen in Windows ganz deinstalliert habe ich hier erklärt:



http://www.winvistaside.de/forum/index.php?showtopic=3836
#6
Microsoft erklärt in dem folgenden Blog wie Hardlinks im Zusammenhang mit dem WinSxS Ordne arbeiten:



http://blogs.technet.com/b/joscon/archive/2011/08/26/more-on-hard-links.aspx
#7
Wie ihr alte Treiber aus dem DriverStore "C:\Windows\System32\DriverStore" löschen könnt um so den WinSxS Ordner zu verkleinern habe ich hier beschrieben:



http://www.winvistaside.de/forum/index.php?showtopic=1705
#8
Unter Windows 8 könnt ihr mit DISM.exe Funktionen deaktivieren und die zu der Funktion gehörenden Dateien aus dem WinSxS Ordner löschen:



http://www.winvistaside.de/forum/index.php?s=&showtopic=3995&view=findpost&p=28022



Damit könnt ihr die Größe vom WinSxS Ordner verkleinern :imao:
#9
Windows 8 Nutzer haben noch einen DISM Befehl um den WinSxS Ordner zu verkleinern



http://www.winvistaside.de/forum/index.php?s=&showtopic=3995&view=findpost&p=32935



Die Datenträgerbereinigung hat zusätzlich noch eine Funktion um den WinSxS Ordner zu verkleinern:



Bild: http://i.imgur.com/AW4whjm.png



Über die "Windows Update Bereinigung" werden wie bei dem DISM Befehl alte Updates deinstalliert. Zusätzlich werden Dateien komprimiert, die nicht deinstaliert werden können, bzw die selten Benutzt werden wie der Manifest und Backup-Ornder.





Bild: http://i.imgur.com/3bLgrVq.png





Mit TreeSize könnt ihr schön sehen, dass die eigentliche Größe 4,7GB ist, wenn man mach der Kompression den tatsächlich benutzten Speicherplatz ansieht, sieht man eine Ersparnis bei mir von fast 500MB:





Bild: http://i.imgur.com/PAk857O.png





Das wird bei einem Windows 8, dass länger läuft sicher noch mehr Ersparnis bringen und SSD Besitzer sicher freuen Smile :thumbup:
#10
wenn die Datei blobs.bin im ManifestCache Ordner zu groß ist, dann könnt ihr http://blogs.technet.com/b/joscon/archive/2010/04/19/what-is-blobs-bin-and-why-does-it-grow.aspx.



Bild: http://i.imgur.com/8yas3hl.png
#11
Mit dem Update http://www.winvistaside.de/forum/index.php?s=&showtopic=5145&view=findpost&p=38806 hat Microsoft eine neue Methode eingeführt um den WinSxS Ordner zu verkleinern.



Wie ich euch im http://www.winvistaside.de/forum/index.php?showtopic=3038sind in den Updates keine richtigen Daten enthalten, sondern Diff-Dateien die der DPX mit den alten Dateien aus dem WinSxS Ordner in eine neue Datei umwandelt.





Diesen Trick wendet MS nun wieder an. Nun werden alle Dateien die nicht in Benutzung sind und nicht deinstalliert werden können wieder in Diffs umkodiert. Das wird bei dem /startcomponentcleanup ausgeführt.



Nach der Ausführung seht ihr verschiedene Größen der Dateien im WinSxS Ordner:



Bild: https://dl.dropboxusercontent.com/u/5749744/Bilder/Windows%208/WinSxS/ntfs_WinSxS.png



Durch diese Kompression konnten in meiner 32Bit Test-VM knapp 1,7GB eingespart werden:



Vorher:

Bild: https://dl.dropboxusercontent.com/u/5749744/Bilder/Windows%208/WinSxS/01_WinSxS_vor.png



Nachher:

Bild: https://dl.dropboxusercontent.com/u/5749744/Bilder/Windows%208/WinSxS/02_WinSxS_danach.png
#12
So Windows 8.1 bekommt neue DISM Befehle um a ) den WinSxS Ordner zu analysieren und b ) weiter zu verkleinern:



Bild: http://i.imgur.com/AXmlkuj.png



Über das /ResetBase wird die aktulle Version einer installierten Datei zur Basis Version und alle alten Dateien wie die RTM Dateien werden gelöscht!



Code:
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase


Zitat:All existing service packs and updates cannot be uninstalled after this command is completed. This will not block the uninstallation of future service packs or updates.


Der 2. Befehl gibt euch eine Analyze über den WinSxS Ordner (Größe, Vom Explorer gemeldete Größe, ob er bereinigt werden sollte):



Code:
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore




Dabei seht ihr das hier:



Code:
C:\>dism /online /cleanup-image /analyzecomponentstore

Deployment Image Servicing and Management tool

Version: 6.3.XXXX.0

Image Version: 6.3.XXXX.0

[==========================100.0%==========================]

Component Store (WinSxS) information:

Windows Explorer Reported Size of Component Store : 4.98 GB

Actual Size of Component Store : 4.88 GB    

Shared with Windows : 4.38 GB    

Backups and Disabled Features : 506.90 MB    

Cache and Temporary Data : 279.52 KB

Date of Last Cleanup : 2013-06-10 23:32:22

Number of Reclaimable Packages : 0

Component Store Cleanup Recommended : No

The operation completed successfully.


Qhellen:

http://technet.microsoft.com/en-us/library/dn251566.aspx

http://technet.microsoft.com/en-us/library/dn251565.aspx
#13
http://www.winvistaside.de/forum/index.php?showtopic=5377, in dem überflüssige Updates deinstalliert werden.



Startet dazu die Datenträgerbereinigung und dort gibt es nun wie unter Windows 8 einen Eintrag "Windows Update Bereinigung":



Bild: https://dl.dropboxusercontent.com/u/5749744/Bilder/WinVistaSide/Windows%207/KB2852386%20-%20WinSxS%20Cleanup/Windows7_Updatebereinigung_2.png



Um zu sehen welche Updates entfernt wurden, öffnet die Datei "c:\Windows\Logs\CBS\DeepClean.log".
#14
Microsoft erklärt hier noch die Funktionen um den WinSxS Ordner in Windows 8.1 zu verkleinern:



What?s New in Windows Servicing: Reduction of Windows Footprint : Part 2

http://blogs.technet.com/b/askcore/archive/2014/03/27/what-s-new-in-windows-servicing-reduction-of-windows-footprint-part-2.aspx



Zitat:Before we dive into Single Instancing and Delta Compression, I thought it would be a good idea, to talk about why this was introduced and how it worked in the previous Operating Systems. The reason for both Single Instancing and Delta Compression was to reduce the Windows (Windows 8.1 and Windows Server 2012 R2) footprint. Here is how and why:


Gehe zu: