注冊DLL與反注冊DLL文件的方法
如果經常需要注冊與反注冊dll可以用注冊表文件
[HKEY_CLASSES_ROOT\dllfile\shell\Unregister]
"Command"="regsvr32 %1 /u"
[HKEY_CLASSES_ROOT\dllfile\shell\Register]
"Command"="regsvr32 %1"
當我們需要注冊或者反注冊dll時,只要在該dll文件上按下鼠標右鍵即可!
由於下面的方法太過啰嗦,這里簡單的說下,注冊dll
一般情況下,為了經常使用,建議將dll復制到系統盤的windows/system32目錄,如果不是的,有時候需要加上dll的完整路徑
注冊dll
regsvr32 /s winshow.dll
反注冊dll
regsvr32 /u winshow.dll
ocx 控件注冊方法
ocx 控件的安裝方式有很多種,這里介紹最簡單的一種。
OCX 控件文件復制到某個目錄
步驟:
1.將需要安裝的目錄,例如 C 盤根目錄下。
2.進入開始菜單,點擊“運行”
3.在出現的框中鍵入regsvr32 C:/xxxx.ocx 。(XXXX 為 控件名,C:/為目錄)
4.點擊確認后等待出現提醒注冊成功即可。
如果是偶爾一個軟件使用,將這個ocx文件復制到軟件目錄即可。
反注冊DLL大法
UnRegister DLLs
You can use the Regsvr32 tool (Regsvr32.exe) to register and unregister object linking and
embedding (OLE) controls such as dynamic-link library (DLL) or ActiveX Controls (OCX) files
that are self-registerable.
RegSvr32.exe has the following command-line options:
Regsvr32 [/n] [/i[:cmdline]] dllname
/u - Unregister server
/i - Call DllInstall passing it an optional [cmdline]; when used with /u calls dll
uninstall
/n - do not call DllRegisterServer; this option must be used with /i
When you use Regsvr32.exe, it attempts to load the component and call its DLLSelfRegister
function. If this attempt is successful, Regsvr32.exe displays a dialog indicating success.
If the attempt is unsuccessful, Regsvr32.exe returns an error message, which may include a
Win32 error code.
Example: To unregister Winshow's winshow.dll:
Click the Start button, and select Run
Enter this command line:
regsvr32 /u [systemroot]\winshow.dll
For example, in a Windows XP machine in which your systemroot was at c:\winnt, you would
enter:
regsvr32 /u c:\winnt\winshow.dll
你能構使用Regsvr32工具Regsvr32.exe注冊和反注冊目標鏈接和深層OLE控制器類似於自動注冊的動態鏈接庫(DLL)和ActiveX控件。
(OCX)文件。
Regsvr32命令行參數:
格式:Regsvr32 [/n] [/i[:cmdline命令行]] dllnamedll文件名
/u - Unregister server反注冊服務
/i - Call DllInstall passing it an optional [cmdline]; when used with /u calls dll
uninstall
/i 通過此DLL的可選參數,調用DLL安裝,反安裝使用/u
/n - do not call DllRegisterServer; this option must be used with /i
不調用DLL注冊服務,此選項必須和/i一起使用
當你使用Regsvr32.exe,它會嘗試載入DLL內組件並且調用本身的自注冊功能。如果嘗試成功,Regsvr32.exe顯示一個成功提示框,如果嘗試失敗,Regsvr32.exe會返回一個錯誤消息,一般會包含Win32錯誤代碼(特征碼)。
例如
反注冊Windows的windows.dll文件
1、點擊“開始”按鈕,選擇“運行”
2、輸入如下的命令行:
regsvr32 /u [systemroot系統目錄]\winshow.dll
注:卸載DLL時,目錄為此DLL文件所在完整的最后打開的目錄
如:在系統目錄是c:\winnt的Windows XP操作系統中,你可以輸入如下命令行:
regsvr32 /u c:\winnt\winshow.dll
注意:一般來說,只有在無法刪除某些注冊過的DLL文件時,才使用Regsvr32.exe反注冊此DLL
使用過activex的人都知道,activex不注冊是不能夠被系統識別和使用的,一般安裝程序都會自動地把它所使用的activex控件注冊,但如果你拿到的一個控件需要手動注冊怎么辦呢?如果修改注冊表那就太麻煩了,在windows的system文件夾下有一個regsvr32.exe的程序,它就是windows自帶的activex注冊和反注冊工具。
一、regsvr32的用法為:
“regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname為activex控件文件名,建議在安裝前拷貝到system文件夾下。
參數有如下意義:
/u——反注冊控件
/s——不管注冊成功與否,均不顯示提示框
/c——控制台輸出
/i——跳過控件的選項進行安裝(與注冊不同)
/n——不注冊控件,此選項必須與/i選項一起使用
執行該命令的方法:
1、可以在“開始”--“運行”,調出運行的對話框,也可以使用Win+R熱鍵,然后直接在輸入欄輸入即可
2、在開始--運行 輸入cmd,調出‘命令提示符’窗口,然后再執行regsvr32命令。
二、Regsvr32錯誤消息的說明
當使用 Regsvr32.exe 時,它會嘗試加載該組件並調用它的 DLLSelfRegister 函數。如果此嘗試成功,Regsvr32.exe 會顯示一個指示成功的對話框。如果此嘗試失敗,Regsvr32.exe 會返回一條錯誤消息,其中可能會包括一個 Win32 錯誤代碼。
以下列表介紹了 RegSvr32 錯誤消息和可能的原因。
Unrecognized flag:/invalid_flag
鍵入的標志或開關組合無效(請參閱本文中的“Regsvr32.exe 的用法”一節)。
No DLL name specified.
未包括 .dll 文件名(請參閱本文中的“Regsvr32.exe 的用法”一節)。
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
Dllname 不是 .dll 或 .ocx 文件。例如,鍵入 regsvr32 wjview.exe 就會生成該錯誤消息。
Dllname is not an executable file and no registration helper is registered for this file type.
Dllname 不是可執行文件(.exe、.dll 或 .ocx)。例如,鍵入 regsvr32 autoexec.bat 就會生成該錯誤消息。
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
Dllname 可能未導出,或者內存中可能有損壞的 Dllname 版本。請考慮使用 Pview 來檢測該文件並刪除它。
Dllname is not self-registerable or a corrupted version is in memory.
例如,鍵入 regsvr32 icwdial.dll 后就會返回該錯誤消息,因為 Icwdial.dll 文件不能自行注冊。
如果您懷疑內存中有損壞的 Dllname 版本,請嘗試重新啟動計算機,或重新提取該文件的原始版本。
如果您運行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 資源工具包 中的 Kill 或 Pview 工具。有關其他信息,請單擊以查看以下 Microsoft 知識庫文章: 197155 如何終止孤立進程
OleInitialize failed (or OleUninitialize failed).
Regsvr32 必須先初始化 COM 庫,然后才能調用所需的 COM 庫函數並在關閉時撤消對該庫的初始化。
如果對 COM 庫進行初始化或撤消初始化的嘗試失敗,就會出現這些錯誤消息。例如,Ole32.dll 文件
可能已經損壞,或者其版本有誤。
LoadLibrary("Dllname") failed.GetlastError returns 0x00000485
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到運行該應用程序所需的某個庫文件”。例如,鍵入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就會返回該錯誤消息。
LoadLibrary("Dllname") failed.GetLastError returns 0x00000002
在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系統找不到指定的文件”。換言之,系統找不到相關的 DLL。例如,如果鍵入 regsvr32 icwdial.dll,而此時缺少 Tapi32.dll(依賴項),就會返回該錯誤消息。
LoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f 在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系統上的設備不能正常工作”。如果您嘗試注冊 Win16 .dll 文件,就會發生此現象。例如,鍵入 regsvr32 dskmaint.dll 會返回該錯誤消息。
DllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代碼是:字符串
在 Winerror.h 中搜索字符串。
Regsvr32.exe 和依賴項
RegSvr32.exe 依賴於 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,還依賴於 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 會加載您嘗試注冊或撤消注冊的文件及其所有依賴項。如果缺少必需的文件或者它們已損壞,該進程可能會失敗。
您可以使用 Depends.exe 來確定您嘗試注冊或撤消注冊的文件的依賴項。在 Microsoft Windows 98 資源工具包 和 Microsoft Windows NT 4.0 資源工具包 支持工具中都提供了 Depends.exe。
247024 Tools Included with the Microsoft Windows 98 Resource Kit
三、一個快速注冊 DLL 及 OCX 的方法
注意看羅!方法如下:
1、在資源管理器中找到 C:\Windows\System\Regsvr32.exe 並【復制】 ( 按鼠標右鍵選復制 )
2、將目錄移到 C:\Windows\SendTo 后,執行【貼上快捷方式】 ( 按鼠標右鍵選貼上快捷方式 )
3、將快捷方式名稱改成【REGISTER】
4、OK
現在,如果您想替某一個文件做注冊動作,例如:C:\Windows\System\Test.ocx,您只要打開資源管理器,找到 C:\Windows\System\Test.ocx,按鼠標右鍵選【傳送到】【REGISTER】即可完成注冊動作了!
注:有一個地方要注意的是,Regsvr32.exe 只能注冊 32 位的文件!如果要用它來注冊 16 位的文件,會有錯誤訊息產生。