CServiceModule::Run

Після називається, спочатку запустити зберігає в службі ідентифікатор потоку. Послуга буде використовувати цей Ідентифікатор закрити себе шляхом надсилання WM_QUIT повідомлення за допомогою функції Win32 API, PostThreadMessage.

Потім Запустіть викликає функції Win32 API, у функції CoInitializeEx. За промовчанням запустити проходить прапор COINIT_MULTITHREADED функції. Ця позначка вказує, що програма бути безкоштовно різьбові сервера.

Тепер ви можете вказати безпеки за допомогою CSecurityDescriptor. Цей клас значно спрощує задачу створення та внесення змін до списку дискреційні контролю доступу (DACL) — список записи керування доступом (ACE), де кожен ACE визначає доступ до об'єкта Win32.

За замовчуванням ATL COM AppWizard генерує заклик до член функція InitializeFromThreadToken CSecurityDescriptor. Це значення ініціалізує дескриптор безпеки об'єкта до null DACL, що означає, що будь-який користувач має доступ до об'єкта.

Найпростіший спосіб змінення доступу користувачів є відмовити і дозволити член функції CSecurityDescriptor. Ці функції додати ТУЗ існуючих DACL. Однак, відмовити завжди має пріоритет оскільки відмовити додає ТУЗА до початку DACL, а дозволити додавання його до кінця. Заборонити і дозволити передати ім'я користувача як перший параметр та права доступу (зазвичай COM_RIGHTS_EXECUTE) як другий.

Нагадаємо, що null, DACL створені InitializeFromThreadToken надає всім користувачам доступ до COM-об'єкта. Однак, як тільки ви називаєте дозволити додавання ТУЗ, тільки те, що вказаний користувач матиме доступ. Наступний код показує заклик до дозволити:

CSecurityDescriptor sd;
SD.InitializeFromThreadToken ();

Якщо (bAllowOneUser)
{
 nbsp; SD.Дозволити ("MYDOMAI&N\\myuser", COM_RIGHTS_EXECUTE);
}
CoInitializeSecurity (sd, -1, NULL, NULL,
                     RPC_C_AUTHN_LEVEL_PKT,
                     RPC_C_IMP_LEVEL_IMPERSONATE,
                     ЗНАЧЕННЯ NULL, EOAC_NONE, NULL)

Якщо змінної, bAllowOneUser , правда, то тільки один вказаний користувач має доступ, оскільки лише цей користувач ACE на DACL. Якщо bAllowOneUser є ПОМИЛКОВИМ, то всі користувачі мають доступ, оскільки null в DACL.

Якщо ви не хочете, щоб служба вказати власну безпеку, видалити виклику функції Win32 API, CoInitializeSecurityі COM буде потім визначити параметри безпеки з реєстру. Це зручний спосіб настроювання параметрів реєстру є з засіб DCOMCNFG обговорюватися далі в цій статті.

Після того, як зазначено безпеки об'єкта зареєстрований COM, щоб нові клієнти можуть підключитися до програми. Нарешті, програма говорить СКМ, що він працює, і програма входить до повідомлення циклу. Програма залишається працює, поки це повідомлення кинути повідомлення, на обслуговування вимикання.

Щоб отримати додаткові відомості про безпеку Windows NT перегляньте статтю MSDN, "Windows NT безпеки в теорії і практики".

Index