論壇裡面有人問,假設某Windows機器上已安裝了.Net Framework 3.5,如何判斷有沒有安裝.Net Framework 3.5 SP1?
這個問題,我首先想到,每一個版本的.Net Framework的安裝過程都會在Windows目錄下的\Microsoft.NET\Framework目錄中產生一個子目錄(安裝目錄)。比如說,假設Windows目錄在C盤且不曾在安裝OS時重新命名過Windows目錄,那麼.Net Framework 3.5的安裝目錄應該是:
C:\Windows\Microsoft.NET\Framework\v3.5
在這個目錄下應該有一個該版本的MSBuild.exe,我們執行 MSBuild /version 應該能得到版本資訊。
為了提高命令的適應性我們用 %WINDIR% 來代替 C:\Windows ,然後我們在控制台中執行下列命令:
cd %WINDIR%\Microsoft.NET\Framework\v3.5MSBuild /version
這樣得到的輸出資訊裡面就包含了這台電腦上.Net Framework 3.5的確切版本。
我的執行結果如下:
那麼這個版本號碼 3.5.30729.5420 能否說明我們有沒有安裝.Net 3.5 SP1呢?我們查看這個地址:
What .NET Framework version numbers go with what service pack
http://blogs.msdn.com/b/astebner/archive/2005/07/12/438245.aspx
從這個列表中,我們可以看到,我們實際的版本號碼 3.5.30729.5420 應該是不小於.Net 3.5 SP1 的。
這是判斷方法之一。
還有一種判斷方法是從註冊表來判斷。在命令列中運行regedit,搜尋“Net Framework Setup”:
這樣我們就可以搜到這樣的一個路徑:
從這個搜尋結果來看,我們能夠在這個路徑下看到我們安裝過各個版本的 .Net Framework 的“芳蹤”:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\
注意是在Windows 7上搜尋的結果。我沒有驗證在Windows XP、Vista上這個路徑會不會不一樣。我猜測應該是一樣的。
看樣子遍曆這個路徑下的sub path就能夠得到所有已安裝的.Net Framework的版本資訊。
在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 這個路徑下,我們可以看到,版本(Version)是 3.5.30729.5420,與我們前面的判斷方法結果一致。SP這一項的索引值是 1,意思是已安裝 SP1。
參考文獻: