来自 COM 经验的八个教训
2006-07-22 22:53:22 来源:WEB开发网图 2 添加 RunAs 值到注册表中
您还需要使用 LsaStorePrivateData 将 RunAs 帐户的密码存储为 LSA 密钥,并使用 LsaAddAccountRights 确保帐户拥有“Logon as batch job”的权限。(有关具体操作的示例,请参见 Platform SDK 中的 DCOMPERM 示例。请特别注意名为 SetRunAsPassword 和 SetAccountRights 的函数。)
DCOM 不适于防火墙
关于 DCOM 特性和功能的一个常见问题是:“它能跨 Internet 工作吗?”DCOM 能够很好地跨 Internet 工作,只要将它配置为使用 TCP 或者 UDP,并且通过授予任何人启动和访问权限,可将服务器配置为允许匿名方法调用。毕竟,Internet 是一个巨大的 IP 网络。但矛盾的是,如果您将一个现有的 DCOM 应用程序(在公司的内部网络或 intranet 中工作得很好)改为跨 Internet 工作,它很有可能失败得很惨。可能是什么原因呢?防火墙。
DCOM 生来与防火墙的关系就如油与水的关系。原因之一是 COM 的 SCM 使用端口 135 与其他机器上的 SCM 通信。防火墙限制了它可以使用的端口和协议,可能会拒绝通过端口 135 传入的通信量。但更大的问题在于,为了避免与使用套接字、管道和其他 IPC 机制的应用程序冲突,DCOM 没有固定使用特定范围的端口,相反,它在运行时才选择所使用的端口。默认情况下,它可以使用从 1,024 到 65,535 范围内的任何端口。
允许 DCOM 应用程序通过防火墙的一种方式是,为 DCOM 要使用的协议打开端口 135 和端口 1,024-65,535。(默认情况下,Windows NT 4.0 是 UDP 协议,Windows 2000 是 TCP 协议。)但是,这比移除所有防火墙好不了多少。对此,您公司的 IT 人员可能要发表意见了。
更多精彩
赞助商链接