Běžné problémy se zabezpečením WIA

Existuje několik běžných problémů, které by mohly zabránit úspěšnému spuštění existujícího ovladače WIA (který byl v místním systému v pořádku) v rámci účtu LocalService .

K nejběžnějším problémům dochází s:

  • Přístup k systému souborů

    Účet LocalService má vážně omezený přístup k souborům. Ovladače už například nemůžou zapisovat do adresáře %windir%.

  • Přístup k registru

    Mnoho klíčů registru, které byly otevřeny pro účty LocalSystem, jsou pro účty LocalService jen pro čtení. Ovladače už například nemůžou zapisovat do klíčů registru pod podstrom HKLM.

  • Pojmenované objekty jádra

    Ujistěte se, že pojmenované objekty (například události a mutexy) přístupné ovladačem WIA i externími komponentami, jako jsou aplikace v sadě, mají příslušné seznamy ACL. Pokud aplikace vytvoří pojmenovaný objekt události, ale výslovně neudělí přístup k účtu LocalService , ovladač ho nebude moct použít. Podobně platí, že pokud minidriver vytvoří pojmenovaný objekt události, musí udělit stejný přístup nebo aplikace nebude moct objekt události použít.

  • Mimoprocesové COM objekty

    Pokud tato komponenta explicitně neudělí příslušná oprávnění k účtu LocalService , všechny pokusy o vytvoření nebo použití rozhraní MODELU COM mimo proces selžou. Například volání CoCreateInstance nebo CoCreateInstanceEx (obě jsou popsány v dokumentaci k sadě Microsoft Windows SDK) se sadou příznaků CLSCTX_LOCAL_SERVER může selhat, pokud komponenta neudělí oprávnění k účtu LocalService . Podobně může selhat ovladač, který se pokouší použít ukazatel na rozhraní COM, které není v rámci stejného procesu jako ovladač. K tomu může dojít, pokud komponenta volá ovladač a předává mu ukazatel na rozhraní, pomocí kterého může ovladač volat zpět do rozhraní.

  • Vytváření a otevírání procesů

    Ovladače WIA by neměly ručně spouštět jiné procesy (například voláním metody CreateProcess nebo CreateProcessAsUser). Ačkoli by toto chování u ovladačů fungovalo úspěšně na účtech LocalSystem, již není možné, aby ovladače něco takového provedly na novém účtu LocalService. Další informace o CreateProcess a CreateProcessAsUser naleznete v dokumentaci k sadě Windows SDK.