DLL(OCX)文件注冊與反注冊方法(regsvr32用法)


注冊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 位的文件,會有錯誤訊息產生。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM