Staré programy vo Windows XP bežali aj vďaka klamstvu. Systém im hlásil niečo iné

Windows XP vedel starému programu klamať rovno do očí. Keď sa aplikácia pýtala, na akej verzii systému beží, mohla dostať odpoveď Windows 95. Niektorým programom stačilo práve toto malé divadlo, aby prestali protestovať a začali fungovať.

Pri iných problémoch zašiel Microsoft ešte ďalej: programu mohol podstrčiť presnú kópiu správcu pamäte z Windows 95. Používateľ mal nový systém, ale stará aplikácia dostala podmienky, na ktoré bola zvyknutá. Technologický pokrok občas vyžadoval poriadny krok dozadu.

Tieto zákulisné triky pripomenul web Windows Latest. Opierajú sa o staršie vysvetlenia inžiniera Microsoftu Raymonda Chena. A dobre ukazujú, koľko práce sa skrývalo za tým, že starý program na novom počítači jednoducho nabehol.

Jeden program mohol držať celú firmu v šachu

Microsoft mal veľmi praktický dôvod. Chen v príspevku z roku 2003 vysvetlil, že jediný nekompatibilný program mohol zákazníka odradiť od nového Windowsu. Vo firme stačilo, aby prestal fungovať nástroj, bez ktorého sa nedalo pracovať.

Spomínal firemný prieskum, podľa ktorého mala takmer každá oslovená spoločnosť aspoň jeden takýto nenahraditeľný program. Často išlo o vlastnú aplikáciu vo Visual Basicu. Jej autor už vo firme nepracoval a v niektorých prípadoch chýbal aj zdrojový kód. Rada, nech si to vývojár opraví, tým dostávala pomerne zásadnú trhlinu.

Ani existujúci dodávateľ nemusel znamenať lacné riešenie. Chen uviedol modelový príklad textového editora, ktorého nová verzia stojí 150 dolárov za každú kópiu. V jeho príklade by to strojnásobilo náklady na prechod na XP. Obyčajná aktualizácia systému sa zrazu menila na podstatne väčší nákup.

Databáza vedela, komu treba zahrať divadlo

Vo Windows XP na to slúžila databáza SysMain.sdb v priečinku C:\WINDOWS\AppPatch. Uchovávala údaje na rozpoznanie aplikácií a priradenie potrebných opráv. Mnohé samotné zásahy vykonával kód v knižniciach DLL v tom istom priečinku. Microsoft tak mohol množstvo výnimiek presunúť mimo základných súčastí systému.

Rozpoznávanie bolo dôkladnejšie než pohľad na názov súboru. Podľa dokumentácie Microsoftu sa dali porovnávať aj veľkosť, verzia, dátum či kontrolný súčet a prítomnosť ďalších súborov v priečinku. Opravu tak bolo možné zacieliť na konkrétnu podobu programu.

Potom prišiel na rad takzvaný shim, teda kompatibilitná úprava vložená medzi program a systémové funkcie. Zachytila volanie a podľa potreby upravila jeho spracovanie alebo odpoveď. Ak sa aplikácia zasekla na kontrole verzie Windowsu, mohla dostať údaje, ktoré očakávala. Zvyšok počítača pritom ďalej normálne bežal na XP.

Dobový materiál Microsoftu z júna 2001 počítal pri uvedení XP približne s 200 opravami kompatibility. Bol to repertoár zásahov použiteľných pri problémoch rôznych aplikácií, nie údaj o tom, koľko programov systém dokázal spustiť.

Jedno políčko, približne 50 ústupkov

Možno si pamätáte kartu kompatibility vo vlastnostiach programu. Vybrali ste starší Windows a dúfali, že to zaberie. Za jednoduchou voľbou sa však skrýval celý balík zásahov. Režim Windows 95 podľa rovnakého dokumentu združoval približne 50 bežných opráv: od hlásenia starej verzie systému po úpravy práce s pamäťou a presmerovanie ciest k priečinkom.

XP pritom stálo na základoch Windows NT a Windows 2000. Kompatibilitný režim upravoval prostredie konkrétnej aplikácie tak, aby jej v potrebných detailoch pripomínalo Windows 95.

Najvýrečnejší je shim EmulateHeap. Chen ho v texte z roku 2017 označil za svojho obľúbenca: štandardnú haldu nahrádzal presnou kópiou správcu haldy z Windows 95. Zjednodušene ide o mechanizmus, ktorý programu prideľuje a uvoľňuje pracovnú pamäť. Aplikácia citlivá na jeho staré správanie tak mohla dostať svoju známu obsluhu späť.

Minulosť sa vracala aj s problémami

Podobná ústretovosť mala svoju cenu. Chen v tom istom texte vysvetlil, že režim Windows 2000 obnovoval aj staršie pravidlá načítavania knižníc DLL, ktoré predchádzali bezpečnejšiemu nastaveniu SafeDllSearchMode. Program mohol závisieť práve od nich. Spolu s funkčnosťou sa mu tak vracalo aj menej bezpečné správanie.

Preto sa kompatibilitné režimy majú zapínať pri konkrétnom probléme. Niektoré shimové úpravy oslabujú bezpečnosť aplikácie. Pôsobia však vnútri jej procesu; nemenia bezpečnostné hranice medzi programom a zvyškom systému.

Samotným vývojárom Chen túto pohodlnú barličku veľmi nedoprial. Keď v roku 2010 opisoval žiadosť o automatické zapínanie režimu XP vo Viste, jeho odpoveď bola jasná: treba nájsť chybu a opraviť program. Ak pomôže shim VersionLie, na opravu čaká kontrola verzie operačného systému.

Prirovnal to k človeku, ktorý hádže odpadky pred obchod a spolieha sa, že ich personál ráno pozametá. Keď je v nedeľu zatvorené, rieši, ako prinútiť obchod otvoriť aj vtedy. Upratovanie po cudzom programe malo pomôcť zákazníkovi. Vývojár si naň nemal zvykať.

Microsoft tieto opravy udržiaval ešte roky: aktualizácia kompatibility z apríla 2011 priniesla aj nový súbor Sysmain.sdb pre Windows XP SP3. Systém, ktorý prišiel do predaja 25. októbra 2001, pritom tento mesiac oslávi 25 rokov.

Za jeho kompatibilitou bola aj zvláštna dohoda: používateľ dostal nový Windows a niektoré jeho programy sa o tom radšej nedozvedeli.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Mohlo by zaujať