資訊: Windows NT/2000年/XP 使用 KnownDLLs 登錄項目,來尋找 DLL

文章翻譯 文章翻譯
文章編號: 164501 - 檢視此文章適用的產品。
重要: 本文包含修改登錄的相關資訊。修改登錄之前請確定它備份起來,並請確定您瞭解如何在發生問題時還原登錄。如如何備份、 還原,以及編輯登錄有關,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
256986Microsoft Windows 登錄的描述
全部展開 | 全部摺疊

在此頁中

結論

Microsoft Windows NT]、 [Windows 2000] 和 [Windows XP 會使用 KnownDLLs 登錄項目來搜尋的 32 位元或 16 位元 DLL 載入 DLL 時。32 位元 DLL [KnownDLLs 登錄項目只會影響搜尋的隱含載入的 DLL。16 位元 DLL [KnownDLLs 登錄項目會影響這兩個隱含和明確載入的 DLL 的搜尋。如果您不正確地在 KnownDLLs 登錄項目中包含 DLL 名稱,在 Windows NT/2000年/XP WOW LoadLibrary 就無法載入 DLL,位於應用程式的目前目錄中。

其他相關資訊

Windows NT/2000年/XP 會使用 KnownDLLs 登錄項目來判斷應用程式 DLL 會使用它。有兩個不同的 KnownDLLs 登錄項目: 一個會影響 32 位元 DLL 載入,一個會影響 16 位元 DLL 載入。KnownDLLs 登錄項目中所列的 DLL 有時稱為本文中的"KnownDLL 」。

DLL: 16 位元

在下列機碼中的 16 位元 DLL 找到 KnownDLLs 登錄值:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\WOW
				
[KnownDLLs 登錄值是 REG_SZ 字串中以空格分隔的 8.3 格式的 DLL 名稱。KnownDLLs 值會影響這兩個隱含和明確載入的 DLL。

而 KnownDLLs 登錄值不 Windows NT WOW 會使用下列的搜尋順序來找出 DLL:
  1. 使用 DLL 的任務目前的目錄。
  2. \WINNT] 目錄中。
  3. \WINNT\SYSTEM] 目錄中。
  4. \WINNT\SYSTEM32] 目錄中。
  5. 工作使用 DLL 的可執行檔目錄。
  6. PATH 環境變數中所列的目錄。
以 KnownDLLs 登錄值 Windows NT WOW 僅尋找 \WINNT\SYSTEM32 目錄找不到 DLL 中。如果 KnownDLLs 為不位於 \WINNT\SYSTEM32 目錄中的 DLL 包含一個項目,LoadLibrary 無法載入 DLL,即使 DLL 位在任何 5 個其他位置的上面。

如果 Windows NT/2000年/XP WOW 失敗找不到 DLL,LoadLibrary 傳回錯誤碼 (檔案找不到),2 或隱含的連結會使父模組以載入失敗。

如需有關 Windows 95 如何註冊 16 位元 DLL 為 KnownDLLs 資訊請參閱下列的 「 Microsoft 知識庫 」 中的文件:
141969Windows 95 使用 Known16DLLs 登錄機碼來尋找 16 位元 DLL

DLL: 32 位元

在 32 位元 DLL [KnownDLLs 找到登錄機碼:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
[REG_SZ 登錄值名稱是不含副檔名 DLL 的名稱。登錄數值資料是副檔名為 DLL 的名稱。此項目會影響隱含載入的 DLL,不使用 LoadLibrary() API 載入的 DLL。

此項目沒有 Windows NT 會使用下列的搜尋順序,找不到 DLL:
  1. 正在載入 DLL 的處理序可執行檔目錄。
  2. 正在載入 DLL 的處理序目前的目錄。
  3. \WINNT\SYSTEM32] 目錄中。
  4. \WINNT] 目錄中。
  5. 路徑環境變數中所列的目錄。
KnownDLLs 登錄項目與 Windows NT 會使用下列的搜尋順序,找不到 DLL:
  1. \WINNT\SYSTEM32] 目錄中。
  2. 正在載入 DLL 的處理序可執行檔目錄。
  3. 正在載入 DLL 的處理序目前的目錄。
  4. \WINNT] 目錄中。
  5. PATH 環境變數中所列的目錄。
如果 DLL 不位於任何上述位置,隱含連結會導致父模組以載入失敗。

如果一個 KnownDLL 隱含地連結至它 DLL 會被視為一個 KnownDLL。比方說 MAIN.DLL 使用從 CHILD.DLL] 函數。如果 MAIN.DLL 列在 KnownDLLs 登錄機碼,然後 Windows NT 也將 CHILD.DLL 視為一個 KnownDLL。另一個應用程式或使用 CHILD.DLL 的 DLL 會使用已連結至 MAIN.DLL 的 DLL。

Windows NT 將 32 位元 KnownDLLs 對應在開機時。重新命名或移動 DLL 並沒有任何效果,在其會載入 DLL 的應用程式 ; 它仍然會使用已在 \WINNT\SYSTEM32 在開機時的一個。

若要改變 Windows NT 的載入 KnownDLLs 使用位於 [ExcludeFromKnownDlls 登錄值:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
注意: 使用 RegEdt32 代替 RegEdit 修改此登錄值。

此字元登錄值包含 8.3 格式,每個字串的一個 DLL 中的 DLL 名稱。如果 DLL 列在 ExcludeFromKnownDlls,然後 Windows NT 不會將 DLL 當成一個 KnownDLL 如果即使列出 KnownDLLs 登錄機碼中。當您開發用很多其他 KnownDLLs 由一個 DLL,因此務必取代,並測試新組建而不需重新開機 Windows NT 時,這會很有用。

對先前提到的登錄機碼的變更需要到本機電腦的系統管理權限。KnownDLLs 使用,保護系統安全來自某人過於取代 API 藉由將惡意的 DLL 放在應用程式目錄中。

如需有關 Windows 95 如何註冊 32 位元 DLL 為 KnownDLLs 資訊請參閱下列的 「 Microsoft 知識庫 」 中的文件:
151646Windows 95 使用 KnownDLLs 登錄機碼來尋找 32 位元 DLL
警告: 不當使用 「 登錄編輯器 」 可能會導致嚴重的問題,可能必須重新安裝作業系統。Microsoft 不保證所導致的不正確使用登錄編輯程式 」 的問題可以獲得解決。使用 「 登錄編輯程式 」,請自行負擔相關的風險。

如需有關如何編輯登錄的資訊,檢視 [登錄編輯程式 (Regedit.exe) 或 「 新增和刪除資訊中登錄 」] 和 [編輯登錄資料 」 中的 「 說明 」 主題 Regedt32.exe 中的 ["變更機碼及值 > 說明主題]。請注意您應該備份登錄之前您編輯它。 如果您執行 Windows NT,您還應該更新緊急修復磁片 (ERD)。

屬性

文章編號: 164501 - 上次校閱: 2006年11月21日 - 版次: 4.1
這篇文章中的資訊適用於:
  • Microsoft Win32 Application Programming Interface?應用於:
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
關鍵字:?
kbmt kbdll kbinfo kbkernbase kbregistry KB164501 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:164501
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com