AppIDFlags
Набор флагов, управляющих поведением активации COM-сервера.
Параметр реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{AppID_GUID}
AppIDFlags = flags
Замечания
Это REG_DWORD значение.
Значение флага | Константа |
---|---|
0x1 | APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP |
0x2 | APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND |
0x4 | APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY |
описание APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP
Если флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP очищается в AppIDFlags или если appIDFlags отсутствует, клиент в сеансе сервера терминала, выполняющий запрос на активацию для сервера интерактивного com-сервера пользователя, привязывается к серверу COM или запускается и привязывается к серверу COM на рабочем столе "по умолчанию" станции окна "winsta0" сеанса в запросе активации. Например, если клиент выполняет "winsta0\desktop1" сеанса 3, запрос на активацию сеанса 3 привязывается к сеансу 3 или запускается и привязывается, COM-сервер в сеансе 3 по умолчанию, даже если экземпляр COM-сервера уже запущен в сеансе 3 "winsta0\desktop1".
Если флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP задан в значении AppIDFlags, COM привязывается или запускается и привязывается, серверный процесс, выполняемый на рабочем столе клиента, и сеанс в запросе активации. Например, если клиент работает "winsta0\desktop1" в сеансе 3, запрос активации сеанса 3 привязывается к сеансу 3 или запускается и привязывается, COM-сервер в winsta0\desktop1 в сеансе 3, даже если экземпляр COM-сервера уже запущен в сеансе 3 winsta0\default.
Клиент может использовать моникер сеанса, чтобы указать сеанс, отличный от сеанса клиента при выполнении запроса активации.
Флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP применяется только к COM-серверам, настроенным для запуска "Интерактивный пользователь".
описание APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND
Если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND задан в AppIDFlags, com-серверы, настроенные для запуска "Активатор", будут запущены с дескриптором безопасности процесса, который позволяет PROCESS_ALL_ACCESS идентификатору безопасности входа маркера процесса. Кроме того, владельцу дескриптора безопасности будет присвоен идентификатор ИДЕНТИФИКАТОРа входа маркера процесса.
Если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND задан в AppIDFlags, серверы COM, настроенные для запуска "Этот пользователь", будут запущены с дескриптором безопасности процесса, который позволяет PROCESS_ALL_ACCESS в идентификаторе БЕЗОПАСНОСТИ входа маркера процесса. Кроме того, владельцу дескриптора безопасности будет присвоен идентификатор ИДЕНТИФИКАТОРа входа маркера процесса. Кроме того, com Service Control Manager (SCM) изменяет маркер процесса COM-сервера следующим образом:
- Он добавляет идентификатор БЕЗОПАСНОСТИ APPID в токен. Он предоставляет идентификатору БЕЗОПАСНОСТИ APPID полный доступ в списке управления доступом по умолчанию по умолчанию (DACL). В Windows Vista и более поздних версиях Windows он предоставляет идентификатор безопасности OwnerRights READ_CONTROL разрешения в daCL по умолчанию маркера. В версиях Windows Vista он задает владельца токена идентификатору БЕЗОПАСНОСТИ APPID.
При использовании флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND необходимо учитывать следующие аспекты безопасности:
- Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND предназначен для задания COM-серверов, запускаемых в рамках одного из встроенных контекстов безопасности службы; сетевых служб или учетных записей LocalService. Если серверы олицетворяют привилегированные клиенты и если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND не задан, вредоносный код, выполняемый в других процессах с тем же контекстом безопасности, может повысить привилегии, перехватив маркеры олицетворения привилегированных клиентов из процесса COM-сервера.
- При установке флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND COM ужесточает дескриптор безопасности объекта процесса в случае с COM-серверами RunAs "Активатор". Для таких серверов клиент COM, как ожидается, ужесточит маркер, который он использует для активации COM.
- При установке флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND COM затвердяет дескриптор безопасности объекта процесса в случае серверов COM RunAs "This User". Он также ужесточает маркер процесса COM-сервера, так как COM SCM является сущностью, создающей маркер.
Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND поддерживается в Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008, только если применяется исправление MSRC8322 (бюллетень по безопасности MS09-012). Она изначально поддерживается в Windows 7 и более поздних версиях Windows.
Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND применяется только к COM-серверам, настроенным для запуска "Активатор" или "Этот пользователь". Он не применяется к COM-серверам, которые являются службами NT.
Описание APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY
Если флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY задан в AppIDFlags, com SCM выдает запросы на активацию объектов процессу COM-сервера с использованием уровня олицетворения RPC_C_IMP_LEVEL_IDENTIFY.
Если флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY не задан, com SCM выдает запросы на активацию объектов процессам COM-сервера с использованием уровня олицетворения RPC_C_IMP_LEVEL_IMPERSONATE.
При использовании флага APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY необходимо учитывать следующие аспекты безопасности:
- Флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY предназначен для использования COM-серверами, которые не выполняют работу от имени клиентов в запросах активации объектов. Для таких серверов запросы на активацию объектов COM SCM на RPC_C_IMP_LEVEL_IDENTIFY минимизирует вероятность привилегированных маркеров с SE_IMPERSONATE_NAME уровня, отображаемого в процессе.
Флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY поддерживается в Windows 7 и более поздних версиях Windows.
См. также