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 服务器的激活请求的终端服务器中的客户端将绑定到或启动并绑定到激活请求中会话 窗口工作站“默认”桌面中的 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 的 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 添加到令牌。 它授予令牌默认自由访问控制列表(DACL)中的 APPID SID 完全访问权限。 在 Windows Vista 和更高版本的 Windows 中,它会在令牌默认 DACL 中授予 OwnerRights SID READ_CONTROL权限。 在 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“This User”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 标志。

桌面

模拟级别

交互式用户

会话名字对象

窗口工作站