很多軟件在安裝完成以后都會友好地詢問用戶:

文章插圖
每當我心中看到這兩句話時,心中那一句媽賣X早已重復了不知多少遍 。

文章插圖

文章插圖

文章插圖
【為什么有些軟件安裝完要重啟,電腦下載的軟件重啟后就沒了】重啟電腦,雖然明知道只要保存了文件就不會有任何損失,但是心中總感覺丟失了什么,好像重啟了這遍電腦之前所做的一切就統統白費了 。更何況有的時候根本沒看見那個提示 , 一個“完成”點過去 , “啪”,“正在重新啟動”,那一刻,真是心都碎了 。

文章插圖
不過,那些軟件為什么非要打斷用戶的使用強行讓用戶重啟電腦呢?
其實在之前,每當我遇到一個需要重啟電腦的軟件時都會對這個軟件吼一聲“mamaip”,不過現在,每當我遇到一個需要重啟電腦才能用的軟件時,我不會針對哪個軟件了,我只會對著微軟,對著windows大喊一聲“XXX”(此處省略三個都懂的文字) 。

文章插圖

文章插圖
絕大多數時候這并不是軟件的原因,而是windows系統本身結構和設計所致 。
在windows中負責保存核心數據的地方叫注冊表,其中的參數將決定著windows的啟動、硬件驅動的調用以及部分軟件的運行 。比如你在打開一部嘿嘿嘿的電影時,某影音可能就需要從此獲得參數以完成解碼 。

文章插圖
鍋就出在注冊表身上 。軟件想要在計算機的核心占有一席之地,必須要在注冊表中進行“注冊”,就像孩子出生后需要上戶口一樣 。不過很蛋疼的是,注冊表在系統完成加載以后就會將新人拒之門外 , 新人要想“注冊”,就必須趁著系統沒有加載完全時“乘虛而入” 。
還有一些情況是,軟件安裝需要注冊的系統組件恰好與其他軟件共用,但在其他軟件運行時并不能修改其參數 。其實這種情況下,理論上只需要重新啟動某幾個軟件就行,但實際操作起來實在是很困難,直接重啟電腦比“重啟ABCDEFG軟件”簡單(粗暴)的多 。
雖然知道緣由了,但心里還是有一句

文章插圖

文章插圖
為什么安裝某些軟件后需要重啟電腦?簡單地說,大多數軟件裝完后,都需要修改注冊表使其在電腦中占有“一席之地”,有些軟件需要重啟是因為它進入了注冊表核心,但開機后的注冊表核心已經像一面盾把該軟件擋在了門外,該軟件要進入,必須重啟電腦,趕在那面盾建立起來之前融入注冊表 。專業點來講是這樣的:軟件安裝完成之后,與Explorer有關的設置須等待Explorer重啟后才能生效;而Autoexec.bat中設置環境變量也只能在重新啟動計算機時裝入;系統DLL只能通過WinInit.exe在進入Windows前的DOS環境下替換,靜態VxD只能在裝入 Windows的時候載入 。因此,許多軟件在安裝完成之后必須重啟計算機才能使軟件運行環境生效 。現在網吧一般裝有“還原精靈”,遇到裝軟件需要重啟怎么辦呢?很簡單,Ctrl+Alt+Del打開任務管理器 , 在進程里面找到“explorer.exe”,右擊——結束進程——文件——新建任務(運行…)——輸入explorer.exe——確定 , 就可以了 。===詳細說明===軟件在安裝時,到底做了些什么?大家每天都在用電腦,可能也經常在自己的電腦上安裝軟件 。就算自己沒安裝過,至少也看到人家安裝過軟件 。在這里 , 我不是想教你怎么安裝軟件,而是想向你展示,軟件在安裝的過程中,到底都做了些什么動作?為什么有些軟件要安裝,直接拷貝過去卻不能用?為什么一些軟件安裝或卸載之后要重啟 。下面要討論的就是這些問題 。首先,我們探討一下軟件安裝的共通部分,說共通 , 就是在不同版本的操作系統上,如WINDOWS98,WIN2K和WINXP等上它們都有共同點的地方 。這個文章也試圖不針對具體的某個操作系統 , 而對共同的規律來探討,不過我自己用的是WINDOWS98 , 所以有時一些例子可能會用WINDOWS98上的實例來說明,而大多數情況下這些特***在WIN2K和WINXP上也是類似的 。那么 , 我先來歸納一下,典型的軟件安裝過程都有可能做哪些事情 。由于我們是討論軟件在安裝時的行為,所以開始安裝前的設置和選項我們就暫不討論,只說到軟件真正開始安裝那個時候起的動作:①文件從安裝源位置拷貝到目標位置 。②往系統目錄寫入一些必要的動態連接庫(DLL) 。(可選)③往系統注冊表中寫入相應的設置項 。(可選)④建立開始菜單里的程序組和桌面快捷方式 。(可選)⑤其他動作 。(可選)下面我們再詳細來分析上面歸納出來的這些動作:1)拷貝軟件本身需要的文件 。源位置指軟件未安裝之前的位置 , 例如光盤,下載的目錄等,目標位置指你指定的安裝位置 。這是幾乎所有的軟件安裝過程一定會做的一件事 。而如果一個軟件,在安裝時只要這一步,不需要后面的其他幾步,我們可以認為這個軟件就是綠色軟件 。或者反過來說綠色軟件就是只要拷貝文件 , 不需要依賴于某個DLL , 或者它依賴的DLL在幾乎所有的系統中都一定有的,并且它也不依賴于注冊表里面的設置項的軟件 。2) 這一步,可以說至少有一半軟件在安裝時都會做,一些軟件,需要用到某個DLL,特別是那些軟件作者開發的DLL,或者系統中不常用的DLL,一般都會隨軟件的安裝拷到系統目錄 。所謂系統目錄,在WIN98下一般是在WINDOWSSYSTEM這個目錄 , 而WIN2K是在WINNT SYSTEM32 , WINXP是在WINDOWSSYSTEM32 。還有,一些軟件如QQ游戲,中游等,它們也用到一些DLL,由于這些DLL只是這個軟件自己用到,別的其他軟件不會用到 , 所以它們并不一定存在于系統目錄,而是放在軟件安裝目錄里面,這樣的DLL已經在上一步中被拷貝,所以和這一步說的情況不一樣 。3)這一步同樣至少有一半軟件會做,一般在安裝前用戶的設置和一些選項,在安裝時就會把這些設置寫到注冊表里 。另外就是有時在上一步把DLL拷貝到系統目錄時,一些DLL需要向系統注冊 , 這些DLL的注冊信息也會寫在注冊表里 。還有,一些軟件有時可能安裝時并不寫注冊表,而是在第一次運行時才把一些設置寫到注冊表 。4)這個非常簡單 , 大概不需要怎么解釋 。建立這些快捷方式一方面是便于用戶執行,另外在時也會把卸載的快捷方式放在程序組里 。關于卸載后面我們再來討論 。5)這個就是除了上面說的以外的其他情況 。例如有些軟件安裝時會先把所有文件(或一部分文件)先解壓到臨時目錄,那么安裝完之后就要把這些文件刪除掉 。那么我們再總結一下:一、一個典型的軟件在安裝過程一般都會執行上面的1-4項 。這樣可以認為是一個完整的安裝過程 。二、除了第1項之外,其他的都不是必要的 。只需要第一項的軟件,我們可以把它叫做綠色軟件 。三、有些軟件安裝時是執行了1、2、4,有些軟件是執行了1、3、4,有些軟件是執行了1、4 。四、一個特殊的情況,一般的驅動程序,只會執行2和3,沒有1和4 。五、理論上 , 任何軟件,如果你非常確切地知道了它在上面的那幾步都具體做了些什么,特別是2和3,那么,理論上你可以把這個軟件的安裝文件拷貝到另一臺機子,把必要的DLL從系統目錄拷貝到那一臺機子的系統目錄,再把注冊表里軟件寫入的項目導出來(必要時還要修改一下)再導入到那臺機子的注冊表中,那么,就算不是綠色軟件,你也能這樣把它移植給另一臺機 。但有時特別是一些共享軟件 , 一般都會有注冊表中設置比較隱蔽的項目,不容易查找,所以除非你對系統非常熟悉,否則不是綠色軟件的軟件要移植還是有一定的難度的 。那么,下面我們再來看看,為什么一些軟件安裝后要重啟 。在 WINDOWS操作系統上,一般一個正在運行中的程序,操作系統是不讓你修改它的,修改包括替換 , 改動和刪除 。那么有時,一些軟件需要向系統目錄中寫入一個DLL,而系統目錄中原來已經有同名的DLL并且這個DLL目前正在被系統使用 , 因此不能用新版本去替換它 , 這個時候就需要重啟 , 在重啟的過程中,在這個DLL舊的版本被使用之前用新版本替換它 。這就是為什么要重啟的原因 。你能看到這里,說明你很有耐心,并且對技術的探討很有興趣,那么我就再說得更詳細些 。在WIN98中 , 上面說的這個替換是由系統的一個工具來實現的,這個工具叫WININIT.EXE 。安裝程序在檢測到需要寫入的DLL 或其他程序文件正在使用時,會把要寫入的DLL文件先定一個臨時的文件名,然后在WINDOWS目錄中往WININIT.INI寫入一個改寫項,比如 , 一個叫ABCD.DLL的動態連接庫現在正在使用中,而安裝程序要往系統中寫入新版本的ABCD.DLL,這時安裝程序會把新版本ABCD.DLL先定一個臨時文件名,例如AAAA.LLL,然后在WININIT.INI中的[rename]一節中寫入這一項: C:windowssystemabcd.dll=C:windowssystemaaaa.lll ) 這樣,在重啟時 , 進入WINDOWS圖形界面之前,WININIT.EXE在檢測到WINDOWS目錄中有WININIT.INI存在時,就執行里面的操作 , 在上面的例子中,是用C:windowssystemaaaa.lll去替換掉C:windowssystemabcd.dll這個文件,并且把WININIT.INI改名為WININIT.BAK 。另外,有些軟件 , 在安裝時,是把所有文件包括SETUP.EXE解壓到臨時文件里面再執行SETUP.EXE進行安裝的,按理來說安裝完要把所有的臨時文件刪除掉,這個操作當然也是由安裝程序SETUP.EXE來完成,但它自己正在運行,也刪不了它自己,所以也要重啟來刪除 , 做法和上面差不多,只是改成類似這樣子的: 怦S?vH燁?NUL=C:WINDOWSTEMPSETUP.EXE在WIN2K和WINXP中 , 存在類似的機制 , 不過并不是用WININIT.EXE和WININIT.INI來實現 , 具體的做法我也不是很清楚 , 長期以來我大多數時候都是在用WIN98,所以沒認真研究過,但軟件安裝過程要重啟的現象在2K和XP上是仍然存在的,原理也是在重啟時替換或修改正在使用的文件,只是實現的方式不同 。最后,我們再來看看有關卸載方面的內容 。一般卸載有好幾種方式:1)早期的安裝程序 , 一般會在安裝過程記錄了上面說的安裝過程的1234四個步驟中具體拷貝的文件和DLL以及注冊表項,把它保存在INSTALL.LOG之類的文件中,再在軟件的安裝目錄(或WINDOWS目錄中)放一個UNINST.EXE之類的卸載程序 。然后要么在程序組里為這個UNINST.EXE建一個快捷方式,要么在注冊表中為這個UNINST.EXE建一個快捷方式(這?誑刂潑姘宓奶砑由境?絳蚓湍蕓吹餃砑?男對叵?,并把INSTALL.LOG做為它的參數 , 這樣就實現卸載了 。2)現在比較多的安裝程序是用新版的INSTALLSHIELD生成的,安裝時的記錄和卸載程序一般是會放在 C:Program FilesInstallShield Installation Information這個文件夾(隱藏屬***)里,同樣也會在程序組和注冊表中建立卸載項 。另外,在卸載時,也會遇到文件(一般是DLL文件)正在使用的情況 。所以有時卸載的時候也要重啟,就是要在重啟過程中刪掉這些正在使用的DLL文件 。
- 為什么某寶某些商家商品沒有運費險這個選項了,為什么賣家有運費險我的顯示沒有
- 下載極速版能賺錢嗎,哪一款極速版軟件賺錢多
- 為什么手機價格上漲了 為什么價格越來越貴
- 粘稠還是黏稠 外面買的粥為什么那么稠
- 為什么女性是弱勢地位
- 蘇明成為什么恨蘇明玉 都挺好為什么蘇母對蘇明玉不好
- 雍正是老四 胤禛為什么能奪得皇位
- 你喜歡的歷史人物及喜歡的原因 你最喜歡的人是誰你為什么喜歡他
- 為什么說白肉比紅肉健康 為什么白肉比紅肉好
- 為什么軟件總是裝在c盤,c盤突然全部被占滿
