用好Regsvr32 解決系統(tǒng)疑難雜癥
更新時間:2006年10月23日 00:00:00 作者:
初識Regsvr32
想必Regsvr32大家一定都不陌生吧,在一些電腦教程或電腦雜志上總能看到它的身影,可如此一個高出鏡率的 “小明星”在我們很多人的眼里卻顯得十分的神秘,原來一般的文章都很少對它進行介紹,最多只是了了幾句介紹一下如何用它解決常見問題,好多朋友可能都已經(jīng)在一些文章的指導(dǎo)下使用過好多次Regsvr32了,但對它的“身世”卻依然不了解,今天筆者就借這篇文章打消大家腦海里的疑團,帶大家一起去認(rèn)識一下這個Regsvr32。
Regsvr32的背景與功能
Regsvr32是一個Windows系統(tǒng)的內(nèi)嵌程序,不僅存在于Windows 2000 / XP下,幣材茉赪indows 98中找到它的身影。它的主要功能就是注冊或卸載動態(tài)鏈接庫文件(DLL)和嵌入式控件(OCX),您可別小看了它呀,有了它,很多軟件或操作系統(tǒng)的難題就都可以迎刃而解了。
基礎(chǔ)篇
剛才咱們說到了DLL和OCX,估計在好多的讀者心里都會冒出這樣一個問題,這兩個東東究竟是什么意思?它們究竟能干什么呢?別急,下面就聽筆者慢慢道來。
DLL文件:DLL文件全稱是Dynamic Link Library,中文名字叫做“動態(tài)鏈接庫文件”。在Windows系統(tǒng)中,DLL文件就象EXE文件一樣能夠完成某項功能,但它卻無法像EXE文件那樣獨立運行,必須由其他程序來調(diào)用它,而它對于程序的執(zhí)行也是非常重要的,大多數(shù)的程序或系統(tǒng)組件在執(zhí)行時,都必須鏈接到DLL文件才能正常運行。換言之,DLL文件就像是數(shù)據(jù)庫中一個個公用的函數(shù)庫,每位設(shè)計人員都可以在自己的程序中隨意調(diào)用它們,這樣,不僅不用自己再去編寫一些基礎(chǔ)功能(因為這些功能都已經(jīng)由DLL文件完成了),而且還可以讓程序的體積更加小巧。因此,如果某個DLL文件發(fā)生丟失,就有可能造成某個軟件或某個系統(tǒng)模塊發(fā)生故障而無法正常工作。
OCX文件:OCX文件的全稱是Object Linking and Embedding (OLE) Control Extension,中文名字叫做“嵌入式對象控件”,它的作用其實和剛才談到的DLL文件特別相像,其實所謂的OLE我們平時已經(jīng)非常熟悉了,簡單地說就像在Word中可以使用Excel數(shù)據(jù),寫字板中可以嵌入圖片文件等等這些功能。打個比方的話,剪貼板就像是個簡單的數(shù)據(jù)共享,而OLE則是一種“對象共享”。
剛才我們談到Regsvr32的功能是注冊與卸載DLL文件的,那么現(xiàn)在又有一個問題困擾著我們,既然DLL文件起到的就是公用函數(shù)庫的作用,為什么我們不能直接在程序里調(diào)用,還要進行一次注冊呢?其實,這里注冊DLL文件的道理就像是我們第一次入學(xué),雖然你坐在教室里,但是如果沒有寫你的檔案,老師是不會認(rèn)識你的,自然也就不會找到你。同樣道理,如果DLL文件沒有注冊,系統(tǒng)注冊表中就沒有這個DLL文件的相關(guān)信息,雖然它已經(jīng)存在于我們的硬盤上,但等到調(diào)用的時候,系統(tǒng)也就根本找不到這個DLL文件而只能報告沒有這個DLL存在了,所以在這個時候就需要我們注冊DLL文件了。
【小提示】 Windows系統(tǒng)的DLL因為在安裝時已經(jīng)注冊好了,因此不用注冊,但是如果因為某種情況系統(tǒng)無法識別這些DLL文件時,還是需要我們手動再注冊一遍。
Regsvr32命令格式
說完了上面這些,想必好多朋友都聽得有點懵了,別急,知道了上面這┲叮旅嬖勖竊傺癛egsvr32命令就容易多了。
大家知道,凡是命令肯定都有一個格式,Regsvr32也不例外。我們以Windows XP為例,在“開始”菜單→“運行”欄中執(zhí)行“CMD”命令,打開命令提示行窗口,輸入Regsvr32命令后回車,就會看到Regsvr32的命令格式“Regsvr32 [ /u ][ /s ][ /n ][ /i [ :cmdline ] ] dll文件名”,
由上可知,Regsvr32命令一共有四個參數(shù),分別是:
/s:注冊或卸載成功后不顯示操作成功的提示框
/u:卸載已安裝的控件或DLL文件
/n:不調(diào)用DLLRegisterServer,要注意這個參數(shù)應(yīng)與/i一同使用
/i:調(diào)用DLLInstall,并給其傳遞一個可選的[ cmdline ];當(dāng)使用/u時用來卸載DLL
命令的講解往往都枯燥難懂,下面咱們就借助一個實例來進一步了解Regsvr32的命令格式。比如我們想注冊一個保存在C:\Folder目錄中的shmedia.dll動態(tài)鏈接庫文件,那么執(zhí)行的命令就應(yīng)該是“Regsvr32 c:\folder\shmedia.dll”,而如果注冊過后打算卸載時就更簡單了,執(zhí)行命令“Regsvr32 /u c:\folder\shmedia.dll”就行了。如圖2所示就是正常完成任務(wù)的提示窗口
常見錯誤提示
使用Regsvr32命令久后,大家也許會經(jīng)常看到各種各樣的錯誤提示,這里筆者就找了一些比較有代表性的錯誤,幫大家來分析分析。
錯誤一:未指定DLL文件的具體路徑
這種錯誤比較常見,一般出現(xiàn)在注冊非系統(tǒng)DLL文件時,原因就是Regsvr32程序在默認(rèn)路徑找不到指定的DLL文件,無法正常完成注冊。解決的辦法也很簡單,只要在命令中指定好DLL文件的具體存儲路徑就行了,比如“Regsvr32 c:\folder\abc.dll”就是一個正常的命令。
錯誤二:要注冊的文件類型錯誤
這種錯誤比較少,但容易在新手上出現(xiàn),原因就是用戶欲注冊的文件根本就不是一個正常的DLL文件或OCX文件,Regsvr32根本無法完成注冊。解決的方法就是指定一個正常的DLL文件或OCX文件就行了。比如原命令為“Regsvr32 c:\abc\abc.txt”,而正確的命令就應(yīng)該是“Regsvr32 c:\abc\abc.dll”(當(dāng)然,也得保證這個abc.dll文件已存在并完全正確)
錯誤三:鍵入的命令中未寫明DLL文件名
這種錯誤和上例一樣也是主要出現(xiàn)在新手上,它的原因就是根本沒有指定DLL文件名,這樣Regsvr32自然也就無法得知要對什么進行操作了,所以才會彈出這個提示來。解決的辦法就是指定要操作的DLL文件或OCX文件即可。
常見錯誤提示
使用Regsvr32命令久后,大家也許會經(jīng)??吹礁鞣N各樣的錯誤提示,這里筆者就找了一些比較有代表性的錯誤,幫大家來分析分析。
錯誤一:未指定DLL文件的具體路徑
這種錯誤比較常見,一般出現(xiàn)在注冊非系統(tǒng)DLL文件時,原因就是Regsvr32程序在默認(rèn)路徑找不到指定的DLL文件,無法正常完成注冊。解決的辦法也很簡單,只要在命令中指定好DLL文件的具體存儲路徑就行了,比如“Regsvr32 c:\folder\abc.dll”就是一個正常的命令。
錯誤二:要注冊的文件類型錯誤
這種錯誤比較少,但容易在新手上出現(xiàn),原因就是用戶欲注冊的文件根本就不是一個正常的DLL文件或OCX文件,Regsvr32根本無法完成注冊。解決的方法就是指定一個正常的DLL文件或OCX文件就行了。比如原命令為“Regsvr32 c:\abc\abc.txt”,而正確的命令就應(yīng)該是“Regsvr32 c:\abc\abc.dll”(當(dāng)然,也得保證這個abc.dll文件已存在并完全正確)
錯誤三:鍵入的命令中未寫明DLL文件名
這種錯誤和上例一樣也是主要出現(xiàn)在新手上,它的原因就是根本沒有指定DLL文件名,這樣Regsvr32自然也就無法得知要對什么進行操作了,所以才會彈出這個提示來。解決的辦法就是指定要操作的DLL文件或OCX文件即可。
想必Regsvr32大家一定都不陌生吧,在一些電腦教程或電腦雜志上總能看到它的身影,可如此一個高出鏡率的 “小明星”在我們很多人的眼里卻顯得十分的神秘,原來一般的文章都很少對它進行介紹,最多只是了了幾句介紹一下如何用它解決常見問題,好多朋友可能都已經(jīng)在一些文章的指導(dǎo)下使用過好多次Regsvr32了,但對它的“身世”卻依然不了解,今天筆者就借這篇文章打消大家腦海里的疑團,帶大家一起去認(rèn)識一下這個Regsvr32。
Regsvr32的背景與功能
Regsvr32是一個Windows系統(tǒng)的內(nèi)嵌程序,不僅存在于Windows 2000 / XP下,幣材茉赪indows 98中找到它的身影。它的主要功能就是注冊或卸載動態(tài)鏈接庫文件(DLL)和嵌入式控件(OCX),您可別小看了它呀,有了它,很多軟件或操作系統(tǒng)的難題就都可以迎刃而解了。
基礎(chǔ)篇
剛才咱們說到了DLL和OCX,估計在好多的讀者心里都會冒出這樣一個問題,這兩個東東究竟是什么意思?它們究竟能干什么呢?別急,下面就聽筆者慢慢道來。
DLL文件:DLL文件全稱是Dynamic Link Library,中文名字叫做“動態(tài)鏈接庫文件”。在Windows系統(tǒng)中,DLL文件就象EXE文件一樣能夠完成某項功能,但它卻無法像EXE文件那樣獨立運行,必須由其他程序來調(diào)用它,而它對于程序的執(zhí)行也是非常重要的,大多數(shù)的程序或系統(tǒng)組件在執(zhí)行時,都必須鏈接到DLL文件才能正常運行。換言之,DLL文件就像是數(shù)據(jù)庫中一個個公用的函數(shù)庫,每位設(shè)計人員都可以在自己的程序中隨意調(diào)用它們,這樣,不僅不用自己再去編寫一些基礎(chǔ)功能(因為這些功能都已經(jīng)由DLL文件完成了),而且還可以讓程序的體積更加小巧。因此,如果某個DLL文件發(fā)生丟失,就有可能造成某個軟件或某個系統(tǒng)模塊發(fā)生故障而無法正常工作。
OCX文件:OCX文件的全稱是Object Linking and Embedding (OLE) Control Extension,中文名字叫做“嵌入式對象控件”,它的作用其實和剛才談到的DLL文件特別相像,其實所謂的OLE我們平時已經(jīng)非常熟悉了,簡單地說就像在Word中可以使用Excel數(shù)據(jù),寫字板中可以嵌入圖片文件等等這些功能。打個比方的話,剪貼板就像是個簡單的數(shù)據(jù)共享,而OLE則是一種“對象共享”。
剛才我們談到Regsvr32的功能是注冊與卸載DLL文件的,那么現(xiàn)在又有一個問題困擾著我們,既然DLL文件起到的就是公用函數(shù)庫的作用,為什么我們不能直接在程序里調(diào)用,還要進行一次注冊呢?其實,這里注冊DLL文件的道理就像是我們第一次入學(xué),雖然你坐在教室里,但是如果沒有寫你的檔案,老師是不會認(rèn)識你的,自然也就不會找到你。同樣道理,如果DLL文件沒有注冊,系統(tǒng)注冊表中就沒有這個DLL文件的相關(guān)信息,雖然它已經(jīng)存在于我們的硬盤上,但等到調(diào)用的時候,系統(tǒng)也就根本找不到這個DLL文件而只能報告沒有這個DLL存在了,所以在這個時候就需要我們注冊DLL文件了。
【小提示】 Windows系統(tǒng)的DLL因為在安裝時已經(jīng)注冊好了,因此不用注冊,但是如果因為某種情況系統(tǒng)無法識別這些DLL文件時,還是需要我們手動再注冊一遍。
Regsvr32命令格式
說完了上面這些,想必好多朋友都聽得有點懵了,別急,知道了上面這┲叮旅嬖勖竊傺癛egsvr32命令就容易多了。
大家知道,凡是命令肯定都有一個格式,Regsvr32也不例外。我們以Windows XP為例,在“開始”菜單→“運行”欄中執(zhí)行“CMD”命令,打開命令提示行窗口,輸入Regsvr32命令后回車,就會看到Regsvr32的命令格式“Regsvr32 [ /u ][ /s ][ /n ][ /i [ :cmdline ] ] dll文件名”,
由上可知,Regsvr32命令一共有四個參數(shù),分別是:
/s:注冊或卸載成功后不顯示操作成功的提示框
/u:卸載已安裝的控件或DLL文件
/n:不調(diào)用DLLRegisterServer,要注意這個參數(shù)應(yīng)與/i一同使用
/i:調(diào)用DLLInstall,并給其傳遞一個可選的[ cmdline ];當(dāng)使用/u時用來卸載DLL
命令的講解往往都枯燥難懂,下面咱們就借助一個實例來進一步了解Regsvr32的命令格式。比如我們想注冊一個保存在C:\Folder目錄中的shmedia.dll動態(tài)鏈接庫文件,那么執(zhí)行的命令就應(yīng)該是“Regsvr32 c:\folder\shmedia.dll”,而如果注冊過后打算卸載時就更簡單了,執(zhí)行命令“Regsvr32 /u c:\folder\shmedia.dll”就行了。如圖2所示就是正常完成任務(wù)的提示窗口
常見錯誤提示
使用Regsvr32命令久后,大家也許會經(jīng)常看到各種各樣的錯誤提示,這里筆者就找了一些比較有代表性的錯誤,幫大家來分析分析。
錯誤一:未指定DLL文件的具體路徑
這種錯誤比較常見,一般出現(xiàn)在注冊非系統(tǒng)DLL文件時,原因就是Regsvr32程序在默認(rèn)路徑找不到指定的DLL文件,無法正常完成注冊。解決的辦法也很簡單,只要在命令中指定好DLL文件的具體存儲路徑就行了,比如“Regsvr32 c:\folder\abc.dll”就是一個正常的命令。
錯誤二:要注冊的文件類型錯誤
這種錯誤比較少,但容易在新手上出現(xiàn),原因就是用戶欲注冊的文件根本就不是一個正常的DLL文件或OCX文件,Regsvr32根本無法完成注冊。解決的方法就是指定一個正常的DLL文件或OCX文件就行了。比如原命令為“Regsvr32 c:\abc\abc.txt”,而正確的命令就應(yīng)該是“Regsvr32 c:\abc\abc.dll”(當(dāng)然,也得保證這個abc.dll文件已存在并完全正確)
錯誤三:鍵入的命令中未寫明DLL文件名
這種錯誤和上例一樣也是主要出現(xiàn)在新手上,它的原因就是根本沒有指定DLL文件名,這樣Regsvr32自然也就無法得知要對什么進行操作了,所以才會彈出這個提示來。解決的辦法就是指定要操作的DLL文件或OCX文件即可。
常見錯誤提示
使用Regsvr32命令久后,大家也許會經(jīng)??吹礁鞣N各樣的錯誤提示,這里筆者就找了一些比較有代表性的錯誤,幫大家來分析分析。
錯誤一:未指定DLL文件的具體路徑
這種錯誤比較常見,一般出現(xiàn)在注冊非系統(tǒng)DLL文件時,原因就是Regsvr32程序在默認(rèn)路徑找不到指定的DLL文件,無法正常完成注冊。解決的辦法也很簡單,只要在命令中指定好DLL文件的具體存儲路徑就行了,比如“Regsvr32 c:\folder\abc.dll”就是一個正常的命令。
錯誤二:要注冊的文件類型錯誤
這種錯誤比較少,但容易在新手上出現(xiàn),原因就是用戶欲注冊的文件根本就不是一個正常的DLL文件或OCX文件,Regsvr32根本無法完成注冊。解決的方法就是指定一個正常的DLL文件或OCX文件就行了。比如原命令為“Regsvr32 c:\abc\abc.txt”,而正確的命令就應(yīng)該是“Regsvr32 c:\abc\abc.dll”(當(dāng)然,也得保證這個abc.dll文件已存在并完全正確)
錯誤三:鍵入的命令中未寫明DLL文件名
這種錯誤和上例一樣也是主要出現(xiàn)在新手上,它的原因就是根本沒有指定DLL文件名,這樣Regsvr32自然也就無法得知要對什么進行操作了,所以才會彈出這個提示來。解決的辦法就是指定要操作的DLL文件或OCX文件即可。
相關(guān)文章
Windows 系統(tǒng)組策略應(yīng)用全攻略(上)
說到組策略,就不得不提注冊表。注冊表是Windows系統(tǒng)中保存系統(tǒng)、應(yīng)用軟件配置的數(shù)據(jù)庫,隨著Windows功能的越來越豐富,注冊表里的配置項目也越來越多。2006-10-10