Nejsou to snad ani dva týdny od toho, kdy jsem na svém webu popisoval nějakou novinku v chování Windows. Včera jsem průzkumem sítě Internet přišel na něco dalšího. Mohlo by vám to ušetřit trápení, především v podnikovém prostředí, takže se o to s vámi podělím.

Určitě se občas setkáte s takovými programy, které jsou navrženy a naprogramovány pro chod na starších operačních systémech, především například pro systém Windows XP. Tento systém již sice disponoval novým souborovým systémem NTFS, který umožňoval nastavovat složkám zabezpečení (tj. práva uživatelů k přístupu k dané složce), ale ještě nedisponoval UAC. Důsledkem toho bylo, že pokud jste měli na počítači oprávnění administrátora, mohli jste bez problému zapisovat do Program Files a systém neprotestoval ani neobtěžoval nějakým povolováním pro zápis.

S takovým chováním počítali i někteří programátoři různého softwaru. Své programy proto napsali tak, aby konfigurační soubory aplikace a/nebo data, se kterými aplikace pracuje nebo je vytvoří, ukládali do stejné složky, ve které je program instalován.

Při používání programu na systému Windows XP tak nevznikal žádný problém, dokonce ani, když se na počítač přihlásil jiný uživatel s právy administrátora.

V domácím prostředí výše uvedené algoritmy programu nemusí způsobovat problémy ani v dnešní době. Často je na počítači pouze jeden uživatel nebo domácí uživatelé již dávno upgradovali na nové verze programu, které počítají s tím, že Windows již neumožňuje svévolný zápis všem uživatelům do složky Program Files.

Problém může nastat v podnikovém prostředí. Tam se můžeme setkat s programy, které není možné z nějakého důvodu upgradovat. Často je důvodem například nějaký stroj určený do výroby, pro který již neexistuje novější verze softwaru.

Pokud takový software nainstaluje administrátor podnikové sítě na Windows 10/11 do Program Files a následně na něm budou pracovat doménoví uživatelé bez oprávnění správce, co se stane, když bude chtít program zapsat svou konfiguraci nebo data?

  1. Program vyhodí chybovou hlášku, že nemá oprávnění zapisovat do dané složky a konfiguraci neuloží.
  2. Program bez problému zapíše svou konfiguraci na disk a nejeví známky nefunkčnosti.

Co si myslíte, že je správně? Vážení čtenáři, správně je odpověď číslo 2.

Ptáte se, jak je to možné, když obyčejný doménový účet nemá práva správce a nemůže tak zapisovat do Program Files (a počítejme s tím, že administrátor podnikové sítě nenastavil zvláštní oprávnění pro dané uživatele pro danou složku)?

Vážení čtenáři, to je zase další výmysl inženýrů z Microsoftu. Inženýři totiž právě s takovým chováním programů a jejich provozováním na moderních verzích systému Windows počítali. Aby ušetřili starosti uživatelům a především podnikovým administrátorům, rozhodli se, že pokud bude chtít program zapsat data do Program Files, systém sice neumožní programu tato data do složky Program Files zapsat, ale nabídne mu alternativní složku v uživatelském profilu daného uživatele.

Takovýto algoritmus a chování může fungovat dlouhou dobu bez problému. Ovšem do doby, než se stejným programem bude chtít pracovat jiný doménový uživatel. Zde přichází kámen úrazu.

Typický příklad: Máte ve firmě technologa, který pracuje s programem LASERXP. Z důvodu bezpečnosti podnikoví administrátoři již upgradovali operační systémy na všech počítačích na Windows 10/11. Tento program bohužel nenabízí novou verzi, proto podnikoví administrátoři nainstalují tu prehistorickou. Díky bohu funguje. Technolog s programem pracuje, všechno je v pořádku. Za 2 roky ale technolog dostane lepší pracovní nabídku a přechází do jiné firmy. Podnikovým administrátorům řekne: „Veškerá nastavení jsou na tom počítači uložena, nic jsem nemazal.“

Podnikoví administrátoři vytvoří novému technologovi nový uživatelský účet. Nový technolog se s tímto účtem přihlásí na daný počítač, kde je instalován software LASERXP. A ejhle. Konfigurace programu není, nový technolog nevidí žádná data vytvořena v programu.

Proč? Inu, z důvodu výše popsaného a vymyšleného algoritmu inženýry z Redmondu totiž program neukládal svou konfiguraci a data do složky C:\Program Files (x86)\LASERXP\, ale do C:\Users\%username%\AppData\Local\VirtualStore\.

Důsledkem toho všeho je, že program sice funguje, ale každý uživatel vidí něco jiného – i když tak původní chování programu nebylo zamýšleno.

Proto, pokud se jako podnikoví administrátoři setkáte s problémem, že každý uživatel vidí v SW něco jiného, hledejte ve VirtualStore. Způsobů, jak tento problém vyřešit, je mnoho, ale ty už si každý schopný podnikový administrátor vymyslí svoje.