2010-06-25 158 views
0

下面的代碼的行爲不同,這取決於如果我使用的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位密鑰?

回答

0

我已經決定使用ODBC的的SQLBrowseConnect使用連接字符串

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

SQLDMO是很好,忠實地死了,SQLSMO是相當短視只託管應用程序。

5

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

相關問題