Visty ani česky, ani anglicky. Co s tím?
Jednoho dne jsem si všiml, že se některé složky v rámci standardní adresářové struktury mého uživatelského profilu ve Windows jmenují anglicky a jiné česky. Čeština byla vzhledem k tomu, že se jednalo o českou verzi Windows Vista (resp. o verzi Windows Vista s českým lokalizačním balíčkem, kde byl ten anglický zakázaný) poněkud více preferovaná, nicméně mi nebylo zcela jasné, co se kde přihodilo a co mám udělat, abych tento drobný nedostatek odstranil. V první řadě mi poměrně vadilo, že mi v systému řádí nějaký šotek, který zpřehazuje jména systémem předdefinovaných složek, podstatně důležitější však bylo, že některým uživatelům počítače by mohlo poměrně dost vadit, že na ně počítač nemluví česky nebo alespoň rusky :-).
Velmi rychle jsem však přišel na to, že systém si zahrává pouze se mnou samotným a ostatní uživatelské profily tímto problémem netrpí. Nicméně řešení bylo stále v nedohlednu a já proklínal MUI architekturu systému Windows Vista. A jak už tomu často bývá, největší objevy učiní člověk čirou náhodou. Nejinak tomu bylo v tomto případě – Windows Media Player si ukládal do mezipaměti ID3Tagy skladeb, což se mi ani trochu nelíbilo a v zoufalství jsem promazal všechny skryté soubory ve složce Hudba, včetně souboru desktop.ini. A to byl ten okamžik, kdy mi svitlo, protože místo položky Hudba jsem měl nabídce Start a všude jinde v rámci celého systému odkaz na složku Music.
Začal jsem tedy pátrat v jiných podobných složkách, například v nejproblémovější složce Stažené soubory, kde jsem v souboru desktop.ini spatřil poměrně nevinný řádek
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
V tu chvíli už je každému zcela jasné, o co tady jde. Při načítání uživatelského profilu se pro podsložky %SystemRoot%/Users/{jméno_profilu}/ načtou lokalizované názvy z dynamické knihovny shell32.dll. Příčina je tedy jasná. Ne příliš chytrý uživatel nebo příliš aktivní aplikace přepíšou nebo smažou soubor desktop.ini a problém je rázem na světě. Řešení je také naprosto jasné – updatovat obsah daných souborů na správné hodnoty, čímž obnovíme “odkazy” na lokalizované názvy složek, stejně jako “odkazy” na speciální ikony těchto adresářů. O ty je postaráno řádkem
IconResource=%SystemRoot%\system32\imageres.dll,-184
Inu, to je sice hezké, že je to takto jednoduché, ale kde má člověk vzít ta čísla, která ukazují na správný lokalizovaný název nebo na správnou ikonu. Technicky více založení se ujmou patřičných utilit a začnou zkoumat příslušné dynamické knihovny, případně si napíšou dávkový soubor, skript nebo malinký konzolový prográmek na udržování souborů desktop.ini. Já se prozatím spokojím s tím, že vše opravím ručně pomocí informací získaných z neporušených složek:
Kontakty/Contacts:
[.ShellClassInfo]LocalizedResourceName=@%CommonProgramFiles%\system\wab32res.dll,-10100
InfoTip=@%CommonProgramFiles%\system\wab32res.dll,-10200
IconResource=%SystemRoot%\system32\imageres.dll,-181
Plocha/Desktop:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769
IconResource=%SystemRoot%\system32\imageres.dll,-183
Dokumenty/Documents:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
IconResource=%SystemRoot%\system32\imageres.dll,-112
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-235
Stažené soubory/Downloads:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
IconResource=%SystemRoot%\system32\imageres.dll,-184
Oblíbené položky/Favorities:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796
IconResource=%SystemRoot%\system32\imageres.dll,-115
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-173
Odkazy/Links:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21810
IconResource=%SystemRoot%\system32\imageres.dll,-185
DefaultDropEffect=4
[LocalizedFileNames]
Public.lnk=@shell32.dll,-21816
Searches.lnk=@shell32.dll,-9031
Recently Changed.lnk=@shell32.dll,-32813
Music.lnk=@shell32.dll,-21790
Pictures.lnk=@shell32.dll,-21779
Documents.lnk=@shell32.dll,-21770
Hudba/Music:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
IconResource=%SystemRoot%\system32\imageres.dll,-108
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-237
[LocalizedFileNames]
Sample Music.lnk=@%SystemRoot%\system32\shell32.dll,-21806
Obrázky/Pictures:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
IconResource=%SystemRoot%\system32\imageres.dll,-113
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-236
[LocalizedFileNames]
Sample Pictures.lnk=@%SystemRoot%\system32\shell32.dll,-21805
Uložené hry/Saved games:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21814
IconResource=%SystemRoot%\system32\imageres.dll,-186
Hledání/Searches:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-9031
IconResource=%SystemRoot%\system32\imageres.dll,-18
[LocalizedFileNames]
Indexed Locations.search-ms=@shell32.dll,-32811
Everywhere.search-ms=@shell32.dll,-32814
Shared By Me.search-ms=@shell32.dll,-32802
Recent Music.search-ms=@shell32.dll,-32803
Recent Documents.search-ms=@shell32.dll,-32804
Recent Pictures and Videos.search-ms=@shell32.dll,-32806
Recent E-mail.search-ms=@shell32.dll,-32807
Recently Changed.search-ms=@shell32.dll,-32813
Videa/Videos:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791
InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
IconResource=%SystemRoot%\system32\imageres.dll,-189
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-238
[LocalizedFileNames]
Sample Videos.lnk=@%SystemRoot%\system32\shell32.dll,-21807
Jak vidíte, u některých složek je to podstatně složitější – definují se zde také popisné texty pro bublinovou nápovědu, přepisují se ikonky jinými z dynamické knihovny shell32.dll, definují se lokalizované názvy pro symlinky na složky s ukázkovými obrázky, skladbami, atd. U složky Hledání se také definují názvy pro skupiny vyhledávání jako např. “Naposledy otevřené dokumenty” nebo “Nedávno změněné”.
Bohužel, toto není všechno. Takzvaná veřejná složka totiž má vlastní sadu souborů desktop.ini, které vypadají lehce odlišně. Pokud tedy na svém počítači takovou složku využíváte, asi byste ji také chtěli dát do pořádku:
Veřejné/Public:
Tady legrace začíná už o patro výš, sama složka Public má lokalizovaný název. U uživatelského profilu je to jednoduché, tam je to vaše uživatelské jméno.
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816
Veřejná plocha/Desktop:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21799
Veřejné dokumenty/Documents:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801
IconResource=%SystemRoot%\system32\shell32.dll,-235
Veřejné stažené soubory/Downloads:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808
Veřejná hudba/Music:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21803
InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
IconResource=%SystemRoot%\system32\shell32.dll,-237
Veřejné obrázky/Pictures:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21802
InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
IconResource=%SystemRoot%\system32\shell32.dll,-236
Veřejná videa/Videos:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21804
InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
IconResource=%SystemRoot%\system32\shell32.dll,-238
Na diskusních fórech Microsoftu a v Knowledge Base jsem objevil problém se souborem desktop.ini související, nicméně odlišný – některým uživatelům se po spuštění systému samovolně spustil Poznámkový blok s otevřeným souborem typu desktop.ini. Příčina i řešení jsou opět celkem nasnadě – složka Po spuštění obsahuje soubor desktop.ini. Tudíž se pro něj provede při spuštění systému standardní akce jako pro všechny ostatní soubory v této složce, standardně je to editace pomocí Poznámkového bloku.
Řešení obou problémů je tedy naprosto triviální a mě by jen nezbývalo nic jiného, než se drze dotázat, proč Microsoft s ničím takovým nepočítal a systém toto nekontroluje automaticky. Nicméně za těch pár let strávených s Windows už vím, že překvapení číhá na každém rohu a člověk nikdy nemůže nic vědět stoprocentně, už jen kvůli tomu množství informací. Pokud tedy víte o nějakém nastavení systému, který zapíná kontrolu těchto souborů nebo snad o nějakém oficiálním nástroji, který Microsoft vydal, neváhejte a dejte mi o něm vědět!