Nepoužívaj túto vetvu registru. Opakujem. VÝKRIČNÍK, NEPOUŽÍVAJ TÚTO VETVU REGISTRU. A tí prekliati ľudia ju stále používajú, takže sa ju Microsoft márne snaží odstrániť už 30 rokov. Ale tak už to v retročriepkach občas býva.

!Do not use this registry key

Presne takto sa volá úplne prvá položka vetvy Shell Folders, ktorá obsahuje niekoľko desiatok položiek s cestami, ktoré akoby vyzývali k ľahkému strojovému čítaniu, alebo k pridaniu tej vlastnej, vždy keď to potrebujete.

Vetvu nájdete v systémovom registri Windows 11 aj Windows 10 na adrese:

Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

Prekliata vetva Shell Folders na Windows 11

Vlastne, nielen tam. Nájdete ju aj na Windows 8 a Windows 7. Takisto na Windows Vista aj Windows XP a kričí na vás aj na Windows 2000 aj Windows 98.

Je tam totiž od doby Windows 95, teda už skoro 30 rokov.

Prečo preboha? Prečo ju Microsoft nedá preč, keď ju už dekády zakazuje používať?

AKO SA NEDOPATRENÍM TVORÍ STRAŠIDLO, KTORÉ BUDE STRAŠIŤ ĎALŠÍCH 30 ROKOV

Všetko sa to udialo niekde na prelome rokov 1994 a 1995, v čase vývoja Windows 95.  Konkrétne v jeho beta verzii známej pod označením M3.

V systémovej dokumentácii sa vtedy objavila zmienka o vetve „Shell Folder“, teda vo voľnom preklade niečo ako „adresy systémových priečinkov“, ktorú mohli nainštalované programy čítať a dozvedieť sa kde majú hľadať napríklad priečinok systémových Fontov, priečinok používateľských Dokumentov a podobne.

Umiestnenia týchto priečinkov totiž môžu byť na rôznych počítačoch odlišné podľa toho, do akého priečinku nainštalujete Windows.

Keď ako programátor vytvárate nejaký program, ktorý používatelia budú používať, obvykle potrebujete tieto systémové priečinky volať, prípadne ukladať do nich dáta, takže váš programový kód musí mať možnosť zistiť kde sú.

No a v priebehu tvorenia Windows 95 skrátka vývojárov Microsoftu napadlo, že by k tomu mohla slúžiť táto vetva registru. Do systému ju zaviedli v rámci beta verzie M3, ktorá sa distribuovala podobne ako tie predošlé a nasledujúce aj mnohých veľkým a malým softvérovým spoločnostiam, aby na chystaný Windows 95 mohli pripravovať svoje programy a testovať ich.

Vývojári Microsoftu si však o pár mesiacov neskôr, pri pokračovanom vývoji a ladení systému uvedomili, že vetva Shell Folders nebol dobrý nápad.

Dôvodom bolo, že niektoré systémové lokality, ako napríklad Ovládací panel, bežnú priečinkovú adresu vôbec nemajú, a navyše, vo vývoji bola vtedy už aj nová odnož systému Windows NT (New Technology), ktorá umožňovala používateľom priečinok Dokumentov presunúť na iné miesto aj dodatočne po nainštalovaní systému.

Mať teda adresy systémových lokalít na pevno zapísané v registroch pri inštalácii systému preto nebolo vhodné riešenie. Nefungovalo by vždy a spôsobovalo by to problémy do budúcnosti.

Namiesto toho tak vývojári Microsoftu navrhli flexibilnú systémovú funkciu SHGetSpecialFolderLocation (daj-mi-lokalitu-systemoveho-priečinku), ktorú programy v rámci systému majú možnosť kedykoľvek zavolať a systém im aktuálnymi adresami potrebných lokalít odpovedá.

Microsoft chcel následne nepotrebnú vetvu Shell Folders v registroch odstrániť a do vydania finálnej verzie Windows 95 ju nezaradiť. Ukázalo sa však, že ju ešte tesne pred vydaním používali štyri programy, ktoré z dôvodu času a vývojového cyklu neprešli na volanie potrebnej funkcie.

Možno si dnes poviete, že „no a čo“? Veď Windows 95 bol v príprave, nie na trhu. A pri vývoji sa veci predsa menia. Microsoft teda mal vetvu registru odstrániť a vývojárov tých cudzích programov tak donútiť vydať nové verzie.

Éra prvej polovice 90. rokov však bola úplne iná ako dnes. Programy sa v tej dobe distribuovali na disketách alebo CD a kupovali sa v kamenných obchodoch. Aktualizácia na novú verziu programu sa robila tak, že ste si za rok či dva novú verziu za diskete či CD zas kúpili.

Dané štyri programy teda už boli na trhu a Microsoft s nimi počítal v rámci svojej obrovskej kampane, kde používateľom nový prelomový Windows 95 ukázal.

A Windows 95 bol skutočne prelomový. Svet navždy zmenil nielen vďaka novému konceptu svojho grafického rozhrania, ale aj vďaka jednoduchosti a intuitívnosť používania a takisto masívnej podpore takmer všetkého relevantného softvéru, ktorý bol už práve v tej dobe na trhu.

A práve v tomto čase sa rodila reputácia Microsoftu a jeho spoľahlivej a takmer neobmedzenej spätnej kompatibility, na ktorú sa vývojári, používatelia a hlavne najrôznejšie firmy a podniky po celom svete mohli spoľahnúť.

Takže výsledok bol jasný. V oficiálnej dokumentácii hotového Windows 95 už nebola o danej vetve registru ani zmienka. Dokumentácia odkazovala len na to, že na zisťovanie lokalít systémových priečinkov slúži funkcia SHGetSpecialFolderLocation, pričom bolo uvedené, ako ju používať.

Samotná vetva registra Shell Folders však vo finálnej verzii systému zostala, ako vývojový pozostatok, ktorý nikde nebol spomenutý. Zostala tam preto, aby dané 4 programy mohli pri vydaní Windows 95 fungovať.

Idea bola taká, že tvorcovia daných programov po čase uvedú na trh nové verzie svojich aplikácii, ktoré už danú vetvu používať nebudú, a keďže vetva tým stratí význam, bude sa môcť odobrať, napríklad pri druhom vydaní Windows 95, alebo pri nasledovnom Windows 98.

Veď čo by sa mohlo pokaziť?

NO JASNÉ, PRESNE TOTO SOM POTREBOVAL

Takže jadrom toho, prečo dnes na vašich Windows 11 a Windows 10 túto vetvu v registroch máte je to, aby dané štyri programy z roku 1994 mohli fungovať v dobe vydania Windows 95.

Microsoft dodnes neprezradil, ktoré štyri programy to boli. Existuje podozrenie, že jedným z nich mohol byť jeho vlastný inštalátor programového jazyka a vývojového prostredia Visual Basic. Medzi ďalších podozrivých kandidátov sa radí napríklad Norton Antivirus, kvôli ktorému sa v ére Windows 95 robilo aj mnoho iných krkolomných systémových úprav.

Ale samotné mená v základe vôbec nie sú podstatné.

Dané programy, respektíve ich verzie z roku 1994 už dnes nikto nepoužíva a pravdepodobne ich nepoužíval už ani v ére Windows 98. Časom sa upravili a daná vetva registrov mala zmiznúť, tak ako to Microsoft plánoval.

To čo sa však stalo bolo niečo celkom iné. Keď obrovsky populárny Windows 95 ovládol svet a stal sa celkom dominantným operačným systémom, programátori z najrôznejších končín preň samozrejme začali písať svoje programy.

No a aj programátori sú len ľudia a ako to už býva, ľudia dokumentácie neradi čítajú. Namiesto toho sa snažia poradiť si rýchlo sami. V momente ako potrebovali, aby ich program identifikoval nejakú systémovú cestu, otvorili Regedit a skúsili vyhľadať systémovú cestu v registroch.

A čuduj sa svete, našli v nej vetvu Shell Folder, kde boli po inštalácii Windows krásne všetky systémové adresy a cesty pekne prehľadne vypísané. Svoj program tak vytvorili štýlom, aby po inštalácii odtiaľ systémové cesty prebral.

Keďže dokumentáciu nečítali, nevedeli, že je na tento účel vytvorená rýchla, jednoduchá a presná funkcia, ktorú stačí zavolať. Takisto ani nevedeli, že je daná vetva registrov mŕtva a obsahuje len položky, ktoré potrebovali štyri programy z roku 1994, aby mohli fungovať na prvej verzii Windows 95.

Takže v čase, kedy pôvodné štyri programy už dávno odvial čas, už existovali stovky či možno tisíce ďalších nových programov, ktorých programátori danú vetvu v registroch našli pri jednoduchom hľadaní systémových ciest a začali ju používať.

A Microsoft si už mohol len trhať vlasy.

Ponúka sa známe porekadlo – pre dobrotu na žobrotu, alebo v tomto prípade – z kompatibility do debility.

Pretože ako inak nazvať vec, ktorá nikdy poriadne nefungovala, pretože ani nikdy nemala byť súčasťou finálnej verzie Windows, pričom bola v systéme len kvôli hŕstke historických programov. Nikto ju používať nemal, ale realitou ako naschvál bolo, že túto fosíliu leniví ľudia našli a začali používať.

A tak Microsoft len zaťal zuby a danú vetvu zo solidarity stále nezlikvidoval, kvôli svojej obrovskej spätnej kompatibilite. Pretože nechcel, aby sa aplikácie tých lajdáckych vývojárov, ktorí sa neunúvali dekádu čítať dokumentáciu, stali nefunkčné.

A ako naschvál, ešte v ére Windows XP programátori túto vetvu používali ako na bežiacom páse, pričom ešte mali aj tú drzosť sa Microsoftu sťažovať, že je nekompletná a naobsahuje všetky novo pridávané systémové lokality. A dokonca spôsobuje aj v rôznych špecifických prípadoch nezvyčajné bugy, akoby systém ani s ňou nepočítal, že existuje!

Microsoftu už v roku 2007 došli nervy a na systéme Windows Vista pridal na úplný začiatok tejto vetvy novú položku, veľavravne nazvanú: !Nepoužívaj túto vetvu registrov.

Tá zasvieti do očí komukoľvek, kto systémové cesty v registroch hľadá a super parádnu Shell Folders, ktorá robí to čo potrebuje, nájde.

V útrobách tejto varovnej a výkričníkovej položky nájdeme zapísanú „hodnotu“: Používaj namiesto toho funkciu SHGetFolderPath alebo SHGetKnownFolderPath (teda niečo ako ZískajCestu alebo ZistiZnámeCesty).

Samozrejme mnoho vývojárov, ktorí na túto položku narazia, sa zaujíma preboha prečo. No ale registre sú hierarchickou databázou hodnôt a z hľadiska svojich limitov nemôžu plniť funkciu vysvetľovacej litánie, alebo lekcie z histórie, pre ľudí ktorým sa nechce čítať dokumentáciu a myslia si že vedia všetko najlepšie.

A stále ich láka hodnoty z danej vety používať. Veď keď už to tam je..

A tak máme z toho krásnu retročriepku o tom, ako sa z jedného vývojového fragmentu z roku 1994 stala kvôli tolerantnosti, spätnej kompatibilite a ľudskej lenivosti a hlúposti čudesná fosília, ktorá sa ťahá 30 rokov až do dnešných Windows.

Ďalšie drobné čriepky z IT histórie hľadajte na našom webe každý štvrtok večer a takisto pod rovnomenným kľúčovým slovom.

František Urban

František Urban
Zameriavam sa najmä na prehľadové a analytické články z oblasti najrôznejších technológií a ich vývoja. Nájdete ma takisto pri diagnostike HW a SW problémov.