Udostępnij przez


Typowe problemy z zabezpieczeniami WIA

Istnieje kilka typowych problemów, które mogą uniemożliwić istniejącemu sterownikowi WIA, który działał prawidłowo w ramach konta LocalSystem, pomyślne uruchomienie w ramach konta LocalService.

Najczęstsze problemy występują w następujących sytuacjach:

  • Dostęp do systemu plików

    Konto usługi lokalnej ma poważnie ograniczony dostęp do plików. Na przykład sterowniki nie mogą już zapisywać w katalogu %windir%.

  • Dostęp do rejestru

    Wiele kluczy rejestru otwartych dla kont LocalSystem jest tylko do odczytu dla LocalService. Na przykład sterowniki nie mogą już zapisywać w kluczach rejestru w poddrzewie HKLM.

  • Nazwane obiekty jądra systemu operacyjnego

    Upewnij się, że nazwane obiekty (na przykład zdarzenia i muteksy), do których dostęp mają zarówno sterownik WIA, jak i komponenty zewnętrzne, takie jak integralne aplikacje, mają odpowiednie listy ACL. Jeśli aplikacja tworzy nazwany obiekt zdarzenia, ale nie udziela dostępu do konta usługi lokalnej , sterownik nie będzie mógł go używać. Podobnie jeśli minidriver tworzy nazwany obiekt zdarzenia, musi przyznać ten sam dostęp lub aplikacja nie będzie mogła używać obiektu zdarzenia.

  • Obiekty COM poza procesem

    Każda próba utworzenia lub użycia interfejsu COM poza procesem zakończy się niepowodzeniem, chyba że ten składnik jawnie przyznaje odpowiednie uprawnienia do konta usługi lokalnej . Na przykład wywołania metody CoCreateInstance lub CoCreateInstanceEx (oba opisano w dokumentacji zestawu SDK systemu Microsoft Windows) z ustawionym flagą CLSCTX_LOCAL_SERVER mogą zakończyć się niepowodzeniem, jeśli składnik nie udziela uprawnień do konta usługi lokalnej. Podobnie sterownik próbujący użyć wskaźnika do interfejsu COM, który działa poza procesem sterownika, może napotkać błąd. Może się tak zdarzyć, jeśli składnik wywołuje sterownik i przekazuje mu wskaźnik do interfejsu, za pomocą którego sterownik może wywołać interfejs ponownie.

  • Tworzenie i otwieranie procesów

    Sterowniki WIA nie powinny ręcznie uruchamiać innych procesów (na przykład przez wywołanie metody CreateProcess lub CreateProcessAsUser). Mimo że to zachowanie powiodło się dla sterowników w ramach kont LocalSystem , nie jest już możliwe, aby sterowniki mogły to zrobić na nowym koncie Usługi lokalnej . Aby uzyskać więcej informacji na temat metody CreateProcess i CreateProcessAsUser, zobacz dokumentację zestawu Windows SDK.