Udostępnij za pośrednictwem


Instalowanie jako aplikacja usługi

Oprócz uruchamiania jako pliku wykonywalnego serwera lokalnego (EXE) obiekt COM może również spakować się w celu uruchomienia jako aplikacji usługi po aktywowaniu przez klienta lokalnego lub zdalnego. Usługi obsługują wiele przydatnych, zintegrowanych funkcji administracyjnych, w tym lokalne i zdalne uruchamianie, zatrzymywanie, wstrzymywanie i ponowne uruchamianie, a także możliwość uruchamiania serwera przy użyciu określonego konta użytkownika i stacji okiennej .

Obiekt napisany jako usługa jest instalowany do użytku przez COM poprzez ustanowienie wartości LocalService w ramach klucza AppID i przeprowadzeniu standardowej instalacji usługi.

Klasy można również skonfigurować do uruchamiania w ramach określonego konta użytkownika po aktywowaniu przez klienta zdalnego bez potrzeby zapisywania ich jako aplikację usługi. W tym celu klasa instaluje nazwę użytkownika i hasło, które ma być używane podczas uruchamiania procesu serwera lokalnego przez program SCM.

Po skonfigurowaniu klasy w ten sposób wywołania CoRegisterClassObject z tym identyfikatorem CLSID zakończy się niepowodzeniem, chyba że proces został uruchomiony przez com w imieniu rzeczywistego żądania aktywacji. Innymi słowy, klasy skonfigurowane do uruchamiania jako określony użytkownik nie mogą być zarejestrowane pod żadną inną tożsamością.

Nazwa użytkownika jest pobierana z RunAs nazwa-wartość w kluczu APPID klasy. Jeśli nazwa użytkownika to "Interakcyjny użytkownik", kod klasy jest uruchamiany w kontekście zabezpieczeń aktualnie zalogowanego użytkownika i jest połączony z interaktywną stacją okien.

W przeciwnym razie hasło jest pobierane z ukrytej części rejestru dostępnej tylko dla administratorów maszyny i systemu. Nazwa użytkownika i hasło są następnie używane do tworzenia sesji logowania, w której jest uruchamiany kod klasy. Po uruchomieniu w ten sposób kod klasy działa z własnym pulpitem i stacją okien i nie udostępnia uchwytów okien, schowka ani innych elementów interfejsu użytkownika z użytkownikiem interaktywnym ani innymi klasami działającymi na innych kontach użytkowników.

Serwer zarejestrowany w LocalService lub RunAs może zarejestrować obiekt w tabeli obiektów działających, aby umożliwić dowolnemu klientowi nawiązanie z nim połączenia. Aby to zrobić, serwer musi, podczas wywoływania IRunningObjectTable::Register, ustawić flagę ROTFLAGS_ALLOWANYCLIENT. Aby serwer mógł ustawić ten bit, w sekcji AppID rejestru, odnoszącej się do identyfikatora AppID pliku wykonywalnego, musi znajdować się nazwa jego pliku wykonywalnego. Serwer "aktywuj jako aktywator" (niezarejestrowany jako LocalService ani RunAs) nie może zarejestrować obiektu przy użyciu tej flagi.

Rejestrowanie klasy podczas instalacji

Rejestrowanie działającego serwera EXE

Rejestrowanie obiektów w ROT

Rejestracja samodzielna