RunAs

配置一个类,使其在被远程客户端激活时在特定用户帐户下运行,而无需作为服务应用程序编写。

注册表项

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
   {AppID_GUID}
      RunAs = value

注解

该值指定用户名,并且必须是 UserNameDomain**\**UserName 或字符串“Interactive User”形式之一。 还可以指定字符串“nt authority\localservice”(对于本地服务)和“nt authority\networkservice”(对于网络服务)。 当 {AppID_GUID} 引用已启动或类表中有项的 COM 服务器时,还可以指定字符串“nt authority\system”。 但是,不能对尚未启动的 COM 服务器使用“nt authority\system”。 “nt authority\localservice”、“nt authority\networkservice”和“nt authority\system”的默认密码为“”(空字符串)。

注意

从 Windows Vista 开始,不再需要空密码来配置“nt authority\localservice”、“nt authority\networkservice”和“nt authority\system”RunAs 设置。

 

配置为作为特定用户运行的类可能无法在任何其他标识下注册,因此使用此 CLSID 调用 CoRegisterClassObject 将失败,除非 COM 代表实际激活请求启动进程。

用户名取自类的 AppID 项下的 RunAs 值。 如果用户名为“Interactive User”,则服务器在当前登录的用户的标识中运行,并连接到交互式桌面。

否则,从只有计算机的管理员和系统可用的注册表部分检索密码。 然后,用户名和密码用于创建运行服务器的登录会话。 以这种方式启动时,用户使用自己的桌面和窗口工作站运行,并且不与交互式用户或其他用户帐户中运行的其他用户共享窗口句柄、剪贴板或其他 UI 元素。

若要为 RunAs 类建立密码,必须使用系统目录中安装的 DCOMCNFG 管理工具。

对于 DCOM 服务器使用的 RunAs 标识,值中指定的用户帐户必须有权作为批处理作业登录。 可以使用本地安全策略管理工具添加此权限。 转到“本地策略”并打开“用户权限分配”。 选择“作为批处理作业登录”,并添加用户帐户。

RunAs 值不用于配置为作为服务运行的服务器。 需要在 LocalSystem 以外的标识下运行的 COM 服务应使用服务控制面板小程序或服务控制器函数设置适当的用户名和密码。 (有关这些函数的更多信息,请参阅服务。)

注意

从 Microsoft Windows Server 2003 起,类 AppID 从 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID 显式读取,这与大多数注册表项不同,与 HKEY_CLASSES_ROOT\AppID 不可互换。

 

注册 COM 服务器