如何强制32位应用程序在CreateObject中使用64位COM DLL?

问题描述:

下面的代码的行为不同,这取决于如果我使用的WScript的32或64位版本:如何强制32位应用程序在CreateObject中使用64位COM DLL?

Set oSQLServer = CreateObject("SQLDMO.SQLServer") 

For Each o in oSQLServer.ListInstalledInstances 
    MsgBox o 
Next 

在32位,它会列出我的32位服务器(SQL Server 2000中)的情况下,在64位我得到了我的64位服务器(SQL Server 2008)的内容。 我需要将此代码转换为C++(一个32位应用程序)。但我需要展示64位服务器。我如何强制创建的对象在注册表中使用64位DLL和64位密钥?

我已经决定使用ODBC的的SQLBrowseConnect使用连接字符串

"DRIVER={SQL Server Native Client 10.0};". 

SQLDMO是很好,忠实地死了,SQLSMO是相当短视只托管应用程序。

32位应用程序无法加载64位DLL,并且64位应用程序无法加载32位DLL。

+0

out-of-proc怎么样? – 2012-02-18 23:33:57

+1

32位应用程序**可以**使用64位超出程序的COM对象,反之亦然。由于无论如何都必须跨越进程边界对对象进行编组,因此COM可以透明地处理您的任何位差异。 – 2012-02-19 04:35:38