CServiceModule::Run

Çağrılan sonra çalıştırın ilk hizmet iş parçacığı kimliği depolar Win32 API işlevini kullanarak WM_QUIT ileti göndererek kendisini kapatmak için bu kimliği'nin hizmeti kullanmak PostThreadMessage.

Çalıştırmak sonra Win32 API işlevini çağırır CoInitializeEx. Varsayılan olarak, koşmak COINIT_MULTITHREADED bayrağı işlevine geçirir. Bu bayrak program boş iş parçacıklı bir sunucu olarak gösterir.

Artık CSecurityDescriptorkullanarak güvenlik belirtebilirsiniz. Bu sınıf büyük ölçüde kurma görevini basitleştirir ve isteğe bağlı erişim denetim listesi (dacl) değişiklik yapma — erişim denetim girdileri (ACE), burada her ace bir Win32 nesnesine erişim tanımlar listesi.

Varsayılan olarak, atl com AppWizard CSecurityDescriptor InitializeFromThreadToken üye işlevine bir çağrı oluşturur. Bu nesnenin güvenlik tanımlayıcısı için herhangi bir kullanıcı nesnenizin erişim anlamına gelir boş bir dacl başlatır.

Kullanıcı erişimini değiştirmek için en kolay yolu Deny ve CSecurityDescriptor Ver üye işlevleri ile ' dir. Bu işlevler, varolan DACL'nin ace ekleme. Süre sonuna ekler izin ver engelle ace dacl başına ekler ancak Reddet her zaman öncelik alır. Reddet ve Ver kullanıcı adı ilk parametre ve erişim hakları (genellikle COM_RIGHTS_EXECUTE) ikinci geçmektedir.

Hatırlayın InitializeFromThreadToken tarafından oluşturulan boş dacl tüm kullanıcılara com nesnesine erişim verir. Ancak, sadece bu ciddi olarak en kısa sürede ace ekleme izin Ver arama kullanıcı erişebilir belirtti. Aşağıdaki kod, Ver çağrısı gösterir.:

CSecurityDescriptor sd;
SD.InitializeFromThreadToken ();

Eğer (bAllowOneUser)
{
 nbsp; SD.("MYDOMAI&N\\myuser", COM_RIGHTS_EXECUTE) izin;
}
CoInitializeSecurity (sd, -1, null, null,
                     RPC_C_AUTHN_LEVEL_PKT,
                     RPC_C_IMP_LEVEL_IMPERSONATE,
                     NULL, EOAC_NONE, NULL)

Eğer değişken bAllowOneUser , doğrudur, o sadece bir kullanıcı belirtilen yalnızca, kullanıcının ace DACL'de olduğundan erişimi vardır. Eğer bAllowOneUser o zaman DACL'yi null olduğu için tüm kullanıcıların erişimi yanlışolduğunda.

Kendi güvenliğini belirtmek için hizmet istemiyorsanız, Win32 API işlevi çağrısı kaldırma CoInitializeSecurityve com olacak sonra kayıt defteri güvenlik ayarları belirler. dcomcnfg yardımcı programını kullanarak bu makalenin sonraki bölümlerinde açıklanan kayıt defteri ayarlarını yapılandırmak için uygun bir yol olduğunu.

Bir kez güvenlik belirtilir, yeni müşteriler programa bağlanabilmesi nesne com ile kayıtlıdır. Son olarak programın çalıştığı scm söyler ve program bir ileti döngüsüne girer. Çıkma ileti hizmeti kapatma üzerine mesaj kadar program çalışan kalır.

Windows NT güvenliği hakkında daha fazla bilgi için bkz: msdn makalesine, Windows NT güvenlik teori ve pratik."

Index