Aracılığıyla paylaş


Hizmet Uygulaması Olarak Yükleme

Yerel sunucu yürütülebilir dosyası (EXE) olarak çalıştırmaya ek olarak, bir COM nesnesi de yerel veya uzak istemci tarafından etkinleştirildiğinde hizmet uygulaması olarak çalışacak şekilde paketlenebilir. Hizmetler, yerel ve uzaktan başlatma, durdurma, duraklatma ve yeniden başlatmanın yanı sıra sunucuyu belirli bir kullanıcı hesabı ve pencere istasyonualtında çalışacak şekilde kurma özelliği de dahil olmak üzere çok sayıda yararlı ve kullanıcı arabirimini destekler.

Hizmet olarak yazılmış bir nesne, AppID anahtarı altında bir LocalService değeri oluşturularak ve standart bir hizmet yüklemesi gerçekleştirilerek COM tarafından kullanılmak üzere yüklenir.

Sınıflar, hizmet uygulaması olarak yazılmadan uzak istemci tarafından etkinleştirildiğinde belirli bir kullanıcı hesabı altında çalışacak şekilde de yapılandırılabilir. Bunu yapmak için sınıf, SCM yerel sunucu işlemini başlattığında kullanılacak bir kullanıcı adı ve parola yükler.

Bir sınıf bu şekilde yapılandırıldığında, bu CLSID ile CoRegisterClassObject çağrısı, işlem gerçek bir etkinleştirme isteği adına COM tarafından başlatılmadığı sürece başarısız olur. Başka bir deyişle, belirli bir kullanıcı olarak çalışacak şekilde yapılandırılmış sınıflar başka bir kimlik altında kaydedilmeyebilir.

Kullanıcı adı, sınıfın APPID anahtarının altındaki RunAs named-value öğesinden alınır. Kullanıcı adı "Etkileşimli Kullanıcı" ise, sınıf kodu şu anda oturum açmış olan kullanıcının güvenlik bağlamında çalıştırılır ve etkileşimli pencere istasyonuna bağlanır.

Aksi takdirde parola, kayıt defterinin yalnızca makine yöneticileri ve sistem tarafından kullanılabilen gizli bir bölümünden alınır. Ardından kullanıcı adı ve parola, sınıf kodunun çalıştırıldığı bir oturum açma oturumu oluşturmak için kullanılır. Bu şekilde başlatıldığında, sınıf kodu kendi masaüstü ve pencere istasyonu ile çalışır ve pencere tutamaçlarını, panoyu veya diğer kullanıcı arabirimi öğelerini etkileşimli kullanıcı veya diğer kullanıcı hesaplarında çalışan diğer sınıflarla paylaşmaz.

LocalService veya RunAs ile kaydedilen bir sunucu, herhangi bir istemcinin ona bağlanmasına izin vermek için bir nesneyi çalışan nesne tablosuna kaydedebilir. Bunu yapmak için sunucunun IRunningObjectTable::Register çağrısının ROTFLAGS_ALLOWANYCLIENT bayrağını ayarlaması gerekir. Bu biti ayarlayan bir sunucu, kayıt defterinin AppID bölümünde yürütülebilir dosyanın AppID'sine başvuran yürütülebilir adına sahip olmalıdır. "Etkinleştirici olarak etkinleştir" sunucusu (LocalService veya RunAsolarak kaydedilmemiş), bu bayrakla bir nesne kaydedemez.

Kurulumda Sınıf Kaydetme

Çalışan bir EXE Sunucusunu Kaydetme

ROT'ta Nesneleri Kaydetme

Kendi Kendine Kayıt Olma