Co je to Shim a s čím nám může pomoci? Jakým způsobem je můžeme využít pro zprovoznění nekompatibilních aplikací s novým operačním systémem Windows v prostředí velké společnosti? Na tyto otázky najdete odpověď v tomto článku.
Shim nazýváme část kódu, který je vložen mezi problematickou aplikaci a Windows. Tento vložený kód simuluje příslušnou funkcionalitu právě pro specifikovanou aplikaci. Tímto lze docílit, bezproblémové funkčnosti definované aplikace, aniž bychom byli nuceni např. ponižovat zabezpečení v operačním systému nebo provádět jiné nestandardní úpravy odlišné od výchozího nastavení nebo požadovaného standardu. Zároveň beze změny kódu problematické aplikace, který ve většině případů, nemáme k dispozici.
Windows Vista / Windows 7 implicitně obsahuje stovky Shims pro obecně známé aplikace (přes 5 tisíc aplikací). Jejich seznam včetně detailu co daný Shim provádí, je možné vyhledat v Compatibility Administrator nástroji, který je součástí Application Compatibility Toolkit (ACT). Implicitní Shims jsou v systémové databázi Windows. Komplexní sadou různých Shims jsou např. kompatibility módy, které je možné aktivovat ve vlastnostech linku na příslušnou aplikaci.
Pomocí Shims je možné provádět především následující úpravy:
Problém
Řešení
Aplikace využívá klíč / hodnoty v systémovém registru, které nejsou dostupné.
Aplikujeme Compatibility Fix: VirtualRegistry
Aplikace kontroluje, zdali, uživatel má administrátorská oprávnění
Aplikujeme Compatibility Fix: ForceAdminAccess
Aplikace vyžaduje jinou hodnotu proměnnou prostředí než ostatní aplikace.
Aplikujeme Compatibility Fix: SetEnvironment
Aplikace není funkční na disku s volnou kapacitou větší než 2 GB
Aplikujeme Compatibility Fix: GetDiskFreeSpace2GB
Aplikace není funkční, pokud je na ni aplikována virtualizace dostupná ve Windows Vista / Windows 7
Aplikujeme Compatibility Fix: NoVirtualization
Vlastní Shim pro nekompatibilní aplikaci je možné vytvořit ve zmíněném Compatibility Administrator nástroji nebo např. pomocí Standard User Analyzeru, který je součástí ACT. Takto vytvořené vlastní Shim uložíme do vlastní Shim Database (.sdb), kterou je nutné zpřístupnit pro příslušné stanice a následně importovat pomocí sdbinst.exe. Instalace/odinstalace Shim Databáze nevyžaduje restart Windows, pouze restart aplikace, které se oprava/shim týká.
Skutečnou výhodou využití Shim je minimalizace změn na úrovni operačního systému, systémového registru, souborového systému a dalších komponent, které by bylo v běžných případech nutné generálně modifikovat. Další zásadní výhodou je rychlé zprovoznění problematických aplikací bez dalších nákladů souvisejících především s úpravou kódu aplikace, který nemusí být vždy dostupný, nebo další úpravy aplikace jsou z pohledu životního cyklu neefektivní.
V prostředí velké společnosti můžeme pro import vlastní Shim databáze využít např. libovolný Software Management nástroj např. SCCM 2007, případně Computer startup skripty, nebo jinou technologii, která má administrátorská oprávnění na cílových počítačích.
V případě, že provádíme import ručně, je nutné se přepnout do elevated kontextu.
Příkazový řádek importu shim databáze:
Deinstalace shim databáze
Umístění Shim databáze (*.sdb) může být na sdíleném diskovém prostoru.
Tento článek v kostce popisuje možnosti řešení zprovoznění některých aplikací nekompatibilních s novým operačním systémem Windows, aniž bychom byli nuceni problematickou aplikaci nahrazovat nebo upravovat.
Spousta informací o možnostech využití Shims je na blogu kolegy Chrise Jacksona na adrese http://blogs.msdn.com/cjacks/archive/tags/Shims/default.aspx
- Tomáš Rýdl (Microsoft)