.dll
.dll
動態鏈接庫英文為DLL,是Dynamic Link Library的縮寫。
dll文件圖例
可以更為容易地將更新應用於各個模塊,而不會影響該程序的其他部分。例如,您可能具有一個工資計算程序,而稅率每年都會更改。當這些更改被隔離到 DLL 中以後,您無需重新生成或安裝整個程序就可以應用更新。
下面說明了 Windows 操作系統中的一些作為 DLL 實現的文件: ActiveX 控制項 (.ocx) 文件ActiveX 控制項的一個示例是日曆控制項,它使您可以從日曆中選擇日期。控制面板 (.cpl) 文件.cpl 文件的一個示例是位於控制面板中的項。每個項都是一個專用 DLL。設備驅動程序 (.drv) 文件設備驅動程序的一個示例是控制列印到印表機的印表機驅動程序。
當程序使用 DLL 時,具有以下的優點:使用較少的資源,當多個程序使用同一個函數庫時,DLL 可以減少在磁碟和物理內存中載入的代碼的重複量。這不僅可以大大影響在前台運行的程序,而且可以大大影響其他在 Windows 操作系統上運行的程序。推廣模塊式體系結構DLL 有助於促進模塊式程序的開發。這可以幫助您開發要求提供多個語言版本的大型程序或要求具有模塊式體系結構的程序。模塊式程序的一個示例是具有多個可以在運行時動態載入的模塊的計帳程序。簡化部署和安裝當 DLL 中的函數需要更新或修復時,部署和安裝 DLL 不要求重新建立程序與該 DLL 的鏈接。此外,如果多個程序使用同一個 DLL,那麼多個程序都將從該更新或修復中獲益。當您使用定期更新或修復的第三方 DLL 時,此問題可能會更頻繁地出現。
當某個程序或 DLL 使用其他 DLL 中的 DLL 函數時,就會創建依賴項。因此,該程序就不再是獨立的,並且如果該依賴項被損壞,該程序就可能遇到問題。例如,如果發生下列操作之一,則該程序可能無法運行:依賴 DLL 升級到新版本。修復了依賴 DLL。依賴 DLL 被其早期版本覆蓋。從計算機中刪除了依賴 DLL。這些操作通常稱為 DLL 衝突。如果沒有強制實現向後兼容性,則該程序可能無法成功運行。
下表說明了為了幫助最大限度地減少依賴性問題而在 Microsoft Windows 2000 和較高版本的 Windows 操作系統中引入的更改: Windows 文件保護在 Windows 文件保護中,操作系統禁止未經授權的代理更新或刪除系統 DLL。因此,當程序安裝操作嘗試刪除或更新被定義為系統 DLL 的 DLL 時,Windows 文件保護將尋找有效的數字簽名。專用 DLL通過專用 DLL 可以使程序避免遭受對共享 DLL 進行的更改。專用 DLL 使用版本特定信息或空 .local 文件來強制要求程序所使用的 DLL 的版本。要使用專用 DLL,請在程序根文件夾中查找 DLL。然後,對於新程序,請向該 DLL 中添加版本特定信息。對於舊程序,請使用空 .local 文件。每個方法都告訴操作系統使用位於程序根文件夾中的專用 DLL。
.dll
DLL Universal Problem SolverDLL Universal Problem Solver (DUPS) 工具用於審核、比較、記錄和顯示 DLL 信息。下表說明了組成 DUPS 工具的實用工具: Dlister.exe該實用工具枚舉計算機中的所有 DLL,並且將此信息記錄到一個文本文件或資料庫文件中。 Dcomp.exe該實用工具比較在兩個文本文件中列出的 DLL,併產生包含差異的第三個文本文件。 Dtxt2DB.exe該實用工具將通過使用 Dlister.exe 實用工具和 Dcomp.exe 實用工具創建的文本文件載入到 dllHell 資料庫中。 DlgDtxt2DB.exe該實用工具提供 Dtxt2DB.exe 實用工具的圖形用戶界面 (GUI) 版本。
.dll
當入口點函數返回 FALSE 值時,如果您使用的是載入時動態鏈接,則應用程序不啟動。如果您使用的是運行時動態鏈接,則只有個別 DLL 不會載入。
入口點函數只應執行簡單的初始化任務,不應調用任何其他 DLL 載入函數或終止函數。例如,在入口點函數中,不應直接或間接調用 LoadLibrary 函數或 LoadLibraryEx 函數。此外,不應在進程終止時調用 FreeLibrary 函數。
注意:在多線程應用程序中,請確保將對 DLL 全局數據的訪問進行同步(線程安全),以避免可能的數據損壞。為此,請使用 TLS 為各個線程提供唯一的數據。導出 DLL 函數要導出 DLL 函數,您可以嚮導出的 DLL 函數中添加函數關鍵字,也可以創建模塊定義文件 (.def) 以列出導出的 DLL 函數。
要使用函數關鍵字,您必須使用以下關鍵字來聲明要導出的各個函數: __declspec(dllexport)
要在應用程序中使用導出的 DLL 函數,您必須使用以下關鍵字來聲明要導入的各個函數: __declspec(dllimport)
通常情況下,您最好使用一個包含 define 語句和 ifdef 語句的頭文件,以便分隔導出語句和導入語句。
您還可以使用模塊定義文件來聲明導出的 DLL 函數。當您使用模塊定義文件時,您不必嚮導出的 DLL 函數中添加函數關鍵字。在模塊定義文件中,您可以聲明 DLL 的 LIBRARY 語句和 EXPORTS 語句。下面的代碼是一個定義文件的示例。 // SampleDLL.def//LIBRARY "sampleDLL"EXPORTS HelloWorld
示例 DLL 和應用程序在 Microsoft Visual C++ 6.0 中,可以通過選擇“Win32 動態鏈接庫”項目類型或“MFC 應用程序嚮導 (dll)”來創建 DLL。
下面的代碼是一個在 Visual C++ 中通過使用“Win32 動態鏈接庫”項目類型創建的 DLL 的示例。 // SampleDLL.cpp//#include "stdafx.h" #define EXPORTING_DLL#include "sampleDLL.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ return TRUE;} void HelloWorld(){ MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);}
// File: SampleDLL.h//#ifndef INDLL_H#define INDLL_H #ifdef EXPORTING_DLLextern __declspec(dllexport) void HelloWorld() ;#else extern __declspec(dllimport) void HelloWorld() ;#endif #endif
下面的代碼是一個“Win32 應用程序”項目的示例,該示例調用 SampleDLL DLL 中的導出 DLL 函數。 // SampleApp.cpp //#include "stdafx.h" #include "sampleDLL.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ HelloWorld(); return 0; }
注意:在載入時動態鏈接中,您必須鏈接在生成 SampleDLL 項目時創建的 SampleDLL.lib 導入庫。
在運行時動態鏈接中,您應使用與以下代碼類似的代碼來調用 SampleDLL.dll 導出 DLL 函數。 ...typedef VOID (*DLLPROC) (LPTSTR);... HINSTANCE hinstDLL;DLLPROC HelloWorld;BOOL fFreeDLL; hinstDLL = LoadLibrary("sampleDLL.dll");if (hinstDLL != NULL){ HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld"); if (HelloWorld != NULL) (HelloWorld); fFreeDLL = FreeLibrary(hinstDLL);}...
當您編譯和鏈接 SampleDLL 應用程序時,Windows 操作系統將按照以下順序在下列位置中搜索 SampleDLL DLL:應用程序文件夾 當前文件夾 Windows 系統文件夾注意:GetSystemDirectory 函數返回 Windows 系統文件夾的路徑。 Windows 文件夾注意:GetWindowsDirectory 函數返回 Windows 文件夾的路徑.
.dll
下表說明了程序集的一些功能,並將其與 Win32 DLL 的功能進行了比較:自描述當您創建程序集時,CLR 運行該程序集所需的全部信息都包含在程序集清單中。程序集清單包含一個依賴程序集列表。因此,CLR 可以維護一組在應用程序中使用的一致的程序集。在 Win32 DLL 中,當您使用共享 DLL 時,無法維護應用程序中使用的一組 DLL 之間的一致性。版本控制在程序集清單中,版本信息由 CLR 記錄和實施。另外,可以通過版本策略來實施版本特定用法。在 Win32 DLL 中,無法由操作系統實施版本控制。相反,您必須確保 DLL 向後兼容。并行部署程序集支持并行部署。一個應用程序可以使用一個版本的程序集,而另一個應用程序可以使用另一不同版本的程序集。從 Windows 2000 開始,通過將 DLL 放置到應用程序文件夾中支持并行部署。另外,Windows 文件保護能夠防止系統 DLL 被未經授權的代理改寫或替換。獨立和隔離通過使用程序集開發的應用程序可以是獨立的,並且與計算機中正在運行的其他應用程序隔離。這一特性有助於創建零干擾安裝。執行程序集在程序集清單所提供的並且由 CLR 控制的安全許可權下運行。語言無關性可以通過使用任何一種受支持的 .NET 語言來開發程序集。例如,可以在 Microsoft Visual C# 中開發程序集,然後在 Microsoft Visual Basic .net項目中使用該程序集。
資源控制等。
USER32.DLL------於windows管理有關的函數。消息、菜單、游標、計時器
、通信和其他大多數非現實函數都可以從這裡找到
GDI32.DLL-------圖形設備介面庫。於設備輸出有關的函數:大多數繪圖
、顯示場景、圖元文件、坐標及其字體函數都可以從這裡找到。
COMDLG32.DLL\LZ32.DLL\VERSION.DLL\---這都是提供一些附加函數的庫,包
括通用對話框、文件壓縮、版本控制的支持。
COMCTL32.DLL --------一個新的windows控制項集合,比如TreeView和RichTextBox
等等,最初這個是為了win95而製作的,但是現在也使用與NT下
MAPI32.DLL---------提供了一套電子郵件的專用函數
NETAPI32.DLL--------提供了一套訪問和控制網路的函數
ODBC32.DLL--------ODBC功能的DLL之一
WINMM.DLL--------是多媒體控制訪問函數集合
DLL(Delay Locked Loop,延時鎖定迴路提供一個數據濾波信號)
系統文件auditpolicygpinterop.dll出錯,是由於木馬病毒、或不小心下載了流氓軟體被感染所致。而該文件又是系統/程序正常運行的前提條件,所以一旦不幸被感染,通常會伴隨下幾種情況:
1、桌面圖標無法刪除(淘寶、小遊戲、電影等等,重啟同樣不能正常刪除)
2、網路遊戲打不開(DNF,穿越火線,魔獸世界等等)
3、電腦無故藍屏
4、電腦沒聲音
5、桌面無法顯示
6、主頁被修改為網址導航
auditpolicygpinterop.dll出錯,很多是因為中了流氓軟體的招,如果不太了解系統,不知道應該把auditpolicygpinterop.dll放在哪,那麼建議使用修復工具對系統進行最全面的掃描和修復。
首先,建議使用金山毒霸。
然後,點擊主界面的快速掃描,進行全面的系統掃描。
最後,按提示重新啟動電腦,auditpolicygpinterop.dll下載修復完畢。
或者360安全衛士,點擊系統修復然後查殺木馬。