Sdílet prostřednictvím


Instalace ve formě aplikační služby

Kromě spuštění jako spustitelného souboru místního serveru (EXE) se objekt COM může také zabalit tak, aby běžel jako aplikace služby při aktivaci místního nebo vzdáleného klienta. Služby podporují řadu užitečných a integrovaných do uživatelského rozhraní funkcí pro správu, včetně místního a vzdáleného spouštění, zastavení, pozastavení a restartování, jakož i schopnost nastavit server pro běh pod konkrétním uživatelským účtem a terminálovou stanicí.

Objekt napsaný jako služba je nainstalován pro použití COM vytvořením hodnoty LocalService pod klíčem AppID a provedením standardní instalace služby.

Třídy mohou být také nakonfigurovány tak, aby běžely pod konkrétním uživatelským účtem při aktivaci vzdáleným klientem bez zápisu jako aplikace služby. K tomu třída nainstaluje uživatelské jméno a heslo, které se použije při spuštění místního procesu serveru SCM.

Pokud je třída nakonfigurována tímto způsobem, volání CoRegisterClassObject s tímto CLSID selže, pokud proces nebyl spuštěn COM na zastoupení skutečné žádosti o aktivaci. Jinými slovy, třídy nakonfigurované tak, aby běžely jako konkrétní uživatel, nemusí být registrovány pod žádnou jinou identitou.

Uživatelské jméno je přebíráno z hodnoty nazvané RunAs pod klíčem třídy APPID. Pokud je uživatelské jméno "Interaktivní uživatel", kód třídy se spustí v kontextu zabezpečení aktuálně přihlášeného uživatele a je připojen k interaktivní stanici oken.

Jinak se heslo načte ze skryté části registru, která je k dispozici pouze správcům počítače a systému. Uživatelské jméno a heslo se pak použijí k vytvoření přihlašovací relace, ve které se spustí kód třídy. Při spuštění tímto způsobem se kód třídy spustí s vlastní plochou a stanicí oken a nesdílí popisovače oken, schránku ani jiné prvky uživatelského rozhraní s interaktivním uživatelem nebo jinými třídami spuštěnými v jiných uživatelských účtech.

Server registrovaný buď s LocalService, nebo s RunAs může zaregistrovat objekt v tabulce spuštěných objektů, aby se k němu mohl připojit jakýkoli klient. Aby to bylo možné, musí volání serveru IRunningObjectTable::Register nastavit příznak ROTFLAGS_ALLOWANYCLIENT. Server nastavující tento bit musí mít svůj název spustitelného souboru v části AppID registru, která odkazuje na AppID tohoto spustitelného souboru. Server "aktivovaný jako aktivátor" (není registrován jako LocalService nebo RunAs) nemusí zaregistrovat objekt s tímto příznakem.

Registrace třídy během instalace

registrace spuštěného serveru EXE

Registrace objektů v ROT

samoobslužná registrace