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说明

如果在 AppIDFlags 中清除了APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP标志,或者 AppIDFlags 不存在,则终端服务器会话中的客户端将为交互式用户 COM 服务器发出激活请求,将绑定到或启动并绑定到激活请求中会话的“winsta0”窗口工作站的“默认”桌面中的 COM 服务器。 例如,如果客户端正在运行会话 3 的“winsta0\desktop1”,则会话 3 的激活请求将绑定到会话 3 的“winsta0\default”中的 COM 服务器,即使 COM 服务器的实例已在会话 3 的“winsta0\desktop1”中运行。

如果在 AppIDFlags 值中设置了APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP标志,COM 将绑定到或启动并绑定到客户端桌面和激活请求中的会话的服务器进程。 例如,如果客户端在会话 3 中运行“winsta0\desktop1”,则会话 3 的激活请求将绑定到会话 3 中的“winsta0\desktop1”中的 COM 服务器,即使 COM 服务器的实例已在会话 3 中的“winsta0\default”中运行。

客户端可以使用 会话名字对象 在发出激活请求时指定不同于客户端会话的会话。

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP标志仅适用于配置为 RunAs“Interactive User”的 COM 服务器。

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND说明

如果在 AppIDFlags 中设置了APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND标志,则配置为 RunAs“激活器”的 COM 服务器将使用进程安全描述符启动,该描述符允许PROCESS_ALL_ACCESS进程令牌的 LogonID SID。 此外,安全描述符的所有者将设置为进程令牌的 LogonID SID。

如果在 AppIDFlags 中设置了APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND标志,则配置为“此用户”的 COM 服务器将使用进程安全描述符启动,该描述符允许在进程令牌的 LogonID SID 中PROCESS_ALL_ACCESS。 此外,安全描述符的所有者将设置为进程令牌的 LogonID SID。 此外,COM 服务控制管理器 (SCM) 修改 COM 服务器进程的令牌,如下所示:

  • 它将 APPID SID 添加到令牌。 它授予令牌默认自由访问控制列表中的 APPID SID 完全访问权限, (DACL) 。 在 Windows Vista 和更高版本的 Windows 中,它授予令牌默认 DACL 中的 OwnerRights SID READ_CONTROL权限。 在Windows的预Windows Vista 版本中,它将令牌所有者设置为 APPID SID。

使用 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 标志时,必须考虑以下安全注意事项:

  • APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND标志由在内置服务安全上下文之一下启动的 COM 服务器设置;NetworkService 或 LocalService 帐户。 如果服务器模拟特权客户端,如果未设置 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 标志,则具有相同安全上下文的其他进程中运行的恶意代码可以通过从 COM 服务器进程劫持特权客户端的模拟令牌来提升特权。
  • 设置 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 标志时,COM 在 RunAs“激活器”COM 服务器的情况下强化进程对象的安全描述符。 对于此类服务器,COM 客户端应强化用于 COM 激活的令牌。
  • 设置 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 标志时,COM 在 RunAs“此用户”COM 服务器的情况下强化进程对象的安全描述符。 它还强化 COM 服务器的进程令牌,因为 COM SCM 是创建令牌的实体。

仅在应用 MSRC8322 修补程序 (安全公告 MS09-012) 时,Windows XP、Windows Server 2003、Windows Vista 和 Windows Server 2008 支持APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND标志。 Windows 7 及更高版本的 Windows中本机支持它。

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND标志仅适用于配置为 RunAs“激活器”或“此用户”的 COM 服务器。 它不适用于 NT 服务的 COM 服务器。

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY说明

如果在 AppIDFlags 中设置了APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY标志,则 COM SCM 将使用模拟级别RPC_C_IMP_LEVEL_IDENTIFY向 COM 服务器进程发出对象激活请求。

如果未设置 APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 标志,COM SCM 将使用 模拟级别RPC_C_IMP_LEVEL_IMPERSONATE向 COM 服务器进程发出对象激活请求。

使用 APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 标志时,必须考虑以下安全注意事项:

  • APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY标志由不代表客户端在对象激活请求中执行工作的 COM 服务器使用。 对于此类服务器,在 RPC_C_IMP_LEVEL_IDENTIFY 让 COM SCM 发出对象激活请求可最大程度地减少进程中显示的 SE_IMPERSONATE_NAME 级别的特权令牌的可能性。

Windows 7 及更高版本的 Windows 支持APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY标志。

台式机

模拟级别

交互式用户

会话名字对象

窗口工作站