交互用户

交互式用户是当前登录到运行 COM 服务器的计算机的用户。 如果标识设置为交互式用户,并且服务器将其类工厂注册为多用途,则所有客户端都使用相同的服务器实例。 如果没有任何用户登录,服务器将不会运行。 如果服务器具有客户端需要查看的图形用户界面 (GUI),则应使用交互式用户作为服务器的标识。 但是,选择此标识会带来一些安全风险,因为服务器在登录用户的标识下运行,而无需登录用户知情或同意。 此外,服务应用程序无法显示用户界面。 有关详细信息,请参阅交互服务

如果将 COM 服务器配置为以交互式用户身份运行,那么在终端服务环境中,服务器将在与客户端的用户标识匹配的交互式会话中启动。 但是,客户端应用程序可以使用会话名字对象引用服务器在与客户端标识不匹配的会话中提供的对象。 使用此方法时,客户端应用程序可以指定任何会话,在这种情况下,服务器将以拥有会话的用户(而不是启动用户)身份运行。 在这种情况下,默认访问权限不允许启动用户对服务器调用方法。 但是,仍然存在以下安全风险:

  • 如果 COM 服务器公开的接口不受 COM 控制,例如 TCP 端口、命名管道、LPC 端口、共享内存部分等,则启动用户会使用这些接口影响服务器。 配置为以交互式用户身份运行的 COM 对象应尽可能减小此攻击面。
  • COM 对象可以自由设置其自己的访问权限。 如果对象在其 AppID 注册中或通过调用 CoInitializeSecurity 来设置访问权限,以允许启动用户访问,则用户将能够启动服务器以其他用户身份运行,然后访问该对象。

应用程序标识

启动用户

服务标识

指定用户