Úvod > Články > Vykašlete se na programátory Windows, opravte si chybu sami

Vykašlete se na programátory Windows, opravte si chybu sami

Operační systém Windows trpí již od svých dřívějších verzí (Windows 98) chybou v jedné knihovně spravující formátování textu v textových editorech. Ač někomu nemusí předchozí věta nic moc říct, vězte, že problémy s chybou spojené jsou otravné — alespoň z estetického hlediska — a žádná oficiální oprava není.

Nezbývá, než abyste si chybu opravili sami a nečekali na to, až někdy Microsoft vydá záplatu; jak to tak vypadá, jen tak brzo ji nevydá — a možná nikdy.        

Trocha historie

Již před lety, když jsem začal používat MSN Messenger (pro ty, kdo neví, co to je — to myslím vážně — říkám, že jde o jednoho z internetových kecálků, něco jako ICQ) v prostředí Windows Millenium, jsem si všimnul něčeho, co přinejmenším bylo otravné; při posílání a přijímání zpráv psaných diakritikou se na první pohled „zdeformovalo“ písmo.

Od používání MSN Messengeru jsem časem upustil — to kvůli tomu, že jsem musel mít kontakt s širším okolím, které používalo převážně nechutné ICQ — a přešel jsem na Mirandu, to abych mohl v jednom programu používat více protokolů. Na problémy s písmem jsem zapomněl...

Ovšem až do doby, než jsem si pořídil nejprve jeden nový notebook a nedávno i druhý — po několika dnech používání začaly dělat totéž. K používání Messengeru (dnes Windows Live Messenger) jsem se totiž vrátil a každý kontakt v seznamu neustále žádat, aby nepoužíval diakritiku, nešlo. To jsem ten problém už opravdu začal řešit, jelikož k tomu byly důvody i jiné — problémy s písmem se objevily i na dalších místech.

Popis chyby

Mluvil-li jsem o „zdeformovaném“ písmu, skutečnost je taková, že jakmile se v textu (např. ve zmíněném Messengeru) objeví „ě“, dojde k přepnutí písma. To se vrátí na výchozí hned poté, co do textu vložíte libovolné písmeno s háčkem (vyjma „ě“). Jádro pudla je v tom, že funkce spojená s knihovnou Riched20.dll — která se stará o formátování písma — zjišťuje, zda je možné požadovaný znak ve zvoleném písmu zobrazit. Ačkoliv to očividně možné je, vyhodnotí situaci špatně a přepne do jiného fontu, kde to podle ní už není problém.

Problém se nevyskytuje jen v Messengeru, ale nejčastěji si jej můžete povšimnout také v Prohlížeči událostí (Start —> Ovládací panely —> Nástroje pro správu —> Prohlížeč událostí), v popisu aktualizací, Metapadu a jinde.

Přepnutí písma v MSN Messengeru

Tatáž chyba v Prohlížeči události a třeba také v Poznámkovém bloku Google Desktop.

Chybou nejvíce trpí knihovna Riched20.dll v3.0 (verze souboru 5.30.23.1221 v současných Windows XP), avšak jak bylo řečeno v perexu článku, existuje i ve starších verzích v operačních systémech počínaje Windows 98.

Jak jsem byl vyrozuměn — z neoficiálních zdrojů — Microsoft byl na problém mnohokráte upozorněn, leč divize Windows s žádnou opravou nepřišla, nepřichází a přicházet prý ani nechce (z důvodů, které zde nechci zmiňovat, neboť je nemám ověřené). Rozhodl jsem se tedy chybu na české pobočce Microsoftu znovu oznámit a nyní čekám na vyjádření.

Problém je také ten, že ani nevím, co způsobí, že se přepínač písma zblázní, nevím, kdy se tak děje a ani nevím, jak jej zase přimět k tomu, aby toho nechal. Prostě a jednoduše, ne na všech strojích se tato chyba projevuje — to by záplata byla asi hned.

Chyba v knihovně Riched20.dll není oficiálně zdokumentovaná a českému majiteli Windows, který touto chybou trpí, nepomůže na internetu skoro nikdo. Důvod je zjevný: přece jen jde o problém týkající se východoevropských znaků, jde o problém, který se může projevit u malého zlomku všech vlastníků Windows. Ale situace zas až tak černá není — můžete sice čekat na to, až se v Microsoftu něco pohne, ale můžete se na něj s prominutím vykašlat a pomoci si sami, i když způsobem, který se MS nemusí líbit.

Řešením je zase Microsoft

Ano, je to tak. Ale ta hlavní perla teprve přijde. Opravená knihovna se totiž už několik let používá v kancelářském balíku MS Office XP. Knihovna Riched20.dll v4.0 opravdu funguje o poznání lépe, člověku by se chtělo říct, že přímo skvěle. Bohužel existují kritické hlasy, že způsobuje jiné problémy, i když ty díky své specifikaci většinu uživatelů nemusí strašit.

Jestliže se ptáte, proč se tedy tato novější knihovna nepoužívá i v samotném systému Windows, zkuste se obrátit na divizi Windows a divizi Office, možná vám řeknou, co jim brání si vyměnit jednu knihovnu. Já to nevím a nevím o nikom, kdo by znal jeden rozumný důvod. Ale to neznamená, že neexistuje, ba právě naopak... Musejí mít setsakramentsky dobrý důvod.

Dříve, než přistoupíme k tomu, jak použít novější knihovnu i v samotném systému, je třeba si říct o další perle. V případě, že MS Office XP nevlastníte, ale zato jste majitelem novějších MS Office 2003, jistě vás napadne, že je snad ještě lepší použít knihovnu tohoto produktu, která je samozřejmě novější a logicky by měla obsahovat další opravy předchozí verze. Máte smůlu. Riched20.dll v5.0 (5.50.99.2010 apod.) onu chybu opět obsahuje, byť v daleko menší míře. Zdá se vám to neuvěřitelné? Pravděpodobně.

Pokud nevlastníte přímo MS Office XP s Riched20.dll v4.0, budete si tento soubor muset někde sehnat. Microsoft ho ke stažení neuvolnil, takže vám nezbývá nic jiného, než se poptat u známých, popř. zkusit jej vyhledat na internetu.

Vlastníte-li Office XP, asi vás zajímá, kde se knihovna nachází. Pravděpodobně zde: C:Program FilesCommon FilesMicrosoft SharedOffice10 a pokud máte Office 2003, můžete zkusit Riched20.dll v5.0, která je tamtéž, ovšem ve složce Office11.

WFP

Nyní můžeme přejít k opravě. Původní knihovna je uložena v adresáři C:WindowsSystem32. My chceme tuto knihovnu přepsat novou knihovnou. Jenže to nepůjde. Jakmile nový soubor do této složky nahrajete, všimněte si, že prakticky ihned se změní zpět na původní. To proto, že Windows obsahují velice užitečnou službu zvanou Ochrana systémových souborů (WFP) — při jakékoliv snaze cizích aplikací pozměnit systémové soubory, nepostradatelné pro stabilitu Windows, se původní čistá položka obnoví (i díky tomu jsou XP mnohem stabilnější než starší verze Windows).

Co s tím? Asi vás napadne, že bude fajn tuto službu zastavit a až bude vše hotovo, opětovně ji spustit. To je ovšem problém. Službu zastavit nejde — ač můžete vyhledat v registrech SFCDisable (Start—> Spustit—> regedit a pak najděte HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogonSFCDisable), jíž nastavíte na hodnotu 1, nic to neudělá a hodnota se vrátí opět na 0. Pravda, možná byste po hledání na internetu našli zdlouhavý návod, jak toho docílit, možná i za cenu použití všemožných nebezpečných aplikací — což může systém nenávratně poškodit —, ale tohle opravdu nedoporučuji, protože většina návodů není funkčních.

Dobrá, můžete si říct, nejde-li přepsat knihovna v adresáři System32, do kterého se okamžitě nahrávají původní knihovny, odkud se nahrávají? Ano, to je už trefa do černého — pokud pozměním soubor v záloze a poté ve složce System32, Windows nový soubor přepíše souborem zálohy, ve které už ale máme tentýž novější soubor; hotovo, Windows jsme převezli.

Povolení zobrazení chráněných souborů operačního systému

Onu „zálohu“ najdete ve složce dllcache, která je však před vámi dostatečně dobře skryta. Abyste ji mohli otevřít, musíte v Možnostech složky (Start —> Ovládací panely —> Možnosti složky) povolit zobrazení chráněných souborů operačního systému. Nyní už můžeme otevřít C:WINDOWSsystem32dllcache a knihovnu přepsat zde. Pokud se objeví nějaké upozornění, odsouhlaste. Pokud se neobjeví nic a i v dllcache se znova objeví původní soubor (haha), tak pak zkuste hodnotu SFCDisable změnit na 0xffffff9d a restartujte počítač (cesta v registru je výše) a kopírování opakujte. Poté knihovnu zkopírujte také do složky System32, opět otevřete editor registru a hodnotu SFCDisable změňte na 0. Znova restartujte — a máte vyhráno.

Výsledek lze vidět na obrázcích.

 

Poznámka: Společnost Microsoft na můj e-mail reagovala velmi rychle, což oceňuji. Ale e-mail přišel až po odevzdání tohoto článku a jelikož není nijak závažně nutné jej kvůli tomu přepisovat, o výsledku vás informuji takto.

 

Dostal jsem odpověď sice velmi stručnou, ale možná někomu pomůže. E-mail obsahoval dvě aktualizace; na první z nich vedl odkaz. Druhou laskavě poslala odepisující paní/slečna z MS. Jde o aktualizaci KB871228, o které jsem na Internetu nenašel ani čárku dokumentace, takže skutečně nevím, co je zač.

 

Nedomnívám se však, že jde primárně o opravu zmíněné chyby ani v jednom případě. První aktualizace se týká pouze produktu MS Office 2003, takže ti z vás, kdo jej nemají, asi záplatu neocení. Druhá aktualizace, jak jsem napsal výše, je bez dokumentace, takže se nedá odhadnout, co přesně dělá (k tomu je z června 2005). Podle dostupných informací řeší problémy s kopírováním textu z HTML do formátu RTF (např. kopírování textu z IE). A nic víc jsem se nedozvěděl. Pokud vaše problémy zmíněné aktualizace vyřeší, omlouvám se za svůj nesmysl o neexistenci záplaty. Zatím to ale vypadá, že problém s Riched20.dll v systému neřeší.

 

23. 1. 2007

Autor: Oldřich Klimánek

Sdílejte

Přečtěte si také

 

Mafra posiluje své postavení na realitním trhu

Vydavatelství Mafra rozšířilo své portfolio o společnost AdInternet. Česká firma se specializuje na prodej realit...

 

Elop končí v Microsoftu, co s ním bude teď?

Dvaapadesátiletý Stephen Elop opustil pozici výkonného viceprezidenta Devices & Services ve společnosti Microsoft...

 

Hlídejte si své účty před kyberútoky

Kyberloupeže a útoky na účty klientů bank v České republice během posledního roku rapidně stouply. Banky posilují...

Nejčtenější články

Vodafone zlevňuje pevný internet, první půl rok zaplatíte jen za 299 Kč

 

Vodafone spustil novou kampaň na pevný internet. V rámci ní nabídne všechny rychlosti na první půlrok jen za 299 Kč.

HBO Max v Česku od května nahradí nová služba Max

 

Společnost Warner Bros Discovery oznámila, že v Evropě spustí novou platformu Max 21. května. To se týká i Česka a...

Seznam.cz připravuje vlastní předplatné, reklamě se ale nevyhnete

 

Seznam.cz testují nové předplatné. V placené verzi přestane využívat vaše data k cílení reklamy. Reklamu ale na...