註冊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 位的檔案,會有錯誤訊息產生。