2012-08-30 57 views
2

此應用程序使用msado15.dll,msvcr100.dll和許多dll。如何強制當前目錄中的dll文件?

我發現應用程序不會使用ProcessExplorer和DependencyWalker在當前目錄中加載msado15.dll和msvcr100.dll文件。

相反,此應用程序從winsxs文件夾或不同的Windows系統目錄加載dll。

我想阻止它加載dll在「不是當前目錄」 即使它工作正常,沒有我已經複製的dll。

我該如何解決這個問題?任何幫助,將不勝感激。

在此先感謝!

+0

通過‘當前目錄’中列出的目錄你的意思是實際的當前目錄,或者包含可執行文件的目錄?從當前目錄加載DLL存在安全問題,所以一些管理員已禁用它。 –

+0

我的意思是exe文件存在的目錄。那麼我會研究那些安全問題。 –

回答

4

我做了一些研究,其實很簡單。根據this article,你所要做的就是創建一個名爲(YourAppName).local的空文件。這會告訴windows在exe文件夾中查找,而不是使用共享組件。

+0

非常感謝! –

+0

嗯,我剛發現它只能在XP上運行,根本不在XP上面。我想我必須做一些研究,並排組裝和東西... –

+0

是的,但它的寫作,如果您的應用程序沒有清單它可以在其他操作系統中工作。你應該嘗試刪除它(它在鏈接器選項中)。 – VoidStar

0

將這些DLL(msado15.dll,msvcr100.dll)的副本放在包含您的exe的目錄中。 加載程序將首先嚐試從包含exe文件的目錄加載DLL。

下面是其中的DLL窗口裝載機搜索順序: [參考:視窗通過C-C++通過傑弗裏裏希特]

  1. 包含可執行文件
  2. Windows系統目錄由返回的目錄GetWindowsDirectory
  3. 16位系統目錄,也就是說,在Windows目錄下的系統子文件夾
  4. Windows目錄由GetSystemDirectory
  5. 返回
  6. 進程的當前目錄
  7. 在PATH環境變量
相關問題