Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] Co to jest COM Surogate?

To: winnt@man.lodz.pl
Subject: Re: [WINNT] Co to jest COM Surogate?
From: Animka <animka@tonieja.wp.pl>
Date: Wed, 14 Sep 2016 18:47:07 +0200
W dniu 2016-09-14 o 08:46, Robert Winkler pisze:

W zrzucie ekranu, do którego link podałaś wcześniej są dwa pliki.
csrss.exe.mui oraz csrss.exe
Czyli w tych 5-ciu pozycjach na zrzucie są tylko 2 pliki. 3 pozostale to nie pliki.

Zacznijmy od tego pierwszego.
Kiedyś gdy publikowało się programy, to kod oraz teksty
i wygląd wszystkich ekranów umieszczało się w jednym wielkim pliku EXE.
Gdy ktoś chciał przygotować inną wersje językową
to musiał przygotować nowy plik EXE.
Jakiś czas temu Microsoft odszedł od takiego sposobu pracy.
Masz więc jeden plik EXE z kodem programu
oraz kilkadziesiąt różnych plików o rozszerzeniu MUI
zawierających teksty, komunikaty, opisany wygląd formatek.
Gdy instalujesz program,
to instalujesz na wszystkich wersjach językowych systemów
jeden i ten sam plik EXE, oraz plik/pliki MUI
zgodne z ustawieniami danego komputera (o ile takie zostały dostarczone)

Druga sprawa.
Wśród katalogów pojawia się tam jedne specjalny o nazwie WinSxS.
Czy słyszałaś kiedyś pojecie Piekło DLL (DLL Hell)?
Gdy instalujesz jakiś program, to każdy z nich
chce wrzucić część swoich plików do katalogu System32.
Bardzo często zdarza się że pliki mają identyczne nazwy
ale są to inne wersje tej samej biblioteki,
albo też różne firmy postanowiły swoje tak samo nazwać swoje pliki,
ale faktycznie zawierają one zupełnie inne programu.
Gdy więc jeden program podmieni pliki drugiemu
to tamten przestaje działać.
Kilkanaście lat temu Microsoft wypowiedział wojnę temu problemowi
i w Windows XP pojawił się folder WinSxS.
Do systemu operacyjnego został dodany mechanizm
Side-by-Side Assemblies,
pozwala on na instalacje w jednym systemie wielu różnych wersji
tej samej biblioteki.
Program informuje system operacyjny o tym z którą wersją może pracować
za pomocą specjalnego pliku manifestu.
Dobrze napisany program nie powinien więc umieszczać
swoich plików w folderze System32 ale w WinSxS.
System w folderze System32 tworzy kopie najnowszej wersji tych plików,
robi to ze względy na wsteczną kompatybilność,
oraz na potrzeby niedorobionych programów,
napisanych przez programistów zbyt leniwych
aby aby napisać prosty manifest z listą używanych bibliotek.

System korzysta też z WinSxS w innym celu.
Kiedyś gdy instalowało się jakąś poprawkę
to w folderze c:\Windows tworzony był folder którego nazwą
była identyczną z kodem danej aktualizacji,
a który zawierał kopie zmienianych plików.
Obecnie zamiast tego aktualizacje są instalowane w folderze WinSxS
obok startych plików, bez ich kasowania.
Jeśli jakiś program ma w manifeście informacje,
że korzysta ze starej wersji danego pliku
to nie zniknie mu on z dysku, stara i nowa wersja
nadal będą dostępne w WinSxS.
System sprawdza też, jakie wersje plików są używane
i jeśli stara wersja nie by była ładowana przez kilkadziesiąt dni
to jest ona kasowana z WinSxS, aby zaoszczędzić miejsce na dysku.

--
Robert
Ok. Nie piszesz nic o wirusie tzn, że wszystko w porządku i żadnego wirusa raczej nie ma.
Dzięki.

--
animka


<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>