1
我們的C#/ .NET程序正在調用目標文件夾中的第三方DLL(x.dll)。 x.dll然後在同一個文件夾中調用另一個第三方DLL y.dll。在某些系統上,這不起作用,因爲x.dll找不到y.dll。 使用相同dll的相同程序適用於大多數其他系統,但我們無法找出與系統無關的差異。我們檢查了這些屬性,這些dll不會被Windows阻止。此外,病毒掃描程序被禁用。某些系統無法訪問DLL
我們的C#/ .NET程序正在調用目標文件夾中的第三方DLL(x.dll)。 x.dll然後在同一個文件夾中調用另一個第三方DLL y.dll。在某些系統上,這不起作用,因爲x.dll找不到y.dll。 使用相同dll的相同程序適用於大多數其他系統,但我們無法找出與系統無關的差異。我們檢查了這些屬性,這些dll不會被Windows阻止。此外,病毒掃描程序被禁用。某些系統無法訪問DLL
請通過Dynamic-Link Library Search Order並查看它適用的情況。最可能的情況是啓用了SafeDllSearchMode標準DLL搜索順序:
如果啓用SafeDllSearchMode,搜索順序如下:
- 從其中加載應用程序的目錄。
- 系統目錄。使用GetSystemDirectory函數獲取此目錄的路徑。
- 16位系統目錄。沒有獲得該目錄路徑的函數,但它被搜索。
- Windows目錄。使用GetWindowsDirectory函數獲取此目錄的路徑。
- 當前目錄。
- PATH環境變量中列出的目錄。請注意,這不包括由應用程序路徑註冊表項指定的每個應用程序路徑 。 計算DLL搜索路徑時不使用App Paths鍵。
注意,如果DLL是一個託管組件(你不提它),那麼.NET程序集搜索規則,見How the Runtime Locates Assemblies。很明顯,GAC也會對託管的DLL起作用。
我只是給你指點,做你自己的調查,因爲你的文章缺少相關信息。
.net版本怎麼樣? x86和x64的區別? –
使用ProcessMonitor並比較兩個系統的跟蹤並查看它們的不同之處以及爲什麼 –