[英]Win32 32-bit process loads 64-bit kernel32.dll
我遇到32位Win32控制台應用程序正在一台運行Windows Server 2012 R2 Standard的特定計算機上加載64位版本的kernel32.dll。
使用Dependency Walker和一個簡單的HelloWorld應用程序,它看起來像這樣:
它在其他機器上正確加載32位kernel32。
PATH
的值似乎不相同,因此至少包括不同機器上完全相同順序的相關路徑。
根據Microsoft的這個頁面 ,DLL的搜索順序是:
GetSystemDirectory
函數檢索此目錄的路徑。 GetWindowsDirectory
函數檢索此目錄的路徑。 PATH
環境變量中列出的目錄。 我猜測在這個特定的機器上GetSystemDirectory
返回Windows/system32
而不是Windows/SysWOW64
的路徑,或者從32位進程的system32
到SysWOW64
的映射不能正常工作,但這些只是合格的猜測。
知道造成這種行為的原因是什么嗎?
Dependency Walker錯誤地報告了依賴關系。 它的靜態分析有時會在32位和64位模塊之間混淆。 通常,這是針對32位目標可執行文件運行64位版本的Dependency Walker,反之亦然。
請放心,您的32位程序正在加載32位版本的kernel32。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.