是否有一个很好的全面权威参考,讨论了32位和64位进程之间的互操作性?基于谷歌搜索我推断:
这表明: 1. 32位应用程序无法使用GetObject来获取正在运行的64位版本的Excel?或者可以吗?运行对象表(ROT)如何受到32位与64位问题的影响?如果只安装了64位版本的Office,32位进程是否可以创建Excel实例?我认为答案将是“否”,除非32位进程在其CoCreateInstance调用中使用64位标志,或者Excel是否以某种方式在32位世界中注册了自己?
Microsoft是否自动执行任何操作,例如从32位进程获取CoCreateInstance检查64位注册表并尝试创建进程外64位组件(如果在32位注册表中没有注册)?我已经看到64位Office的一些发行说明,其中Microsoft警告从32位应用程序访问64位Excel无法正常工作,但我知道有一个实例似乎只是工作。
对此有一个很好的技术事实参考吗?
答案 0 :(得分:5)
在MSDN Library docs中对CLSCTX进行了很好的解释。很多规则,默认行为是:
如果既不是客户端也不是服务器 指定首选项,然后:
如果承载服务器的计算机运行的是Windows XP或 没有服务的Windows Server 2003 然后安装包1(SP1)或更高版本 COM将更喜欢64位版本的 服务器(如果有);否则它 将激活32位版本的 服务器
如果承载服务器的计算机正在运行Windows Server 2003 安装SP1或更高版本,然后安装COM 将尝试匹配服务器 建筑给客户 建筑。换句话说,对于一个 32位客户端,COM将激活一个 32位服务器(如果有);除此以外 它将激活64位版本的 服务器。对于64位客户端,COM 将激活64位服务器 可用的;否则会激活 一个32位服务器。
如果要覆盖此行为,请查看MSDN文章。