2014-01-21 48 views
0

在Windows 7 64位我一方面有一個可視化的基本6標準EXE(沒有ActiveX EXE)。
另一方面,我有兩個oleaut32.dlls,一個在c:\ windows \ system32中,另一個在c:\ windows \ syswow64中。
它們有不同的尺寸。
我怎麼能說(也許哪個註冊表項),什麼oleaut32.dll將爲vb6 exe加載?
非常感謝提前
沃爾夫岡哪oleaut32.dll加載

回答

2

在C文件:\ WINDOWS \在Windows的64位版本存在Syswow64資料目錄。該目錄的內容是32位安裝的Windows正常發佈的所有32位DLL。當您在64位Windows上運行32位進程時,系統會從c:\ windows \ syswow64目錄加載32位DLL。否則,對於本機64位進程,c:\ windows \ system32。 (是的,給定這些目錄的名稱會讓人感到困惑,名爲「System32」的目錄有64位DLL,SysWow64目錄用於32位DLL)。

簡而言之,系統二進制文件(包括oleaut32.dll)是從c:\ windows \ syswow64加載的,是爲您的舊版VB應用程序(這是一個32位進程)加載的。

此處瞭解詳情:http://en.wikipedia.org/wiki/WoW64

+0

,做我必須做的,當我有更好的dll,但不希望覆蓋SysWow64資料文件? –

+1

什麼版本可能比最新版本的操作系統附帶的版本更好?通常,您不會嘗試覆蓋系統組件。但是,如果您有一些特定版本的此DLL是舊公共抵制的一部分(例如Win9x更新的情況),那麼您通常可以將該DLL複製到與EXE相同的目錄中。通常,在搜索Windows文件夾之前,加載程序將搜索與EXE for DLL相同的目錄。 – selbie

+0

在編譯後的EXE旁邊轉儲DLL是一個壞主意,除非它們不是ActiveX DLL而不是系統DLL。爲了正確處理「本地」DLL,存在舊的.local文件機制,其具有許多疣,並且SxS清單機制更健壯。 – Bob77