Windows 7: Shim

Máte nekompatibilní aplikace pro Windows 7? Zkuste Shim.

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:

  • Pro aplikace ověřují-li pomocí různých volání API, zda je aktuální uživatel členem skupiny Administrators.
  • Pro aplikace kontrolující verzi operačního systému a na základě toho neumožní příslušnou funkčnost.
  • Pro aplikace zapisující do systémové databáze registry nebo souborového systému do cest opravňující pouze privilegované účty a není možné využít built-in virtualizaci.
  • Zprovoznit procesy, které Windows identifikuje jako procesy vyžadující specifické potvrzení spuštění (update, setup) i když ve skutečnosti neprovádí aktualizaci nebo instalaci v rámci operačního systému.
  • Definovat pro Program Compatibility Assistant procesy, které jsou funkční, nicméně operační systém Windows je detekuje jako problematické.
  • Windows může identifikovat proces, který se snaží modifikovat systémové součásti operačního systému. Pomocí Shims lze změnit vlastnosti Windows Resource Protection tak, aby aplikace byla funkční, nicméně OS zůstal beze změn.
  • Změnit pro danou aplikaci chování User Interface Privilege Isolation (UIPI) pro zajištění bezproblémové funkčnosti.

Několik příkladů z praxe

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í.

K vytvoření Shim Databáze potřebujeme

  • Software User Analyzer (Application Compatibility Toolkit), dostupný na Microsoft Download Center
  • Microsoft Application Verifier, dostupný na Microsoft Download Center
  • Compatibility Administrator (Application Compatibility Toolkit)
  • Problematickou aplikaci pro simulaci problému a spárování vytvořeného Shim.

Deployment Shim Databáze

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:

  • sdbinst.exe –q <cesta a jméno *.sdb souboru>

Deinstalace shim databáze

  • sdbinst.exe –u <cesta a jméno *.sdb souboru>

Umístění Shim databáze (*.sdb) může být na sdíleném diskovém prostoru.

Závěr

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 https://blogs.msdn.com/cjacks/archive/tags/Shims/default.aspx

- Tomáš Rýdl (Microsoft)